From 401613ad63bf67d56a3b5e5f7eff6509237b291b Mon Sep 17 00:00:00 2001 From: Gao Hongtao Date: Sun, 8 Sep 2024 16:19:05 +0800 Subject: [PATCH 01/10] Add slim and testing images (#529) * Add slim and testing images --------- Signed-off-by: Gao Hongtao --- .github/workflows/ci.yml | 2 + .github/workflows/publish-docker.yml | 8 ++-- .github/workflows/test.yml | 2 + CHANGES.md | 5 ++- Makefile | 3 ++ banyand/Dockerfile | 3 +- banyand/Makefile | 8 +--- banyand/liaison/http/rpath_empty.go | 25 +++++++++++ banyand/liaison/http/rpath_ui.go | 40 +++++++++++++++++ banyand/liaison/http/server.go | 9 +--- docs/installation/binaries.md | 44 ++++++++++--------- docs/installation/docker.md | 21 +++++++++ scripts/build/build.mk | 14 +++++- scripts/build/docker.mk | 8 +++- scripts/release.sh | 1 - test/docker/Makefile | 2 +- .../script/docker-compose/base-compose.yml | 6 +-- ui/Makefile | 9 ++-- 18 files changed, 160 insertions(+), 50 deletions(-) create mode 100644 banyand/liaison/http/rpath_empty.go create mode 100644 banyand/liaison/http/rpath_ui.go diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 828957d3e..110fd177f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,6 +68,8 @@ jobs: run: make check-req - name: Generate codes run: make generate + - name: Build + run: make build - name: Lint run: make lint - name: Generate dependencies licenses diff --git a/.github/workflows/publish-docker.yml b/.github/workflows/publish-docker.yml index 94db8db5e..c823da3fb 100644 --- a/.github/workflows/publish-docker.yml +++ b/.github/workflows/publish-docker.yml @@ -85,7 +85,8 @@ jobs: if: github.ref != 'refs/heads/main' # Only build docker image on PR(Push image when pushed to main branch) run: | make docker.build || make docker.build - make -C test/docker build | make -C test/docker build + BINARYTYPE=slim make -C banyand docker || BINARYTYPE=slim make -C banyand docker + make -C test/docker build || make -C test/docker build docker image ls - name: Log in to the Container registry uses: docker/login-action@v1.10.0 @@ -97,5 +98,6 @@ jobs: - name: Push docker image if: github.ref == 'refs/heads/main' run: | - PLATFROMS=linux/amd64,linux/arm64,windows/amd64 make docker.push || make docker.push - make -C test/docker push | make -C test/docker push \ No newline at end of file + PLATFORMS=linux/amd64,linux/arm64,windows/amd64 make docker.push || PLATFROMS=linux/amd64,linux/arm64,windows/amd64 make docker.push + PLATFORMS=linux/amd64,linux/arm64,windows/amd64 BINARYTYPE=slim make -C banyand docker.push || PLATFORMS=linux/amd64,linux/arm64,windows/amd64 BINARYTYPE=slim make -C banyand docker.push + make -C test/docker push || make -C test/docker push \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2de36378a..025d955ab 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -72,6 +72,8 @@ jobs: run: GOPROXY=https://proxy.golang.org go mod download - name: Generate mocks run: make generate + - name: Build + run: make build - name: Test integration and banyand run: TEST_CI_OPTS="--cover --covermode atomic --coverprofile=coverage.out ${{ inputs.options }}" make test-ci - name: Upload coverage to Codecov diff --git a/CHANGES.md b/CHANGES.md index 4cafc211c..19e6f99ed 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -60,8 +60,9 @@ Release Notes. - Separate the monolithic Docker image into two images: banyand and bydbctl. - Update CI to publish linux/amd64 and linux/arm64 Docker images. - Make the build system compiles the binary based on the platform which is running on. -- Push "skywalking-banyandb-test" image for e2e and stress test. This image contains bydbctl to do a health check. -- Set etcd-client log level to "error" and etcd-server log level to "error". +- Push "skywalking-banyandb:-testing" image for e2e and stress test. This image contains bydbctl to do a health check. +- Set etcd-client log level to "error" and etcd-server log level to "warn". +- Push "skywalking-banyandb:-slim" image for the production environment. This image doesn't contain bydbctl and Web UI. ## 0.6.1 diff --git a/Makefile b/Makefile index c8389e229..644e822c5 100644 --- a/Makefile +++ b/Makefile @@ -40,6 +40,9 @@ clean: default ## Clean artifacts in all projects rm -f .env rm -f *.out +clean-build: TARGET=clean-build +clean-build: default ## Clean build artifacts in all projects + generate: TARGET=generate generate: PROJECTS:=api $(PROJECTS) pkg generate: default ## Generate API codes diff --git a/banyand/Dockerfile b/banyand/Dockerfile index 5ba61d7c5..42db44e58 100644 --- a/banyand/Dockerfile +++ b/banyand/Dockerfile @@ -21,8 +21,9 @@ RUN apk add --no-cache ca-certificates && update-ca-certificates FROM busybox:stable-glibc AS build-linux ARG TARGETARCH +ARG BINARYTYPE -COPY build/bin/linux/${TARGETARCH}/banyand-server-static /banyand +COPY build/bin/linux/${TARGETARCH}/banyand-server-${BINARYTYPE} /banyand COPY --from=certs /etc/ssl/certs /etc/ssl/certs FROM mcr.microsoft.com/windows/servercore:ltsc2022 AS build-windows diff --git a/banyand/Makefile b/banyand/Makefile index 0ccedd6dd..f39cf0ee8 100644 --- a/banyand/Makefile +++ b/banyand/Makefile @@ -17,8 +17,7 @@ # NAME := banyand -SERVER := $(NAME)-server -BINARIES := $(SERVER) +BINARIES := $(NAME)-server IMG_NAME := skywalking-banyandb @@ -34,7 +33,4 @@ include ../scripts/build/help.mk prepare-build: generate -docker.dev: - @echo "Building $(IMG) with platform $(PLATFORMS)" - @pwd - time docker buildx build $(DOCKER_BUILD_ARGS) --platform $(PLATFORMS) --load --no-cache -t $(IMG) -f Dockerfile.dev --provenance=false . \ No newline at end of file +release: $(STATIC_BINARIES) $(SLIM_BINARIES) \ No newline at end of file diff --git a/banyand/liaison/http/rpath_empty.go b/banyand/liaison/http/rpath_empty.go new file mode 100644 index 000000000..d126093de --- /dev/null +++ b/banyand/liaison/http/rpath_empty.go @@ -0,0 +1,25 @@ +//go:build slim +// +build slim + +// Licensed to Apache Software Foundation (ASF) under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Apache Software Foundation (ASF) licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package http + +func (p *server) setRootPath() error { + return nil +} diff --git a/banyand/liaison/http/rpath_ui.go b/banyand/liaison/http/rpath_ui.go new file mode 100644 index 000000000..460239a29 --- /dev/null +++ b/banyand/liaison/http/rpath_ui.go @@ -0,0 +1,40 @@ +//go:build !slim +// +build !slim + +// Licensed to Apache Software Foundation (ASF) under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Apache Software Foundation (ASF) licenses this file to you under +// the Apache License, Version 2.0 (the "License"); you may +// not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package http + +import ( + "io/fs" + "net/http" + + "github.com/apache/skywalking-banyandb/ui" +) + +func (p *server) setRootPath() error { + fSys, err := fs.Sub(ui.DistContent, "dist") + if err != nil { + return err + } + httpFS := http.FS(fSys) + fileServer := http.FileServer(http.FS(fSys)) + serveIndex := serveFileContents("index.html", httpFS) + p.mux.Mount("/", intercept404(fileServer, serveIndex)) + return nil +} diff --git a/banyand/liaison/http/server.go b/banyand/liaison/http/server.go index 5fa460b71..576b8289a 100644 --- a/banyand/liaison/http/server.go +++ b/banyand/liaison/http/server.go @@ -21,7 +21,6 @@ package http import ( "context" "fmt" - "io/fs" "net" "net/http" "strconv" @@ -43,7 +42,6 @@ import ( "github.com/apache/skywalking-banyandb/pkg/healthcheck" "github.com/apache/skywalking-banyandb/pkg/logger" "github.com/apache/skywalking-banyandb/pkg/run" - "github.com/apache/skywalking-banyandb/ui" ) var ( @@ -137,14 +135,9 @@ func (p *server) PreRun(_ context.Context) error { p.l = logger.GetLogger(p.Name()) p.mux = chi.NewRouter() - fSys, err := fs.Sub(ui.DistContent, "dist") - if err != nil { + if err := p.setRootPath(); err != nil { return err } - httpFS := http.FS(fSys) - fileServer := http.FileServer(http.FS(fSys)) - serveIndex := serveFileContents("index.html", httpFS) - p.mux.Mount("/", intercept404(fileServer, serveIndex)) p.srv = &http.Server{ Addr: p.listenAddr, Handler: p.mux, diff --git a/docs/installation/binaries.md b/docs/installation/binaries.md index 02cad7482..62610e199 100644 --- a/docs/installation/binaries.md +++ b/docs/installation/binaries.md @@ -26,8 +26,10 @@ The banyand and bydbctl directory structure is as follows. ├── NOTICE ├── README.md ├── bin -│   ├── banyand-linux-arm64 -│   └── banyand-linux-amd64 +│ ├──banyand-server-slim-linux-amd64 +│ ├──banyand-server-slim-linux-arm64 +│ ├──banyand-server-static-linux-amd64 +│   └──banyand-server-static-linux-arm64 └── licenses ``` @@ -38,13 +40,13 @@ The banyand and bydbctl directory structure is as follows. ├── NOTICE ├── README.md ├── bin -│   ├── bydbctl-linux-386 -│   ├── bydbctl-linux-amd64 -│   ├── bydbctl-linux-arm64 -│   ├── bydbctl-windows-386 -│   ├── bydbctl-windows-amd64 -│   ├── bydbctl-darwin-amd64 -│   └── bydbctl-darwin-arm64 +│   ├── bydbctl-cli-static-linux-386 +│   ├── bydbctl-cli-static-linux-amd64 +│   ├── bydbctl-cli-static-linux-arm64 +│   ├── bydbctl-cli-static-windows-386 +│   ├── bydbctl-cli-static-windows-amd64 +│   ├── bydbctl-cli-static-darwin-amd64 +│   └── bydbctl-cli-static-darwin-arm64 └── licenses ``` @@ -72,7 +74,9 @@ To issue the below command to get basic binaries of banyand and bydbctl. make generate ... make build +--- ui: all --- ... +Done building ui --- banyand: all --- ... chmod +x build/bin/banyand-server; @@ -84,26 +88,26 @@ chmod +x build/bin/dev/bydbctl-cli; Done building build/bin/dev/bydbctl-cli ``` -The build system provides a series of binary options as well. - -* `make -C banyand banyand-server` generates a basic `banyand-server`. -* `make -C banyand release` or `make -C banyand banyand-server-static` builds out a static binary `banyand-server-static` for releasing. -* `make -C bydbctl bydbctl-cli` generates a basic `bydbctl-cli`. -* `make -C bydbctl release` or `make -C banyand bydbctl-cli-static` builds out a static binary `bydbctl-cli-static` for releasing. - Then users get binaries as below ``` shell ls banyand/build/bin/dev banyand-server -banyand-server-static ls bydbctl/build/bin/dev bydbctl-cli -bydbctl-cli-static ``` -> The build script now checks if the binary file exists before rebuilding. If you want to rebuild, please remove the binary file manually. +The build system provides a series of binary options as well. + +* `make -C banyand banyand-server` generates a basic `banyand-server`. +* `make -C banyand banyand-server-static` builds out a static binary `banyand-server-static` which is statically linked with all dependencies. +* `make -C banyand banyand-server-slim` builds out a slim binary `banyand-server-slim` which doesn't include `UI`. +* `make -C banyand release` builds out the static and slim binaries for releasing. +* `make -C bydbctl bydbctl-cli` generates a basic `bydbctl-cli`. +* `make -C bydbctl release` or `make -C banyand bydbctl-cli-static` builds out a static binary `bydbctl-cli-static` for releasing. This binary is statically linked with all dependencies. + +> The build script now checks if the binary file exists before rebuilding. If you want to rebuild, please remove the binary file manually by running `make clean-build`. ### Cross-compile Binaries @@ -113,7 +117,7 @@ The build system supports cross-compiling binaries for different platforms. For TARGET_OS=windows PLATFORMS=windows/amd64 make release ``` -The `PLATFORMS` variable is a list of platforms separated by commas. The `TARGET_OS` variable is the target operating system. You could specify several platforms at once: +The `PLATFORMS` variable is a list of platforms separated by commas. The `TARGET_OS` variable is the target operating system. You could specify several platforms at once: ```shell TARGET_OS=linux PLATFORMS=linux/amd64,linux/arm64 make release diff --git a/docs/installation/docker.md b/docs/installation/docker.md index 8d9e17d1b..e4d7d9994 100644 --- a/docs/installation/docker.md +++ b/docs/installation/docker.md @@ -1,5 +1,26 @@ # Installation On Docker +## Images on Docker Hub + +The BanyanDB images are hosted on Docker Hub. You can pull the images from the following links: [Apache SkyWalking BanyanDB](https://hub.docker.com/r/apache/skywalking-banyandb) + +There are two types of images: + +- `apache/skywalking-banyandb:` - The specific version of the BanyanDB. +- `apache/skywalking-banyandb:-slim` - The slim version of the BanyanDB. It does not contain the Web UI. + +We pushed `linux/amd64` and `linux/arm64` for each type of image. You can pull the image for the specific architecture. + +## Images on GitHub Container Registry + +The BanyanDB images are hosted on GitHub Container Registry for development or testing. You can pull the images from the following links: [ghcr.io/apache/skywalking-banyandb](https://github.com/apache/skywalking-banyandb/pkgs/container/skywalking-banyandb) + +There are three types of images: + +- `ghcr.io/apache/skywalking-banyandb:` - The specific version of the BanyanDB. We pushed `linux/amd64`, `linux/arm64` and `windows/amd64` for each type of image. +- `ghcr.io/apache/skywalking-banyandb:-slim` - The slim version of the BanyanDB. It does not contain the Web UI. We pushed `linux/amd64`, `linux/arm64` and `windows/amd64` for each type of image. +- `ghcr.io/apache/skywalking-banyandb:-testing` - The testing version of the BanyanDB. It contains the Web UI and the `bydbctl`. We pushed `linux/amd64` and `linux/arm64` for each type of image. + ## Start a container in `standalone mode` The following commands pull the docker image and run the BanyanDB on Docker. Replace `latest` with the version of the BanyanDB you want to run. - pull the image diff --git a/scripts/build/build.mk b/scripts/build/build.mk index 29f8ec507..647f0a89d 100644 --- a/scripts/build/build.mk +++ b/scripts/build/build.mk @@ -25,6 +25,7 @@ $(error The BINARIES variable should be set to the name binaries to produce) endif STATIC_BINARIES ?= $(addsuffix -static,$(BINARIES)) +SLIM_BINARIES ?= $(addsuffix -slim,$(BINARIES)) BUILD_DIR ?= build/bin TARGET_OS ?= linux OS := ${TARGET_OS} @@ -61,8 +62,19 @@ $(STATIC_BINARIES_GOBUILD_TARGET): $(BUILD_DIR)/$(OS)/%-static: $(BUILD_LOCK) $(call go_build_static_executable,,-s -w) @echo "Done building static $*" +SLIM_BINARIES_GOBUILD_TARGET_PATTERN := $(foreach goarch,$(GOBUILD_ARCHS),$(BUILD_DIR)/$(OS)/$(goarch)/$(NAME)-%-slim) +SLIM_BINARIES_GOBUILD_TARGET := $(foreach goarch,$(GOBUILD_ARCHS),$(addprefix $(BUILD_DIR)/$(OS)/$(goarch)/,$(SLIM_BINARIES))) +$(SLIM_BINARIES): $(NAME)-%-slim: $(SLIM_BINARIES_GOBUILD_TARGET_PATTERN) +$(SLIM_BINARIES_GOBUILD_TARGET): $(BUILD_DIR)/$(OS)/%-slim: $(BUILD_LOCK) + $(call set_build_package,$*,$@) + @echo "Building slim $*" + $(MAKE) prepare-build + $(eval BUILD_TAGS := $(BUILD_TAGS) slim) + $(call go_build_static_executable,,-s -w) + @echo "Done building static $*" + .PHONY: release -release: $(STATIC_BINARIES) ## Build the release binaries +release: $(STATIC_BINARIES) ## Build the release binaries .PHONY: clean-build clean-build: ## Clean all artifacts diff --git a/scripts/build/docker.mk b/scripts/build/docker.mk index a3c6de5fc..7f5626a9b 100644 --- a/scripts/build/docker.mk +++ b/scripts/build/docker.mk @@ -27,6 +27,12 @@ endif # The tag of the docker image. The default value if latest. TAG ?= latest +BINARYTYPE ?= static + +ifeq ($(BINARYTYPE),slim) + TAG := $(TAG)-slim +endif + IMG := $(HUB)/$(IMG_NAME):$(TAG) # Disable cache in CI environment @@ -42,5 +48,5 @@ docker.push: DOCKER_TYPE = "Push" docker docker.push: @echo "$(DOCKER_TYPE) $(IMG) with platform $(PLATFORMS)" @pwd - time docker buildx build $(DOCKER_BUILD_ARGS) --platform $(PLATFORMS) $(LOAD_OR_PUSH) -t $(IMG) -f Dockerfile --provenance=false . + time docker buildx build $(DOCKER_BUILD_ARGS) --platform $(PLATFORMS) $(LOAD_OR_PUSH) -t $(IMG) -f Dockerfile --provenance=false --build-arg BINARYTYPE=$(BINARYTYPE) . diff --git a/scripts/release.sh b/scripts/release.sh index 0182a2f76..8e16d117c 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -67,7 +67,6 @@ copy_binaries() { # Extract os and arch from the path os_arch=$(echo ${binary} | awk -F'/' '{print $(NF-2)"/"$(NF-1)}') binary_name=$(basename ${binary}) - binary_name=${binary_name%-*-*} cp -Rfv ${binary} ${bindir}/bin/${binary_name}-${os_arch//\//-} done } diff --git a/test/docker/Makefile b/test/docker/Makefile index e1c79ffae..01c71efd3 100644 --- a/test/docker/Makefile +++ b/test/docker/Makefile @@ -23,7 +23,7 @@ HUB ?= apache # The tag of the docker image. The default value if latest. TAG ?= latest -IMG := $(HUB)/skywalking-banyandb-test:$(TAG) +IMG := $(HUB)/skywalking-banyandb:$(TAG)-testing build: @echo "Building $(IMG)" diff --git a/test/e2e-v2/script/docker-compose/base-compose.yml b/test/e2e-v2/script/docker-compose/base-compose.yml index 2f1f78a26..fe30d45c1 100644 --- a/test/e2e-v2/script/docker-compose/base-compose.yml +++ b/test/e2e-v2/script/docker-compose/base-compose.yml @@ -20,7 +20,7 @@ services: extends: file: ../../../docker/base-compose.yml service: banyandb - image: "apache/skywalking-banyandb-test:${TAG}" + image: "apache/skywalking-banyandb:${TAG}-testing" networks: - e2e @@ -28,7 +28,7 @@ services: extends: file: ../../../docker/base-compose.yml service: liaison - image: "apache/skywalking-banyandb-test:${TAG}" + image: "apache/skywalking-banyandb:${TAG}-testing" networks: - e2e @@ -36,7 +36,7 @@ services: extends: file: ../../../docker/base-compose.yml service: data - image: "apache/skywalking-banyandb-test:${TAG}" + image: "apache/skywalking-banyandb:${TAG}-testing" networks: - e2e diff --git a/ui/Makefile b/ui/Makefile index aed91b15e..60c1eee6d 100644 --- a/ui/Makefile +++ b/ui/Makefile @@ -37,7 +37,6 @@ all: build .PHONY: generate generate: install -generate: $(DIST_INDEX) $(DIST_INDEX): @echo "Building $(NAME)" @@ -45,8 +44,12 @@ $(DIST_INDEX): @echo "Done building $(NAME)" .PHONY: build -build: - @echo "Run generate to build the UI" +build: $(DIST_INDEX) + +.PHONY: clean-build +clean-build: + @echo "Cleaning build artifacts" + rm -rf dist .PHONY: test test: From b9d82c77ca82ed76e99a6d66426479ef50d93303 Mon Sep 17 00:00:00 2001 From: Huang Youliang Date: Tue, 10 Sep 2024 00:10:37 +0800 Subject: [PATCH 02/10] Fix tab title of BanyanDB ui (#531) --- ui/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/index.html b/ui/index.html index 9abfda1e7..5eb59873a 100644 --- a/ui/index.html +++ b/ui/index.html @@ -23,7 +23,7 @@ - Banyan DB + BanyanDB
From 36ef1c6c1cccaec06f325de044a58a1146dd8c9e Mon Sep 17 00:00:00 2001 From: Gao Hongtao Date: Tue, 10 Sep 2024 22:21:49 +0800 Subject: [PATCH 03/10] Document how to build images (#532) Signed-off-by: Gao Hongtao --- docs/installation/docker.md | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/docs/installation/docker.md b/docs/installation/docker.md index e4d7d9994..2fdcddfe9 100644 --- a/docs/installation/docker.md +++ b/docs/installation/docker.md @@ -42,3 +42,49 @@ The BanyanDB server would be listening on the `0.0.0.0:17912` to access gRPC req At the same time, the BanyanDB server would be listening on the `0.0.0.0:17913` to access HTTP requests. if no errors occurred. The HTTP server is used for CLI and Web UI. The Web UI is hosted at `http://localhost:17913/`. + +## Build and Push the Custom Docker image + +The BanyanDB Docker image can be built from the source code. You can build the Docker image by running the following commands: + +```shell +make generate +make release +HUB= IMG_NAME= TAG= make docker.build +``` + +The `make release` command builds binaries and generates the necessary files for building the Docker image. The `make docker.build` command builds the Docker image with the architecture aligned with the host machine. + +`HUB` is the Docker Hub username or the Docker Hub organization name. `IMG_NAME` is the Docker image name. `TAG` is the Docker image tag. + +Note: You can't build other OS or architecture images not identical to the host machine. That's because the docker build command fails to load the image after the build process. + +The `make docker.push` command pushes the Docker image to the Docker Hub. You need to log in to the Docker Hub before running this command. + +```shell +docker login +make generate +make release +make docker.push +``` + +If you want to push other OS or architecture images, you can run the following commands: + +```shell +docker login +make generate +TARGET_OS=linux PLATFORMS=linux/amd64,linux/arm64 make release +PLATFORMS=linux/amd64,linux/arm64 make docker.push +``` + +The `TARGET_OS` environment variable specifies the target OS. The `PLATFORMS` environment variable specifies the target architectures. The `PLATFORMS` environment variable is a comma-separated list of the target architectures. + +If you want to build and publish slim images, you can run the following commands: + +```shell +docker login +make generate +make release +BINARYTYPE=slim make docker.build +BINARYTYPE=slim make docker.push +``` From 58422e35786053e20ea627094a8a7b884b07ffac Mon Sep 17 00:00:00 2001 From: Gao Hongtao Date: Wed, 11 Sep 2024 23:15:00 +0800 Subject: [PATCH 04/10] Test query trace (#533) Signed-off-by: Gao Hongtao --- pkg/index/inverted/inverted_series.go | 4 +-- pkg/index/inverted/inverted_series_test.go | 3 ++ pkg/index/inverted/query.go | 34 +++++++++------------- test/cases/measure/data/data.go | 16 ++++++++-- test/cases/stream/data/data.go | 16 ++++++++-- test/cases/topn/data/data.go | 16 ++++++++-- 6 files changed, 58 insertions(+), 31 deletions(-) diff --git a/pkg/index/inverted/inverted_series.go b/pkg/index/inverted/inverted_series.go index 7c3e31f27..074e30c21 100644 --- a/pkg/index/inverted/inverted_series.go +++ b/pkg/index/inverted/inverted_series.go @@ -54,13 +54,13 @@ func (s *store) BuildQuery(seriesMatchers []index.SeriesMatcher, secondaryQuery q := bluge.NewPrefixQuery(match) q.SetField(entityField) qs[i] = q - primaryNode.Append(newPrefixNode(match, nil)) + primaryNode.Append(newPrefixNode(match)) case index.SeriesMatcherTypeWildcard: match := convert.BytesToString(seriesMatchers[i].Match) q := bluge.NewWildcardQuery(match) q.SetField(entityField) qs[i] = q - primaryNode.Append(newWildcardNode(match, nil)) + primaryNode.Append(newWildcardNode(match)) default: return nil, errors.Errorf("unsupported series matcher type: %v", seriesMatchers[i].Type) } diff --git a/pkg/index/inverted/inverted_series_test.go b/pkg/index/inverted/inverted_series_test.go index 647189d9a..44fe96716 100644 --- a/pkg/index/inverted/inverted_series_test.go +++ b/pkg/index/inverted/inverted_series_test.go @@ -192,6 +192,7 @@ func TestStore_Search(t *testing.T) { } t.Run(name, func(t *testing.T) { query, err := s.BuildQuery(matchers, nil) + require.NotEmpty(t, query.String()) require.NoError(t, err) got, err := s.Search(context.Background(), tt.projection, query) require.NoError(t, err) @@ -282,6 +283,7 @@ func TestStore_SearchWildcard(t *testing.T) { }, }, nil) require.NoError(t, err) + require.NotEmpty(t, query.String()) got, err := s.Search(context.Background(), tt.projection, query) require.NoError(t, err) assert.ElementsMatch(t, tt.want, got) @@ -349,6 +351,7 @@ func TestStore_SearchPrefix(t *testing.T) { }, }, nil) require.NoError(t, err) + require.NotEmpty(t, query.String()) got, err := s.Search(context.Background(), tt.projection, query) require.NoError(t, err) assert.ElementsMatch(t, tt.want, got) diff --git a/pkg/index/inverted/query.go b/pkg/index/inverted/query.go index b34fd7195..fc110bc7b 100644 --- a/pkg/index/inverted/query.go +++ b/pkg/index/inverted/query.go @@ -361,7 +361,9 @@ func (t *termRangeInclusiveNode) MarshalJSON() ([]byte, error) { builder.WriteString(")") } inner["range"] = builder.String() - inner["index"] = t.indexRule.Metadata.Name + ":" + t.indexRule.Metadata.Group + if t.indexRule != nil { + inner["index"] = t.indexRule.Metadata.Name + ":" + t.indexRule.Metadata.Group + } data := make(map[string]interface{}, 1) data["termRangeInclusive"] = inner return json.Marshal(data) @@ -385,7 +387,9 @@ func newTermNode(term string, indexRule *databasev1.IndexRule) *termNode { func (t *termNode) MarshalJSON() ([]byte, error) { inner := make(map[string]interface{}, 1) - inner["index"] = t.indexRule.Metadata.Name + ":" + t.indexRule.Metadata.Group + if t.indexRule != nil { + inner["index"] = t.indexRule.Metadata.Name + ":" + t.indexRule.Metadata.Group + } inner["value"] = t.term data := make(map[string]interface{}, 1) data["term"] = inner @@ -423,23 +427,18 @@ func (m *matchNode) String() string { } type prefixNode struct { - indexRule *databasev1.IndexRule - prefix string + prefix string } -func newPrefixNode(prefix string, indexRule *databasev1.IndexRule) *prefixNode { +func newPrefixNode(prefix string) *prefixNode { return &prefixNode{ - indexRule: indexRule, - prefix: prefix, + prefix: prefix, } } func (m *prefixNode) MarshalJSON() ([]byte, error) { - inner := make(map[string]interface{}, 1) - inner["index"] = m.indexRule.Metadata.Name + ":" + m.indexRule.Metadata.Group - inner["value"] = m.prefix data := make(map[string]interface{}, 1) - data["prefix"] = inner + data["prefix"] = m.prefix return json.Marshal(data) } @@ -448,23 +447,18 @@ func (m *prefixNode) String() string { } type wildcardNode struct { - indexRule *databasev1.IndexRule - wildcard string + wildcard string } -func newWildcardNode(wildcard string, indexRule *databasev1.IndexRule) *wildcardNode { +func newWildcardNode(wildcard string) *wildcardNode { return &wildcardNode{ - indexRule: indexRule, - wildcard: wildcard, + wildcard: wildcard, } } func (m *wildcardNode) MarshalJSON() ([]byte, error) { - inner := make(map[string]interface{}, 1) - inner["index"] = m.indexRule.Metadata.Name + ":" + m.indexRule.Metadata.Group - inner["value"] = m.wildcard data := make(map[string]interface{}, 1) - data["wildcard"] = inner + data["wildcard"] = m.wildcard return json.Marshal(data) } diff --git a/test/cases/measure/data/data.go b/test/cases/measure/data/data.go index 3077c5108..8bd664f22 100644 --- a/test/cases/measure/data/data.go +++ b/test/cases/measure/data/data.go @@ -81,23 +81,33 @@ var VerifyFn = func(innerGm gm.Gomega, sharedContext helpers.SharedContext, args innerGm.Expect(resp.DataPoints[i].Sid).Should(gm.BeNumerically(">", 0)) } } - innerGm.Expect(cmp.Equal(resp, want, + success := innerGm.Expect(cmp.Equal(resp, want, protocmp.IgnoreUnknown(), protocmp.IgnoreFields(&measurev1.DataPoint{}, "timestamp"), protocmp.IgnoreFields(&measurev1.DataPoint{}, "version"), protocmp.IgnoreFields(&measurev1.DataPoint{}, "sid"), protocmp.Transform())). To(gm.BeTrue(), func() string { - j, err := protojson.Marshal(resp) + var j []byte + j, err = protojson.Marshal(resp) if err != nil { return err.Error() } - y, err := yaml.JSONToYAML(j) + var y []byte + y, err = yaml.JSONToYAML(j) if err != nil { return err.Error() } return string(y) }) + if !success { + return + } + query.Trace = true + resp, err = c.Query(ctx, query) + innerGm.Expect(err).NotTo(gm.HaveOccurred()) + innerGm.Expect(resp.Trace).NotTo(gm.BeNil()) + innerGm.Expect(resp.Trace.GetSpans()).NotTo(gm.BeEmpty()) } //go:embed testdata/*.json diff --git a/test/cases/stream/data/data.go b/test/cases/stream/data/data.go index 822d35b38..6701e1667 100644 --- a/test/cases/stream/data/data.go +++ b/test/cases/stream/data/data.go @@ -97,21 +97,31 @@ var VerifyFn = func(innerGm gm.Gomega, sharedContext helpers.SharedContext, args return strings.Compare(a.ElementId, b.ElementId) }) } - innerGm.Expect(cmp.Equal(resp, want, + success := innerGm.Expect(cmp.Equal(resp, want, protocmp.IgnoreUnknown(), protocmp.IgnoreFields(&streamv1.Element{}, "timestamp"), protocmp.Transform())). To(gm.BeTrue(), func() string { - j, err := protojson.Marshal(resp) + var j []byte + j, err = protojson.Marshal(resp) if err != nil { return err.Error() } - y, err := yaml.JSONToYAML(j) + var y []byte + y, err = yaml.JSONToYAML(j) if err != nil { return err.Error() } return string(y) }) + if !success { + return + } + query.Trace = true + resp, err = c.Query(ctx, query) + innerGm.Expect(err).NotTo(gm.HaveOccurred()) + innerGm.Expect(resp.Trace).NotTo(gm.BeNil()) + innerGm.Expect(resp.Trace.GetSpans()).NotTo(gm.BeEmpty()) } func loadData(stream streamv1.StreamService_WriteClient, metadata *commonv1.Metadata, dataFile string, baseTime time.Time, interval time.Duration) { diff --git a/test/cases/topn/data/data.go b/test/cases/topn/data/data.go index 1eb7fbb52..983be9c4d 100644 --- a/test/cases/topn/data/data.go +++ b/test/cases/topn/data/data.go @@ -67,19 +67,29 @@ var VerifyFn = func(innerGm gm.Gomega, sharedContext helpers.SharedContext, args innerGm.Expect(err).NotTo(gm.HaveOccurred()) want := &measurev1.TopNResponse{} helpers.UnmarshalYAML(ww, want) - innerGm.Expect(cmp.Equal(resp, want, + success := innerGm.Expect(cmp.Equal(resp, want, protocmp.IgnoreUnknown(), protocmp.IgnoreFields(&measurev1.TopNList{}, "timestamp"), protocmp.Transform())). To(gm.BeTrue(), func() string { - j, err := protojson.Marshal(resp) + var j []byte + j, err = protojson.Marshal(resp) if err != nil { return err.Error() } - y, err := yaml.JSONToYAML(j) + var y []byte + y, err = yaml.JSONToYAML(j) if err != nil { return err.Error() } return string(y) }) + if !success { + return + } + query.Trace = true + resp, err = c.TopN(ctx, query) + innerGm.Expect(err).NotTo(gm.HaveOccurred()) + innerGm.Expect(resp.Trace).NotTo(gm.BeNil()) + innerGm.Expect(resp.Trace.GetSpans()).NotTo(gm.BeEmpty()) } From 70557d3cfe76a7f52dc981819d144d38f6c0ba15 Mon Sep 17 00:00:00 2001 From: Gao Hongtao Date: Thu, 12 Sep 2024 11:49:51 +0800 Subject: [PATCH 05/10] Bump vendors to fix vulnerabilities (#534) --- .github/workflows/test.yml | 2 +- .golangci.yml | 8 +- CHANGES.md | 2 + CONTRIBUTING.md | 2 +- Makefile | 6 + api/proto/banyandb/property/v1/rpc.proto | 2 +- api/proto/buf.yaml | 4 +- banyand/metadata/schema/property.go | 25 +- banyand/queue/pub/client.go | 4 +- banyand/queue/sub/server.go | 2 +- banyand/stream/benchmark_test.go | 4 +- bydbctl/internal/cmd/measure_test.go | 4 +- bydbctl/internal/cmd/stream_test.go | 4 +- dist/LICENSE | 189 +++-- .../license-github.com-go-resty-resty-v2.txt | 2 +- .../license-github.com-gorilla-websocket.txt | 39 +- .../license-github.com-munnerz-goautoneg.txt | 31 + dist/licenses/license-golang.org-x-crypto.txt | 4 +- dist/licenses/license-golang.org-x-exp.txt | 4 +- dist/licenses/license-golang.org-x-mod.txt | 4 +- dist/licenses/license-golang.org-x-net.txt | 4 +- dist/licenses/license-golang.org-x-sys.txt | 4 +- dist/licenses/license-golang.org-x-text.txt | 4 +- dist/licenses/license-golang.org-x-time.txt | 4 +- dist/licenses/license-golang.org-x-tools.txt | 4 +- .../license--babel-helper-string-parser.txt | 22 + ...nse--babel-helper-validator-identifier.txt | 22 + .../ui-licenses/license--babel-types.txt | 22 + .../ui-licenses/license-picocolors.txt | 2 +- dist/licenses/ui-licenses/license-sass.txt | 5 +- .../license-to-fast-properties.txt | 10 + docs/installation/binaries.md | 2 +- go.mod | 119 +-- go.sum | 274 +++--- pkg/compress/zstd/zstd_test.go | 4 +- pkg/grpchelper/client.go | 38 +- pkg/healthcheck/healthcheck.go | 2 +- pkg/index/inverted/query.go | 6 +- pkg/index/posting/roaring/roaring.go | 8 +- .../measure/measure_plan_distributed.go | 4 +- pkg/query/logical/optimizer.go | 4 +- .../logical/stream/stream_plan_distributed.go | 4 +- .../stream/stream_plan_indexscan_local.go | 6 +- pkg/test/metric/analysis.go | 10 +- pkg/test/query/query.go | 10 +- pkg/timestamp/range.go | 10 +- scripts/build/lint-api.mk | 2 +- scripts/build/lint.mk | 2 - scripts/build/vendor.mk | 2 +- scripts/build/version.mk | 22 +- scripts/build/vuln.mk | 5 + scripts/ci/check/version_test.go | 8 +- test/integration/load/load_suite_test.go | 6 +- ui/LICENSE | 74 +- ui/package-lock.json | 791 +++++++++++------- 55 files changed, 1117 insertions(+), 741 deletions(-) create mode 100644 dist/licenses/license-github.com-munnerz-goautoneg.txt create mode 100644 dist/licenses/ui-licenses/license--babel-helper-string-parser.txt create mode 100644 dist/licenses/ui-licenses/license--babel-helper-validator-identifier.txt create mode 100644 dist/licenses/ui-licenses/license--babel-types.txt create mode 100644 dist/licenses/ui-licenses/license-to-fast-properties.txt create mode 100644 scripts/build/vuln.mk diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 025d955ab..1ce4f12fe 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,7 @@ on: timeout-minutes: required: false type: number - default: 30 + default: 60 jobs: test: diff --git a/.golangci.yml b/.golangci.yml index ddd2d8bdf..5c6e14338 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -29,7 +29,6 @@ linters: - exhaustive # TODO:// enable this lint # - exhaustruct - - exportloopref - gci - goconst - gocritic @@ -88,7 +87,7 @@ linters-settings: sections: - standard - default - - prefix(github.com/apache/skywalking-banyandb/) + - prefix(github.com/apache/skywalking-banyandb/) gocritic: enabled-checks: - appendCombine @@ -116,6 +115,9 @@ linters-settings: # toplevel - for top level comments; # all - for all comments. scope: toplevel + gosec: + excludes: + - G115 # integer overflow conversion (TODO: verify these) staticcheck: checks: ["all", "-ST1000", "-ST1016", "-ST1020", "-ST1021", "-ST1022"] exhaustive: @@ -129,7 +131,7 @@ linters-settings: - 'cobra\.Command$' run: - go: "1.22" + go: "1.23" issues: exclude-rules: - path: ".*\\.pb\\.go" diff --git a/CHANGES.md b/CHANGES.md index 19e6f99ed..20cd8b38f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -63,6 +63,7 @@ Release Notes. - Push "skywalking-banyandb:-testing" image for e2e and stress test. This image contains bydbctl to do a health check. - Set etcd-client log level to "error" and etcd-server log level to "warn". - Push "skywalking-banyandb:-slim" image for the production environment. This image doesn't contain bydbctl and Web UI. +- Bump go to 1.23. ## 0.6.1 @@ -122,6 +123,7 @@ Release Notes. - Bump all dependencies of Go and Node. - Combine banyand and bydbctl Dockerfile. - Update readme for bydbctl +- Introduce the go vulnerability check to "pre-push" task. ## 0.5.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d2a0c5dfd..4a30330fb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -41,7 +41,7 @@ Once we've discussed your changes and you've got your code ready, make sure that Users who want to build a binary from sources have to set up: -* Go 1.22 +* Go 1.23 * Node 20.12 * Git >= 2.30 * Linux, macOS or Windows + WSL2 diff --git a/Makefile b/Makefile index 644e822c5..aa5449dfa 100644 --- a/Makefile +++ b/Makefile @@ -103,6 +103,11 @@ check-req: ## Check the requirements @$(MAKE) -C scripts/ci/check test @$(MAKE) -C ui check-version +include scripts/build/vuln.mk + +vuln-check: $(GOVULNCHECK) + $(GOVULNCHECK) -show color,verbose ./... + check: ## Check that the status is consistent with CI $(MAKE) license-check $(MAKE) format @@ -123,6 +128,7 @@ pre-push: ## Check source files before pushing to the remote repo $(MAKE) lint $(MAKE) license-dep $(MAKE) check + $(MAKE) vuln-check ##@ License targets diff --git a/api/proto/banyandb/property/v1/rpc.proto b/api/proto/banyandb/property/v1/rpc.proto index a7955fd7e..06a5d35a7 100644 --- a/api/proto/banyandb/property/v1/rpc.proto +++ b/api/proto/banyandb/property/v1/rpc.proto @@ -103,7 +103,7 @@ service PropertyService { rpc List(ListRequest) returns (ListResponse) { option (google.api.http) = { get: "/v1/property/lists/{container.group}/{container.name}/{ids}/{tags}" - additional_bindings {get: "/v1/property/lists/{container.group}"} + additional_bindings: {get: "/v1/property/lists/{container.group}"} }; } rpc KeepAlive(KeepAliveRequest) returns (KeepAliveResponse) { diff --git a/api/proto/buf.yaml b/api/proto/buf.yaml index ab813a9a1..8e07822b3 100644 --- a/api/proto/buf.yaml +++ b/api/proto/buf.yaml @@ -24,7 +24,7 @@ deps: - buf.build/envoyproxy/protoc-gen-validate lint: use: - - DEFAULT + - STANDARD breaking: use: - - FILE \ No newline at end of file + - FILE diff --git a/banyand/metadata/schema/property.go b/banyand/metadata/schema/property.go index fae0e27c3..8c72e7db6 100644 --- a/banyand/metadata/schema/property.go +++ b/banyand/metadata/schema/property.go @@ -19,6 +19,7 @@ package schema import ( "context" + "math" "path" "time" @@ -180,11 +181,27 @@ func (e *etcdSchemaRegistry) replaceProperty(ctx context.Context, key string, pr if err != nil { return false, 0, 0, err } - return true, uint32(len(property.Tags)), leaseID, nil + var tagCount uint32 + if tagCount, err = tagLen(property); err != nil { + return false, 0, 0, err + } + return true, tagCount, leaseID, nil +} + +func tagLen(property *propertyv1.Property) (uint32, error) { + tagsCount := len(property.Tags) + if tagsCount < 0 || tagsCount > math.MaxUint32 { + return 0, errors.New("integer overflow: tags count exceeds uint32 range") + } + tagsNum := uint32(tagsCount) + return tagsNum, nil } func (e *etcdSchemaRegistry) mergeProperty(ctx context.Context, key string, property *propertyv1.Property, ttl int64) (bool, uint32, int64, error) { - tagsNum := uint32(len(property.Tags)) + tagCount, err := tagLen(property) + if err != nil { + return false, 0, 0, err + } existed, err := e.GetProperty(ctx, property.Metadata, nil) if errors.Is(err, ErrGRPCResourceNotFound) { return e.replaceProperty(ctx, key, property, ttl) @@ -199,7 +216,7 @@ func (e *etcdSchemaRegistry) mergeProperty(ctx context.Context, key string, prop } merge := func(existed *propertyv1.Property) (*propertyv1.Property, error) { tags := make([]*modelv1.Tag, 0) - for i := 0; i < int(tagsNum); i++ { + for i := 0; i < int(tagCount); i++ { t := property.Tags[i] tagExisted := false for _, et := range existed.Tags { @@ -262,7 +279,7 @@ func (e *etcdSchemaRegistry) mergeProperty(ctx context.Context, key string, prop if prevLeaseID > 0 { _, _ = e.client.Revoke(ctx, clientv3.LeaseID(prevLeaseID)) } - return false, tagsNum, leaseID, nil + return false, tagCount, leaseID, nil } func (e *etcdSchemaRegistry) grant(ctx context.Context, ttl int64) (int64, error) { diff --git a/banyand/queue/pub/client.go b/banyand/queue/pub/client.go index 14e252760..83eed90b4 100644 --- a/banyand/queue/pub/client.go +++ b/banyand/queue/pub/client.go @@ -124,7 +124,7 @@ func (p *pub) OnAddOrUpdate(md schema.Metadata) { if _, ok := p.evictable[name]; ok { return } - conn, err := grpc.Dial(address, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithDefaultServiceConfig(retryPolicy)) + conn, err := grpc.NewClient(address, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithDefaultServiceConfig(retryPolicy)) if err != nil { p.log.Error().Err(err).Msg("failed to connect to grpc server") return @@ -248,7 +248,7 @@ func (p *pub) checkClientHealthAndReconnect(conn *grpc.ClientConn, md schema.Met for { select { case <-time.After(backoff): - connEvict, errEvict := grpc.Dial(node.GrpcAddress, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithDefaultServiceConfig(retryPolicy)) + connEvict, errEvict := grpc.NewClient(node.GrpcAddress, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithDefaultServiceConfig(retryPolicy)) if errEvict == nil && p.healthCheck(en.n, connEvict) { func() { p.mu.Lock() diff --git a/banyand/queue/sub/server.go b/banyand/queue/sub/server.go index 89bddbc38..aa3db29d6 100644 --- a/banyand/queue/sub/server.go +++ b/banyand/queue/sub/server.go @@ -70,7 +70,7 @@ type server struct { log *logger.Logger ser *grpclib.Server listeners map[bus.Topic]bus.MessageListener - *clusterv1.UnimplementedServiceServer + clusterv1.UnimplementedServiceServer metrics *metrics clientCloser context.CancelFunc host string diff --git a/banyand/stream/benchmark_test.go b/banyand/stream/benchmark_test.go index d4f149d69..0bb418e50 100644 --- a/banyand/stream/benchmark_test.go +++ b/banyand/stream/benchmark_test.go @@ -105,8 +105,8 @@ func (dbs *databaseSupplier) SupplyTSDB() io.Closer { return nil } -func generateRandomNumber(max int64) int { - n, _ := rand.Int(rand.Reader, big.NewInt(max)) +func generateRandomNumber(maxValue int64) int { + n, _ := rand.Int(rand.Reader, big.NewInt(maxValue)) return int(n.Int64()) + 1 } diff --git a/bydbctl/internal/cmd/measure_test.go b/bydbctl/internal/cmd/measure_test.go index 0f0e65caa..2ded6ba4b 100644 --- a/bydbctl/internal/cmd/measure_test.go +++ b/bydbctl/internal/cmd/measure_test.go @@ -206,7 +206,7 @@ var _ = Describe("Measure Data Query", func() { }) It("query all measure data", func() { - conn, err := grpclib.Dial( + conn, err := grpclib.NewClient( grpcAddr, grpclib.WithTransportCredentials(insecure.NewCredentials()), ) @@ -242,7 +242,7 @@ tagProjection: }) DescribeTable("query measure data with time range flags", func(timeArgs ...string) { - conn, err := grpclib.Dial( + conn, err := grpclib.NewClient( grpcAddr, grpclib.WithTransportCredentials(insecure.NewCredentials()), ) diff --git a/bydbctl/internal/cmd/stream_test.go b/bydbctl/internal/cmd/stream_test.go index f413e1bce..75ad4b7ea 100644 --- a/bydbctl/internal/cmd/stream_test.go +++ b/bydbctl/internal/cmd/stream_test.go @@ -207,7 +207,7 @@ var _ = Describe("Stream Data Query", func() { }) It("query stream all data", func() { - conn, err := grpclib.Dial( + conn, err := grpclib.NewClient( grpcAddr, grpclib.WithTransportCredentials(insecure.NewCredentials()), ) @@ -243,7 +243,7 @@ projection: }) DescribeTable("query stream data with time range flags", func(timeArgs ...string) { - conn, err := grpclib.Dial( + conn, err := grpclib.NewClient( grpcAddr, grpclib.WithTransportCredentials(insecure.NewCredentials()), ) diff --git a/dist/LICENSE b/dist/LICENSE index 2de4f6be3..49b5a45ba 100644 --- a/dist/LICENSE +++ b/dist/LICENSE @@ -183,11 +183,11 @@ Apache-2.0 licenses github.com/blevesearch/vellum v1.0.10 Apache-2.0 github.com/coreos/go-semver v0.3.1 Apache-2.0 github.com/coreos/go-systemd/v22 v22.5.0 Apache-2.0 - github.com/envoyproxy/protoc-gen-validate v1.0.4 Apache-2.0 - github.com/go-logr/logr v1.4.1 Apache-2.0 + github.com/envoyproxy/protoc-gen-validate v1.1.0 Apache-2.0 + github.com/go-logr/logr v1.4.2 Apache-2.0 github.com/go-logr/stdr v1.2.2 Apache-2.0 - github.com/google/btree v1.1.2 Apache-2.0 - github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 Apache-2.0 + github.com/google/btree v1.1.3 Apache-2.0 + github.com/google/pprof v0.0.0-20240910150728-a0b0bb1d4134 Apache-2.0 github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 Apache-2.0 github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 Apache-2.0 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 Apache-2.0 @@ -200,51 +200,52 @@ Apache-2.0 licenses github.com/modern-go/reflect2 v1.0.2 Apache-2.0 github.com/mschoch/smat v0.2.0 Apache-2.0 github.com/oklog/run v1.1.0 Apache-2.0 - github.com/prometheus/client_golang v1.19.0 Apache-2.0 + github.com/prometheus/client_golang v1.20.3 Apache-2.0 github.com/prometheus/client_model v0.6.1 Apache-2.0 - github.com/prometheus/common v0.53.0 Apache-2.0 - github.com/prometheus/procfs v0.14.0 Apache-2.0 + github.com/prometheus/common v0.59.1 Apache-2.0 + github.com/prometheus/procfs v0.15.1 Apache-2.0 github.com/soheilhy/cmux v0.1.5 Apache-2.0 github.com/spf13/afero v1.11.0 Apache-2.0 - github.com/spf13/cobra v1.8.0 Apache-2.0 + github.com/spf13/cobra v1.8.1 Apache-2.0 github.com/tklauser/numcpus v0.8.0 Apache-2.0 github.com/zinclabs/bluge v1.1.5 Apache-2.0 github.com/zinclabs/bluge_segment_api v1.0.0 Apache-2.0 github.com/zinclabs/ice v1.1.3 Apache-2.0 - go.etcd.io/etcd/api/v3 v3.5.13 Apache-2.0 - go.etcd.io/etcd/client/pkg/v3 v3.5.13 Apache-2.0 - go.etcd.io/etcd/client/v2 v2.305.13 Apache-2.0 - go.etcd.io/etcd/client/v3 v3.5.13 Apache-2.0 - go.etcd.io/etcd/pkg/v3 v3.5.13 Apache-2.0 - go.etcd.io/etcd/raft/v3 v3.5.13 Apache-2.0 - go.etcd.io/etcd/server/v3 v3.5.13 Apache-2.0 - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.51.0 Apache-2.0 - go.opentelemetry.io/otel v1.26.0 Apache-2.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.26.0 Apache-2.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.26.0 Apache-2.0 - go.opentelemetry.io/otel/metric v1.26.0 Apache-2.0 - go.opentelemetry.io/otel/sdk v1.26.0 Apache-2.0 - go.opentelemetry.io/otel/trace v1.26.0 Apache-2.0 - go.opentelemetry.io/proto/otlp v1.2.0 Apache-2.0 + go.etcd.io/etcd/api/v3 v3.5.16 Apache-2.0 + go.etcd.io/etcd/client/pkg/v3 v3.5.16 Apache-2.0 + go.etcd.io/etcd/client/v2 v2.305.16 Apache-2.0 + go.etcd.io/etcd/client/v3 v3.5.16 Apache-2.0 + go.etcd.io/etcd/pkg/v3 v3.5.16 Apache-2.0 + go.etcd.io/etcd/raft/v3 v3.5.16 Apache-2.0 + go.etcd.io/etcd/server/v3 v3.5.16 Apache-2.0 + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 Apache-2.0 + go.opentelemetry.io/otel v1.30.0 Apache-2.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0 Apache-2.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.30.0 Apache-2.0 + go.opentelemetry.io/otel/metric v1.30.0 Apache-2.0 + go.opentelemetry.io/otel/sdk v1.30.0 Apache-2.0 + go.opentelemetry.io/otel/trace v1.30.0 Apache-2.0 + go.opentelemetry.io/proto/otlp v1.3.1 Apache-2.0 go.uber.org/mock v0.4.0 Apache-2.0 - google.golang.org/genproto v0.0.0-20240415180920-8c6c420018be Apache-2.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be Apache-2.0 - google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be Apache-2.0 - google.golang.org/grpc v1.63.2 Apache-2.0 + google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 Apache-2.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 Apache-2.0 + google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 Apache-2.0 + google.golang.org/grpc v1.66.1 Apache-2.0 gopkg.in/ini.v1 v1.67.0 Apache-2.0 gopkg.in/yaml.v2 v2.4.0 Apache-2.0 - skywalking.apache.org/repo/goapi v0.0.0-20240227092755-edee3273b361 Apache-2.0 + skywalking.apache.org/repo/goapi v0.0.0-20240604102541-64f9001abe03 Apache-2.0 ======================================================================== Apache-2.0 and BSD-3-Clause licenses ======================================================================== - github.com/RoaringBitmap/roaring v1.9.3 Apache-2.0 and BSD-3-Clause + github.com/RoaringBitmap/roaring v1.9.4 Apache-2.0 and BSD-3-Clause ======================================================================== BSD-2-Clause licenses ======================================================================== + github.com/gorilla/websocket v1.5.3 BSD-2-Clause github.com/magiconair/properties v1.8.7 BSD-2-Clause github.com/pkg/errors v0.9.1 BSD-2-Clause github.com/russross/blackfriday/v2 v2.1.0 BSD-2-Clause @@ -259,7 +260,7 @@ BSD-2-Clause and ISC licenses BSD-3-Clause licenses ======================================================================== - github.com/bits-and-blooms/bitset v1.13.0 BSD-3-Clause + github.com/bits-and-blooms/bitset v1.14.3 BSD-3-Clause github.com/blevesearch/mmap-go v1.0.4 BSD-3-Clause github.com/blevesearch/snowballstem v0.9.0 BSD-3-Clause github.com/fsnotify/fsnotify v1.7.0 BSD-3-Clause @@ -267,32 +268,32 @@ BSD-3-Clause licenses github.com/golang/protobuf v1.5.4 BSD-3-Clause github.com/google/go-cmp v0.6.0 BSD-3-Clause github.com/google/uuid v1.6.0 BSD-3-Clause - github.com/gorilla/websocket v1.5.1 BSD-3-Clause github.com/grpc-ecosystem/grpc-gateway v1.16.0 BSD-3-Clause - github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 BSD-3-Clause - github.com/lufia/plan9stats v0.0.0-20240408141607-282e7b5d6b74 BSD-3-Clause + github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 BSD-3-Clause + github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 BSD-3-Clause + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 BSD-3-Clause github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 BSD-3-Clause github.com/sagikazarmark/slog-shim v0.1.0 BSD-3-Clause - github.com/shirou/gopsutil/v3 v3.24.3 BSD-3-Clause + github.com/shirou/gopsutil/v3 v3.24.5 BSD-3-Clause github.com/spaolacci/murmur3 v1.1.0 BSD-3-Clause github.com/spf13/pflag v1.0.5 BSD-3-Clause github.com/tklauser/go-sysconf v0.3.14 BSD-3-Clause github.com/xhit/go-str2duration/v2 v2.1.0 BSD-3-Clause - golang.org/x/crypto v0.22.0 BSD-3-Clause - golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f BSD-3-Clause - golang.org/x/mod v0.17.0 BSD-3-Clause - golang.org/x/net v0.24.0 BSD-3-Clause - golang.org/x/sys v0.19.0 BSD-3-Clause - golang.org/x/text v0.14.0 BSD-3-Clause - golang.org/x/time v0.5.0 BSD-3-Clause - golang.org/x/tools v0.20.0 BSD-3-Clause - google.golang.org/protobuf v1.33.0 BSD-3-Clause + golang.org/x/crypto v0.27.0 BSD-3-Clause + golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 BSD-3-Clause + golang.org/x/mod v0.21.0 BSD-3-Clause + golang.org/x/net v0.29.0 BSD-3-Clause + golang.org/x/sys v0.25.0 BSD-3-Clause + golang.org/x/text v0.18.0 BSD-3-Clause + golang.org/x/time v0.6.0 BSD-3-Clause + golang.org/x/tools v0.25.0 BSD-3-Clause + google.golang.org/protobuf v1.34.2 BSD-3-Clause ======================================================================== BSD-3-Clause and Apache-2.0 and MIT licenses ======================================================================== - github.com/klauspost/compress v1.17.8 BSD-3-Clause and Apache-2.0 and MIT + github.com/klauspost/compress v1.17.9 BSD-3-Clause and Apache-2.0 and MIT ======================================================================== CC0-1.0 licenses @@ -311,7 +312,7 @@ MIT licenses ======================================================================== github.com/SkyAPM/clock v1.3.1-0.20220809233656-dc7607c94a97 MIT - github.com/axiomhq/hyperloglog v0.0.0-20240319100328-84253e514e02 MIT + github.com/axiomhq/hyperloglog v0.2.0 MIT github.com/beorn7/perks v1.0.1 MIT github.com/blevesearch/go-porterstemmer v1.0.3 MIT github.com/caio/go-tdigest v3.1.0+incompatible MIT @@ -321,9 +322,9 @@ MIT licenses github.com/cpuguy83/go-md2man/v2 v2.0.4 MIT github.com/dgryski/go-metro v0.0.0-20211217172704-adc40b04c140 MIT github.com/dustin/go-humanize v1.0.1 MIT - github.com/go-chi/chi/v5 v5.0.12 MIT + github.com/go-chi/chi/v5 v5.1.0 MIT github.com/go-ole/go-ole v1.3.0 MIT - github.com/go-resty/resty/v2 v2.12.0 MIT + github.com/go-resty/resty/v2 v2.14.0 MIT github.com/go-task/slim-sprig/v3 v3.0.0 MIT github.com/golang-jwt/jwt/v4 v4.5.0 MIT github.com/json-iterator/go v1.1.12 MIT @@ -331,26 +332,26 @@ MIT licenses github.com/mattn/go-isatty v0.0.20 MIT github.com/mitchellh/mapstructure v1.5.0 MIT github.com/montanaflynn/stats v0.7.1 MIT - github.com/onsi/ginkgo/v2 v2.17.2 MIT - github.com/onsi/gomega v1.33.0 MIT - github.com/pelletier/go-toml/v2 v2.2.1 MIT + github.com/onsi/ginkgo/v2 v2.20.2 MIT + github.com/onsi/gomega v1.34.2 MIT + github.com/pelletier/go-toml/v2 v2.2.3 MIT github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 MIT github.com/robfig/cron/v3 v3.0.1 MIT - github.com/rs/zerolog v1.32.0 MIT - github.com/sagikazarmark/locafero v0.4.0 MIT + github.com/rs/zerolog v1.33.0 MIT + github.com/sagikazarmark/locafero v0.6.0 MIT github.com/sirupsen/logrus v1.9.3 MIT github.com/sourcegraph/conc v0.3.0 MIT - github.com/spf13/cast v1.6.0 MIT - github.com/spf13/viper v1.18.2 MIT + github.com/spf13/cast v1.7.0 MIT + github.com/spf13/viper v1.19.0 MIT github.com/stretchr/testify v1.9.0 MIT github.com/subosito/gotenv v1.6.0 MIT github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 MIT - github.com/urfave/cli/v2 v2.27.2 MIT + github.com/urfave/cli/v2 v2.27.4 MIT github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 MIT - github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 MIT + github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 MIT github.com/yusufpapurcu/wmi v1.2.4 MIT github.com/zenizh/go-capturer v0.0.0-20211219060012-52ea6c8fed04 MIT - go.etcd.io/bbolt v1.3.9 MIT + go.etcd.io/bbolt v1.3.11 MIT go.uber.org/multierr v1.11.0 MIT go.uber.org/zap v1.27.0 MIT gopkg.in/natefinch/lumberjack.v2 v2.2.1 MIT @@ -406,7 +407,7 @@ BSD-3-Clause licenses ======================================================================== normalize-wheel-es 1.2.0 BSD-3-Clause - source-map-js 1.2.0 BSD-3-Clause + source-map-js 1.2.1 BSD-3-Clause zrender 5.6.0 BSD-3-Clause ======================================================================== @@ -416,58 +417,61 @@ ISC licenses anymatch 3.1.3 ISC glob-parent 5.1.2 ISC graceful-fs 4.2.11 ISC - picocolors 1.0.1 ISC - semver 7.6.2 ISC - yaml 2.4.5 ISC + picocolors 1.1.0 ISC + semver 7.6.3 ISC + yaml 2.5.1 ISC ======================================================================== MIT licenses ======================================================================== - @babel/parser 7.24.7 MIT + @babel/helper-string-parser 7.24.8 MIT + @babel/helper-validator-identifier 7.24.7 MIT + @babel/parser 7.25.6 MIT + @babel/types 7.25.6 MIT @ctrl/tinycolor 3.6.1 MIT @element-plus/icons-vue 2.3.1 MIT - @floating-ui/core 1.6.4 MIT - @floating-ui/dom 1.6.7 MIT - @floating-ui/utils 0.2.4 MIT - @jridgewell/sourcemap-codec 1.4.15 MIT + @floating-ui/core 1.6.7 MIT + @floating-ui/dom 1.6.10 MIT + @floating-ui/utils 0.2.7 MIT + @jridgewell/sourcemap-codec 1.5.0 MIT @popperjs/core 2.11.7 MIT - @types/lodash 4.17.6 MIT + @types/lodash 4.17.7 MIT @types/lodash-es 4.17.12 MIT @types/web-bluetooth 0.0.16 MIT - @vue/compiler-core 3.4.31 MIT - @vue/compiler-dom 3.4.31 MIT - @vue/compiler-sfc 3.4.31 MIT - @vue/compiler-ssr 3.4.31 MIT - @vue/devtools-api 6.6.3 MIT - @vue/reactivity 3.4.31 MIT - @vue/runtime-core 3.4.31 MIT - @vue/runtime-dom 3.4.31 MIT - @vue/server-renderer 3.4.31 MIT - @vue/shared 3.4.31 MIT + @vue/compiler-core 3.5.4 MIT + @vue/compiler-dom 3.5.4 MIT + @vue/compiler-sfc 3.5.4 MIT + @vue/compiler-ssr 3.5.4 MIT + @vue/devtools-api 6.6.4 MIT + @vue/reactivity 3.5.4 MIT + @vue/runtime-core 3.5.4 MIT + @vue/runtime-dom 3.5.4 MIT + @vue/server-renderer 3.5.4 MIT + @vue/shared 3.5.4 MIT @vueuse/core 9.13.0 MIT - @vueuse/core/node_modules/vue-demi 0.14.8 MIT + @vueuse/core/node_modules/vue-demi 0.14.10 MIT @vueuse/metadata 9.13.0 MIT @vueuse/shared 9.13.0 MIT - @vueuse/shared/node_modules/vue-demi 0.14.8 MIT + @vueuse/shared/node_modules/vue-demi 0.14.10 MIT async-validator 4.2.5 MIT asynckit 0.4.0 MIT - axios 1.7.2 MIT + axios 1.7.7 MIT binary-extensions 2.3.0 MIT braces 3.0.3 MIT chokidar 3.6.0 MIT - codemirror 5.65.16 MIT + codemirror 5.65.17 MIT combined-stream 1.0.8 MIT csstype 3.1.3 MIT - dayjs 1.11.11 MIT + dayjs 1.11.13 MIT delayed-stream 1.0.0 MIT - element-plus 2.7.6 MIT + element-plus 2.8.2 MIT escape-html 1.0.3 MIT estree-walker 2.0.2 MIT fill-range 7.1.1 MIT - follow-redirects 1.15.6 MIT + follow-redirects 1.15.9 MIT form-data 4.0.0 MIT - immutable 4.3.6 MIT + immutable 4.3.7 MIT is-binary-path 2.1.0 MIT is-extglob 2.1.1 MIT is-glob 4.0.3 MIT @@ -477,7 +481,7 @@ MIT licenses lodash 4.17.21 MIT lodash-es 4.17.21 MIT lodash-unified 1.0.3 MIT - magic-string 0.30.10 MIT + magic-string 0.30.11 MIT memoize-one 6.0.0 MIT mime-db 1.52.0 MIT mime-types 2.1.35 MIT @@ -485,16 +489,17 @@ MIT licenses nanoid 3.3.7 MIT normalize-path 3.0.0 MIT picomatch 2.3.1 MIT - pinia 2.1.7 MIT - pinia/node_modules/vue-demi 0.14.8 MIT - postcss 8.4.39 MIT + pinia 2.2.2 MIT + pinia/node_modules/vue-demi 0.14.10 MIT + postcss 8.4.45 MIT proxy-from-env 1.1.0 MIT readdirp 3.6.0 MIT - sass 1.77.6 MIT + sass 1.78.0 MIT + to-fast-properties 2.0.0 MIT to-regex-range 5.0.1 MIT universalify 2.0.1 MIT - vue 3.4.31 MIT - vue-router 4.4.0 MIT + vue 3.5.4 MIT + vue-router 4.4.4 MIT ======================================================================== Python-2.0 licenses diff --git a/dist/licenses/license-github.com-go-resty-resty-v2.txt b/dist/licenses/license-github.com-go-resty-resty-v2.txt index 0c2d38a38..de30fea8f 100644 --- a/dist/licenses/license-github.com-go-resty-resty-v2.txt +++ b/dist/licenses/license-github.com-go-resty-resty-v2.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015-2023 Jeevanandam M., https://myjeeva.com +Copyright (c) 2015-2024 Jeevanandam M., https://myjeeva.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/dist/licenses/license-github.com-gorilla-websocket.txt b/dist/licenses/license-github.com-gorilla-websocket.txt index bb9d80bc9..9171c9722 100644 --- a/dist/licenses/license-github.com-gorilla-websocket.txt +++ b/dist/licenses/license-github.com-gorilla-websocket.txt @@ -1,27 +1,22 @@ -Copyright (c) 2023 The Gorilla Authors. All rights reserved. +Copyright (c) 2013 The Gorilla WebSocket Authors. All rights reserved. Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: +modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. + Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/dist/licenses/license-github.com-munnerz-goautoneg.txt b/dist/licenses/license-github.com-munnerz-goautoneg.txt new file mode 100644 index 000000000..bbc7b897c --- /dev/null +++ b/dist/licenses/license-github.com-munnerz-goautoneg.txt @@ -0,0 +1,31 @@ +Copyright (c) 2011, Open Knowledge Foundation Ltd. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + Neither the name of the Open Knowledge Foundation Ltd. nor the + names of its contributors may be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/dist/licenses/license-golang.org-x-crypto.txt b/dist/licenses/license-golang.org-x-crypto.txt index 6a66aea5e..2a7cf70da 100644 --- a/dist/licenses/license-golang.org-x-crypto.txt +++ b/dist/licenses/license-golang.org-x-crypto.txt @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/dist/licenses/license-golang.org-x-exp.txt b/dist/licenses/license-golang.org-x-exp.txt index 6a66aea5e..2a7cf70da 100644 --- a/dist/licenses/license-golang.org-x-exp.txt +++ b/dist/licenses/license-golang.org-x-exp.txt @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/dist/licenses/license-golang.org-x-mod.txt b/dist/licenses/license-golang.org-x-mod.txt index 6a66aea5e..2a7cf70da 100644 --- a/dist/licenses/license-golang.org-x-mod.txt +++ b/dist/licenses/license-golang.org-x-mod.txt @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/dist/licenses/license-golang.org-x-net.txt b/dist/licenses/license-golang.org-x-net.txt index 6a66aea5e..2a7cf70da 100644 --- a/dist/licenses/license-golang.org-x-net.txt +++ b/dist/licenses/license-golang.org-x-net.txt @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/dist/licenses/license-golang.org-x-sys.txt b/dist/licenses/license-golang.org-x-sys.txt index 6a66aea5e..2a7cf70da 100644 --- a/dist/licenses/license-golang.org-x-sys.txt +++ b/dist/licenses/license-golang.org-x-sys.txt @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/dist/licenses/license-golang.org-x-text.txt b/dist/licenses/license-golang.org-x-text.txt index 6a66aea5e..2a7cf70da 100644 --- a/dist/licenses/license-golang.org-x-text.txt +++ b/dist/licenses/license-golang.org-x-text.txt @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/dist/licenses/license-golang.org-x-time.txt b/dist/licenses/license-golang.org-x-time.txt index 6a66aea5e..2a7cf70da 100644 --- a/dist/licenses/license-golang.org-x-time.txt +++ b/dist/licenses/license-golang.org-x-time.txt @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/dist/licenses/license-golang.org-x-tools.txt b/dist/licenses/license-golang.org-x-tools.txt index 6a66aea5e..2a7cf70da 100644 --- a/dist/licenses/license-golang.org-x-tools.txt +++ b/dist/licenses/license-golang.org-x-tools.txt @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/dist/licenses/ui-licenses/license--babel-helper-string-parser.txt b/dist/licenses/ui-licenses/license--babel-helper-string-parser.txt new file mode 100644 index 000000000..f31575ec7 --- /dev/null +++ b/dist/licenses/ui-licenses/license--babel-helper-string-parser.txt @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/dist/licenses/ui-licenses/license--babel-helper-validator-identifier.txt b/dist/licenses/ui-licenses/license--babel-helper-validator-identifier.txt new file mode 100644 index 000000000..f31575ec7 --- /dev/null +++ b/dist/licenses/ui-licenses/license--babel-helper-validator-identifier.txt @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/dist/licenses/ui-licenses/license--babel-types.txt b/dist/licenses/ui-licenses/license--babel-types.txt new file mode 100644 index 000000000..f31575ec7 --- /dev/null +++ b/dist/licenses/ui-licenses/license--babel-types.txt @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/dist/licenses/ui-licenses/license-picocolors.txt b/dist/licenses/ui-licenses/license-picocolors.txt index 496098c6e..46c9b95d4 100644 --- a/dist/licenses/ui-licenses/license-picocolors.txt +++ b/dist/licenses/ui-licenses/license-picocolors.txt @@ -1,6 +1,6 @@ ISC License -Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov +Copyright (c) 2021-2024 Oleksii Raspopov, Kostiantyn Denysov, Anton Verinov Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above diff --git a/dist/licenses/ui-licenses/license-sass.txt b/dist/licenses/ui-licenses/license-sass.txt index 4ddaee78c..be5cee61b 100644 --- a/dist/licenses/ui-licenses/license-sass.txt +++ b/dist/licenses/ui-licenses/license-sass.txt @@ -215,8 +215,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- -async, cli_util, collection, mime, source_map_stack_trace, stream_channel and -typed_data license: +async, cli_util, collection, mime, stream_channel and typed_data license: Copyright 2015, the Dart project authors. @@ -583,7 +582,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- -convert, crypto, shelf_static and vm_service license: +convert, crypto, shelf_static, source_map_stack_trace and vm_service license: Copyright 2015, the Dart project authors. diff --git a/dist/licenses/ui-licenses/license-to-fast-properties.txt b/dist/licenses/ui-licenses/license-to-fast-properties.txt new file mode 100644 index 000000000..cef79eff9 --- /dev/null +++ b/dist/licenses/ui-licenses/license-to-fast-properties.txt @@ -0,0 +1,10 @@ +MIT License + +Copyright (c) 2014 Petka Antonov + 2015 Sindre Sorhus + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/docs/installation/binaries.md b/docs/installation/binaries.md index 62610e199..2eeade4e9 100644 --- a/docs/installation/binaries.md +++ b/docs/installation/binaries.md @@ -56,7 +56,7 @@ The banyand and bydbctl directory structure is as follows. Users who want to build a binary from sources have to set up: -* Go 1.22 +* Go 1.23 * Node 20.12 * Git >= 2.30 * Linux, macOS or Windows+WSL2 diff --git a/go.mod b/go.mod index 703d1ee0f..2c79c9aa0 100644 --- a/go.mod +++ b/go.mod @@ -1,64 +1,67 @@ module github.com/apache/skywalking-banyandb -go 1.22 +go 1.23.0 + +toolchain go1.23.1 require ( - github.com/RoaringBitmap/roaring v1.9.3 + github.com/RoaringBitmap/roaring v1.9.4 github.com/apache/skywalking-cli v0.0.0-20240227151024-ee371a210afe github.com/benbjohnson/clock v1.3.0 github.com/blugelabs/bluge v0.2.2 github.com/cespare/xxhash v1.1.0 github.com/emirpasic/gods v1.18.1 - github.com/envoyproxy/protoc-gen-validate v1.0.4 - github.com/go-chi/chi/v5 v5.0.12 - github.com/go-resty/resty/v2 v2.12.0 + github.com/envoyproxy/protoc-gen-validate v1.1.0 + github.com/go-chi/chi/v5 v5.1.0 + github.com/go-resty/resty/v2 v2.14.0 github.com/google/go-cmp v0.6.0 github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 github.com/hashicorp/golang-lru v1.0.2 github.com/kkdai/maglev v0.2.0 github.com/montanaflynn/stats v0.7.1 github.com/oklog/run v1.1.0 - github.com/onsi/ginkgo/v2 v2.17.2 - github.com/onsi/gomega v1.33.0 + github.com/onsi/ginkgo/v2 v2.20.2 + github.com/onsi/gomega v1.34.2 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.19.0 - github.com/rs/zerolog v1.32.0 - github.com/spf13/cobra v1.8.0 + github.com/prometheus/client_golang v1.20.3 + github.com/rs/zerolog v1.33.0 + github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.18.2 + github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.9.0 - github.com/urfave/cli/v2 v2.27.2 + github.com/urfave/cli/v2 v2.27.4 github.com/xhit/go-str2duration/v2 v2.1.0 github.com/zenizh/go-capturer v0.0.0-20211219060012-52ea6c8fed04 - go.etcd.io/etcd/client/v3 v3.5.13 - go.etcd.io/etcd/server/v3 v3.5.13 + go.etcd.io/etcd/client/v3 v3.5.16 + go.etcd.io/etcd/server/v3 v3.5.16 go.uber.org/mock v0.4.0 go.uber.org/multierr v1.11.0 - golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f - golang.org/x/mod v0.17.0 - google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be - google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be - google.golang.org/grpc v1.63.2 - google.golang.org/protobuf v1.33.0 + golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 + golang.org/x/mod v0.21.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 + google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 + google.golang.org/grpc v1.66.1 + google.golang.org/protobuf v1.34.2 sigs.k8s.io/yaml v1.4.0 - skywalking.apache.org/repo/goapi v0.0.0-20240227092755-edee3273b361 + skywalking.apache.org/repo/goapi v0.0.0-20240604102541-64f9001abe03 ) require ( github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/machinebox/graphql v0.2.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect - github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect + github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect ) require ( - github.com/axiomhq/hyperloglog v0.0.0-20240319100328-84253e514e02 // indirect + github.com/axiomhq/hyperloglog v0.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bits-and-blooms/bitset v1.13.0 // indirect + github.com/bits-and-blooms/bitset v1.14.3 // indirect github.com/blevesearch/go-porterstemmer v1.0.3 // indirect github.com/blevesearch/mmap-go v1.0.4 // indirect github.com/blevesearch/segment v0.9.1 // indirect @@ -76,15 +79,15 @@ require ( github.com/dgryski/go-metro v0.0.0-20211217172704-adc40b04c140 // indirect github.com/dustin/go-humanize v1.0.1 github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/btree v1.1.2 // indirect - github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 // indirect - github.com/gorilla/websocket v1.5.1 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/pprof v0.0.0-20240910150728-a0b0bb1d4134 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect @@ -93,8 +96,8 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jonboulle/clockwork v0.4.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.8 - github.com/lufia/plan9stats v0.0.0-20240408141607-282e7b5d6b74 // indirect + github.com/klauspost/compress v1.17.9 + github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect @@ -102,50 +105,50 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mschoch/smat v0.2.0 // indirect - github.com/pelletier/go-toml/v2 v2.2.1 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.53.0 // indirect - github.com/prometheus/procfs v0.14.0 // indirect + github.com/prometheus/common v0.59.1 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/robfig/cron/v3 v3.0.1 - github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/locafero v0.6.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/shirou/gopsutil/v3 v3.24.3 + github.com/shirou/gopsutil/v3 v3.24.5 github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/soheilhy/cmux v0.1.5 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/cast v1.7.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tklauser/go-sysconf v0.3.14 // indirect github.com/tklauser/numcpus v0.8.0 // indirect github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 // indirect github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.etcd.io/bbolt v1.3.9 // indirect - go.etcd.io/etcd/api/v3 v3.5.13 - go.etcd.io/etcd/client/pkg/v3 v3.5.13 - go.etcd.io/etcd/client/v2 v2.305.13 // indirect - go.etcd.io/etcd/pkg/v3 v3.5.13 // indirect - go.etcd.io/etcd/raft/v3 v3.5.13 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.51.0 // indirect - go.opentelemetry.io/otel v1.26.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.26.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.26.0 // indirect - go.opentelemetry.io/otel/metric v1.26.0 // indirect - go.opentelemetry.io/otel/sdk v1.26.0 // indirect - go.opentelemetry.io/otel/trace v1.26.0 // indirect - go.opentelemetry.io/proto/otlp v1.2.0 // indirect + go.etcd.io/bbolt v1.3.11 // indirect + go.etcd.io/etcd/api/v3 v3.5.16 + go.etcd.io/etcd/client/pkg/v3 v3.5.16 + go.etcd.io/etcd/client/v2 v2.305.16 // indirect + go.etcd.io/etcd/pkg/v3 v3.5.16 // indirect + go.etcd.io/etcd/raft/v3 v3.5.16 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect + go.opentelemetry.io/otel v1.30.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.30.0 // indirect + go.opentelemetry.io/otel/metric v1.30.0 // indirect + go.opentelemetry.io/otel/sdk v1.30.0 // indirect + go.opentelemetry.io/otel/trace v1.30.0 // indirect + go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.22.0 // indirect - golang.org/x/net v0.24.0 // indirect - golang.org/x/sys v0.19.0 - golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.20.0 // indirect - google.golang.org/genproto v0.0.0-20240415180920-8c6c420018be // indirect + golang.org/x/crypto v0.27.0 // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/sys v0.25.0 + golang.org/x/text v0.18.0 // indirect + golang.org/x/time v0.6.0 // indirect + golang.org/x/tools v0.25.0 // indirect + google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v2 v2.4.0 diff --git a/go.sum b/go.sum index efbfc08b0..7872c57a0 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/RoaringBitmap/roaring v0.9.4/go.mod h1:icnadbWcNyfEHlYdr+tDlOTih1Bf/h+rzPpv4sbomAA= -github.com/RoaringBitmap/roaring v1.9.3 h1:t4EbC5qQwnisr5PrP9nt0IRhRTb9gMUgQF4t4S2OByM= -github.com/RoaringBitmap/roaring v1.9.3/go.mod h1:6AXUsoIEzDTFFQCe1RbGA6uFONMhvejWj5rqITANK90= +github.com/RoaringBitmap/roaring v1.9.4 h1:yhEIoH4YezLYT04s1nHehNO64EKFTop/wBhxv2QzDdQ= +github.com/RoaringBitmap/roaring v1.9.4/go.mod h1:6AXUsoIEzDTFFQCe1RbGA6uFONMhvejWj5rqITANK90= github.com/SkyAPM/clock v1.3.1-0.20220809233656-dc7607c94a97 h1:FKuhJ+6n/DHspGeLleeNbziWnKr9gHKYN4q7NcoCp4s= github.com/SkyAPM/clock v1.3.1-0.20220809233656-dc7607c94a97/go.mod h1:2xGRl9H1pllhxTbEGO1W3gDkip8P9GQaHPni/wpdR44= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= @@ -14,15 +14,15 @@ github.com/apache/skywalking-cli v0.0.0-20240227151024-ee371a210afe h1:zIc2yfpc/ github.com/apache/skywalking-cli v0.0.0-20240227151024-ee371a210afe/go.mod h1:pu6Q19Xs38FSfy/IwnJGAMilO+W58/ugM8aMfLzw+i0= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/axiomhq/hyperloglog v0.0.0-20191112132149-a4c4c47bc57f/go.mod h1:2stgcRjl6QmW+gU2h5E7BQXg4HU0gzxKWDuT5HviN9s= -github.com/axiomhq/hyperloglog v0.0.0-20240319100328-84253e514e02 h1:bXAPYSbdYbS5VTy92NIUbeDI1qyggi+JYh5op9IFlcQ= -github.com/axiomhq/hyperloglog v0.0.0-20240319100328-84253e514e02/go.mod h1:k08r+Yj1PRAmuayFiRK6MYuR5Ve4IuZtTfxErMIh0+c= +github.com/axiomhq/hyperloglog v0.2.0 h1:u1XT3yyY1rjzlWuP6NQIrV4bRYHOaqZaovqjcBEvZJo= +github.com/axiomhq/hyperloglog v0.2.0/go.mod h1:GcgMjz9gaDKZ3G0UMS6Fq/VkZ4l7uGgcJyxA7M+omIM= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bits-and-blooms/bitset v1.12.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= -github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.14.3 h1:Gd2c8lSNf9pKXom5JtD7AaKO8o7fGQ2LtFj1436qilA= +github.com/bits-and-blooms/bitset v1.14.3/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/blevesearch/go-porterstemmer v1.0.3 h1:GtmsqID0aZdCSNiY8SkuPJ12pD4jI+DdXTAn4YRcHCo= github.com/blevesearch/go-porterstemmer v1.0.3/go.mod h1:angGc5Ht+k2xhJdZi511LtmxuEf0OVpvUUNrwmM1P7M= github.com/blevesearch/mmap-go v1.0.3/go.mod h1:pYvKl/grLQrBxuaRYgoTssa4rVujYYeenDp++2E+yvs= @@ -59,7 +59,6 @@ github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03V github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -83,8 +82,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= @@ -92,20 +91,20 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-chi/chi/v5 v5.0.12 h1:9euLV5sTrTNTRUU9POmDUvfxyj6LAABLUcEWO+JJb4s= -github.com/go-chi/chi/v5 v5.0.12/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw= +github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-resty/resty/v2 v2.12.0 h1:rsVL8P90LFvkUYq/V5BTVe203WfRIU4gvcf+yfzJzGA= -github.com/go-resty/resty/v2 v2.12.0/go.mod h1:o0yGPrkS3lOe1+eFajk6kBW8ScXzwU3hD69/gt2yB/0= +github.com/go-resty/resty/v2 v2.14.0 h1:/rhkzsAqGQkozwfKS5aFAbb6TyKd3zyFRWcdRXLPCAU= +github.com/go-resty/resty/v2 v2.14.0/go.mod h1:IW6mekUOsElt9C7oWr0XRt9BNSD6D5rr9mhk6NjmNHg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= @@ -132,8 +131,8 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -145,14 +144,14 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg= -github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= +github.com/google/pprof v0.0.0-20240910150728-a0b0bb1d4134 h1:c5FlPPgxOn7kJz3VoPLkQYQXGBS3EklQ4Zfi57uOuqQ= +github.com/google/pprof v0.0.0-20240910150728-a0b0bb1d4134/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= -github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= @@ -163,8 +162,8 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92Bcuy github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 h1:/c3QmbOGMGTOumP2iT/rCwB7b0QDGLKzqOmktBjT+Is= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1/go.mod h1:5SN9VR2LTsRFsrEC6FHgRbTWrTHu6tqPeKxEQv15giM= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -183,8 +182,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/kkdai/maglev v0.2.0 h1:w6DCW0kAA6fstZqXkrBrlgIC3jeIRXkjOYea/m6EK/Y= github.com/kkdai/maglev v0.2.0/go.mod h1:d+mt8Lmt3uqi9aRb/BnPjzD0fy+ETs1vVXiGRnqHVZ4= github.com/klauspost/compress v1.15.2/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= -github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -193,11 +192,12 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353 h1:X/79QL0b4YJVO5+OsPH9rF2u428CIrGL/jLmPsoOQQ4= github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353/go.mod h1:N0SVk0uhy+E1PZ3C9ctsPRlvOPAFPkCNlcPBDkt0N3U= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/lufia/plan9stats v0.0.0-20240408141607-282e7b5d6b74 h1:1KuuSOy4ZNgW0KA2oYIngXVFhQcXxhLqCVK7cBcldkk= -github.com/lufia/plan9stats v0.0.0-20240408141607-282e7b5d6b74/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= +github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 h1:7UMa6KCCMjZEMDtTVdcGu0B1GmmC7QJKiCCjyTAWQy0= +github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= github.com/machinebox/graphql v0.2.2 h1:dWKpJligYKhYKO5A2gvNhkJdQMNZeChZYyBbrZkBZfo= github.com/machinebox/graphql v0.2.2/go.mod h1:F+kbVMHuwrQ5tYgU9JXlnskM8nOaFxCAEolaQybkjWA= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -224,51 +224,52 @@ github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8 github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM= github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= -github.com/onsi/ginkgo/v2 v2.17.2 h1:7eMhcy3GimbsA3hEnVKdw/PQM9XN9krpKVXsZdph0/g= -github.com/onsi/ginkgo/v2 v2.17.2/go.mod h1:nP2DPOQoNsQmsVyv5rDA8JkXQoCs6goXIvr/PRJ1eCc= -github.com/onsi/gomega v1.33.0 h1:snPCflnZrpMsy94p4lXVEkHo12lmPnc3vY5XBbreexE= -github.com/onsi/gomega v1.33.0/go.mod h1:+925n5YtiFsLzzafLUHzVMBpvvRAzrydIBiSIxjX3wY= +github.com/onsi/ginkgo/v2 v2.20.2 h1:7NVCeyIWROIAheY21RLS+3j2bb52W0W82tkberYytp4= +github.com/onsi/ginkgo/v2 v2.20.2/go.mod h1:K9gyxPIlb+aIvnZ8bd9Ak+YP18w3APlR+5coaZoE2ag= +github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8= +github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml/v2 v2.2.1 h1:9TA9+T8+8CUCO2+WYnDLCgrYi9+omqKXyjDtosvtEhg= -github.com/pelletier/go-toml/v2 v2.2.1/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_golang v1.20.3 h1:oPksm4K8B+Vt35tUhw6GbSNSgVlVSBH0qELP/7u83l4= +github.com/prometheus/client_golang v1.20.3/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= -github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= -github.com/prometheus/procfs v0.14.0 h1:Lw4VdGGoKEZilJsayHf0B+9YgLGREba2C6xr+Fdfq6s= -github.com/prometheus/procfs v0.14.0/go.mod h1:XL+Iwz8k8ZabyZfMFHPiilCniixqQarAy5Mu67pHlNQ= +github.com/prometheus/common v0.59.1 h1:LXb1quJHWm1P6wq/U824uxYi4Sg0oGvNeUm1z5dJoX0= +github.com/prometheus/common v0.59.1/go.mod h1:GpWM7dewqmVYcd7SmRaiWVe9SSqjf0UrwnYnpEZNuT0= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0= -github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= -github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk= +github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= -github.com/shirou/gopsutil/v3 v3.24.3 h1:eoUGJSmdfLzJ3mxIhmOAhgKEKgQkeOwKpz1NbhVnuPE= -github.com/shirou/gopsutil/v3 v3.24.3/go.mod h1:JpND7O217xa72ewWz9zN2eIIkPWsDN/3pl0H8Qt0uwg= +github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= +github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= @@ -288,53 +289,45 @@ github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= +github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU= github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= -github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY= github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE= github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/urfave/cli/v2 v2.27.2 h1:6e0H+AkS+zDckwPCUrZkKX38mRaau4nL2uipkJpbkcI= -github.com/urfave/cli/v2 v2.27.2/go.mod h1:g0+79LmHHATl7DAcHO99smiR/T7uGLw84w8Y42x+4eM= +github.com/urfave/cli/v2 v2.27.4 h1:o1owoI+02Eb+K107p27wEX9Bb8eqIoZCfLXloLUSWJ8= +github.com/urfave/cli/v2 v2.27.4/go.mod h1:m4QzxcD2qpra4z7WhzEGn74WZLViBnMpb1ToCAKdGRQ= github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= -github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod h1:4aEEwZQutDLsQv2Deui4iYQ6DWTxR14g6m8Wv88+Xqk= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -349,39 +342,39 @@ github.com/zinclabs/bluge_segment_api v1.0.0 h1:GJvPxdzR7KjwdxmcKleQLvtIYi/J7Q7e github.com/zinclabs/bluge_segment_api v1.0.0/go.mod h1:mYfPVUdXLZ4iXsicXMER+RcI/avwphjMOi8nhN9HDLA= github.com/zinclabs/ice v1.1.3 h1:LNfncdxQw2ix6P1T2ISmhO+6BFRa27qyTTfK0PitF2c= github.com/zinclabs/ice v1.1.3/go.mod h1:wTwGEe30mQnSLaR1ezxu4E80GcwO6EyOww67KpJtIiw= -go.etcd.io/bbolt v1.3.9 h1:8x7aARPEXiXbHmtUwAIv7eV2fQFHrLLavdiJ3uzJXoI= -go.etcd.io/bbolt v1.3.9/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE= -go.etcd.io/etcd/api/v3 v3.5.13 h1:8WXU2/NBge6AUF1K1gOexB6e07NgsN1hXK0rSTtgSp4= -go.etcd.io/etcd/api/v3 v3.5.13/go.mod h1:gBqlqkcMMZMVTMm4NDZloEVJzxQOQIls8splbqBDa0c= -go.etcd.io/etcd/client/pkg/v3 v3.5.13 h1:RVZSAnWWWiI5IrYAXjQorajncORbS0zI48LQlE2kQWg= -go.etcd.io/etcd/client/pkg/v3 v3.5.13/go.mod h1:XxHT4u1qU12E2+po+UVPrEeL94Um6zL58ppuJWXSAB8= -go.etcd.io/etcd/client/v2 v2.305.13 h1:RWfV1SX5jTU0lbCvpVQe3iPQeAHETWdOTb6pxhd77C8= -go.etcd.io/etcd/client/v2 v2.305.13/go.mod h1:iQnL7fepbiomdXMb3om1rHq96htNNGv2sJkEcZGDRRg= -go.etcd.io/etcd/client/v3 v3.5.13 h1:o0fHTNJLeO0MyVbc7I3fsCf6nrOqn5d+diSarKnB2js= -go.etcd.io/etcd/client/v3 v3.5.13/go.mod h1:cqiAeY8b5DEEcpxvgWKsbLIWNM/8Wy2xJSDMtioMcoI= -go.etcd.io/etcd/pkg/v3 v3.5.13 h1:st9bDWNsKkBNpP4PR1MvM/9NqUPfvYZx/YXegsYEH8M= -go.etcd.io/etcd/pkg/v3 v3.5.13/go.mod h1:N+4PLrp7agI/Viy+dUYpX7iRtSPvKq+w8Y14d1vX+m0= -go.etcd.io/etcd/raft/v3 v3.5.13 h1:7r/NKAOups1YnKcfro2RvGGo2PTuizF/xh26Z2CTAzA= -go.etcd.io/etcd/raft/v3 v3.5.13/go.mod h1:uUFibGLn2Ksm2URMxN1fICGhk8Wu96EfDQyuLhAcAmw= -go.etcd.io/etcd/server/v3 v3.5.13 h1:V6KG+yMfMSqWt+lGnhFpP5z5dRUj1BDRJ5k1fQ9DFok= -go.etcd.io/etcd/server/v3 v3.5.13/go.mod h1:K/8nbsGupHqmr5MkgaZpLlH1QdX1pcNQLAkODy44XcQ= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.51.0 h1:A3SayB3rNyt+1S6qpI9mHPkeHTZbD7XILEqWnYZb2l0= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.51.0/go.mod h1:27iA5uvhuRNmalO+iEUdVn5ZMj2qy10Mm+XRIpRmyuU= -go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= -go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.26.0 h1:1u/AyyOqAWzy+SkPxDpahCNZParHV8Vid1RnI2clyDE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.26.0/go.mod h1:z46paqbJ9l7c9fIPCXTqTGwhQZ5XoTIsfeFYWboizjs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.26.0 h1:Waw9Wfpo/IXzOI8bCB7DIk+0JZcqqsyn1JFnAc+iam8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.26.0/go.mod h1:wnJIG4fOqyynOnnQF/eQb4/16VlX2EJAHhHgqIqWfAo= -go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30= -go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= -go.opentelemetry.io/otel/sdk v1.26.0 h1:Y7bumHf5tAiDlRYFmGqetNcLaVUZmh4iYfmGxtmz7F8= -go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs= -go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= -go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= +go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0= +go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I= +go.etcd.io/etcd/api/v3 v3.5.16 h1:WvmyJVbjWqK4R1E+B12RRHz3bRGy9XVfh++MgbN+6n0= +go.etcd.io/etcd/api/v3 v3.5.16/go.mod h1:1P4SlIP/VwkDmGo3OlOD7faPeP8KDIFhqvciH5EfN28= +go.etcd.io/etcd/client/pkg/v3 v3.5.16 h1:ZgY48uH6UvB+/7R9Yf4x574uCO3jIx0TRDyetSfId3Q= +go.etcd.io/etcd/client/pkg/v3 v3.5.16/go.mod h1:V8acl8pcEK0Y2g19YlOV9m9ssUe6MgiDSobSoaBAM0E= +go.etcd.io/etcd/client/v2 v2.305.16 h1:kQrn9o5czVNaukf2A2At43cE9ZtWauOtf9vRZuiKXow= +go.etcd.io/etcd/client/v2 v2.305.16/go.mod h1:h9YxWCzcdvZENbfzBTFCnoNumr2ax3F19sKMqHFmXHE= +go.etcd.io/etcd/client/v3 v3.5.16 h1:sSmVYOAHeC9doqi0gv7v86oY/BTld0SEFGaxsU9eRhE= +go.etcd.io/etcd/client/v3 v3.5.16/go.mod h1:X+rExSGkyqxvu276cr2OwPLBaeqFu1cIl4vmRjAD/50= +go.etcd.io/etcd/pkg/v3 v3.5.16 h1:cnavs5WSPWeK4TYwPYfmcr3Joz9BH+TZ6qoUtz6/+mc= +go.etcd.io/etcd/pkg/v3 v3.5.16/go.mod h1:+lutCZHG5MBBFI/U4eYT5yL7sJfnexsoM20Y0t2uNuY= +go.etcd.io/etcd/raft/v3 v3.5.16 h1:zBXA3ZUpYs1AwiLGPafYAKKl/CORn/uaxYDwlNwndAk= +go.etcd.io/etcd/raft/v3 v3.5.16/go.mod h1:P4UP14AxofMJ/54boWilabqqWoW9eLodl6I5GdGzazI= +go.etcd.io/etcd/server/v3 v3.5.16 h1:d0/SAdJ3vVsZvF8IFVb1k8zqMZ+heGcNfft71ul9GWE= +go.etcd.io/etcd/server/v3 v3.5.16/go.mod h1:ynhyZZpdDp1Gq49jkUg5mfkDWZwXnn3eIqCqtJnrD/s= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= +go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts= +go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0 h1:lsInsfvhVIfOI6qHVyysXMNDnjO9Npvl7tlDPJFBVd4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0/go.mod h1:KQsVNh4OjgjTG0G6EiNi1jVpnaeeKsKMRwbLN+f1+8M= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.30.0 h1:m0yTiGDLUvVYaTFbAvCkVYIYcvwKt3G7OLoN77NUs/8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.30.0/go.mod h1:wBQbT4UekBfegL2nx0Xk1vBcnzyBPsIVm9hRG4fYcr4= +go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w= +go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ= +go.opentelemetry.io/otel/sdk v1.30.0 h1:cHdik6irO49R5IysVhdn8oaiR9m8XluDaJAs4DfOrYE= +go.opentelemetry.io/otel/sdk v1.30.0/go.mod h1:p14X4Ok8S+sygzblytT1nqG98QG2KYKv++HE0LY/mhg= +go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc= +go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v1.2.0 h1:pVeZGk7nXDC9O2hncA6nHldxEjm6LByfA2aN8IOkz94= -go.opentelemetry.io/proto/otlp v1.2.0/go.mod h1:gGpR8txAl5M03pDhMC79G6SdqNV26naRm/KDsgaHD8A= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -399,17 +392,19 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= -golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -422,8 +417,11 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -441,11 +439,13 @@ golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= -golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -457,8 +457,11 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -484,20 +487,23 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -505,10 +511,14 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -524,8 +534,10 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= -golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE= +golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -543,12 +555,12 @@ google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20240415180920-8c6c420018be h1:g4aX8SUFA8V5F4LrSY5EclyGYw1OZN4HS1jTyjB9ZDc= -google.golang.org/genproto v0.0.0-20240415180920-8c6c420018be/go.mod h1:FeSdT5fk+lkxatqJP38MsUicGqHax5cLtmy/6TAuxO4= -google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be h1:Zz7rLWqp0ApfsR/l7+zSHhY3PMiH2xqgxlfYfAfNpoU= -google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be/go.mod h1:dvdCTIoAGbkWbcIKBniID56/7XHTt6WfxXNMxuziJ+w= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be h1:LG9vZxsWGOmUKieR8wPAUR3u3MpnYFQZROPIMaXh7/A= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU= +google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4= +google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= +google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -558,8 +570,8 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM= +google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -572,8 +584,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= @@ -596,5 +608,5 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -skywalking.apache.org/repo/goapi v0.0.0-20240227092755-edee3273b361 h1:FCGGU4Tut3LI/zMRXSgJgUL/kmSQ4b7QktFgRBhqaDs= -skywalking.apache.org/repo/goapi v0.0.0-20240227092755-edee3273b361/go.mod h1:+n8BMuS8eRdzdnGh15ElRGBXPi0eYZSs2TKySBDmRTE= +skywalking.apache.org/repo/goapi v0.0.0-20240604102541-64f9001abe03 h1:y0f+3gNmeyC/V5Bt8VE9aL9mmWESj+WvyqJ2tOb7qrk= +skywalking.apache.org/repo/goapi v0.0.0-20240604102541-64f9001abe03/go.mod h1:+n8BMuS8eRdzdnGh15ElRGBXPi0eYZSs2TKySBDmRTE= diff --git a/pkg/compress/zstd/zstd_test.go b/pkg/compress/zstd/zstd_test.go index b33d72518..05c5411a5 100644 --- a/pkg/compress/zstd/zstd_test.go +++ b/pkg/compress/zstd/zstd_test.go @@ -32,8 +32,8 @@ func randString(n int) []byte { b := make([]byte, n) for i := range b { - max := big.NewInt(int64(len(letters))) - randIndex, err := rand.Int(rand.Reader, max) + maxVal := big.NewInt(int64(len(letters))) + randIndex, err := rand.Int(rand.Reader, maxVal) if err != nil { panic(err) } diff --git a/pkg/grpchelper/client.go b/pkg/grpchelper/client.go index 3f8150223..516dd45ac 100644 --- a/pkg/grpchelper/client.go +++ b/pkg/grpchelper/client.go @@ -20,11 +20,11 @@ package grpchelper import ( "context" - "errors" "time" "google.golang.org/grpc" "google.golang.org/grpc/codes" + "google.golang.org/grpc/health/grpc_health_v1" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" @@ -32,28 +32,30 @@ import ( ) // Conn returns a gRPC client connection once connecting the server. -func Conn(addr string, connTimeout time.Duration, opts ...grpc.DialOption) (*grpc.ClientConn, error) { - defaultOpts := []grpc.DialOption{ - grpc.WithBlock(), - } - opts = append(opts, defaultOpts...) +func Conn(addr string, healthCheckTimeout time.Duration, opts ...grpc.DialOption) (*grpc.ClientConn, error) { l := logger.GetLogger("grpc-helper") - connStart := time.Now() - dialCtx, dialCancel := context.WithTimeout(context.Background(), connTimeout) - defer dialCancel() - conn, err := grpc.DialContext(dialCtx, addr, opts...) + conn, err := grpc.NewClient(addr, opts...) if err != nil { - if errors.Is(err, context.DeadlineExceeded) { - l.Warn().Str("addr", addr).Dur("timeout", connTimeout).Msg("timeout: failed to connect service") - } else { - l.Warn().Str("addr", addr).Err(err).Msg("error: failed to connect service") - } + l.Warn().Str("addr", addr).Err(err).Msg("error: failed to connect service") return nil, err } - connDuration := time.Since(connStart) - if e := l.Debug(); e.Enabled() { - e.Dur("conn", connDuration).Msg("time elapsed") + healthClient := grpc_health_v1.NewHealthClient(conn) + deadline := time.Now().Add(healthCheckTimeout) + for { + if time.Now().After(deadline) { + l.Warn().Str("addr", addr).Msg("error: health check timeout reached") + _ = conn.Close() + return nil, err + } + ctx := context.Background() + ctx, cancel := context.WithTimeout(ctx, healthCheckTimeout) + _, err = healthClient.Check(ctx, &grpc_health_v1.HealthCheckRequest{Service: ""}) + cancel() + if err == nil { + break + } + time.Sleep(500 * time.Millisecond) } return conn, nil } diff --git a/pkg/healthcheck/healthcheck.go b/pkg/healthcheck/healthcheck.go index a584d13c8..28b67b662 100644 --- a/pkg/healthcheck/healthcheck.go +++ b/pkg/healthcheck/healthcheck.go @@ -33,7 +33,7 @@ import ( // NewClient creates a new health check client. func NewClient(ctx context.Context, l *logger.Logger, addr string, opts []grpc.DialOption) (client *Client, err error) { - conn, err := grpc.Dial(addr, opts...) + conn, err := grpc.NewClient(addr, opts...) if err != nil { return nil, err } diff --git a/pkg/index/inverted/query.go b/pkg/index/inverted/query.go index fc110bc7b..fdd5fc4b1 100644 --- a/pkg/index/inverted/query.go +++ b/pkg/index/inverted/query.go @@ -335,11 +335,11 @@ type termRangeInclusiveNode struct { maxInclusive bool } -func newTermRangeInclusiveNode(min, max string, minInclusive, maxInclusive bool, indexRule *databasev1.IndexRule) *termRangeInclusiveNode { +func newTermRangeInclusiveNode(minVal, maxVal string, minInclusive, maxInclusive bool, indexRule *databasev1.IndexRule) *termRangeInclusiveNode { return &termRangeInclusiveNode{ indexRule: indexRule, - min: min, - max: max, + min: minVal, + max: maxVal, minInclusive: minInclusive, maxInclusive: maxInclusive, } diff --git a/pkg/index/posting/roaring/roaring.go b/pkg/index/posting/roaring/roaring.go index 5143f273c..65d101eef 100644 --- a/pkg/index/posting/roaring/roaring.go +++ b/pkg/index/posting/roaring/roaring.go @@ -173,15 +173,15 @@ func (p *postingsList) AddIterator(iter posting.Iterator) error { return nil } -func (p *postingsList) AddRange(min, max uint64) error { - for i := min; i < max; i++ { +func (p *postingsList) AddRange(minVal, maxVal uint64) error { + for i := minVal; i < maxVal; i++ { p.bitmap.Add(i) } return nil } -func (p *postingsList) RemoveRange(min, max uint64) error { - for i := min; i < max; i++ { +func (p *postingsList) RemoveRange(minVal, maxVal uint64) error { + for i := minVal; i < maxVal; i++ { p.bitmap.Remove(i) } return nil diff --git a/pkg/query/logical/measure/measure_plan_distributed.go b/pkg/query/logical/measure/measure_plan_distributed.go index db4d75821..54280489f 100644 --- a/pkg/query/logical/measure/measure_plan_distributed.go +++ b/pkg/query/logical/measure/measure_plan_distributed.go @@ -219,8 +219,8 @@ func (t *distributedPlan) Schema() logical.Schema { return t.s } -func (t *distributedPlan) Limit(max int) { - t.maxDataPointsSize = uint32(max) +func (t *distributedPlan) Limit(maxVal int) { + t.maxDataPointsSize = uint32(maxVal) } var _ sort.Comparable = (*comparableDataPoint)(nil) diff --git a/pkg/query/logical/optimizer.go b/pkg/query/logical/optimizer.go index 4ee752b74..a087cdbcb 100644 --- a/pkg/query/logical/optimizer.go +++ b/pkg/query/logical/optimizer.go @@ -89,8 +89,8 @@ type PushDownMaxSize struct { } // NewPushDownMaxSize returns a new PushDownMaxSize. -func NewPushDownMaxSize(max int) PushDownMaxSize { - return PushDownMaxSize{max: max} +func NewPushDownMaxSize(maxVal int) PushDownMaxSize { + return PushDownMaxSize{max: maxVal} } // Optimize a Plan by pushing down the max volume. diff --git a/pkg/query/logical/stream/stream_plan_distributed.go b/pkg/query/logical/stream/stream_plan_distributed.go index 6de4ce5d2..cf8de2b21 100644 --- a/pkg/query/logical/stream/stream_plan_distributed.go +++ b/pkg/query/logical/stream/stream_plan_distributed.go @@ -194,8 +194,8 @@ func (t *distributedPlan) Schema() logical.Schema { return t.s } -func (t *distributedPlan) Limit(max int) { - t.maxElementSize = uint32(max) +func (t *distributedPlan) Limit(maxVal int) { + t.maxElementSize = uint32(maxVal) } var _ sort.Comparable = (*comparableElement)(nil) diff --git a/pkg/query/logical/stream/stream_plan_indexscan_local.go b/pkg/query/logical/stream/stream_plan_indexscan_local.go index 89bafe984..49723340f 100644 --- a/pkg/query/logical/stream/stream_plan_indexscan_local.go +++ b/pkg/query/logical/stream/stream_plan_indexscan_local.go @@ -64,8 +64,8 @@ func (i *localIndexScan) Close() { } } -func (i *localIndexScan) Limit(max int) { - i.maxElementSize = max +func (i *localIndexScan) Limit(maxVal int) { + i.maxElementSize = maxVal } func (i *localIndexScan) Sort(order *logical.OrderBy) { @@ -113,7 +113,7 @@ func (i *localIndexScan) Children() []logical.Plan { } func (i *localIndexScan) Schema() logical.Schema { - if i.projectionTagRefs == nil || len(i.projectionTagRefs) == 0 { + if len(i.projectionTagRefs) == 0 { return i.schema } return i.schema.ProjTags(i.projectionTagRefs...) diff --git a/pkg/test/metric/analysis.go b/pkg/test/metric/analysis.go index e94f5d336..22c1a261b 100644 --- a/pkg/test/metric/analysis.go +++ b/pkg/test/metric/analysis.go @@ -103,8 +103,8 @@ func analyzeMetrics() { } // Calculate the statistics. - min, _ := stats.Min(data) - max, _ := stats.Max(data) + minVal, _ := stats.Min(data) + maxVal, _ := stats.Max(data) mean, _ := stats.Mean(data) median, _ := stats.Median(data) p90, _ := stats.Percentile(data, 90) @@ -113,7 +113,7 @@ func analyzeMetrics() { p99, _ := stats.Percentile(data, 99) // Write the results to another file and print them to the console. - writeResults(resultsFile, metricsToCollect[i], min, max, mean, median, p90, p95, p98, p99) + writeResults(resultsFile, metricsToCollect[i], minVal, maxVal, mean, median, p90, p95, p98, p99) } } @@ -126,9 +126,9 @@ func writeHeader(file *os.File) { } } -func writeResults(file *os.File, metricName string, min, max, mean, median, p90, p95, p98, p99 float64) { +func writeResults(file *os.File, metricName string, minVal, maxVal, mean, median, p90, p95, p98, p99 float64) { results := fmt.Sprintf("%s, %f, %f, %f, %f, %f, %f, %f, %f\n", - metricName, min, max, mean, median, p90, p95, p98, p99) + metricName, minVal, maxVal, mean, median, p90, p95, p98, p99) _, err := file.WriteString(results) if err != nil { diff --git a/pkg/test/query/query.go b/pkg/test/query/query.go index 489cb0349..99034834a 100644 --- a/pkg/test/query/query.go +++ b/pkg/test/query/query.go @@ -91,14 +91,14 @@ func analyze(metricNames []string, rootPath string) { } // Calculate the statistics. - min, _ := stats.Min(data) - max, _ := stats.Max(data) + minVal, _ := stats.Min(data) + maxVal, _ := stats.Max(data) mean, _ := stats.Mean(data) median, _ := stats.Median(data) p95, _ := stats.Percentile(data, 95) // Write the results to another file and print them to the console. - writeResults(resultsFile, metricNames[i], min, max, mean, median, p95) + writeResults(resultsFile, metricNames[i], minVal, maxVal, mean, median, p95) } } @@ -111,9 +111,9 @@ func writeHeader(file *os.File) { } } -func writeResults(file *os.File, metricName string, min, max, mean, median, p95 float64) { +func writeResults(file *os.File, metricName string, minVal, maxVal, mean, median, p95 float64) { results := fmt.Sprintf("%s, %f, %f, %f, %f, %f\n", - metricName, min, max, mean, median, p95) + metricName, minVal, maxVal, mean, median, p95) _, err := file.WriteString(results) if err != nil { diff --git a/pkg/timestamp/range.go b/pkg/timestamp/range.go index 352b1449e..b0b92afdf 100644 --- a/pkg/timestamp/range.go +++ b/pkg/timestamp/range.go @@ -122,28 +122,28 @@ func NewTimeRangeDuration(start time.Time, duration time.Duration, includeStart, } // FindRange returns the indices of the first and last elements in a sorted 'timestamps' slice that are within the min and max range. -func FindRange[T int64 | uint64](timestamps []T, min, max T) (int, int, bool) { +func FindRange[T int64 | uint64](timestamps []T, minVal, maxVal T) (int, int, bool) { if len(timestamps) == 0 { return -1, -1, false } isAsc := timestamps[0] <= timestamps[len(timestamps)-1] - if isAsc && (timestamps[0] > max || timestamps[len(timestamps)-1] < min) { + if isAsc && (timestamps[0] > maxVal || timestamps[len(timestamps)-1] < minVal) { return -1, -1, false } - if !isAsc && (timestamps[0] < min || timestamps[len(timestamps)-1] > max) { + if !isAsc && (timestamps[0] < minVal || timestamps[len(timestamps)-1] > maxVal) { return -1, -1, false } start, end := -1, len(timestamps) for start < len(timestamps)-1 { start++ - if isAsc && timestamps[start] >= min || !isAsc && timestamps[start] <= max { + if isAsc && timestamps[start] >= minVal || !isAsc && timestamps[start] <= maxVal { break } } for end > 0 { end-- - if isAsc && timestamps[end] <= max || !isAsc && timestamps[end] >= min { + if isAsc && timestamps[end] <= maxVal || !isAsc && timestamps[end] >= minVal { break } } diff --git a/scripts/build/lint-api.mk b/scripts/build/lint-api.mk index 5bc3bba8c..0d9e684c9 100644 --- a/scripts/build/lint-api.mk +++ b/scripts/build/lint-api.mk @@ -21,7 +21,7 @@ include $(mk_dir)lint-bin.mk ##@ Code quality targets .PHONY: lint -lint: $(LINTER) $(REVIVE) ## Run all linters +lint: $(BUF) $(LINTER) $(REVIVE) ## Run all linters @PATH=$(tool_bin):$(proto_dir) $(BUF) lint $(LINTER) run -v --config $(root_dir)/.golangci.yml ./... && \ $(REVIVE) -config $(root_dir)/revive.toml -formatter friendly ./... diff --git a/scripts/build/lint.mk b/scripts/build/lint.mk index 394161c07..49dd2c98b 100644 --- a/scripts/build/lint.mk +++ b/scripts/build/lint.mk @@ -20,8 +20,6 @@ include $(mk_dir)lint-bin.mk ##@ Code quality targets - - .PHONY: lint lint: $(LINTER) $(REVIVE) ## Run all linters $(LINTER) run -v --config $(root_dir)/.golangci.yml --timeout 10m ./... && \ diff --git a/scripts/build/vendor.mk b/scripts/build/vendor.mk index 345f69efe..2823aaf86 100644 --- a/scripts/build/vendor.mk +++ b/scripts/build/vendor.mk @@ -22,4 +22,4 @@ .PHONY: vendor-update vendor-update: ## Update vendors go get -u -d ./... - go mod tidy -compat=1.22 + go mod tidy -compat=1.23 diff --git a/scripts/build/version.mk b/scripts/build/version.mk index 5e2fc5de3..45fa61221 100644 --- a/scripts/build/version.mk +++ b/scripts/build/version.mk @@ -16,17 +16,19 @@ # under the License. # -BUF_VERSION := v1.31.0 -PROTOC_GEN_GO_VERSION := v1.33.0 -PROTOC_GEN_GO_GRPC_VERSION := v1.3.0 +BUF_VERSION := v1.40.1 +PROTOC_GEN_GO_VERSION := v1.34.2 +PROTOC_GEN_GO_GRPC_VERSION := v1.5.1 PROTOC_GEN_DOC_VERSION := v1.5.1 -GRPC_GATEWAY_VERSION := v2.19.1 -PROTOC_GEN_VALIDATE_VERSION := v1.0.4 +GRPC_GATEWAY_VERSION := v2.22.0 +PROTOC_GEN_VALIDATE_VERSION := v1.1.0 -GOLANGCI_LINT_VERSION := v1.57.2 -REVIVE_VERSION := v1.3.7 -LICENSE_EYE_VERSION := cd7b195c51fd3d6ad52afceb760719ddc6b3ee91 +GOLANGCI_LINT_VERSION := v1.61.0 +REVIVE_VERSION := v1.3.9 +LICENSE_EYE_VERSION := 3ea9df11bb3a5a85665377d1fd10c02edecf2c40 -MOCKGEN_VERSION := v0.3.0 +MOCKGEN_VERSION := v0.4.0 -GINKGO_VERSION := v2.17.2 \ No newline at end of file +GINKGO_VERSION := v2.20.2 + +GOVULNCHECK_VERSION := v1.1.3 diff --git a/scripts/build/vuln.mk b/scripts/build/vuln.mk new file mode 100644 index 000000000..3c6dcac76 --- /dev/null +++ b/scripts/build/vuln.mk @@ -0,0 +1,5 @@ +GOVULNCHECK := $(tool_bin)/govulncheck +$(GOVULNCHECK): + @echo "Install govulncheck..." + @mkdir -p $(tool_bin) + @GOBIN=$(tool_bin) go install golang.org/x/vuln/cmd/govulncheck@$(GOVULNCHECK_VERSION) diff --git a/scripts/ci/check/version_test.go b/scripts/ci/check/version_test.go index 58ff9a370..26555a591 100644 --- a/scripts/ci/check/version_test.go +++ b/scripts/ci/check/version_test.go @@ -31,7 +31,7 @@ import ( ) const ( - GoVersion = "1.22" + GoVersion = "1.23.0" CPUType = 8 ) @@ -71,9 +71,11 @@ func TestGoVersion(t *testing.T) { m := parseGoMod(t, root+"/go.mod") - require.Equal(t, expectedMajorMinor, m.Go.Version, + goMajorVersion, _ := splitVersion(m.Go.Version) + + require.Equal(t, expectedMajorMinor, goMajorVersion, "go.mod version mismatch: current[%s], want[%s]", - m.Go.Version, expectedMajorMinor) + goMajorVersion, expectedMajorMinor) } func splitVersion(v string) (string, string) { diff --git a/test/integration/load/load_suite_test.go b/test/integration/load/load_suite_test.go index 84dccc386..2a39e6a33 100644 --- a/test/integration/load/load_suite_test.go +++ b/test/integration/load/load_suite_test.go @@ -164,13 +164,13 @@ var _ = Describe("Load Test Suit", func() { }) func analysis(name string, data []float64) { - min, _ := stats.Min(data) - max, _ := stats.Max(data) + minVal, _ := stats.Min(data) + maxVal, _ := stats.Max(data) mean, _ := stats.Mean(data) median, _ := stats.Median(data) p90, _ := stats.Percentile(data, 90) p95, _ := stats.Percentile(data, 95) p98, _ := stats.Percentile(data, 98) p99, _ := stats.Percentile(data, 99) - logger.Infof("%s: min: %f, max: %f, mean: %f, median: %f, p90: %f, p95: %f, p98: %f, p99: %f\n", name, min, max, mean, median, p90, p95, p98, p99) + logger.Infof("%s: min: %f, max: %f, mean: %f, median: %f, p90: %f, p95: %f, p98: %f, p99: %f\n", name, minVal, maxVal, mean, median, p90, p95, p98, p99) } diff --git a/ui/LICENSE b/ui/LICENSE index f753b55fe..e40f6d67c 100644 --- a/ui/LICENSE +++ b/ui/LICENSE @@ -29,7 +29,7 @@ BSD-3-Clause licenses ======================================================================== normalize-wheel-es 1.2.0 BSD-3-Clause - source-map-js 1.2.0 BSD-3-Clause + source-map-js 1.2.1 BSD-3-Clause zrender 5.6.0 BSD-3-Clause ======================================================================== @@ -39,58 +39,61 @@ ISC licenses anymatch 3.1.3 ISC glob-parent 5.1.2 ISC graceful-fs 4.2.11 ISC - picocolors 1.0.1 ISC - semver 7.6.2 ISC - yaml 2.4.5 ISC + picocolors 1.1.0 ISC + semver 7.6.3 ISC + yaml 2.5.1 ISC ======================================================================== MIT licenses ======================================================================== - @babel/parser 7.24.7 MIT + @babel/helper-string-parser 7.24.8 MIT + @babel/helper-validator-identifier 7.24.7 MIT + @babel/parser 7.25.6 MIT + @babel/types 7.25.6 MIT @ctrl/tinycolor 3.6.1 MIT @element-plus/icons-vue 2.3.1 MIT - @floating-ui/core 1.6.4 MIT - @floating-ui/dom 1.6.7 MIT - @floating-ui/utils 0.2.4 MIT - @jridgewell/sourcemap-codec 1.4.15 MIT + @floating-ui/core 1.6.7 MIT + @floating-ui/dom 1.6.10 MIT + @floating-ui/utils 0.2.7 MIT + @jridgewell/sourcemap-codec 1.5.0 MIT @popperjs/core 2.11.7 MIT - @types/lodash 4.17.6 MIT + @types/lodash 4.17.7 MIT @types/lodash-es 4.17.12 MIT @types/web-bluetooth 0.0.16 MIT - @vue/compiler-core 3.4.31 MIT - @vue/compiler-dom 3.4.31 MIT - @vue/compiler-sfc 3.4.31 MIT - @vue/compiler-ssr 3.4.31 MIT - @vue/devtools-api 6.6.3 MIT - @vue/reactivity 3.4.31 MIT - @vue/runtime-core 3.4.31 MIT - @vue/runtime-dom 3.4.31 MIT - @vue/server-renderer 3.4.31 MIT - @vue/shared 3.4.31 MIT + @vue/compiler-core 3.5.4 MIT + @vue/compiler-dom 3.5.4 MIT + @vue/compiler-sfc 3.5.4 MIT + @vue/compiler-ssr 3.5.4 MIT + @vue/devtools-api 6.6.4 MIT + @vue/reactivity 3.5.4 MIT + @vue/runtime-core 3.5.4 MIT + @vue/runtime-dom 3.5.4 MIT + @vue/server-renderer 3.5.4 MIT + @vue/shared 3.5.4 MIT @vueuse/core 9.13.0 MIT - @vueuse/core/node_modules/vue-demi 0.14.8 MIT + @vueuse/core/node_modules/vue-demi 0.14.10 MIT @vueuse/metadata 9.13.0 MIT @vueuse/shared 9.13.0 MIT - @vueuse/shared/node_modules/vue-demi 0.14.8 MIT + @vueuse/shared/node_modules/vue-demi 0.14.10 MIT async-validator 4.2.5 MIT asynckit 0.4.0 MIT - axios 1.7.2 MIT + axios 1.7.7 MIT binary-extensions 2.3.0 MIT braces 3.0.3 MIT chokidar 3.6.0 MIT - codemirror 5.65.16 MIT + codemirror 5.65.17 MIT combined-stream 1.0.8 MIT csstype 3.1.3 MIT - dayjs 1.11.11 MIT + dayjs 1.11.13 MIT delayed-stream 1.0.0 MIT - element-plus 2.7.6 MIT + element-plus 2.8.2 MIT escape-html 1.0.3 MIT estree-walker 2.0.2 MIT fill-range 7.1.1 MIT - follow-redirects 1.15.6 MIT + follow-redirects 1.15.9 MIT form-data 4.0.0 MIT - immutable 4.3.6 MIT + immutable 4.3.7 MIT is-binary-path 2.1.0 MIT is-extglob 2.1.1 MIT is-glob 4.0.3 MIT @@ -100,7 +103,7 @@ MIT licenses lodash 4.17.21 MIT lodash-es 4.17.21 MIT lodash-unified 1.0.3 MIT - magic-string 0.30.10 MIT + magic-string 0.30.11 MIT memoize-one 6.0.0 MIT mime-db 1.52.0 MIT mime-types 2.1.35 MIT @@ -108,16 +111,17 @@ MIT licenses nanoid 3.3.7 MIT normalize-path 3.0.0 MIT picomatch 2.3.1 MIT - pinia 2.1.7 MIT - pinia/node_modules/vue-demi 0.14.8 MIT - postcss 8.4.39 MIT + pinia 2.2.2 MIT + pinia/node_modules/vue-demi 0.14.10 MIT + postcss 8.4.45 MIT proxy-from-env 1.1.0 MIT readdirp 3.6.0 MIT - sass 1.77.6 MIT + sass 1.78.0 MIT + to-fast-properties 2.0.0 MIT to-regex-range 5.0.1 MIT universalify 2.0.1 MIT - vue 3.4.31 MIT - vue-router 4.4.0 MIT + vue 3.5.4 MIT + vue-router 4.4.4 MIT ======================================================================== Python-2.0 licenses diff --git a/ui/package-lock.json b/ui/package-lock.json index 7c1e28035..469e6782c 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -38,14 +38,37 @@ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz", "integrity": "sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@babel/parser": { + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", - "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.6" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -53,10 +76,25 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@ctrl/tinycolor": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "license": "MIT", "engines": { "node": ">=10" } @@ -65,6 +103,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", + "license": "MIT", "peerDependencies": { "vue": "^3.2.0" } @@ -77,6 +116,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -93,6 +133,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -109,6 +150,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -125,6 +167,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -141,6 +184,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -157,6 +201,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -173,6 +218,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -189,6 +235,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -205,6 +252,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -221,6 +269,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -237,6 +286,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -253,6 +303,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -269,6 +320,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -285,6 +337,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -301,6 +354,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -317,6 +371,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -333,6 +388,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -349,6 +405,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -365,6 +422,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -381,6 +439,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -397,6 +456,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -413,6 +473,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -429,6 +490,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -438,37 +500,42 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.4.tgz", - "integrity": "sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.7.tgz", + "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==", + "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.4" + "@floating-ui/utils": "^0.2.7" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.7.tgz", - "integrity": "sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng==", + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", + "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", + "license": "MIT", "dependencies": { "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.4" + "@floating-ui/utils": "^0.2.7" } }, "node_modules/@floating-ui/utils": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.4.tgz", - "integrity": "sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==" + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", + "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==", + "license": "MIT" }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -482,6 +549,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -491,6 +559,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -504,6 +573,7 @@ "version": "2.11.7", "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -514,6 +584,7 @@ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -532,208 +603,224 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", - "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz", + "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", - "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz", + "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", - "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz", + "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", - "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz", + "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", - "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz", + "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", - "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz", + "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", - "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz", + "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", - "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz", + "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", - "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz", + "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", - "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz", + "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", - "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz", + "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", - "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz", + "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", - "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz", + "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", - "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz", + "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", - "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz", + "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", - "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz", + "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -743,17 +830,20 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.6", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.6.tgz", - "integrity": "sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==" + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "license": "MIT" }, "node_modules/@types/lodash-es": { "version": "4.17.12", "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "license": "MIT", "dependencies": { "@types/lodash": "*" } @@ -761,13 +851,15 @@ "node_modules/@types/web-bluetooth": { "version": "0.0.16", "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", - "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==", + "license": "MIT" }, "node_modules/@vitejs/plugin-vue": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.5.tgz", - "integrity": "sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.3.tgz", + "integrity": "sha512-3xbWsKEKXYlmX82aOHufFQVnkbMC/v8fLpWwh6hWOUrK5fbbtBh9Q/WWse27BFgSy2/e2c0fz5Scgya9h2GLhw==", "dev": true, + "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" }, @@ -777,105 +869,116 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.31.tgz", - "integrity": "sha512-skOiodXWTV3DxfDhB4rOf3OGalpITLlgCeOwb+Y9GJpfQ8ErigdBUHomBzvG78JoVE8MJoQsb+qhZiHfKeNeEg==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.4.tgz", + "integrity": "sha512-oNwn+BAt3n9dK9uAYvI+XGlutwuTq/wfj4xCBaZCqwwVIGtD7D6ViihEbyYZrDHIHTDE3Q6oL3/hqmAyFEy9DQ==", + "license": "MIT", "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.31", + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.4", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.31.tgz", - "integrity": "sha512-wK424WMXsG1IGMyDGyLqB+TbmEBFM78hIsOJ9QwUVLGrcSk0ak6zYty7Pj8ftm7nEtdU/DGQxAXp0/lM/2cEpQ==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.4.tgz", + "integrity": "sha512-yP9RRs4BDLOLfldn6ah+AGCNovGjMbL9uHvhDHf5wan4dAHLnFGOkqtfE7PPe4HTXIqE7l/NILdYw53bo1C8jw==", + "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.4.31", - "@vue/shared": "3.4.31" + "@vue/compiler-core": "3.5.4", + "@vue/shared": "3.5.4" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.31.tgz", - "integrity": "sha512-einJxqEw8IIJxzmnxmJBuK2usI+lJonl53foq+9etB2HAzlPjAS/wa7r0uUpXw5ByX3/0uswVSrjNb17vJm1kQ==", - "dependencies": { - "@babel/parser": "^7.24.7", - "@vue/compiler-core": "3.4.31", - "@vue/compiler-dom": "3.4.31", - "@vue/compiler-ssr": "3.4.31", - "@vue/shared": "3.4.31", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.4.tgz", + "integrity": "sha512-P+yiPhL+NYH7m0ZgCq7AQR2q7OIE+mpAEgtkqEeH9oHSdIRvUO+4X6MPvblJIWcoe4YC5a2Gdf/RsoyP8FFiPQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.4", + "@vue/compiler-dom": "3.5.4", + "@vue/compiler-ssr": "3.5.4", + "@vue/shared": "3.5.4", "estree-walker": "^2.0.2", - "magic-string": "^0.30.10", - "postcss": "^8.4.38", + "magic-string": "^0.30.11", + "postcss": "^8.4.44", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.31.tgz", - "integrity": "sha512-RtefmITAje3fJ8FSg1gwgDhdKhZVntIVbwupdyZDSifZTRMiWxWehAOTCc8/KZDnBOcYQ4/9VWxsTbd3wT0hAA==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.4.tgz", + "integrity": "sha512-acESdTXsxPnYr2C4Blv0ggx5zIFMgOzZmYU2UgvIff9POdRGbRNBHRyzHAnizcItvpgerSKQbllUc9USp3V7eg==", + "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.4.31", - "@vue/shared": "3.4.31" + "@vue/compiler-dom": "3.5.4", + "@vue/shared": "3.5.4" } }, "node_modules/@vue/devtools-api": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.3.tgz", - "integrity": "sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==" + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" }, "node_modules/@vue/reactivity": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.31.tgz", - "integrity": "sha512-VGkTani8SOoVkZNds1PfJ/T1SlAIOf8E58PGAhIOUDYPC4GAmFA2u/E14TDAFcf3vVDKunc4QqCe/SHr8xC65Q==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.4.tgz", + "integrity": "sha512-HKKbEuP7tYSGCq4e4nK6ZW6l5hyG66OUetefBp4budUyjvAYsnQDf+bgFzg2RAgnH0CInyqXwD9y47jwJEHrQw==", + "license": "MIT", "dependencies": { - "@vue/shared": "3.4.31" + "@vue/shared": "3.5.4" } }, "node_modules/@vue/runtime-core": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.31.tgz", - "integrity": "sha512-LDkztxeUPazxG/p8c5JDDKPfkCDBkkiNLVNf7XZIUnJ+66GVGkP+TIh34+8LtPisZ+HMWl2zqhIw0xN5MwU1cw==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.4.tgz", + "integrity": "sha512-f3ek2sTA0AFu0n+w+kCtz567Euqqa3eHewvo4klwS7mWfSj/A+UmYTwsnUFo35KeyAFY60JgrCGvEBsu1n/3LA==", + "license": "MIT", "dependencies": { - "@vue/reactivity": "3.4.31", - "@vue/shared": "3.4.31" + "@vue/reactivity": "3.5.4", + "@vue/shared": "3.5.4" } }, "node_modules/@vue/runtime-dom": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.31.tgz", - "integrity": "sha512-2Auws3mB7+lHhTFCg8E9ZWopA6Q6L455EcU7bzcQ4x6Dn4cCPuqj6S2oBZgN2a8vJRS/LSYYxwFFq2Hlx3Fsaw==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.4.tgz", + "integrity": "sha512-ofyc0w6rbD5KtjhP1i9hGOKdxGpvmuB1jprP7Djlj0X7R5J/oLwuNuE98GJ8WW31Hu2VxQHtk/LYTAlW8xrJdw==", + "license": "MIT", "dependencies": { - "@vue/reactivity": "3.4.31", - "@vue/runtime-core": "3.4.31", - "@vue/shared": "3.4.31", + "@vue/reactivity": "3.5.4", + "@vue/runtime-core": "3.5.4", + "@vue/shared": "3.5.4", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.31.tgz", - "integrity": "sha512-D5BLbdvrlR9PE3by9GaUp1gQXlCNadIZytMIb8H2h3FMWJd4oUfkUTEH2wAr3qxoRz25uxbTcbqd3WKlm9EHQA==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.4.tgz", + "integrity": "sha512-FbjV6DJLgKRetMYFBA1UXCroCiED/Ckr53/ba9wivyd7D/Xw9fpo0T6zXzCnxQwyvkyrL7y6plgYhWhNjGxY5g==", + "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.4.31", - "@vue/shared": "3.4.31" + "@vue/compiler-ssr": "3.5.4", + "@vue/shared": "3.5.4" }, "peerDependencies": { - "vue": "3.4.31" + "vue": "3.5.4" } }, "node_modules/@vue/shared": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.31.tgz", - "integrity": "sha512-Yp3wtJk//8cO4NItOPpi3QkLExAr/aLBGZMmTtW9WpdwBCJpRM6zj9WgWktXAl8IDIozwNMByT45JP3tO3ACWA==" + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.4.tgz", + "integrity": "sha512-L2MCDD8l7yC62Te5UUyPVpmexhL9ipVnYRw9CsWfm/BGRL5FwDX4a25bcJ/OJSD3+Hx+k/a8LDKcG2AFdJV3BA==", + "license": "MIT" }, "node_modules/@vueuse/core": { "version": "9.13.0", "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "license": "MIT", "dependencies": { "@types/web-bluetooth": "^0.0.16", "@vueuse/metadata": "9.13.0", @@ -887,10 +990,11 @@ } }, "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.8", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.8.tgz", - "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==", + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", "hasInstallScript": true, + "license": "MIT", "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" @@ -915,6 +1019,7 @@ "version": "9.13.0", "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" } @@ -923,6 +1028,7 @@ "version": "9.13.0", "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "license": "MIT", "dependencies": { "vue-demi": "*" }, @@ -931,10 +1037,11 @@ } }, "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.8", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.8.tgz", - "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==", + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", "hasInstallScript": true, + "license": "MIT", "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" @@ -960,6 +1067,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -971,6 +1079,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -982,22 +1091,26 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" }, "node_modules/async-validator": { "version": "4.2.5", "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", - "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", + "license": "MIT" }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -1008,12 +1121,14 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -1026,6 +1141,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -1034,6 +1150,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -1045,6 +1162,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1065,14 +1183,16 @@ } }, "node_modules/codemirror": { - "version": "5.65.16", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.16.tgz", - "integrity": "sha512-br21LjYmSlVL0vFCPWPfhzUCT34FM/pAdK7rRIZwa0rrtrIdotvP4Oh4GUHsu2E3IrQMCfRkL/fN3ytMNxVQvg==" + "version": "5.65.17", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.17.tgz", + "integrity": "sha512-1zOsUx3lzAOu/gnMAZkQ9kpIHcPYOc9y1Fbm2UVk5UBPkdq380nhkelG0qUwm1f7wPvTbndu9ZYlug35EwAZRQ==", + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -1084,25 +1204,29 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" }, "node_modules/dayjs": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1117,6 +1241,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -1125,15 +1250,17 @@ "version": "5.5.1", "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.1.tgz", "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==", + "license": "Apache-2.0", "dependencies": { "tslib": "2.3.0", "zrender": "5.6.0" } }, "node_modules/element-plus": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.7.6.tgz", - "integrity": "sha512-36sw1K23hYjgeooR10U6CiCaCp2wvOqwoFurADZVlekeQ9v5U1FhJCFGEXO6i/kZBBMwsE1c9fxjLs9LENw2Rg==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.8.2.tgz", + "integrity": "sha512-pqoQlaUmzUFCjjTHyxGO7Cd0CizsQpIaad1ozV9PCaYjh2T4MIMnjfifqiYs2lWoZ/8GVwrRG1WTCfnZEjwfcg==", + "license": "MIT", "dependencies": { "@ctrl/tinycolor": "^3.4.1", "@element-plus/icons-vue": "^2.3.1", @@ -1159,6 +1286,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -1172,6 +1300,7 @@ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -1207,13 +1336,15 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -1224,13 +1355,15 @@ "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -1247,6 +1380,7 @@ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -1255,6 +1389,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1263,15 +1398,16 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -1285,6 +1421,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -1299,6 +1436,7 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1312,6 +1450,7 @@ "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" } @@ -1320,6 +1459,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1331,6 +1471,7 @@ "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==", + "license": "ISC", "optional": true }, "node_modules/hasown": { @@ -1338,6 +1479,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -1346,14 +1488,16 @@ } }, "node_modules/immutable": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", - "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==" + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -1362,10 +1506,11 @@ } }, "node_modules/is-core-module": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -1380,6 +1525,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1388,6 +1534,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1399,6 +1546,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -1407,12 +1555,14 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -1424,6 +1574,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -1436,6 +1587,7 @@ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", "dev": true, + "license": "MIT", "dependencies": { "mlly": "^1.4.2", "pkg-types": "^1.0.3" @@ -1450,17 +1602,20 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" }, "node_modules/lodash-unified": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "license": "MIT", "peerDependencies": { "@types/lodash-es": "*", "lodash": "*", @@ -1468,32 +1623,36 @@ } }, "node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/memoize-one": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -1506,6 +1665,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1514,6 +1674,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -1526,6 +1687,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -1539,13 +1701,15 @@ "node_modules/mitt": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" }, "node_modules/mlly": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.11.3", "pathe": "^1.1.2", @@ -1554,10 +1718,11 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "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/nanoid": { "version": "3.3.7", @@ -1569,6 +1734,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1580,6 +1746,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1587,29 +1754,34 @@ "node_modules/normalize-wheel-es": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", - "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==", + "license": "BSD-3-Clause" }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pathe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1618,12 +1790,13 @@ } }, "node_modules/pinia": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", - "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.2.2.tgz", + "integrity": "sha512-ja2XqFWZC36mupU4z1ZzxeTApV7DOw44cV4dhQ9sGwun+N89v/XP7+j7q6TanS1u1tdbK4r+1BUx7heMaIdagA==", + "license": "MIT", "dependencies": { - "@vue/devtools-api": "^6.5.0", - "vue-demi": ">=0.14.5" + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" }, "funding": { "url": "https://github.com/sponsors/posva" @@ -1643,10 +1816,11 @@ } }, "node_modules/pinia/node_modules/vue-demi": { - "version": "0.14.8", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.8.tgz", - "integrity": "sha512-Uuqnk9YE9SsWeReYqK2alDI5YzciATE0r2SkA6iMAtuXvNTMNACJLJEXNXaEy94ECuBe4Sk6RzRU80kjdbIo1Q==", + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", "hasInstallScript": true, + "license": "MIT", "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" @@ -1668,10 +1842,11 @@ } }, "node_modules/pkg-types": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz", - "integrity": "sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.0.tgz", + "integrity": "sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==", "dev": true, + "license": "MIT", "dependencies": { "confbox": "^0.1.7", "mlly": "^1.7.1", @@ -1679,9 +1854,9 @@ } }, "node_modules/postcss": { - "version": "8.4.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", - "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", "funding": [ { "type": "opencollective", @@ -1696,6 +1871,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.1", @@ -1708,7 +1884,8 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -1728,12 +1905,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -1746,6 +1925,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -1763,16 +1943,18 @@ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rollup": { - "version": "4.18.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", - "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.2.tgz", + "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.5" }, @@ -1784,22 +1966,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.18.0", - "@rollup/rollup-android-arm64": "4.18.0", - "@rollup/rollup-darwin-arm64": "4.18.0", - "@rollup/rollup-darwin-x64": "4.18.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", - "@rollup/rollup-linux-arm-musleabihf": "4.18.0", - "@rollup/rollup-linux-arm64-gnu": "4.18.0", - "@rollup/rollup-linux-arm64-musl": "4.18.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", - "@rollup/rollup-linux-riscv64-gnu": "4.18.0", - "@rollup/rollup-linux-s390x-gnu": "4.18.0", - "@rollup/rollup-linux-x64-gnu": "4.18.0", - "@rollup/rollup-linux-x64-musl": "4.18.0", - "@rollup/rollup-win32-arm64-msvc": "4.18.0", - "@rollup/rollup-win32-ia32-msvc": "4.18.0", - "@rollup/rollup-win32-x64-msvc": "4.18.0", + "@rollup/rollup-android-arm-eabi": "4.21.2", + "@rollup/rollup-android-arm64": "4.21.2", + "@rollup/rollup-darwin-arm64": "4.21.2", + "@rollup/rollup-darwin-x64": "4.21.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.2", + "@rollup/rollup-linux-arm-musleabihf": "4.21.2", + "@rollup/rollup-linux-arm64-gnu": "4.21.2", + "@rollup/rollup-linux-arm64-musl": "4.21.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2", + "@rollup/rollup-linux-riscv64-gnu": "4.21.2", + "@rollup/rollup-linux-s390x-gnu": "4.21.2", + "@rollup/rollup-linux-x64-gnu": "4.21.2", + "@rollup/rollup-linux-x64-musl": "4.21.2", + "@rollup/rollup-win32-arm64-msvc": "4.21.2", + "@rollup/rollup-win32-ia32-msvc": "4.21.2", + "@rollup/rollup-win32-x64-msvc": "4.21.2", "fsevents": "~2.3.2" } }, @@ -1822,14 +2004,16 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/sass": { - "version": "1.77.6", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", - "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.78.0.tgz", + "integrity": "sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==", + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -1846,12 +2030,14 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -1860,9 +2046,10 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -1872,6 +2059,7 @@ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dev": true, + "license": "MIT", "dependencies": { "js-tokens": "^9.0.0" }, @@ -1884,6 +2072,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1891,10 +2080,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -1905,33 +2104,36 @@ "node_modules/tslib": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" }, "node_modules/ufo": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", - "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", - "dev": true + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "dev": true, + "license": "MIT" }, "node_modules/unimport": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.7.2.tgz", - "integrity": "sha512-91mxcZTadgXyj3lFWmrGT8GyoRHWuE5fqPOjg5RVtF6vj+OfM5G6WCzXjuYtSgELE5ggB34RY4oiCSEP8I3AHw==", + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.11.1.tgz", + "integrity": "sha512-DuB1Uoq01LrrXTScxnwOoMSlTXxyKcULguFxbLrMDFcE/CO0ZWHpEiyhovN0mycPt7K6luAHe8laqvwvuoeUPg==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.1.0", - "acorn": "^8.11.3", + "acorn": "^8.12.1", "escape-string-regexp": "^5.0.0", "estree-walker": "^3.0.3", "fast-glob": "^3.3.2", "local-pkg": "^0.5.0", - "magic-string": "^0.30.10", - "mlly": "^1.7.0", + "magic-string": "^0.30.11", + "mlly": "^1.7.1", "pathe": "^1.1.2", - "pkg-types": "^1.1.1", + "pkg-types": "^1.2.0", "scule": "^1.3.0", "strip-literal": "^2.1.0", - "unplugin": "^1.10.1" + "unplugin": "^1.12.2" } }, "node_modules/unimport/node_modules/estree-walker": { @@ -1939,6 +2141,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -1947,39 +2150,48 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/unplugin": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.11.0.tgz", - "integrity": "sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.14.1.tgz", + "integrity": "sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==", "dev": true, + "license": "MIT", "dependencies": { - "acorn": "^8.11.3", - "chokidar": "^3.6.0", - "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.6.1" + "acorn": "^8.12.1", + "webpack-virtual-modules": "^0.6.2" }, "engines": { "node": ">=14.0.0" + }, + "peerDependencies": { + "webpack-sources": "^3" + }, + "peerDependenciesMeta": { + "webpack-sources": { + "optional": true + } } }, "node_modules/unplugin-auto-import": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.17.6.tgz", - "integrity": "sha512-dmX0Pex5DzMzVuALkexboOZvh51fL/BD6aoPO7qHoTYGlQp0GRKsREv2KMF1lzYI9SXKQiRxAjwzbQnrFFNydQ==", + "version": "0.17.8", + "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.17.8.tgz", + "integrity": "sha512-CHryj6HzJ+n4ASjzwHruD8arhbdl+UXvhuAIlHDs15Y/IMecG3wrf7FVg4pVH/DIysbq/n0phIjNHAjl7TG7Iw==", "dev": true, + "license": "MIT", "dependencies": { - "@antfu/utils": "^0.7.8", + "@antfu/utils": "^0.7.10", "@rollup/pluginutils": "^5.1.0", "fast-glob": "^3.3.2", "local-pkg": "^0.5.0", "magic-string": "^0.30.10", "minimatch": "^9.0.4", - "unimport": "^3.7.1", - "unplugin": "^1.10.1" + "unimport": "^3.7.2", + "unplugin": "^1.11.0" }, "engines": { "node": ">=14" @@ -2005,6 +2217,7 @@ "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.26.0.tgz", "integrity": "sha512-s7IdPDlnOvPamjunVxw8kNgKNK8A5KM1YpK5j/p97jEKTjlPNrA0nZBiSfAKKlK1gWZuyWXlKL5dk3EDw874LQ==", "dev": true, + "license": "MIT", "dependencies": { "@antfu/utils": "^0.7.6", "@rollup/pluginutils": "^5.0.4", @@ -2042,6 +2255,7 @@ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" }, @@ -2050,14 +2264,15 @@ } }, "node_modules/vite": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", - "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.4.tgz", + "integrity": "sha512-RHFCkULitycHVTtelJ6jQLd+KSAAzOgEYorV32R2q++M6COBjKJR6BxqClwp5sf0XaBDjVMuJ9wnNfyAJwjMkA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.39", - "rollup": "^4.13.0" + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -2076,6 +2291,7 @@ "less": "*", "lightningcss": "^1.21.0", "sass": "*", + "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.4.0" @@ -2093,6 +2309,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -2105,15 +2324,16 @@ } }, "node_modules/vue": { - "version": "3.4.31", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.31.tgz", - "integrity": "sha512-njqRrOy7W3YLAlVqSKpBebtZpDVg21FPoaq1I7f/+qqBThK9ChAIjkRWgeP6Eat+8C+iia4P3OYqpATP21BCoQ==", + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.4.tgz", + "integrity": "sha512-3yAj2gkmiY+i7+22A1PWM+kjOVXjU74UPINcTiN7grIVPyFFI0lpGwHlV/4xydDmobaBn7/xmi+YG8HeSlCTcg==", + "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.4.31", - "@vue/compiler-sfc": "3.4.31", - "@vue/runtime-dom": "3.4.31", - "@vue/server-renderer": "3.4.31", - "@vue/shared": "3.4.31" + "@vue/compiler-dom": "3.5.4", + "@vue/compiler-sfc": "3.5.4", + "@vue/runtime-dom": "3.5.4", + "@vue/server-renderer": "3.5.4", + "@vue/shared": "3.5.4" }, "peerDependencies": { "typescript": "*" @@ -2125,11 +2345,12 @@ } }, "node_modules/vue-router": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.0.tgz", - "integrity": "sha512-HB+t2p611aIZraV2aPSRNXf0Z/oLZFrlygJm+sZbdJaW6lcFqEDQwnzUBXn+DApw+/QzDU/I9TeWx9izEjTmsA==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.4.tgz", + "integrity": "sha512-3MlnDqwRwZwCQVbtVfpsU+nrNymNjnXSsQtXName5925NVC1+326VVfYH9vSrA0N13teGEo8z5x7gbRnGjCDiQ==", + "license": "MIT", "dependencies": { - "@vue/devtools-api": "^6.5.1" + "@vue/devtools-api": "^6.6.4" }, "funding": { "url": "https://github.com/sponsors/posva" @@ -2138,25 +2359,18 @@ "vue": "^3.2.0" } }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/webpack-virtual-modules": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/yaml": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", - "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "license": "ISC", "bin": { "yaml": "bin.mjs" }, @@ -2168,6 +2382,7 @@ "version": "5.6.0", "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.0.tgz", "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==", + "license": "BSD-3-Clause", "dependencies": { "tslib": "2.3.0" } From 59c396870ac2d81ec81113802d54277fe070d91b Mon Sep 17 00:00:00 2001 From: Huang Youliang Date: Thu, 12 Sep 2024 13:21:43 +0800 Subject: [PATCH 06/10] Add benchmarks for topological queries (#530) --- pkg/test/query/metric.go | 62 +++++++++++++++++++++++++++ test/stress/trace/trace_suite_test.go | 4 ++ 2 files changed, 66 insertions(+) diff --git a/pkg/test/query/metric.go b/pkg/test/query/metric.go index a890a1189..0cfdfe746 100644 --- a/pkg/test/query/metric.go +++ b/pkg/test/query/metric.go @@ -25,6 +25,7 @@ import ( "sync" "time" + "github.com/apache/skywalking-cli/pkg/graphql/dependency" "github.com/apache/skywalking-cli/pkg/graphql/metrics" "github.com/apache/skywalking-cli/pkg/graphql/utils" "github.com/urfave/cli/v2" @@ -191,3 +192,64 @@ func sortMetrics(name, svc string, limit int, order api.Order, fs *flag.FlagSet) } return elapsed, nil } + +// Topology verifies the topology. +func Topology(basePath string, timeout time.Duration, groupNum int, fs *flag.FlagSet) { + basePath = path.Join(basePath, "topology") + err := os.MkdirAll(basePath, 0o755) + if err != nil { + panic(err) + } + stopCh := make(chan struct{}) + go func() { + time.Sleep(timeout) + close(stopCh) + }() + header := make([]string, groupNum) + for i := 0; i < groupNum; i++ { + header[i] = fmt.Sprintf("topology-%d", i) + } + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + collect(basePath, func() ([]float64, error) { + data := make([]float64, groupNum) + var subWg sync.WaitGroup + for i := 0; i < groupNum; i++ { + subWg.Add(1) + go func() { + defer subWg.Done() + d, err := globalTopology(fs) + if err != nil { + fmt.Printf("query topology error: %v \n", err) + } + data[i] = d.Seconds() + }() + } + subWg.Wait() + return data, nil + }, 500*time.Millisecond, stopCh) + analyze(header, basePath) + }() + wg.Wait() +} + +func globalTopology(fs *flag.FlagSet) (time.Duration, error) { + ctx := cli.NewContext(cli.NewApp(), fs, nil) + duration := api.Duration{ + Start: time.Now().Add(-200 * time.Minute).Format(utils.StepFormats[api.StepMinute]), + End: time.Now().Format(utils.StepFormats[api.StepMinute]), + Step: api.StepMinute, + } + start := time.Now() + result, err := dependency.GlobalTopologyWithoutLayer(ctx, duration) + elapsed := time.Since(start) + if err != nil { + return 0, err + } + if len(result.Nodes) < 1 { + return 0, fmt.Errorf("no result") + } + return elapsed, nil +} diff --git a/test/stress/trace/trace_suite_test.go b/test/stress/trace/trace_suite_test.go index 0aaee55b4..b26acbf69 100644 --- a/test/stress/trace/trace_suite_test.go +++ b/test/stress/trace/trace_suite_test.go @@ -76,4 +76,8 @@ var _ = Describe("Query", func() { It("TopN", func() { query.TopN(basePath, timeout, 1, fs) }) + + It("Topology", func() { + query.Topology(basePath, timeout, 1, fs) + }) }) From a528a5d99745c8fa978c135b8bda2685c50cda95 Mon Sep 17 00:00:00 2001 From: Gao Hongtao Date: Fri, 13 Sep 2024 14:15:10 +0800 Subject: [PATCH 07/10] Fix duplicated data points in a writing batch (#536) --- banyand/measure/block.go | 2 +- banyand/measure/block_reader_test.go | 32 +++--- banyand/measure/merger_policy.go | 2 +- banyand/measure/merger_test.go | 38 +++---- banyand/measure/part.go | 4 +- banyand/measure/tstable_test.go | 143 ++++++++++++++++++--------- banyand/stream/block.go | 2 +- banyand/stream/block_reader_test.go | 38 +++---- banyand/stream/merger_policy.go | 2 +- banyand/stream/merger_test.go | 32 +++--- banyand/stream/tstable_test.go | 107 +++++++++++--------- 11 files changed, 230 insertions(+), 172 deletions(-) diff --git a/banyand/measure/block.go b/banyand/measure/block.go index b95329a18..d6808bd3b 100644 --- a/banyand/measure/block.go +++ b/banyand/measure/block.go @@ -258,7 +258,7 @@ func (b *block) unmarshalTagFamilyFromSeqReaders(decoder *encoding.BytesBlockDec func (b *block) uncompressedSizeBytes() uint64 { dataPointsCount := uint64(b.Len()) - n := dataPointsCount * 8 + n := dataPointsCount * (8 + 8) // 8 bytes for timestamp and 8 bytes for version tff := b.tagFamilies for i := range tff { diff --git a/banyand/measure/block_reader_test.go b/banyand/measure/block_reader_test.go index cd576b78d..0cd0cf9d5 100644 --- a/banyand/measure/block_reader_test.go +++ b/banyand/measure/block_reader_test.go @@ -45,40 +45,40 @@ func Test_blockReader_nextBlock(t *testing.T) { name: "Test with single part", dpsList: []*dataPoints{dpsTS1}, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, }, }, { name: "Test with multiple parts with different ts", dpsList: []*dataPoints{dpsTS1, dpsTS2}, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, }, }, { name: "Test with a single part with same ts", dpsList: []*dataPoints{duplicatedDps}, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 32}, }, }, { name: "Test with multiple parts with same ts", dpsList: []*dataPoints{dpsTS1, dpsTS1}, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, }, }, } diff --git a/banyand/measure/merger_policy.go b/banyand/measure/merger_policy.go index 750122ef2..d9d07678c 100644 --- a/banyand/measure/merger_policy.go +++ b/banyand/measure/merger_policy.go @@ -38,7 +38,7 @@ func newDefaultMergePolicy() *mergePolicy { } func newDefaultMergePolicyForTesting() *mergePolicy { - return newMergePolicy(4, 1.7, run.Bytes(math.MaxInt64)) + return newMergePolicy(3, 1, run.Bytes(math.MaxInt64)) } // NewMergePolicy creates a MergePolicy with given parameters. diff --git a/banyand/measure/merger_test.go b/banyand/measure/merger_test.go index b3983407d..b8a8ff50c 100644 --- a/banyand/measure/merger_test.go +++ b/banyand/measure/merger_test.go @@ -260,43 +260,43 @@ func Test_mergeParts(t *testing.T) { name: "Test with single part", dpsList: []*dataPoints{dpsTS1}, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, }, }, { name: "Test with multiple parts with different ts", dpsList: []*dataPoints{dpsTS1, dpsTS2, dpsTS2}, want: []blockMetadata{ - {seriesID: 1, count: 2, uncompressedSizeBytes: 3352}, - {seriesID: 2, count: 2, uncompressedSizeBytes: 110}, - {seriesID: 3, count: 2, uncompressedSizeBytes: 48}, + {seriesID: 1, count: 2, uncompressedSizeBytes: 3368}, + {seriesID: 2, count: 2, uncompressedSizeBytes: 126}, + {seriesID: 3, count: 2, uncompressedSizeBytes: 64}, }, }, { name: "Test with multiple parts with same ts", dpsList: []*dataPoints{dpsTS11, dpsTS1}, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, }, }, { name: "Test with multiple parts with a large quantity of different ts", dpsList: []*dataPoints{generateHugeDps(1, 5000, 1), generateHugeDps(5001, 10000, 2)}, want: []blockMetadata{ - {seriesID: 1, count: 1265, uncompressedSizeBytes: 2120140}, - {seriesID: 1, count: 1265, uncompressedSizeBytes: 2120140}, - {seriesID: 1, count: 1265, uncompressedSizeBytes: 2120140}, - {seriesID: 1, count: 2470, uncompressedSizeBytes: 4139720}, - {seriesID: 1, count: 2470, uncompressedSizeBytes: 4139720}, - {seriesID: 1, count: 2470, uncompressedSizeBytes: 4139720}, - {seriesID: 1, count: 2410, uncompressedSizeBytes: 4039160}, - {seriesID: 1, count: 1205, uncompressedSizeBytes: 2019580}, - {seriesID: 2, count: 2, uncompressedSizeBytes: 110}, - {seriesID: 3, count: 2, uncompressedSizeBytes: 48}, + {seriesID: 1, count: 1265, uncompressedSizeBytes: 2130260}, + {seriesID: 1, count: 1265, uncompressedSizeBytes: 2130260}, + {seriesID: 1, count: 1265, uncompressedSizeBytes: 2130260}, + {seriesID: 1, count: 2470, uncompressedSizeBytes: 4159480}, + {seriesID: 1, count: 2470, uncompressedSizeBytes: 4159480}, + {seriesID: 1, count: 2470, uncompressedSizeBytes: 4159480}, + {seriesID: 1, count: 2410, uncompressedSizeBytes: 4058440}, + {seriesID: 1, count: 1205, uncompressedSizeBytes: 2029220}, + {seriesID: 2, count: 2, uncompressedSizeBytes: 126}, + {seriesID: 3, count: 2, uncompressedSizeBytes: 64}, }, }, } diff --git a/banyand/measure/part.go b/banyand/measure/part.go index 36a72eb84..1e89b1e9c 100644 --- a/banyand/measure/part.go +++ b/banyand/measure/part.go @@ -163,16 +163,14 @@ func (mp *memPart) mustInitFromDataPoints(dps *dataPoints) { continue } tsPrev = dps.timestamps[i] - } else { - tsPrev = 0 } if uncompressedBlockSizeBytes >= maxUncompressedBlockSize || (i-indexPrev) > maxBlockLength || sid != sidPrev { bsw.MustWriteDataPoints(sidPrev, dps.timestamps[indexPrev:i], dps.versions[indexPrev:i], dps.tagFamilies[indexPrev:i], dps.fields[indexPrev:i]) sidPrev = sid - tsPrev = 0 indexPrev = i + tsPrev = dps.timestamps[indexPrev] uncompressedBlockSizeBytes = 0 } uncompressedBlockSizeBytes += uncompressedDataPointSizeBytes(i, dps) diff --git a/banyand/measure/tstable_test.go b/banyand/measure/tstable_test.go index eff1cc283..2f24d5a6c 100644 --- a/banyand/measure/tstable_test.go +++ b/banyand/measure/tstable_test.go @@ -35,6 +35,7 @@ import ( "github.com/apache/skywalking-banyandb/pkg/query/model" "github.com/apache/skywalking-banyandb/pkg/run" "github.com/apache/skywalking-banyandb/pkg/test" + "github.com/apache/skywalking-banyandb/pkg/test/flags" "github.com/apache/skywalking-banyandb/pkg/timestamp" "github.com/apache/skywalking-banyandb/pkg/watcher" ) @@ -194,9 +195,9 @@ func Test_tstIter(t *testing.T) { minTimestamp: 1, maxTimestamp: 1, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, }, }, { @@ -206,22 +207,24 @@ func Test_tstIter(t *testing.T) { minTimestamp: 1, maxTimestamp: 2, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, }, }, { name: "Test with a single part with same ts", - dpsList: []*dataPoints{duplicatedDps}, - sids: []common.SeriesID{1}, + dpsList: []*dataPoints{duplicatedDps1}, + sids: []common.SeriesID{1, 2, 3}, minTimestamp: 1, maxTimestamp: 1, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 16}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 16}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, }, }, { @@ -231,12 +234,12 @@ func Test_tstIter(t *testing.T) { minTimestamp: 1, maxTimestamp: 2, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, }, }, } @@ -280,9 +283,9 @@ func Test_tstIter(t *testing.T) { minTimestamp: 1, maxTimestamp: 1, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, }, }, { @@ -292,9 +295,9 @@ func Test_tstIter(t *testing.T) { minTimestamp: 1, maxTimestamp: 2, want: []blockMetadata{ - {seriesID: 1, count: 2, uncompressedSizeBytes: 3352}, - {seriesID: 2, count: 2, uncompressedSizeBytes: 110}, - {seriesID: 3, count: 2, uncompressedSizeBytes: 48}, + {seriesID: 1, count: 2, uncompressedSizeBytes: 3368}, + {seriesID: 2, count: 2, uncompressedSizeBytes: 126}, + {seriesID: 3, count: 2, uncompressedSizeBytes: 64}, }, }, { @@ -304,9 +307,9 @@ func Test_tstIter(t *testing.T) { minTimestamp: 1, maxTimestamp: 2, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 1676}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, }, }, } @@ -322,38 +325,52 @@ func Test_tstIter(t *testing.T) { require.NoError(t, err) for i, dps := range tt.dpsList { tst.mustAddDataPoints(dps) + timeout := time.After(flags.EventuallyTimeout) // Set the timeout duration + OUTER: for { - snp := tst.currentSnapshot() - if snp == nil { - t.Logf("waiting for snapshot %d to be introduced", i) - time.Sleep(100 * time.Millisecond) - continue - } - if snp.creator != snapshotCreatorMemPart { + select { + case <-timeout: + t.Fatalf("timeout waiting for snapshot %d to be introduced", i) + default: + snp := tst.currentSnapshot() + if snp == nil { + t.Logf("waiting for snapshot %d to be introduced", i) + time.Sleep(100 * time.Millisecond) + continue + } + if snp.creator != snapshotCreatorMemPart { + snp.decRef() + break OUTER + } + t.Logf("waiting for snapshot %d to be flushed or merged: current creator:%d, parts: %+v", + i, snp.creator, snp.parts) snp.decRef() - break + time.Sleep(100 * time.Millisecond) } - t.Logf("waiting for snapshot %d to be flushed or merged: current creator:%d, parts: %+v", - i, snp.creator, snp.parts) - snp.decRef() - time.Sleep(100 * time.Millisecond) } } // wait until some parts are merged if len(tt.dpsList) > 0 { + timeout := time.After(flags.EventuallyTimeout) // Set the timeout duration + OUTER1: for { - snp := tst.currentSnapshot() - if snp == nil { - time.Sleep(100 * time.Millisecond) - continue - } - if len(snp.parts) == 1 { + select { + case <-timeout: + t.Fatalf("timeout waiting for snapshot to be merged") + default: + snp := tst.currentSnapshot() + if snp == nil { + time.Sleep(100 * time.Millisecond) + continue + } + if len(snp.parts) == 1 { + snp.decRef() + break OUTER1 + } + t.Logf("waiting for snapshot to be merged: current creator:%d, parts: %+v", snp.creator, snp.parts) snp.decRef() - break + time.Sleep(100 * time.Millisecond) } - t.Logf("waiting for snapshot to be merged: current creator:%d, parts: %+v", snp.creator, snp.parts) - snp.decRef() - time.Sleep(100 * time.Millisecond) } } verify(t, tt, tst) @@ -630,6 +647,34 @@ var duplicatedDps = &dataPoints{ }, } +var duplicatedDps1 = &dataPoints{ + seriesIDs: []common.SeriesID{2, 2, 2, 1, 1, 1, 3, 3, 3}, + timestamps: []int64{1, 1, 1, 1, 1, 1, 1, 1, 1}, + versions: []int64{1, 2, 3, 3, 2, 1, 2, 1, 3}, + tagFamilies: [][]nameValues{ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + }, + fields: []nameValues{ + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + }, +} + func generateHugeDps(startTimestamp, endTimestamp, timestamp int64) *dataPoints { hugeDps := &dataPoints{ seriesIDs: []common.SeriesID{}, diff --git a/banyand/stream/block.go b/banyand/stream/block.go index e6e7b964a..3b65e88e5 100644 --- a/banyand/stream/block.go +++ b/banyand/stream/block.go @@ -233,7 +233,7 @@ func (b *block) unmarshalTagFamilyFromSeqReaders(decoder *encoding.BytesBlockDec func (b *block) uncompressedSizeBytes() uint64 { elementsCount := uint64(b.Len()) - n := elementsCount * 8 + n := elementsCount * (8 + 8) // 8 bytes for timestamp and 8 bytes for elementID tff := b.tagFamilies for i := range tff { diff --git a/banyand/stream/block_reader_test.go b/banyand/stream/block_reader_test.go index 154fdd21f..ae9a3fc11 100644 --- a/banyand/stream/block_reader_test.go +++ b/banyand/stream/block_reader_test.go @@ -45,39 +45,39 @@ func Test_blockReader_nextBlock(t *testing.T) { name: "Test with single part", esList: []*elements{esTS1}, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 881}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 8}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, }, }, { name: "Test with multiple parts with different ts", esList: []*elements{esTS1, esTS2}, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 881}, - {seriesID: 1, count: 1, uncompressedSizeBytes: 881}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 8}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 8}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, }, }, { name: "Test with multiple parts with same ts", esList: []*elements{esTS1, esTS1}, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 881}, - {seriesID: 1, count: 1, uncompressedSizeBytes: 881}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 8}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 8}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - verify := func(pp []*part) { + verify := func(t *testing.T, pp []*part) { var pii []*partMergeIter for _, p := range pp { pmi := &partMergeIter{} @@ -116,7 +116,7 @@ func Test_blockReader_nextBlock(t *testing.T) { } } - t.Run("memory parts", func(_ *testing.T) { + t.Run("memory parts", func(t *testing.T) { var mpp []*memPart defer func() { for _, mp := range mpp { @@ -130,7 +130,7 @@ func Test_blockReader_nextBlock(t *testing.T) { mp.mustInitFromElements(es) pp = append(pp, openMemPart(mp)) } - verify(pp) + verify(t, pp) }) t.Run("file parts", func(t *testing.T) { @@ -158,7 +158,7 @@ func Test_blockReader_nextBlock(t *testing.T) { fpp = append(fpp, filePW) pp = append(pp, filePW.p) } - verify(pp) + verify(t, pp) }) }) } diff --git a/banyand/stream/merger_policy.go b/banyand/stream/merger_policy.go index e694f8047..ad881e581 100644 --- a/banyand/stream/merger_policy.go +++ b/banyand/stream/merger_policy.go @@ -38,7 +38,7 @@ func newDefaultMergePolicy() *mergePolicy { } func newDefaultMergePolicyForTesting() *mergePolicy { - return newMergePolicy(4, 1.7, run.Bytes(math.MaxInt64)) + return newMergePolicy(3, 1, run.Bytes(math.MaxInt64)) } func newDisabledMergePolicyForTesting() *mergePolicy { diff --git a/banyand/stream/merger_test.go b/banyand/stream/merger_test.go index 310d164b5..3128decee 100644 --- a/banyand/stream/merger_test.go +++ b/banyand/stream/merger_test.go @@ -248,40 +248,40 @@ func Test_mergeParts(t *testing.T) { name: "Test with single part", esList: []*elements{esTS1}, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 881}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 8}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, }, }, { name: "Test with multiple parts with different ts", esList: []*elements{esTS1, esTS2, esTS2}, want: []blockMetadata{ - {seriesID: 1, count: 3, uncompressedSizeBytes: 2643}, - {seriesID: 2, count: 3, uncompressedSizeBytes: 165}, - {seriesID: 3, count: 3, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 3, uncompressedSizeBytes: 2667}, + {seriesID: 2, count: 3, uncompressedSizeBytes: 189}, + {seriesID: 3, count: 3, uncompressedSizeBytes: 48}, }, }, { name: "Test with multiple parts with same ts", esList: []*elements{esTS1, esTS1, esTS1}, want: []blockMetadata{ - {seriesID: 1, count: 3, uncompressedSizeBytes: 2643}, - {seriesID: 2, count: 3, uncompressedSizeBytes: 165}, - {seriesID: 3, count: 3, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 3, uncompressedSizeBytes: 2667}, + {seriesID: 2, count: 3, uncompressedSizeBytes: 189}, + {seriesID: 3, count: 3, uncompressedSizeBytes: 48}, }, }, { name: "Test with multiple parts with a large quantity of different ts", esList: []*elements{generateHugeEs(1, 5000, 1), generateHugeEs(5001, 10000, 2)}, want: []blockMetadata{ - {seriesID: 1, count: 2448, uncompressedSizeBytes: 2156688}, - {seriesID: 1, count: 2448, uncompressedSizeBytes: 2156688}, - {seriesID: 1, count: 2552, uncompressedSizeBytes: 2248312}, - {seriesID: 1, count: 2448, uncompressedSizeBytes: 2156688}, - {seriesID: 1, count: 104, uncompressedSizeBytes: 91624}, - {seriesID: 2, count: 2, uncompressedSizeBytes: 110}, - {seriesID: 3, count: 2, uncompressedSizeBytes: 16}, + {seriesID: 1, count: 2448, uncompressedSizeBytes: 2176272}, + {seriesID: 1, count: 2448, uncompressedSizeBytes: 2176272}, + {seriesID: 1, count: 2552, uncompressedSizeBytes: 2268728}, + {seriesID: 1, count: 2448, uncompressedSizeBytes: 2176272}, + {seriesID: 1, count: 104, uncompressedSizeBytes: 92456}, + {seriesID: 2, count: 2, uncompressedSizeBytes: 126}, + {seriesID: 3, count: 2, uncompressedSizeBytes: 32}, }, }, } diff --git a/banyand/stream/tstable_test.go b/banyand/stream/tstable_test.go index c8759b9e1..9224e5523 100644 --- a/banyand/stream/tstable_test.go +++ b/banyand/stream/tstable_test.go @@ -36,6 +36,7 @@ import ( "github.com/apache/skywalking-banyandb/pkg/query/model" "github.com/apache/skywalking-banyandb/pkg/run" "github.com/apache/skywalking-banyandb/pkg/test" + "github.com/apache/skywalking-banyandb/pkg/test/flags" "github.com/apache/skywalking-banyandb/pkg/timestamp" "github.com/apache/skywalking-banyandb/pkg/watcher" ) @@ -190,9 +191,9 @@ func Test_tstIter(t *testing.T) { minTimestamp: 1, maxTimestamp: 1, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 881}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 8}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, }, }, { @@ -202,12 +203,12 @@ func Test_tstIter(t *testing.T) { minTimestamp: 1, maxTimestamp: 2, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 881}, - {seriesID: 1, count: 1, uncompressedSizeBytes: 881}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 8}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 8}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, }, }, { @@ -217,12 +218,12 @@ func Test_tstIter(t *testing.T) { minTimestamp: 1, maxTimestamp: 2, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 881}, - {seriesID: 1, count: 1, uncompressedSizeBytes: 881}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 8}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 8}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, }, }, } @@ -268,9 +269,9 @@ func Test_tstIter(t *testing.T) { minTimestamp: 1, maxTimestamp: 1, want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 881}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 55}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 8}, + {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, + {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, + {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, }, }, { @@ -280,9 +281,9 @@ func Test_tstIter(t *testing.T) { minTimestamp: 1, maxTimestamp: 2, want: []blockMetadata{ - {seriesID: 1, count: 3, uncompressedSizeBytes: 2643}, - {seriesID: 2, count: 3, uncompressedSizeBytes: 165}, - {seriesID: 3, count: 3, uncompressedSizeBytes: 24}, + {seriesID: 1, count: 3, uncompressedSizeBytes: 2667}, + {seriesID: 2, count: 3, uncompressedSizeBytes: 189}, + {seriesID: 3, count: 3, uncompressedSizeBytes: 48}, }, }, { @@ -292,9 +293,9 @@ func Test_tstIter(t *testing.T) { minTimestamp: 1, maxTimestamp: 2, want: []blockMetadata{ - {seriesID: 1, count: 2, uncompressedSizeBytes: 1762}, - {seriesID: 2, count: 2, uncompressedSizeBytes: 110}, - {seriesID: 3, count: 2, uncompressedSizeBytes: 16}, + {seriesID: 1, count: 2, uncompressedSizeBytes: 1778}, + {seriesID: 2, count: 2, uncompressedSizeBytes: 126}, + {seriesID: 3, count: 2, uncompressedSizeBytes: 32}, }, }, } @@ -310,38 +311,52 @@ func Test_tstIter(t *testing.T) { require.NoError(t, err) for i, es := range tt.esList { tst.mustAddElements(es) + timeout := time.After(flags.EventuallyTimeout) // Set the timeout duration + OUTER: for { - snp := tst.currentSnapshot() - if snp == nil { - t.Logf("waiting for snapshot %d to be introduced", i) - time.Sleep(100 * time.Millisecond) - continue - } - if snp.creator != snapshotCreatorMemPart { + select { + case <-timeout: + t.Fatalf("timeout waiting for snapshot %d to be introduced", i) + default: + snp := tst.currentSnapshot() + if snp == nil { + t.Logf("waiting for snapshot %d to be introduced", i) + time.Sleep(100 * time.Millisecond) + continue + } + if snp.creator != snapshotCreatorMemPart { + snp.decRef() + break OUTER + } + t.Logf("waiting for snapshot %d to be flushed or merged: current creator:%d, parts: %+v", + i, snp.creator, snp.parts) snp.decRef() - break + time.Sleep(100 * time.Millisecond) } - t.Logf("waiting for snapshot %d to be flushed or merged: current creator:%d, parts: %+v", - i, snp.creator, snp.parts) - snp.decRef() - time.Sleep(100 * time.Millisecond) } } // wait until some parts are merged if len(tt.esList) > 0 { + timeout := time.After(flags.EventuallyTimeout) // Set the timeout duration + OUTER1: for { - snp := tst.currentSnapshot() - if snp == nil { - time.Sleep(100 * time.Millisecond) - continue - } - if len(snp.parts) == 1 || len(snp.parts) < len(tt.esList) { + select { + case <-timeout: + t.Fatalf("timeout waiting for snapshot to be merged") + default: + snp := tst.currentSnapshot() + if snp == nil { + time.Sleep(100 * time.Millisecond) + continue + } + if len(snp.parts) == 1 || len(snp.parts) < len(tt.esList) { + snp.decRef() + break OUTER1 + } + t.Logf("waiting for snapshot to be merged: current creator:%d, parts: %+v", snp.creator, snp.parts) snp.decRef() - break + time.Sleep(100 * time.Millisecond) } - t.Logf("waiting for snapshot to be merged: current creator:%d, parts: %+v", snp.creator, snp.parts) - snp.decRef() - time.Sleep(100 * time.Millisecond) } } verify(t, tt, tst) From 0e734c462571dcf55dbb7761211c07d8b156521e Mon Sep 17 00:00:00 2001 From: Gao Hongtao Date: Fri, 13 Sep 2024 19:39:25 +0800 Subject: [PATCH 08/10] Update release related files (#535) --- Makefile | 6 +- banyand/measure/part.go | 7 ++ banyand/measure/tstable_test.go | 152 -------------------------- banyand/metadata/schema/property.go | 2 +- banyand/stream/part.go | 7 ++ banyand/stream/tstable_test.go | 164 ---------------------------- docs/release.md | 12 +- go.mod | 2 +- pkg/index/inverted/metrics.go | 1 + scripts/build/build.mk | 2 +- scripts/push-release.sh | 95 ++++++++++++++++ scripts/release.sh | 15 ++- 12 files changed, 132 insertions(+), 333 deletions(-) create mode 100755 scripts/push-release.sh diff --git a/Makefile b/Makefile index aa5449dfa..0d6a17477 100644 --- a/Makefile +++ b/Makefile @@ -186,7 +186,7 @@ RELEASE_SCRIPTS := $(mk_dir)/scripts/release.sh release-binary: release-source ## Package binary archive ${RELEASE_SCRIPTS} -b -release-source: clean ## Package source archive +release-source: ## Package source archive ${RELEASE_SCRIPTS} -s release-sign: ## Sign artifacts @@ -196,7 +196,11 @@ release-sign: ## Sign artifacts release-assembly: release-binary release-sign ## Generate release package +PUSH_RELEASE_SCRIPTS := $(mk_dir)/scripts/push-release.sh +release-push-candidate: ## Push release candidate + ${PUSH_RELEASE_SCRIPTS} + .PHONY: all $(PROJECTS) clean build default nuke .PHONY: lint check tidy format pre-push .PHONY: test test-race test-coverage test-ci diff --git a/banyand/measure/part.go b/banyand/measure/part.go index 1e89b1e9c..f4b6b812e 100644 --- a/banyand/measure/part.go +++ b/banyand/measure/part.go @@ -269,6 +269,13 @@ func (pw *partWrapper) ID() uint64 { return pw.p.partMetadata.ID } +func (pw *partWrapper) String() string { + if pw.mp != nil { + return fmt.Sprintf("mem part %v", pw.mp.partMetadata) + } + return fmt.Sprintf("part %v", pw.p.partMetadata) +} + func mustOpenFilePart(id uint64, root string, fileSystem fs.FileSystem) *part { var p part partPath := partPath(root, id) diff --git a/banyand/measure/tstable_test.go b/banyand/measure/tstable_test.go index 2f24d5a6c..8b011bd03 100644 --- a/banyand/measure/tstable_test.go +++ b/banyand/measure/tstable_test.go @@ -30,13 +30,10 @@ import ( "github.com/apache/skywalking-banyandb/api/common" "github.com/apache/skywalking-banyandb/pkg/convert" "github.com/apache/skywalking-banyandb/pkg/fs" - "github.com/apache/skywalking-banyandb/pkg/logger" pbv1 "github.com/apache/skywalking-banyandb/pkg/pb/v1" "github.com/apache/skywalking-banyandb/pkg/query/model" "github.com/apache/skywalking-banyandb/pkg/run" "github.com/apache/skywalking-banyandb/pkg/test" - "github.com/apache/skywalking-banyandb/pkg/test/flags" - "github.com/apache/skywalking-banyandb/pkg/timestamp" "github.com/apache/skywalking-banyandb/pkg/watcher" ) @@ -266,155 +263,6 @@ func Test_tstIter(t *testing.T) { }) } }) - - t.Run("file snapshot", func(t *testing.T) { - tests := []testCtx{ - { - name: "Test with no data points", - dpsList: []*dataPoints{}, - sids: []common.SeriesID{1, 2, 3}, - minTimestamp: 1, - maxTimestamp: 1, - }, - { - name: "Test with single part", - dpsList: []*dataPoints{dpsTS1}, - sids: []common.SeriesID{1, 2, 3}, - minTimestamp: 1, - maxTimestamp: 1, - want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, - }, - }, - { - name: "Test with multiple parts with different ts, the block will be merged", - dpsList: []*dataPoints{dpsTS1, dpsTS2}, - sids: []common.SeriesID{1, 2, 3}, - minTimestamp: 1, - maxTimestamp: 2, - want: []blockMetadata{ - {seriesID: 1, count: 2, uncompressedSizeBytes: 3368}, - {seriesID: 2, count: 2, uncompressedSizeBytes: 126}, - {seriesID: 3, count: 2, uncompressedSizeBytes: 64}, - }, - }, - { - name: "Test with multiple parts with same ts, duplicated blocks will be merged", - dpsList: []*dataPoints{dpsTS1, dpsTS1}, - sids: []common.SeriesID{1, 2, 3}, - minTimestamp: 1, - maxTimestamp: 2, - want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 1684}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 32}, - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - t.Run("merging on the fly", func(t *testing.T) { - tmpPath, defFn := test.Space(require.New(t)) - fileSystem := fs.NewLocalFileSystem() - defer defFn() - - tst, err := newTSTable(fileSystem, tmpPath, common.Position{}, - logger.GetLogger("test"), timestamp.TimeRange{}, option{flushTimeout: 0, mergePolicy: newDefaultMergePolicyForTesting()}, nil) - require.NoError(t, err) - for i, dps := range tt.dpsList { - tst.mustAddDataPoints(dps) - timeout := time.After(flags.EventuallyTimeout) // Set the timeout duration - OUTER: - for { - select { - case <-timeout: - t.Fatalf("timeout waiting for snapshot %d to be introduced", i) - default: - snp := tst.currentSnapshot() - if snp == nil { - t.Logf("waiting for snapshot %d to be introduced", i) - time.Sleep(100 * time.Millisecond) - continue - } - if snp.creator != snapshotCreatorMemPart { - snp.decRef() - break OUTER - } - t.Logf("waiting for snapshot %d to be flushed or merged: current creator:%d, parts: %+v", - i, snp.creator, snp.parts) - snp.decRef() - time.Sleep(100 * time.Millisecond) - } - } - } - // wait until some parts are merged - if len(tt.dpsList) > 0 { - timeout := time.After(flags.EventuallyTimeout) // Set the timeout duration - OUTER1: - for { - select { - case <-timeout: - t.Fatalf("timeout waiting for snapshot to be merged") - default: - snp := tst.currentSnapshot() - if snp == nil { - time.Sleep(100 * time.Millisecond) - continue - } - if len(snp.parts) == 1 { - snp.decRef() - break OUTER1 - } - t.Logf("waiting for snapshot to be merged: current creator:%d, parts: %+v", snp.creator, snp.parts) - snp.decRef() - time.Sleep(100 * time.Millisecond) - } - } - } - verify(t, tt, tst) - }) - - t.Run("merging on close", func(t *testing.T) { - t.Skip("the test is flaky due to unpredictable merge loop schedule.") - tmpPath, defFn := test.Space(require.New(t)) - fileSystem := fs.NewLocalFileSystem() - defer defFn() - - tst, err := newTSTable(fileSystem, tmpPath, common.Position{}, - logger.GetLogger("test"), timestamp.TimeRange{}, option{flushTimeout: defaultFlushTimeout, mergePolicy: newDefaultMergePolicyForTesting()}, &metrics{}) - require.NoError(t, err) - for _, dps := range tt.dpsList { - tst.mustAddDataPoints(dps) - time.Sleep(100 * time.Millisecond) - } - // wait until the introducer is done - if len(tt.dpsList) > 0 { - for { - snp := tst.currentSnapshot() - if snp == nil { - time.Sleep(100 * time.Millisecond) - continue - } - if len(snp.parts) == len(tt.dpsList) { - snp.decRef() - tst.Close() - break - } - snp.decRef() - time.Sleep(100 * time.Millisecond) - } - } - // reopen the table - tst, err = newTSTable(fileSystem, tmpPath, common.Position{}, - logger.GetLogger("test"), timestamp.TimeRange{}, option{flushTimeout: defaultFlushTimeout, mergePolicy: newDefaultMergePolicyForTesting()}, nil) - require.NoError(t, err) - verify(t, tt, tst) - }) - }) - } - }) } var tagProjections = map[int][]model.TagProjection{ diff --git a/banyand/metadata/schema/property.go b/banyand/metadata/schema/property.go index 8c72e7db6..8c87ef029 100644 --- a/banyand/metadata/schema/property.go +++ b/banyand/metadata/schema/property.go @@ -190,7 +190,7 @@ func (e *etcdSchemaRegistry) replaceProperty(ctx context.Context, key string, pr func tagLen(property *propertyv1.Property) (uint32, error) { tagsCount := len(property.Tags) - if tagsCount < 0 || tagsCount > math.MaxUint32 { + if tagsCount < 0 || uint64(tagsCount) > math.MaxUint32 { return 0, errors.New("integer overflow: tags count exceeds uint32 range") } tagsNum := uint32(tagsCount) diff --git a/banyand/stream/part.go b/banyand/stream/part.go index b4ad9d47f..d0dce1f90 100644 --- a/banyand/stream/part.go +++ b/banyand/stream/part.go @@ -247,6 +247,13 @@ func (pw *partWrapper) ID() uint64 { return pw.p.partMetadata.ID } +func (pw *partWrapper) String() string { + if pw.mp != nil { + return fmt.Sprintf("mem part %v", pw.mp.partMetadata) + } + return fmt.Sprintf("part %v", pw.p.partMetadata) +} + func mustOpenFilePart(id uint64, root string, fileSystem fs.FileSystem) *part { var p part partPath := partPath(root, id) diff --git a/banyand/stream/tstable_test.go b/banyand/stream/tstable_test.go index 9224e5523..42e2a6eb6 100644 --- a/banyand/stream/tstable_test.go +++ b/banyand/stream/tstable_test.go @@ -31,13 +31,10 @@ import ( "github.com/apache/skywalking-banyandb/api/common" "github.com/apache/skywalking-banyandb/pkg/convert" "github.com/apache/skywalking-banyandb/pkg/fs" - "github.com/apache/skywalking-banyandb/pkg/logger" pbv1 "github.com/apache/skywalking-banyandb/pkg/pb/v1" "github.com/apache/skywalking-banyandb/pkg/query/model" "github.com/apache/skywalking-banyandb/pkg/run" "github.com/apache/skywalking-banyandb/pkg/test" - "github.com/apache/skywalking-banyandb/pkg/test/flags" - "github.com/apache/skywalking-banyandb/pkg/timestamp" "github.com/apache/skywalking-banyandb/pkg/watcher" ) @@ -252,167 +249,6 @@ func Test_tstIter(t *testing.T) { }) } }) - - t.Run("file snapshot", func(t *testing.T) { - tests := []testCtx{ - { - name: "Test with no data points", - esList: []*elements{}, - sids: []common.SeriesID{1, 2, 3}, - minTimestamp: 1, - maxTimestamp: 1, - }, - { - name: "Test with single part", - esList: []*elements{esTS1}, - sids: []common.SeriesID{1, 2, 3}, - minTimestamp: 1, - maxTimestamp: 1, - want: []blockMetadata{ - {seriesID: 1, count: 1, uncompressedSizeBytes: 889}, - {seriesID: 2, count: 1, uncompressedSizeBytes: 63}, - {seriesID: 3, count: 1, uncompressedSizeBytes: 16}, - }, - }, - { - name: "Test with multiple parts with different ts, the block will be merged", - esList: []*elements{esTS1, esTS2, esTS2}, - sids: []common.SeriesID{1, 2, 3}, - minTimestamp: 1, - maxTimestamp: 2, - want: []blockMetadata{ - {seriesID: 1, count: 3, uncompressedSizeBytes: 2667}, - {seriesID: 2, count: 3, uncompressedSizeBytes: 189}, - {seriesID: 3, count: 3, uncompressedSizeBytes: 48}, - }, - }, - { - name: "Test with multiple parts with same ts, duplicated blocks will be merged", - esList: []*elements{esTS1, esTS1}, - sids: []common.SeriesID{1, 2, 3}, - minTimestamp: 1, - maxTimestamp: 2, - want: []blockMetadata{ - {seriesID: 1, count: 2, uncompressedSizeBytes: 1778}, - {seriesID: 2, count: 2, uncompressedSizeBytes: 126}, - {seriesID: 3, count: 2, uncompressedSizeBytes: 32}, - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - t.Run("merging on the fly", func(t *testing.T) { - tmpPath, defFn := test.Space(require.New(t)) - fileSystem := fs.NewLocalFileSystem() - defer defFn() - - tst, err := newTSTable(fileSystem, tmpPath, common.Position{}, - logger.GetLogger("test"), timestamp.TimeRange{}, option{flushTimeout: 0, elementIndexFlushTimeout: 0, mergePolicy: newDefaultMergePolicyForTesting()}, nil) - require.NoError(t, err) - for i, es := range tt.esList { - tst.mustAddElements(es) - timeout := time.After(flags.EventuallyTimeout) // Set the timeout duration - OUTER: - for { - select { - case <-timeout: - t.Fatalf("timeout waiting for snapshot %d to be introduced", i) - default: - snp := tst.currentSnapshot() - if snp == nil { - t.Logf("waiting for snapshot %d to be introduced", i) - time.Sleep(100 * time.Millisecond) - continue - } - if snp.creator != snapshotCreatorMemPart { - snp.decRef() - break OUTER - } - t.Logf("waiting for snapshot %d to be flushed or merged: current creator:%d, parts: %+v", - i, snp.creator, snp.parts) - snp.decRef() - time.Sleep(100 * time.Millisecond) - } - } - } - // wait until some parts are merged - if len(tt.esList) > 0 { - timeout := time.After(flags.EventuallyTimeout) // Set the timeout duration - OUTER1: - for { - select { - case <-timeout: - t.Fatalf("timeout waiting for snapshot to be merged") - default: - snp := tst.currentSnapshot() - if snp == nil { - time.Sleep(100 * time.Millisecond) - continue - } - if len(snp.parts) == 1 || len(snp.parts) < len(tt.esList) { - snp.decRef() - break OUTER1 - } - t.Logf("waiting for snapshot to be merged: current creator:%d, parts: %+v", snp.creator, snp.parts) - snp.decRef() - time.Sleep(100 * time.Millisecond) - } - } - } - verify(t, tt, tst) - }) - - t.Run("merging on close", func(t *testing.T) { - t.Skip("the test is flaky due to unpredictable merge loop schedule.") - tmpPath, defFn := test.Space(require.New(t)) - fileSystem := fs.NewLocalFileSystem() - defer defFn() - - tst, err := newTSTable(fileSystem, tmpPath, common.Position{}, - logger.GetLogger("test"), timestamp.TimeRange{}, - option{ - flushTimeout: defaultFlushTimeout, - elementIndexFlushTimeout: defaultFlushTimeout, - mergePolicy: newDefaultMergePolicyForTesting(), - }, nil) - require.NoError(t, err) - for _, es := range tt.esList { - tst.mustAddElements(es) - time.Sleep(100 * time.Millisecond) - } - // wait until the introducer is done - if len(tt.esList) > 0 { - for { - snp := tst.currentSnapshot() - if snp == nil { - time.Sleep(100 * time.Millisecond) - continue - } - if len(snp.parts) == len(tt.esList) { - snp.decRef() - tst.Close() - break - } - snp.decRef() - time.Sleep(100 * time.Millisecond) - } - } else { - tst.Close() - } - // reopen the table - tst, err = newTSTable(fileSystem, tmpPath, common.Position{}, - logger.GetLogger("test"), timestamp.TimeRange{}, - option{ - flushTimeout: defaultFlushTimeout, - elementIndexFlushTimeout: defaultFlushTimeout, - mergePolicy: newDefaultMergePolicyForTesting(), - }, nil) - require.NoError(t, err) - verify(t, tt, tst) - }) - }) - } - }) } var tagProjectionAll = []model.TagProjection{ diff --git a/docs/release.md b/docs/release.md index 4201b70e4..561c9696e 100644 --- a/docs/release.md +++ b/docs/release.md @@ -29,16 +29,12 @@ The `skywalking-banyandb-${VERSION}-bin.tgz`, `skywalking-banyandb-${VERSION}-sr ## Upload to Apache svn ```shell -svn co https://dist.apache.org/repos/dist/dev/skywalking/ -mkdir -p skywalking/banyandb/"$VERSION" -cp skywalking-banyandb/build/skywalking-banyandb*.tgz skywalking/banyandb/"$VERSION" -cp skywalking-banyandb/build/skywalking-banyandb*.tgz.asc skywalking/banyandb/"$VERSION" -cp skywalking-banyandb/build/skywalking-banyandb*.tgz.sha512 skywalking/banyandb/"$VERSION" - -cd skywalking/banyandb && svn add "$VERSION" && svn commit -m "Draft Apache SkyWalking BanyanDB release $VERSION" +make release-push-candidate ``` -## Call for vote in dev@ mailing list +The script will upload the source code package and binary package to the Apache SVN staging repository. The script will ask for your Apache ID and password. **You can do this only if you are a PMC member**. + +After the script is finished, you will get the vote mail subject and content based on the following template. Call for vote in `dev@skywalking.apache.org` diff --git a/go.mod b/go.mod index 2c79c9aa0..dde09b8f6 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/apache/skywalking-banyandb -go 1.23.0 +go 1.23 toolchain go1.23.1 diff --git a/pkg/index/inverted/metrics.go b/pkg/index/inverted/metrics.go index 6816b90e8..98b6d7a3d 100644 --- a/pkg/index/inverted/metrics.go +++ b/pkg/index/inverted/metrics.go @@ -112,6 +112,7 @@ func (s *store) CollectMetrics(labelValues ...string) { if s.metrics == nil { return } + // fixme: data race here status := s.writer.Status() s.metrics.totalUpdates.Set(float64(status.TotUpdates), labelValues...) s.metrics.totalDeletes.Set(float64(status.TotDeletes), labelValues...) diff --git a/scripts/build/build.mk b/scripts/build/build.mk index 647f0a89d..899dfef0c 100644 --- a/scripts/build/build.mk +++ b/scripts/build/build.mk @@ -86,7 +86,7 @@ clean-build: ## Clean all artifacts # be rebuilt again. $(BUILD_LOCK): @echo "cleaning up stale build artifacts..." - $(MAKE) clean + $(MAKE) clean-build mkdir -p $(BUILD_DIR) touch $@ diff --git a/scripts/push-release.sh b/scripts/push-release.sh new file mode 100755 index 000000000..0a0ed328e --- /dev/null +++ b/scripts/push-release.sh @@ -0,0 +1,95 @@ +#!/usr/bin/env bash + +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +set -ex + +if [ "$VERSION" == "" ]; then + echo "VERSION environment variable not found, Please setting the VERSION." + echo "For example: export VERSION=1.0.0" + exit 1 +fi + +VERSION=${VERSION} +TAG_NAME=v${VERSION} +PRODUCT_NAME="skywalking-banyandb-${VERSION}" + +echo "Release version "${VERSION} +echo "Source tag "${TAG_NAME} + +SCRIPTDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +ROOTDIR=${SCRIPTDIR}/.. +BUILDDIR=${ROOTDIR}/build + +pushd ${BUILDDIR} +trap 'popd' EXIT + +rm -rf skywalking + +svn co https://dist.apache.org/repos/dist/dev/skywalking/ +mkdir -p skywalking/banyandb/"$VERSION" +cp ${PRODUCT_NAME}-*.tgz skywalking/banyandb/"$VERSION" +cp ${PRODUCT_NAME}-*.tgz.asc skywalking/banyandb/"$VERSION" +cp ${PRODUCT_NAME}-*.tgz.sha512 skywalking/banyandb/"$VERSION" + +cd skywalking/banyandb && svn add "$VERSION" && svn commit -m "Draft Apache SkyWalking BanyanDB release $VERSION" + +cat << EOF +========================================================================= +Subject: [VOTE] Release Apache SkyWalking BanyanDB version $VERSION + +Content: + +Hi the SkyWalking Community: +This is a call for vote to release Apache SkyWalking BanyanDB version $VERSION. + +Release notes: + + * https://github.com/apache/skywalking-banyandb/blob/v$VERSION/CHANGES.md + +Release Candidate: + + * https://dist.apache.org/repos/dist/dev/skywalking/banyandb/$VERSION + * sha512 checksums + - $(cat ${PRODUCT_NAME}-src.tgz.sha512) + - $(cat ${PRODUCT_NAME}-banyand.tgz.sha512) + - $(cat ${PRODUCT_NAME}-bydbctl.tgz.sha512) + +Release Tag : + + * (Git Tag) $TAG_NAME + +Release Commit Hash : + + * https://github.com/apache/skywalking-banyandb/tree/$(git rev-list -n 1 "$TAG_NAME") + +Keys to verify the Release Candidate : + + * https://dist.apache.org/repos/dist/release/skywalking/KEYS + +Guide to build the release from source : + + * https://github.com/apache/skywalking-banyandb/blob/v$VERSION/docs/installation/binaries.md#Build-From-Source + +Voting will start now and will remain open for at least 72 hours, all PMC members are required to give their votes. + +[ ] +1 Release this package. +[ ] +0 No opinion. +[ ] -1 Do not release this package because.... + +Thanks. + +[1] https://github.com/apache/skywalking/blob/master/docs/en/guides/How-to-release.md#vote-check +EOF diff --git a/scripts/release.sh b/scripts/release.sh index 8e16d117c..ab619fa48 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -24,7 +24,8 @@ BUILDDIR=${ROOTDIR}/build RELEASE_TAG=$(git describe --tags $(git rev-list --tags --max-count=1)) RELEASE_VERSION=${RELEASE_TAG#"v"} -SOURCE_FILE=${BUILDDIR}/skywalking-banyandb-${RELEASE_VERSION}-src.tgz +SOURCE_FILE_NAME=skywalking-banyandb-${RELEASE_VERSION}-src.tgz +SOURCE_FILE=${BUILDDIR}/${SOURCE_FILE_NAME} binary(){ if [ ! -f "${SOURCE_FILE}" ]; then @@ -34,8 +35,9 @@ binary(){ tmpdir=`mktemp -d` trap "rm -rf ${tmpdir}" EXIT pushd ${tmpdir} + trap 'popd' EXIT tar -xvf ${SOURCE_FILE} - make generate + make generate && make -C ui build TARGET_OS=linux PLATFORMS=linux/amd64,linux/arm64 make -C banyand release bindir=./build mkdir -p ${bindir}/bin @@ -57,7 +59,6 @@ binary(){ copy_binaries bydbctl # Package tar -czf ${BUILDDIR}/skywalking-banyandb-${RELEASE_VERSION}-bydbctl.tgz -C ${bindir} . - popd } copy_binaries() { @@ -73,7 +74,8 @@ copy_binaries() { source(){ # Package - mkdir -p ${BUILDDIR} + tmpdir=`mktemp -d` + trap "rm -rf ${tmpdir}" EXIT rm -rf ${SOURCE_FILE} pushd ${ROOTDIR} echo "RELEASE_VERSION=${RELEASE_VERSION}" > .env @@ -85,8 +87,11 @@ source(){ --exclude=".idea" \ --exclude=".vscode" \ --exclude="bin" \ - -czf ${SOURCE_FILE} \ + -czf ${tmpdir}/${SOURCE_FILE_NAME} \ . + + mkdir -p ${BUILDDIR} + mv ${tmpdir}/${SOURCE_FILE_NAME} ${BUILDDIR} popd } From b7d397b2bd51c04509afabbd9a744ba6beaa218c Mon Sep 17 00:00:00 2001 From: Gao Hongtao Date: Thu, 19 Sep 2024 14:24:47 +0800 Subject: [PATCH 09/10] Reconnect to the etcd in the startup phase (#538) Signed-off-by: Gao Hongtao --- CHANGES.md | 1 + banyand/metadata/client.go | 76 +++++++++++++++++++++++++++++++------- scripts/push-release.sh | 1 + 3 files changed, 64 insertions(+), 14 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 20cd8b38f..22c7ee358 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -42,6 +42,7 @@ Release Notes. - Fix several "sync.Pool" leak issues by adding a tracker to the pool. - Fix panic when removing a expired segment. - Fix panic when reading a disorder block of measure. This block's versions are not sorted in descending order. +- Fix the bug that the etcd client doesn't reconnect when facing the context timeout in the startup phase. ### Documentation diff --git a/banyand/metadata/client.go b/banyand/metadata/client.go index 61ba8164f..94a7f1bd8 100644 --- a/banyand/metadata/client.go +++ b/banyand/metadata/client.go @@ -19,6 +19,9 @@ package metadata import ( "context" + "os" + "os/signal" + "syscall" "time" "github.com/pkg/errors" @@ -68,6 +71,7 @@ type clientService struct { etcdTLSCertFile string etcdTLSKeyFile string endpoints []string + registryTimeout time.Duration forceRegisterNode bool } @@ -84,6 +88,7 @@ func (s *clientService) FlagSet() *run.FlagSet { fs.StringVar(&s.etcdTLSCAFile, flagEtcdTLSCAFile, "", "Trusted certificate authority") fs.StringVar(&s.etcdTLSCertFile, flagEtcdTLSCertFile, "", "Etcd client certificate") fs.StringVar(&s.etcdTLSKeyFile, flagEtcdTLSKeyFile, "", "Private key for the etcd client certificate.") + fs.DurationVar(&s.registryTimeout, "node-registry-timeout", 2*time.Minute, "The timeout for the node registry") return fs } @@ -95,17 +100,50 @@ func (s *clientService) Validate() error { } func (s *clientService) PreRun(ctx context.Context) error { - var err error - s.schemaRegistry, err = schema.NewEtcdSchemaRegistry( - schema.Namespace(s.namespace), - schema.ConfigureServerEndpoints(s.endpoints), - schema.ConfigureEtcdUser(s.etcdUsername, s.etcdPassword), - schema.ConfigureEtcdTLSCAFile(s.etcdTLSCAFile), - schema.ConfigureEtcdTLSCertAndKey(s.etcdTLSCertFile, s.etcdTLSKeyFile), - ) - if err != nil { + stopCh := make(chan struct{}) + sn := make(chan os.Signal, 1) + l := logger.GetLogger(s.Name()) + signal.Notify(sn, + syscall.SIGHUP, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM) + go func() { + select { + case si := <-sn: + logger.GetLogger(s.Name()).Info().Msgf("signal received: %s", si) + close(stopCh) + case <-s.closer.CloseNotify(): + close(stopCh) + } + }() + + for { + var err error + s.schemaRegistry, err = schema.NewEtcdSchemaRegistry( + schema.Namespace(s.namespace), + schema.ConfigureServerEndpoints(s.endpoints), + schema.ConfigureEtcdUser(s.etcdUsername, s.etcdPassword), + schema.ConfigureEtcdTLSCAFile(s.etcdTLSCAFile), + schema.ConfigureEtcdTLSCertAndKey(s.etcdTLSCertFile, s.etcdTLSKeyFile), + ) + if errors.Is(err, context.DeadlineExceeded) { + select { + case <-stopCh: + return errors.New("pre-run interrupted") + case <-time.After(s.registryTimeout): + return errors.New("pre-run timeout") + case <-s.closer.CloseNotify(): + return errors.New("pre-run interrupted") + default: + l.Warn().Strs("etcd-endpoints", s.endpoints).Msg("the schema registry init timeout, retrying...") + time.Sleep(time.Second) + continue + } + } + if err == nil { + break + } return err } + val := ctx.Value(common.ContextNodeKey) if val == nil { return errors.New("node id is empty") @@ -116,7 +154,6 @@ func (s *clientService) PreRun(ctx context.Context) error { return errors.New("node roles is empty") } nodeRoles := val.([]databasev1.Role) - l := logger.GetLogger(s.Name()) nodeInfo := &databasev1.Node{ Metadata: &commonv1.Metadata{ Name: node.NodeID, @@ -126,15 +163,26 @@ func (s *clientService) PreRun(ctx context.Context) error { Roles: nodeRoles, CreatedAt: timestamppb.Now(), } + var cancel context.CancelFunc for { - ctxRegister, cancel := context.WithTimeout(ctx, time.Second*10) - err = s.schemaRegistry.RegisterNode(ctxRegister, nodeInfo, s.forceRegisterNode) + ctx, cancel = context.WithTimeout(ctx, time.Second*10) + err := s.schemaRegistry.RegisterNode(ctx, nodeInfo, s.forceRegisterNode) cancel() if errors.Is(err, schema.ErrGRPCAlreadyExists) { return errors.Wrapf(err, "node[%s] already exists in etcd", node.NodeID) } else if errors.Is(err, context.DeadlineExceeded) { - l.Warn().Strs("etcd-endpoints", s.endpoints).Msg("register node timeout, retrying...") - continue + select { + case <-stopCh: + return errors.New("register node interrupted") + case <-time.After(s.registryTimeout): + return errors.New("register node timeout") + case <-s.closer.CloseNotify(): + return errors.New("register node interrupted") + default: + l.Warn().Strs("etcd-endpoints", s.endpoints).Msg("register node timeout, retrying...") + time.Sleep(time.Second) + continue + } } if err == nil { l.Info().Stringer("info", nodeInfo).Msg("register node successfully") diff --git a/scripts/push-release.sh b/scripts/push-release.sh index 0a0ed328e..4c41f32ec 100755 --- a/scripts/push-release.sh +++ b/scripts/push-release.sh @@ -45,6 +45,7 @@ cp ${PRODUCT_NAME}-*.tgz.asc skywalking/banyandb/"$VERSION" cp ${PRODUCT_NAME}-*.tgz.sha512 skywalking/banyandb/"$VERSION" cd skywalking/banyandb && svn add "$VERSION" && svn commit -m "Draft Apache SkyWalking BanyanDB release $VERSION" +cd "$VERSION" cat << EOF ========================================================================= From a1d882a0e34d4a86c06e77b6ef8110f1021b4266 Mon Sep 17 00:00:00 2001 From: Gao Hongtao Date: Sat, 21 Sep 2024 07:43:09 +0800 Subject: [PATCH 10/10] Support applying the index rule to the tag belonging to the entity (#539) --- CHANGES.md | 1 + pkg/index/inverted/inverted_series.go | 16 ++-- pkg/query/logical/parser.go | 2 +- .../index_rule_bindings/endpoint_traffic.json | 16 ++++ .../testdata/index_rules/endpoint_name.json | 13 ++++ .../testdata/measures/endpoint_traffic.json | 28 +++++++ test/cases/init.go | 1 + .../measure/data/input/entity_match.yaml | 41 ++++++++++ .../data/testdata/endpoint_traffic.json | 74 +++++++++++++++++++ .../cases/measure/data/want/entity_match.yaml | 29 ++++++++ test/cases/measure/measure.go | 1 + 11 files changed, 216 insertions(+), 6 deletions(-) create mode 100644 pkg/test/measure/testdata/index_rule_bindings/endpoint_traffic.json create mode 100644 pkg/test/measure/testdata/index_rules/endpoint_name.json create mode 100644 pkg/test/measure/testdata/measures/endpoint_traffic.json create mode 100644 test/cases/measure/data/input/entity_match.yaml create mode 100644 test/cases/measure/data/testdata/endpoint_traffic.json create mode 100644 test/cases/measure/data/want/entity_match.yaml diff --git a/CHANGES.md b/CHANGES.md index 22c7ee358..d08ca4fa6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -26,6 +26,7 @@ Release Notes. - Add liaison, remote queue, storage(rotation), time-series tables, metadata cache and scheduler metrics. - Add HTTP health check endpoint for the data node. - Add slow query log for the distributed query and local query. +- Support applying the index rule to the tag belonging to the entity. ### Bugs diff --git a/pkg/index/inverted/inverted_series.go b/pkg/index/inverted/inverted_series.go index 074e30c21..11ee28b3e 100644 --- a/pkg/index/inverted/inverted_series.go +++ b/pkg/index/inverted/inverted_series.go @@ -40,7 +40,7 @@ func (s *store) BuildQuery(seriesMatchers []index.SeriesMatcher, secondaryQuery } qs := make([]bluge.Query, len(seriesMatchers)) - primaryNode := newShouldNode() + nodes := make([]node, len(seriesMatchers)) for i := range seriesMatchers { switch seriesMatchers[i].Type { case index.SeriesMatcherTypeExact: @@ -48,36 +48,42 @@ func (s *store) BuildQuery(seriesMatchers []index.SeriesMatcher, secondaryQuery q := bluge.NewTermQuery(match) q.SetField(entityField) qs[i] = q - primaryNode.Append(newTermNode(match, nil)) + nodes = append(nodes, newTermNode(match, nil)) case index.SeriesMatcherTypePrefix: match := convert.BytesToString(seriesMatchers[i].Match) q := bluge.NewPrefixQuery(match) q.SetField(entityField) qs[i] = q - primaryNode.Append(newPrefixNode(match)) + nodes = append(nodes, newPrefixNode(match)) case index.SeriesMatcherTypeWildcard: match := convert.BytesToString(seriesMatchers[i].Match) q := bluge.NewWildcardQuery(match) q.SetField(entityField) qs[i] = q - primaryNode.Append(newWildcardNode(match)) + nodes = append(nodes, newWildcardNode(match)) default: return nil, errors.Errorf("unsupported series matcher type: %v", seriesMatchers[i].Type) } } var primaryQuery bluge.Query + var n node if len(qs) > 1 { bq := bluge.NewBooleanQuery() bq.AddShould(qs...) bq.SetMinShould(1) primaryQuery = bq + n = newShouldNode() + for i := range nodes { + n.(*shouldNode).Append(nodes[i]) + } } else { primaryQuery = qs[0] + n = nodes[0] } query := bluge.NewBooleanQuery().AddMust(primaryQuery) node := newMustNode() - node.Append(primaryNode) + node.Append(n) if secondaryQuery != nil && secondaryQuery.(*queryNode).query != nil { query.AddMust(secondaryQuery.(*queryNode).query) node.Append(secondaryQuery.(*queryNode).node) diff --git a/pkg/query/logical/parser.go b/pkg/query/logical/parser.go index 68f8ad47c..b4769e8cb 100644 --- a/pkg/query/logical/parser.go +++ b/pkg/query/logical/parser.go @@ -28,7 +28,7 @@ import ( func ParseExprOrEntity(entityDict map[string]int, entity []*modelv1.TagValue, cond *modelv1.Condition) (LiteralExpr, [][]*modelv1.TagValue, error) { entityIdx, ok := entityDict[cond.Name] if ok && cond.Op != modelv1.Condition_BINARY_OP_EQ && cond.Op != modelv1.Condition_BINARY_OP_IN { - return nil, nil, errors.WithMessagef(ErrUnsupportedConditionOp, "tag belongs to the entity only supports EQ or IN operation in condition(%v)", cond) + ok = false } switch v := cond.Value.Value.(type) { case *modelv1.TagValue_Str: diff --git a/pkg/test/measure/testdata/index_rule_bindings/endpoint_traffic.json b/pkg/test/measure/testdata/index_rule_bindings/endpoint_traffic.json new file mode 100644 index 000000000..2633d4a54 --- /dev/null +++ b/pkg/test/measure/testdata/index_rule_bindings/endpoint_traffic.json @@ -0,0 +1,16 @@ +{ + "metadata": { + "name": "endpoint_traffic", + "group": "sw_metric" + }, + "rules": [ + "endpoint_name" + ], + "subject": { + "catalog": "CATALOG_MEASURE", + "name": "endpoint_traffic" + }, + "begin_at": "2021-04-15T01:30:15.01Z", + "expire_at": "2121-04-15T01:30:15.01Z", + "updated_at": "2021-04-15T01:30:15.01Z" +} \ No newline at end of file diff --git a/pkg/test/measure/testdata/index_rules/endpoint_name.json b/pkg/test/measure/testdata/index_rules/endpoint_name.json new file mode 100644 index 000000000..10738558b --- /dev/null +++ b/pkg/test/measure/testdata/index_rules/endpoint_name.json @@ -0,0 +1,13 @@ +{ + "metadata": { + "id": 5, + "name": "endpoint_name", + "group": "sw_metric" + }, + "tags": [ + "endpoint_name" + ], + "type": "TYPE_INVERTED", + "analyzer": "ANALYZER_SIMPLE", + "updated_at": "2021-04-15T01:30:15.01Z" +} \ No newline at end of file diff --git a/pkg/test/measure/testdata/measures/endpoint_traffic.json b/pkg/test/measure/testdata/measures/endpoint_traffic.json new file mode 100644 index 000000000..2c240557b --- /dev/null +++ b/pkg/test/measure/testdata/measures/endpoint_traffic.json @@ -0,0 +1,28 @@ +{ + "metadata": { + "name": "endpoint_traffic", + "group": "sw_metric" + }, + "tag_families": [ + { + "name": "default", + "tags": [ + { + "name": "service_id", + "type": "TAG_TYPE_STRING" + }, + { + "name": "endpoint_name", + "type": "TAG_TYPE_STRING" + } + ] + } + ], + "entity": { + "tag_names": [ + "service_id", + "endpoint_name" + ] + }, + "updated_at": "2024-04-15T01:30:15.01Z" +} \ No newline at end of file diff --git a/test/cases/init.go b/test/cases/init.go index 7341a96d3..7f32b753a 100644 --- a/test/cases/init.go +++ b/test/cases/init.go @@ -54,5 +54,6 @@ func Initialize(addr string, now time.Time) { casesmeasuredata.Write(conn, "service_latency_minute", "sw_metric", "service_latency_minute_data.json", now, interval) casesmeasuredata.Write(conn, "service_instance_latency_minute", "sw_metric", "service_instance_latency_minute_data.json", now, interval) casesmeasuredata.Write(conn, "service_instance_latency_minute", "sw_metric", "service_instance_latency_minute_data1.json", now.Add(1*time.Minute), interval) + casesmeasuredata.Write(conn, "endpoint_traffic", "sw_metric", "endpoint_traffic.json", now, interval) casesmeasuredata.Write(conn, "duplicated", "exception", "duplicated.json", now, 0) } diff --git a/test/cases/measure/data/input/entity_match.yaml b/test/cases/measure/data/input/entity_match.yaml new file mode 100644 index 000000000..ce37d3cc3 --- /dev/null +++ b/test/cases/measure/data/input/entity_match.yaml @@ -0,0 +1,41 @@ +# Licensed to Apache Software Foundation (ASF) under one or more contributor +# license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright +# ownership. Apache Software Foundation (ASF) licenses this file to you under +# the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: "endpoint_traffic" +groups: ["sw_metric"] +tagProjection: + tagFamilies: + - name: "default" + tags: ["service_id", "endpoint_name"] +criteria: + le: + op: "LOGICAL_OP_AND" + right: + condition: + name: "endpoint_name" + op: "BINARY_OP_MATCH" + value: + str: + value: "foo" + left: + condition: + name: "service_id" + op: "BINARY_OP_EQ" + value: + str: + value: "service_1" + diff --git a/test/cases/measure/data/testdata/endpoint_traffic.json b/test/cases/measure/data/testdata/endpoint_traffic.json new file mode 100644 index 000000000..bf43fb9d3 --- /dev/null +++ b/test/cases/measure/data/testdata/endpoint_traffic.json @@ -0,0 +1,74 @@ +[ + { + "tag_families": [ + { + "tags": [ + { + "str": { + "value": "service_1" + } + }, + { + "str": { + "value": "/api/v1/foo" + } + } + ] + } + ] + }, + { + "tag_families": [ + { + "tags": [ + { + "str": { + "value": "service_1" + } + }, + { + "str": { + "value": "/api/v1/bar" + } + } + ] + } + ] + }, + { + "tag_families": [ + { + "tags": [ + { + "str": { + "value": "service_2" + } + }, + { + "str": { + "value": "/api/v1/foo" + } + } + ] + } + ] + }, + { + "tag_families": [ + { + "tags": [ + { + "str": { + "value": "service_2" + } + }, + { + "str": { + "value": "/api/v1/bar" + } + } + ] + } + ] + } +] \ No newline at end of file diff --git a/test/cases/measure/data/want/entity_match.yaml b/test/cases/measure/data/want/entity_match.yaml new file mode 100644 index 000000000..ccd793069 --- /dev/null +++ b/test/cases/measure/data/want/entity_match.yaml @@ -0,0 +1,29 @@ +# Licensed to Apache Software Foundation (ASF) under one or more contributor +# license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright +# ownership. Apache Software Foundation (ASF) licenses this file to you under +# the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +dataPoints: + - tagFamilies: + - name: default + tags: + - key: service_id + value: + str: + value: service_1 + - key: endpoint_name + value: + str: + value: /api/v1/foo diff --git a/test/cases/measure/measure.go b/test/cases/measure/measure.go index 06b24498a..8f843105b 100644 --- a/test/cases/measure/measure.go +++ b/test/cases/measure/measure.go @@ -71,4 +71,5 @@ var _ = g.DescribeTable("Scanning Measures", verify, g.Entry("float64 aggregation:min", helpers.Args{Input: "float_agg_min", Duration: 25 * time.Minute, Offset: -20 * time.Minute}), g.Entry("all_latency", helpers.Args{Input: "all_latency", Duration: 25 * time.Minute, Offset: -20 * time.Minute}), g.Entry("duplicated in a part", helpers.Args{Input: "duplicated_part", Duration: 25 * time.Minute, Offset: -20 * time.Minute}), + g.Entry("match a tag belongs to the entity", helpers.Args{Input: "entity_match", Duration: 25 * time.Minute, Offset: -20 * time.Minute}), )