mirror of
https://github.com/cloudnative-pg/plugin-barman-cloud.git
synced 2026-07-06 17:52:21 +02:00
Compare commits
15 Commits
2547aed853
...
e234cec5da
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e234cec5da | ||
|
|
f3b4934faf | ||
|
|
bb53820c57 | ||
|
|
bf52833594 | ||
|
|
0c687cbbf1 | ||
|
|
5a17340088 | ||
|
|
d55942a67f | ||
|
|
a45459582f | ||
|
|
eb5e860775 | ||
|
|
c34b2329ea | ||
|
|
f7f0136520 | ||
|
|
7190349470 | ||
|
|
2fa63c4bc2 | ||
|
|
007cf8a892 | ||
|
|
eefb45ca5a |
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@ -32,7 +32,7 @@ jobs:
|
|||||||
df -h
|
df -h
|
||||||
echo "-----------------------------------------------------"
|
echo "-----------------------------------------------------"
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v7.0.0
|
||||||
# We need the full history for the commitlint task
|
# We need the full history for the commitlint task
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
@ -44,7 +44,7 @@ jobs:
|
|||||||
- name: Install Dagger
|
- name: Install Dagger
|
||||||
env:
|
env:
|
||||||
# renovate: datasource=github-tags depName=dagger/dagger versioning=semver
|
# renovate: datasource=github-tags depName=dagger/dagger versioning=semver
|
||||||
DAGGER_VERSION: 0.21.6
|
DAGGER_VERSION: 0.21.7
|
||||||
run: |
|
run: |
|
||||||
curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh
|
curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh
|
||||||
- name: Run CI task
|
- name: Run CI task
|
||||||
|
|||||||
2
.github/workflows/publish-docs.yml
vendored
2
.github/workflows/publish-docs.yml
vendored
@ -25,7 +25,7 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v7.0.0
|
||||||
|
|
||||||
- name: Setup Node
|
- name: Setup Node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v6
|
||||||
|
|||||||
4
.github/workflows/release-please.yml
vendored
4
.github/workflows/release-please.yml
vendored
@ -19,7 +19,7 @@ jobs:
|
|||||||
# We'll use the cli until there's a fix for
|
# We'll use the cli until there's a fix for
|
||||||
# https://github.com/googleapis/release-please/issues/2280.
|
# https://github.com/googleapis/release-please/issues/2280.
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v7.0.0
|
||||||
- name: Install node
|
- name: Install node
|
||||||
uses: actions/setup-node@v6
|
uses: actions/setup-node@v6
|
||||||
with:
|
with:
|
||||||
@ -31,7 +31,7 @@ jobs:
|
|||||||
- name: Install Dagger
|
- name: Install Dagger
|
||||||
env:
|
env:
|
||||||
# renovate: datasource=github-tags depName=dagger/dagger versioning=semver
|
# renovate: datasource=github-tags depName=dagger/dagger versioning=semver
|
||||||
DAGGER_VERSION: 0.21.6
|
DAGGER_VERSION: 0.21.7
|
||||||
run: |
|
run: |
|
||||||
curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh
|
curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh
|
||||||
- name: Create image and manifest
|
- name: Create image and manifest
|
||||||
|
|||||||
4
.github/workflows/release-publish.yml
vendored
4
.github/workflows/release-publish.yml
vendored
@ -13,7 +13,7 @@ jobs:
|
|||||||
contents: write
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v7.0.0
|
||||||
- name: Install QEMU static binaries
|
- name: Install QEMU static binaries
|
||||||
uses: docker/setup-qemu-action@v4
|
uses: docker/setup-qemu-action@v4
|
||||||
- name: Install Task
|
- name: Install Task
|
||||||
@ -21,7 +21,7 @@ jobs:
|
|||||||
- name: Install Dagger
|
- name: Install Dagger
|
||||||
env:
|
env:
|
||||||
# renovate: datasource=github-tags depName=dagger/dagger versioning=semver
|
# renovate: datasource=github-tags depName=dagger/dagger versioning=semver
|
||||||
DAGGER_VERSION: 0.21.6
|
DAGGER_VERSION: 0.21.7
|
||||||
run: |
|
run: |
|
||||||
curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh
|
curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh
|
||||||
- name: Create image and manifest
|
- name: Create image and manifest
|
||||||
|
|||||||
12
Taskfile.yml
12
Taskfile.yml
@ -46,7 +46,7 @@ tasks:
|
|||||||
- wordlist-ordered
|
- wordlist-ordered
|
||||||
env:
|
env:
|
||||||
# renovate: datasource=git-refs depName=spellcheck lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main
|
# renovate: datasource=git-refs depName=spellcheck lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main
|
||||||
DAGGER_SPELLCHECK_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c
|
DAGGER_SPELLCHECK_SHA: 679d5056358d3cd838ec226333decff673602937
|
||||||
cmds:
|
cmds:
|
||||||
- >
|
- >
|
||||||
GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/spellcheck@${DAGGER_SPELLCHECK_SHA}
|
GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/spellcheck@${DAGGER_SPELLCHECK_SHA}
|
||||||
@ -60,7 +60,7 @@ tasks:
|
|||||||
desc: Check for conventional commits
|
desc: Check for conventional commits
|
||||||
env:
|
env:
|
||||||
# renovate: datasource=git-refs depName=commitlint lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main
|
# renovate: datasource=git-refs depName=commitlint lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main
|
||||||
DAGGER_COMMITLINT_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c
|
DAGGER_COMMITLINT_SHA: 679d5056358d3cd838ec226333decff673602937
|
||||||
cmds:
|
cmds:
|
||||||
- >
|
- >
|
||||||
GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/commitlint@${DAGGER_COMMITLINT_SHA}
|
GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/commitlint@${DAGGER_COMMITLINT_SHA}
|
||||||
@ -74,7 +74,7 @@ tasks:
|
|||||||
- wordlist-ordered
|
- wordlist-ordered
|
||||||
env:
|
env:
|
||||||
# renovate: datasource=git-refs depName=uncommitted lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main
|
# renovate: datasource=git-refs depName=uncommitted lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main
|
||||||
DAGGER_UNCOMMITTED_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c
|
DAGGER_UNCOMMITTED_SHA: 679d5056358d3cd838ec226333decff673602937
|
||||||
cmds:
|
cmds:
|
||||||
- GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/uncommitted@${DAGGER_UNCOMMITTED_SHA} check-uncommitted --source . stdout
|
- GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/uncommitted@${DAGGER_UNCOMMITTED_SHA} check-uncommitted --source . stdout
|
||||||
sources:
|
sources:
|
||||||
@ -86,7 +86,7 @@ tasks:
|
|||||||
- controller-gen
|
- controller-gen
|
||||||
env:
|
env:
|
||||||
# renovate: datasource=git-refs depName=crd-gen-refs lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main
|
# renovate: datasource=git-refs depName=crd-gen-refs lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main
|
||||||
DAGGER_CRDGENREF_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c
|
DAGGER_CRDGENREF_SHA: 679d5056358d3cd838ec226333decff673602937
|
||||||
# renovate: datasource=go depName=github.com/elastic/crd-ref-docs
|
# renovate: datasource=go depName=github.com/elastic/crd-ref-docs
|
||||||
CRDREFDOCS_VERSION: v0.3.0
|
CRDREFDOCS_VERSION: v0.3.0
|
||||||
cmds:
|
cmds:
|
||||||
@ -206,7 +206,7 @@ tasks:
|
|||||||
- start-build-network
|
- start-build-network
|
||||||
vars:
|
vars:
|
||||||
# renovate: datasource=github-tags depName=dagger/dagger versioning=semver
|
# renovate: datasource=github-tags depName=dagger/dagger versioning=semver
|
||||||
DAGGER_VERSION: 0.21.6
|
DAGGER_VERSION: 0.21.7
|
||||||
DAGGER_ENGINE_IMAGE: registry.dagger.io/engine:v{{ .DAGGER_VERSION }}
|
DAGGER_ENGINE_IMAGE: registry.dagger.io/engine:v{{ .DAGGER_VERSION }}
|
||||||
cmds:
|
cmds:
|
||||||
- >
|
- >
|
||||||
@ -381,7 +381,7 @@ tasks:
|
|||||||
run: once
|
run: once
|
||||||
env:
|
env:
|
||||||
# renovate: datasource=git-refs depName=controller-gen lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main
|
# renovate: datasource=git-refs depName=controller-gen lookupName=https://github.com/cloudnative-pg/daggerverse currentValue=main
|
||||||
DAGGER_CONTROLLER_GEN_SHA: 0a3b65e4cad754d9abdecbe5cf8d443dba63477c
|
DAGGER_CONTROLLER_GEN_SHA: 679d5056358d3cd838ec226333decff673602937
|
||||||
cmds:
|
cmds:
|
||||||
- >
|
- >
|
||||||
GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/controller-gen@${DAGGER_CONTROLLER_GEN_SHA}
|
GITHUB_REF= dagger -s call -m github.com/cloudnative-pg/daggerverse/controller-gen@${DAGGER_CONTROLLER_GEN_SHA}
|
||||||
|
|||||||
@ -55,7 +55,7 @@ COPY containers/sidecar-requirements.txt .
|
|||||||
|
|
||||||
# Create virtualenv and install dependencies
|
# Create virtualenv and install dependencies
|
||||||
RUN python3 -m venv /venv && \
|
RUN python3 -m venv /venv && \
|
||||||
/venv/bin/pip install --upgrade pip setuptools wheel && \
|
/venv/bin/pip install --upgrade pip wheel && \
|
||||||
/venv/bin/pip install --no-cache-dir -r sidecar-requirements.txt
|
/venv/bin/pip install --no-cache-dir -r sidecar-requirements.txt
|
||||||
|
|
||||||
# Download and extract runtime library packages and their dependencies
|
# Download and extract runtime library packages and their dependencies
|
||||||
|
|||||||
@ -1,3 +1,2 @@
|
|||||||
barman[azure,cloud,google,snappy,zstandard,lz4]==3.19.1
|
barman[azure,cloud,google,snappy,zstandard,lz4]==3.19.1
|
||||||
setuptools==82.0.1
|
|
||||||
zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability
|
zipp>=3.19.1 # not directly required, pinned by Snyk to avoid a vulnerability
|
||||||
|
|||||||
@ -780,9 +780,3 @@ zstandard==0.25.0 \
|
|||||||
--hash=sha256:fd7a5004eb1980d3cefe26b2685bcb0b17989901a70a1040d1ac86f1d898c551 \
|
--hash=sha256:fd7a5004eb1980d3cefe26b2685bcb0b17989901a70a1040d1ac86f1d898c551 \
|
||||||
--hash=sha256:ffef5a74088f1e09947aecf91011136665152e0b4b359c42be3373897fb39b01
|
--hash=sha256:ffef5a74088f1e09947aecf91011136665152e0b4b359c42be3373897fb39b01
|
||||||
# via barman
|
# via barman
|
||||||
|
|
||||||
# The following packages are considered to be unsafe in a requirements file:
|
|
||||||
setuptools==82.0.1 \
|
|
||||||
--hash=sha256:7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9 \
|
|
||||||
--hash=sha256:a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb
|
|
||||||
# via -r sidecar-requirements.in
|
|
||||||
|
|||||||
6
go.mod
6
go.mod
@ -5,12 +5,12 @@ go 1.26.3
|
|||||||
require (
|
require (
|
||||||
github.com/cert-manager/cert-manager v1.20.2
|
github.com/cert-manager/cert-manager v1.20.2
|
||||||
github.com/cloudnative-pg/api v1.29.1
|
github.com/cloudnative-pg/api v1.29.1
|
||||||
github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260616073548-263818883a1c
|
github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260619084538-8d9302e232e7
|
||||||
github.com/cloudnative-pg/cloudnative-pg v1.29.1
|
github.com/cloudnative-pg/cloudnative-pg v1.29.1
|
||||||
github.com/cloudnative-pg/cnpg-i v0.5.0
|
github.com/cloudnative-pg/cnpg-i v0.5.0
|
||||||
github.com/cloudnative-pg/cnpg-i-machinery v0.4.2
|
github.com/cloudnative-pg/cnpg-i-machinery v0.4.2
|
||||||
github.com/cloudnative-pg/machinery v0.5.0
|
github.com/cloudnative-pg/machinery v0.5.0
|
||||||
github.com/onsi/ginkgo/v2 v2.31.0
|
github.com/onsi/ginkgo/v2 v2.32.0
|
||||||
github.com/onsi/gomega v1.42.0
|
github.com/onsi/gomega v1.42.0
|
||||||
github.com/spf13/cobra v1.10.2
|
github.com/spf13/cobra v1.10.2
|
||||||
github.com/spf13/viper v1.21.0
|
github.com/spf13/viper v1.21.0
|
||||||
@ -20,7 +20,7 @@ require (
|
|||||||
k8s.io/apiextensions-apiserver v0.36.2
|
k8s.io/apiextensions-apiserver v0.36.2
|
||||||
k8s.io/apimachinery v0.36.2
|
k8s.io/apimachinery v0.36.2
|
||||||
k8s.io/client-go v0.36.2
|
k8s.io/client-go v0.36.2
|
||||||
k8s.io/utils v0.0.0-20260507154919-ff6756f316d2
|
k8s.io/utils v0.0.0-20260617174310-a95e086a2553
|
||||||
sigs.k8s.io/controller-runtime v0.24.1
|
sigs.k8s.io/controller-runtime v0.24.1
|
||||||
sigs.k8s.io/kustomize/api v0.21.1
|
sigs.k8s.io/kustomize/api v0.21.1
|
||||||
sigs.k8s.io/kustomize/kyaml v0.21.1
|
sigs.k8s.io/kustomize/kyaml v0.21.1
|
||||||
|
|||||||
12
go.sum
12
go.sum
@ -20,8 +20,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF
|
|||||||
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||||
github.com/cloudnative-pg/api v1.29.1 h1:FWr8S7EQeOfdhYXyr2cof8wUXLARZiiQt5Qa6ltED7w=
|
github.com/cloudnative-pg/api v1.29.1 h1:FWr8S7EQeOfdhYXyr2cof8wUXLARZiiQt5Qa6ltED7w=
|
||||||
github.com/cloudnative-pg/api v1.29.1/go.mod h1:QtWF3yzSvIfORMHaSkPAk/o3bhCJwEHJgN3riyRiz3o=
|
github.com/cloudnative-pg/api v1.29.1/go.mod h1:QtWF3yzSvIfORMHaSkPAk/o3bhCJwEHJgN3riyRiz3o=
|
||||||
github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260616073548-263818883a1c h1:5ILvYitKJ3+yT+bDGQM+21QOpa/a8ayCdTqtbWpYJtk=
|
github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260619084538-8d9302e232e7 h1:lNWqibnwlJesDrwAukg8gQF4Hpys3jx31LaXZFoP9vA=
|
||||||
github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260616073548-263818883a1c/go.mod h1:vmW7blcg0BECd/9YKqn7NdiF7jz9BlXCWJcGJpzzBCg=
|
github.com/cloudnative-pg/barman-cloud v0.5.2-0.20260619084538-8d9302e232e7/go.mod h1:vmW7blcg0BECd/9YKqn7NdiF7jz9BlXCWJcGJpzzBCg=
|
||||||
github.com/cloudnative-pg/cloudnative-pg v1.29.1 h1:ZNEt1TMlnQKXI1kho2UqQuqdfvIvjGln4kN7C1lsmGA=
|
github.com/cloudnative-pg/cloudnative-pg v1.29.1 h1:ZNEt1TMlnQKXI1kho2UqQuqdfvIvjGln4kN7C1lsmGA=
|
||||||
github.com/cloudnative-pg/cloudnative-pg v1.29.1/go.mod h1:Sbgx9jVmkle4/gR2U5JHrzDd74sRPOBHDtPkvncg5v8=
|
github.com/cloudnative-pg/cloudnative-pg v1.29.1/go.mod h1:Sbgx9jVmkle4/gR2U5JHrzDd74sRPOBHDtPkvncg5v8=
|
||||||
github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE=
|
github.com/cloudnative-pg/cnpg-i v0.5.0 h1:/TOzpNT6cwNgrpftTtrnLKdoHgMwd+88vZgXjlVgXeE=
|
||||||
@ -161,8 +161,8 @@ github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/
|
|||||||
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
|
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
|
||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
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/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||||
github.com/onsi/ginkgo/v2 v2.31.0 h1:GtuJos5DFUV9EerYJo8RhYxosYNGvOdDE5haKq6Grfs=
|
github.com/onsi/ginkgo/v2 v2.32.0 h1:Hw7s2pVrQo/8Yz5N77qdnpHaoc+c6cC9WIV1Jce+J6E=
|
||||||
github.com/onsi/ginkgo/v2 v2.31.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44=
|
github.com/onsi/ginkgo/v2 v2.32.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44=
|
||||||
github.com/onsi/gomega v1.42.0 h1:CJby8u36xb7v34W78F8WKvqTQP7PCMIPB78IVDB73l4=
|
github.com/onsi/gomega v1.42.0 h1:CJby8u36xb7v34W78F8WKvqTQP7PCMIPB78IVDB73l4=
|
||||||
github.com/onsi/gomega v1.42.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A=
|
github.com/onsi/gomega v1.42.0/go.mod h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A=
|
||||||
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
|
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
|
||||||
@ -326,8 +326,8 @@ k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787 h1:kHv8PETbPIVHfqKBYwTNNS
|
|||||||
k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787/go.mod h1:Cyq7UE0QtGe+Zo+/6XFrxiS4Mq0tLyQEONkFzSkfp9o=
|
k8s.io/kube-openapi v0.0.0-20260502001324-b7f5293f4787/go.mod h1:Cyq7UE0QtGe+Zo+/6XFrxiS4Mq0tLyQEONkFzSkfp9o=
|
||||||
k8s.io/streaming v0.36.2 h1:NSKthPPg9UFSKsRauVJUVGH2Dvn8fhKmY4qrMkw/p98=
|
k8s.io/streaming v0.36.2 h1:NSKthPPg9UFSKsRauVJUVGH2Dvn8fhKmY4qrMkw/p98=
|
||||||
k8s.io/streaming v0.36.2/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s=
|
k8s.io/streaming v0.36.2/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s=
|
||||||
k8s.io/utils v0.0.0-20260507154919-ff6756f316d2 h1:wU4tMEhLGgIbLvXQb1cfN+EcM0wf7zC6CPF+C79jroc=
|
k8s.io/utils v0.0.0-20260617174310-a95e086a2553 h1:hmGqDecjc8d7HVzWzRFl0QD9bYuYKbBEG7t8xwnVxfI=
|
||||||
k8s.io/utils v0.0.0-20260507154919-ff6756f316d2/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
|
k8s.io/utils v0.0.0-20260617174310-a95e086a2553/go.mod h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
|
||||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 h1:hSfpvjjTQXQY2Fol2CS0QHMNs/WI1MOSGzCm1KhM5ec=
|
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 h1:hSfpvjjTQXQY2Fol2CS0QHMNs/WI1MOSGzCm1KhM5ec=
|
||||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
|
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
|
||||||
sigs.k8s.io/controller-runtime v0.24.1 h1:miPEwrmirImAvgME1L9qebGHrOnGJoVmVdtOU9fRfo4=
|
sigs.k8s.io/controller-runtime v0.24.1 h1:miPEwrmirImAvgME1L9qebGHrOnGJoVmVdtOU9fRfo4=
|
||||||
|
|||||||
36
hack/examples/cluster-replica-streaming.yaml
Normal file
36
hack/examples/cluster-replica-streaming.yaml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: Cluster
|
||||||
|
metadata:
|
||||||
|
name: cluster-replica
|
||||||
|
spec:
|
||||||
|
instances: 3
|
||||||
|
bootstrap:
|
||||||
|
pg_basebackup:
|
||||||
|
source: source
|
||||||
|
replica:
|
||||||
|
enabled: true
|
||||||
|
source: source
|
||||||
|
externalClusters:
|
||||||
|
- name: source
|
||||||
|
connectionParameters:
|
||||||
|
host: cluster-example-rw.default.svc
|
||||||
|
user: streaming_replica
|
||||||
|
sslmode: verify-full
|
||||||
|
dbname: postgres
|
||||||
|
sslKey:
|
||||||
|
name: cluster-example-replication
|
||||||
|
key: tls.key
|
||||||
|
sslCert:
|
||||||
|
name: cluster-example-replication
|
||||||
|
key: tls.crt
|
||||||
|
sslRootCert:
|
||||||
|
name: cluster-example-ca
|
||||||
|
key: ca.crt
|
||||||
|
plugin:
|
||||||
|
name: barman-cloud.cloudnative-pg.io
|
||||||
|
parameters:
|
||||||
|
barmanObjectName: minio-store
|
||||||
|
serverName: cluster-example
|
||||||
|
storage:
|
||||||
|
size: 1Gi
|
||||||
|
|
||||||
@ -224,7 +224,6 @@ func (w WALServiceImplementation) Archive(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Restore implements the WALService interface
|
// Restore implements the WALService interface
|
||||||
// nolint: gocognit
|
|
||||||
func (w WALServiceImplementation) Restore(
|
func (w WALServiceImplementation) Restore(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
request *wal.WALRestoreRequest,
|
request *wal.WALRestoreRequest,
|
||||||
@ -239,36 +238,7 @@ func (w WALServiceImplementation) Restore(
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var serverName string
|
serverName, objectStoreKey := resolveRestoreObjectStore(configuration, w.InstanceName)
|
||||||
var objectStoreKey types.NamespacedName
|
|
||||||
|
|
||||||
var promotionToken string
|
|
||||||
if configuration.Cluster.Spec.ReplicaCluster != nil {
|
|
||||||
promotionToken = configuration.Cluster.Spec.ReplicaCluster.PromotionToken
|
|
||||||
}
|
|
||||||
|
|
||||||
switch {
|
|
||||||
case promotionToken != "" && configuration.Cluster.Status.LastPromotionToken != promotionToken:
|
|
||||||
// This is a replica cluster that is being promoted to a primary cluster
|
|
||||||
// Recover from the replica source object store
|
|
||||||
serverName = configuration.ReplicaSourceServerName
|
|
||||||
objectStoreKey = configuration.GetReplicaSourceBarmanObjectKey()
|
|
||||||
|
|
||||||
case configuration.Cluster.IsReplica() && configuration.Cluster.Status.CurrentPrimary == w.InstanceName:
|
|
||||||
// Designated primary on replica cluster, using replica source object store
|
|
||||||
serverName = configuration.ReplicaSourceServerName
|
|
||||||
objectStoreKey = configuration.GetReplicaSourceBarmanObjectKey()
|
|
||||||
|
|
||||||
case configuration.Cluster.Status.CurrentPrimary == "":
|
|
||||||
// Recovery from object store, using recovery object store
|
|
||||||
serverName = configuration.RecoveryServerName
|
|
||||||
objectStoreKey = configuration.GetRecoveryBarmanObjectKey()
|
|
||||||
|
|
||||||
default:
|
|
||||||
// Using cluster object store
|
|
||||||
serverName = configuration.ServerName
|
|
||||||
objectStoreKey = configuration.GetBarmanObjectKey()
|
|
||||||
}
|
|
||||||
|
|
||||||
var objectStore barmancloudv1.ObjectStore
|
var objectStore barmancloudv1.ObjectStore
|
||||||
if err := w.Client.Get(ctx, objectStoreKey, &objectStore); err != nil {
|
if err := w.Client.Get(ctx, objectStoreKey, &objectStore); err != nil {
|
||||||
@ -284,6 +254,33 @@ func (w WALServiceImplementation) Restore(
|
|||||||
ctx, configuration.Cluster, &objectStore, serverName, walName, destinationPath)
|
ctx, configuration.Cluster, &objectStore, serverName, walName, destinationPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// resolveRestoreObjectStore selects the object store and server name to use when
|
||||||
|
// restoring a WAL file, based on the role this instance plays in the cluster.
|
||||||
|
func resolveRestoreObjectStore(
|
||||||
|
configuration *config.PluginConfiguration,
|
||||||
|
instanceName string,
|
||||||
|
) (serverName string, objectStoreKey types.NamespacedName) {
|
||||||
|
switch {
|
||||||
|
case configuration.Cluster.Status.CurrentPrimary == instanceName &&
|
||||||
|
len(configuration.ReplicaSourceBarmanObjectName) > 0:
|
||||||
|
// PostgreSQL never runs restore_command on a live primary; it runs only while
|
||||||
|
// the instance is in recovery (a genuine standby, restoring from a backup, or
|
||||||
|
// being rewound by pg_rewind). So a current primary that still has a replica
|
||||||
|
// source configured can only be a designated primary that has not finished
|
||||||
|
// promoting, and it must keep fetching WAL from the replica source.
|
||||||
|
// Token-agnostic: covers both switchover and failover.
|
||||||
|
return configuration.ReplicaSourceServerName, configuration.GetReplicaSourceBarmanObjectKey()
|
||||||
|
|
||||||
|
case configuration.Cluster.Status.CurrentPrimary == "":
|
||||||
|
// Recovery from object store, using recovery object store
|
||||||
|
return configuration.RecoveryServerName, configuration.GetRecoveryBarmanObjectKey()
|
||||||
|
|
||||||
|
default:
|
||||||
|
// Using cluster object store
|
||||||
|
return configuration.ServerName, configuration.GetBarmanObjectKey()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (w WALServiceImplementation) restoreFromBarmanObjectStore(
|
func (w WALServiceImplementation) restoreFromBarmanObjectStore(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
cluster *cnpgv1.Cluster,
|
cluster *cnpgv1.Cluster,
|
||||||
|
|||||||
98
internal/cnpgi/common/wal_test.go
Normal file
98
internal/cnpgi/common/wal_test.go
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
/*
|
||||||
|
Copyright © contributors to CloudNativePG, established as
|
||||||
|
CloudNativePG a Series of LF Projects, LLC.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package common
|
||||||
|
|
||||||
|
import (
|
||||||
|
cnpgv1 "github.com/cloudnative-pg/cloudnative-pg/api/v1"
|
||||||
|
. "github.com/onsi/ginkgo/v2"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
"github.com/cloudnative-pg/plugin-barman-cloud/internal/cnpgi/operator/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ = Describe("resolveRestoreObjectStore", func() {
|
||||||
|
const (
|
||||||
|
namespace = "test-ns"
|
||||||
|
instance = "cluster-1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// newConfig builds a PluginConfiguration with distinct, recognizable names
|
||||||
|
// for every candidate object store, so each test can assert exactly which
|
||||||
|
// one the routing selected.
|
||||||
|
newConfig := func(currentPrimary, replicaSourceObject string) *config.PluginConfiguration {
|
||||||
|
return &config.PluginConfiguration{
|
||||||
|
Cluster: &cnpgv1.Cluster{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Namespace: namespace},
|
||||||
|
Status: cnpgv1.ClusterStatus{CurrentPrimary: currentPrimary},
|
||||||
|
},
|
||||||
|
BarmanObjectName: "cluster-store",
|
||||||
|
ServerName: "cluster-server",
|
||||||
|
RecoveryBarmanObjectName: "recovery-store",
|
||||||
|
RecoveryServerName: "recovery-server",
|
||||||
|
ReplicaSourceBarmanObjectName: replicaSourceObject,
|
||||||
|
ReplicaSourceServerName: "replica-server",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DescribeTable(
|
||||||
|
"selects the correct object store for restoring WAL files",
|
||||||
|
func(cfg *config.PluginConfiguration, wantServer, wantObject string) {
|
||||||
|
gotServer, gotKey := resolveRestoreObjectStore(cfg, instance)
|
||||||
|
|
||||||
|
Expect(gotServer).To(Equal(wantServer))
|
||||||
|
Expect(gotKey.Name).To(Equal(wantObject))
|
||||||
|
Expect(gotKey.Namespace).To(Equal(namespace))
|
||||||
|
},
|
||||||
|
|
||||||
|
// The regression this guards: during a designated-primary promotion the
|
||||||
|
// instance is already the current primary while still in recovery, and it
|
||||||
|
// must pull remaining WALs from the replica source. The routing decision does
|
||||||
|
// not depend on the promotion token, so this single case covers both
|
||||||
|
// switchover and failover.
|
||||||
|
Entry("designated primary in promotion -> replica source",
|
||||||
|
newConfig(instance, "replica-store"),
|
||||||
|
"replica-server", "replica-store"),
|
||||||
|
|
||||||
|
// Guards the len(ReplicaSourceBarmanObjectName) > 0 gate: a current primary
|
||||||
|
// without a barman-backed replica source (plain HA primary, or a replica
|
||||||
|
// cluster whose source is streaming-only) must use the cluster store, not
|
||||||
|
// an empty-named replica source key.
|
||||||
|
Entry("current primary without a replica source -> cluster store",
|
||||||
|
newConfig(instance, ""),
|
||||||
|
"cluster-server", "cluster-store"),
|
||||||
|
|
||||||
|
// Bootstrap / PITR: no current primary yet. Recovery wins even if a replica
|
||||||
|
// source happens to be configured.
|
||||||
|
Entry("no current primary -> recovery store",
|
||||||
|
newConfig("", "replica-store"),
|
||||||
|
"recovery-server", "recovery-store"),
|
||||||
|
|
||||||
|
Entry("ordinary standby -> cluster store",
|
||||||
|
newConfig("cluster-2", ""),
|
||||||
|
"cluster-server", "cluster-store"),
|
||||||
|
|
||||||
|
// A non-primary instance must never route to the replica source, even when
|
||||||
|
// one is configured: only the designated primary catches up from the source.
|
||||||
|
Entry("standby in a replica cluster -> cluster store",
|
||||||
|
newConfig("cluster-2", "replica-store"),
|
||||||
|
"cluster-server", "cluster-store"),
|
||||||
|
)
|
||||||
|
})
|
||||||
@ -33,7 +33,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// updateRecoveryWindow updates the recovery window inside the object
|
// updateRecoveryWindow updates the recovery window inside the object
|
||||||
// store status subresource
|
// store status subresource. It uses retry logic to handle concurrent
|
||||||
|
// updates from backup completion and retention policy enforcement.
|
||||||
func updateRecoveryWindow(
|
func updateRecoveryWindow(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
c client.Client,
|
c client.Client,
|
||||||
@ -41,24 +42,33 @@ func updateRecoveryWindow(
|
|||||||
objectStore *barmancloudv1.ObjectStore,
|
objectStore *barmancloudv1.ObjectStore,
|
||||||
serverName string,
|
serverName string,
|
||||||
) error {
|
) error {
|
||||||
// Set the recovery window inside the barman object store object
|
objectStoreKey := client.ObjectKeyFromObject(objectStore)
|
||||||
convertTime := func(t *time.Time) *metav1.Time {
|
|
||||||
if t == nil {
|
return retry.RetryOnConflict(retry.DefaultBackoff, func() error {
|
||||||
return nil
|
var freshObjectStore barmancloudv1.ObjectStore
|
||||||
|
if err := c.Get(ctx, objectStoreKey, &freshObjectStore); err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
return ptr.To(metav1.NewTime(*t))
|
|
||||||
}
|
|
||||||
|
|
||||||
recoveryWindow := objectStore.Status.ServerRecoveryWindow[serverName]
|
// Set the recovery window inside the barman object store object
|
||||||
recoveryWindow.FirstRecoverabilityPoint = convertTime(backupList.GetFirstRecoverabilityPoint())
|
convertTime := func(t *time.Time) *metav1.Time {
|
||||||
recoveryWindow.LastSuccessfulBackupTime = convertTime(backupList.GetLastSuccessfulBackupTime())
|
if t == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return ptr.To(metav1.NewTime(*t))
|
||||||
|
}
|
||||||
|
|
||||||
if objectStore.Status.ServerRecoveryWindow == nil {
|
recoveryWindow := freshObjectStore.Status.ServerRecoveryWindow[serverName]
|
||||||
objectStore.Status.ServerRecoveryWindow = make(map[string]barmancloudv1.RecoveryWindow)
|
recoveryWindow.FirstRecoverabilityPoint = convertTime(backupList.GetFirstRecoverabilityPoint())
|
||||||
}
|
recoveryWindow.LastSuccessfulBackupTime = convertTime(backupList.GetLastSuccessfulBackupTime())
|
||||||
objectStore.Status.ServerRecoveryWindow[serverName] = recoveryWindow
|
|
||||||
|
|
||||||
return c.Status().Update(ctx, objectStore)
|
if freshObjectStore.Status.ServerRecoveryWindow == nil {
|
||||||
|
freshObjectStore.Status.ServerRecoveryWindow = make(map[string]barmancloudv1.RecoveryWindow)
|
||||||
|
}
|
||||||
|
freshObjectStore.Status.ServerRecoveryWindow[serverName] = recoveryWindow
|
||||||
|
|
||||||
|
return c.Status().Update(ctx, &freshObjectStore)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// setLastFailedBackupTime sets the last failed backup time in the
|
// setLastFailedBackupTime sets the last failed backup time in the
|
||||||
|
|||||||
@ -263,7 +263,9 @@ func getReplicaSourcePlugin(cluster *cnpgv1.Cluster) *cnpgv1.PluginConfiguration
|
|||||||
func (config *PluginConfiguration) Validate() error {
|
func (config *PluginConfiguration) Validate() error {
|
||||||
err := NewConfigurationError()
|
err := NewConfigurationError()
|
||||||
|
|
||||||
if len(config.BarmanObjectName) == 0 && len(config.RecoveryBarmanObjectName) == 0 {
|
if len(config.BarmanObjectName) == 0 &&
|
||||||
|
len(config.RecoveryBarmanObjectName) == 0 &&
|
||||||
|
len(config.ReplicaSourceBarmanObjectName) == 0 {
|
||||||
return err.WithMessage("no reference to barmanObjectName have been included")
|
return err.WithMessage("no reference to barmanObjectName have been included")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
126
internal/cnpgi/operator/config/config_test.go
Normal file
126
internal/cnpgi/operator/config/config_test.go
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
/*
|
||||||
|
Copyright © contributors to CloudNativePG, established as
|
||||||
|
CloudNativePG a Series of LF Projects, LLC.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
cnpgv1 "github.com/cloudnative-pg/cloudnative-pg/api/v1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
|
. "github.com/onsi/ginkgo/v2"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
|
||||||
|
"github.com/cloudnative-pg/plugin-barman-cloud/internal/cnpgi/metadata"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ = Describe("PluginConfiguration.Validate", func() {
|
||||||
|
It("fails when no barman object name is set", func() {
|
||||||
|
cfg := &PluginConfiguration{}
|
||||||
|
Expect(cfg.Validate()).To(HaveOccurred())
|
||||||
|
})
|
||||||
|
|
||||||
|
It("passes when only BarmanObjectName is set (backup/archive)", func() {
|
||||||
|
cfg := &PluginConfiguration{BarmanObjectName: "my-store"}
|
||||||
|
Expect(cfg.Validate()).To(Succeed())
|
||||||
|
})
|
||||||
|
|
||||||
|
It("passes when only RecoveryBarmanObjectName is set (recovery bootstrap)", func() {
|
||||||
|
cfg := &PluginConfiguration{RecoveryBarmanObjectName: "my-store"}
|
||||||
|
Expect(cfg.Validate()).To(Succeed())
|
||||||
|
})
|
||||||
|
|
||||||
|
It("passes when only ReplicaSourceBarmanObjectName is set (pg_basebackup replica cluster)", func() {
|
||||||
|
cfg := &PluginConfiguration{ReplicaSourceBarmanObjectName: "my-store"}
|
||||||
|
Expect(cfg.Validate()).To(Succeed())
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
var _ = Describe("NewFromCluster", func() {
|
||||||
|
enabled := true
|
||||||
|
|
||||||
|
It("derives the replica source object store for a pg_basebackup replica cluster", func() {
|
||||||
|
cluster := &cnpgv1.Cluster{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: "cluster-replica", Namespace: "test-ns"},
|
||||||
|
Spec: cnpgv1.ClusterSpec{
|
||||||
|
Bootstrap: &cnpgv1.BootstrapConfiguration{
|
||||||
|
PgBaseBackup: &cnpgv1.BootstrapPgBaseBackup{Source: "source"},
|
||||||
|
},
|
||||||
|
ReplicaCluster: &cnpgv1.ReplicaClusterConfiguration{
|
||||||
|
Enabled: &enabled,
|
||||||
|
Source: "source",
|
||||||
|
},
|
||||||
|
ExternalClusters: []cnpgv1.ExternalCluster{
|
||||||
|
{
|
||||||
|
Name: "source",
|
||||||
|
PluginConfiguration: &cnpgv1.PluginConfiguration{
|
||||||
|
Name: metadata.PluginName,
|
||||||
|
Parameters: map[string]string{
|
||||||
|
"barmanObjectName": "minio-store",
|
||||||
|
"serverName": "cluster-example",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
cfg := NewFromCluster(cluster)
|
||||||
|
|
||||||
|
// The replica source object store is derived from the external cluster plugin,
|
||||||
|
// while the backup/archive and recovery object stores remain empty: this is the
|
||||||
|
// distinguishing trait of a pg_basebackup replica cluster (a recovery-bootstrapped
|
||||||
|
// replica would also populate RecoveryBarmanObjectName).
|
||||||
|
Expect(cfg.ReplicaSourceBarmanObjectName).To(Equal("minio-store"))
|
||||||
|
Expect(cfg.ReplicaSourceServerName).To(Equal("cluster-example"))
|
||||||
|
Expect(cfg.BarmanObjectName).To(BeEmpty())
|
||||||
|
Expect(cfg.RecoveryBarmanObjectName).To(BeEmpty())
|
||||||
|
|
||||||
|
// Validate must accept it, otherwise the lifecycle hook skips sidecar injection.
|
||||||
|
Expect(cfg.Validate()).To(Succeed())
|
||||||
|
})
|
||||||
|
|
||||||
|
It("ignores a replica source backed by a different plugin", func() {
|
||||||
|
cluster := &cnpgv1.Cluster{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: "cluster-replica", Namespace: "test-ns"},
|
||||||
|
Spec: cnpgv1.ClusterSpec{
|
||||||
|
Bootstrap: &cnpgv1.BootstrapConfiguration{
|
||||||
|
PgBaseBackup: &cnpgv1.BootstrapPgBaseBackup{Source: "source"},
|
||||||
|
},
|
||||||
|
ReplicaCluster: &cnpgv1.ReplicaClusterConfiguration{
|
||||||
|
Enabled: &enabled,
|
||||||
|
Source: "source",
|
||||||
|
},
|
||||||
|
ExternalClusters: []cnpgv1.ExternalCluster{
|
||||||
|
{
|
||||||
|
Name: "source",
|
||||||
|
PluginConfiguration: &cnpgv1.PluginConfiguration{
|
||||||
|
Name: "some-other-plugin.cloudnative-pg.io",
|
||||||
|
Parameters: map[string]string{"barmanObjectName": "minio-store"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
cfg := NewFromCluster(cluster)
|
||||||
|
|
||||||
|
Expect(cfg.ReplicaSourceBarmanObjectName).To(BeEmpty())
|
||||||
|
Expect(cfg.Validate()).NotTo(Succeed())
|
||||||
|
})
|
||||||
|
})
|
||||||
32
internal/cnpgi/operator/config/suite_test.go
Normal file
32
internal/cnpgi/operator/config/suite_test.go
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
Copyright © contributors to CloudNativePG, established as
|
||||||
|
CloudNativePG a Series of LF Projects, LLC.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
. "github.com/onsi/ginkgo/v2"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestConfig(t *testing.T) {
|
||||||
|
RegisterFailHandler(Fail)
|
||||||
|
RunSpecs(t, "Config Suite")
|
||||||
|
}
|
||||||
@ -273,8 +273,10 @@ func (impl LifecycleImplementation) collectAdditionalInstanceArgs(
|
|||||||
return args
|
return args
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prefer the cluster object store (backup/archive). If not set, fallback to the recovery object store.
|
// Only one object store provides the sidecar arguments, with precedence:
|
||||||
// If neither is configured, no additional args are provided.
|
// BarmanObjectName (backup/archive) > RecoveryBarmanObjectName (recovery
|
||||||
|
// bootstrap) > ReplicaSourceBarmanObjectName (pg_basebackup replica).
|
||||||
|
// If none is configured, no additional args are provided.
|
||||||
if len(pluginConfiguration.BarmanObjectName) > 0 {
|
if len(pluginConfiguration.BarmanObjectName) > 0 {
|
||||||
var barmanObjectStore barmancloudv1.ObjectStore
|
var barmanObjectStore barmancloudv1.ObjectStore
|
||||||
if err := impl.Client.Get(ctx, pluginConfiguration.GetBarmanObjectKey(), &barmanObjectStore); err != nil {
|
if err := impl.Client.Get(ctx, pluginConfiguration.GetBarmanObjectKey(), &barmanObjectStore); err != nil {
|
||||||
@ -303,6 +305,20 @@ func (impl LifecycleImplementation) collectAdditionalInstanceArgs(
|
|||||||
return args, nil
|
return args, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(pluginConfiguration.ReplicaSourceBarmanObjectName) > 0 {
|
||||||
|
key := pluginConfiguration.GetReplicaSourceBarmanObjectKey()
|
||||||
|
var barmanObjectStore barmancloudv1.ObjectStore
|
||||||
|
if err := impl.Client.Get(ctx, key, &barmanObjectStore); err != nil {
|
||||||
|
return nil, fmt.Errorf("while getting replica source barman object store %s: %w", key.String(), err)
|
||||||
|
}
|
||||||
|
args := barmanObjectStore.Spec.InstanceSidecarConfiguration.AdditionalContainerArgs
|
||||||
|
args = append(
|
||||||
|
args,
|
||||||
|
collectTypedAdditionalArgs(&barmanObjectStore)...,
|
||||||
|
)
|
||||||
|
return args, nil
|
||||||
|
}
|
||||||
|
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -48,6 +48,9 @@ func (impl LifecycleImplementation) collectSidecarResourcesForPod(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
configuration *config.PluginConfiguration,
|
configuration *config.PluginConfiguration,
|
||||||
) (corev1.ResourceRequirements, error) {
|
) (corev1.ResourceRequirements, error) {
|
||||||
|
// Only one object store provides the sidecar resources, with precedence:
|
||||||
|
// BarmanObjectName (backup/archive) > RecoveryBarmanObjectName (recovery
|
||||||
|
// bootstrap) > ReplicaSourceBarmanObjectName (pg_basebackup replica).
|
||||||
if len(configuration.BarmanObjectName) > 0 {
|
if len(configuration.BarmanObjectName) > 0 {
|
||||||
// On a replica cluster that also archives, the designated primary
|
// On a replica cluster that also archives, the designated primary
|
||||||
// will use both the replica source object store and the object store
|
// will use both the replica source object store and the object store
|
||||||
@ -64,10 +67,10 @@ func (impl LifecycleImplementation) collectSidecarResourcesForPod(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(configuration.RecoveryBarmanObjectName) > 0 {
|
if len(configuration.RecoveryBarmanObjectName) > 0 {
|
||||||
// On a replica cluster that doesn't archive, the designated primary
|
// On a cluster recovering from an object store (including log-shipping
|
||||||
// uses only the replica source object store.
|
// replica clusters, where the recovery and replica source object stores
|
||||||
// In this case, we use the replica source object store for configuring
|
// coincide), we use the recovery object store for configuring the
|
||||||
// the resources of the sidecar container.
|
// resources of the sidecar container.
|
||||||
var barmanObjectStore barmancloudv1.ObjectStore
|
var barmanObjectStore barmancloudv1.ObjectStore
|
||||||
if err := impl.Client.Get(ctx, configuration.GetRecoveryBarmanObjectKey(), &barmanObjectStore); err != nil {
|
if err := impl.Client.Get(ctx, configuration.GetRecoveryBarmanObjectKey(), &barmanObjectStore); err != nil {
|
||||||
return corev1.ResourceRequirements{}, err
|
return corev1.ResourceRequirements{}, err
|
||||||
@ -76,5 +79,18 @@ func (impl LifecycleImplementation) collectSidecarResourcesForPod(
|
|||||||
return barmanObjectStore.Spec.InstanceSidecarConfiguration.Resources, nil
|
return barmanObjectStore.Spec.InstanceSidecarConfiguration.Resources, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(configuration.ReplicaSourceBarmanObjectName) > 0 {
|
||||||
|
// On a replica cluster bootstrapped via pg_basebackup, the designated
|
||||||
|
// primary uses only the replica source object store.
|
||||||
|
// In this case, we use the replica source object store for configuring
|
||||||
|
// the resources of the sidecar container.
|
||||||
|
var barmanObjectStore barmancloudv1.ObjectStore
|
||||||
|
if err := impl.Client.Get(ctx, configuration.GetReplicaSourceBarmanObjectKey(), &barmanObjectStore); err != nil {
|
||||||
|
return corev1.ResourceRequirements{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return barmanObjectStore.Spec.InstanceSidecarConfiguration.Resources, nil
|
||||||
|
}
|
||||||
|
|
||||||
return corev1.ResourceRequirements{}, nil
|
return corev1.ResourceRequirements{}, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,6 +28,7 @@ import (
|
|||||||
barmancloudv1 "github.com/cloudnative-pg/plugin-barman-cloud/api/v1"
|
barmancloudv1 "github.com/cloudnative-pg/plugin-barman-cloud/api/v1"
|
||||||
batchv1 "k8s.io/api/batch/v1"
|
batchv1 "k8s.io/api/batch/v1"
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/api/resource"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"sigs.k8s.io/controller-runtime/pkg/client/fake"
|
"sigs.k8s.io/controller-runtime/pkg/client/fake"
|
||||||
@ -293,6 +294,24 @@ var _ = Describe("LifecycleImplementation", func() {
|
|||||||
Expect(args).To(Equal(recoveryArgs))
|
Expect(args).To(Equal(recoveryArgs))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("falls back to replica source object store when primary and recovery not set", func(ctx SpecContext) {
|
||||||
|
ns := "test-ns"
|
||||||
|
cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}}
|
||||||
|
pc := &config.PluginConfiguration{
|
||||||
|
Cluster: cluster,
|
||||||
|
ReplicaSourceBarmanObjectName: "replica-source-store",
|
||||||
|
}
|
||||||
|
replicaArgs := []string{"--replica-a", "--replica-b"}
|
||||||
|
cli := buildClientFunc(
|
||||||
|
makeStoreFunc(ns, pc.ReplicaSourceBarmanObjectName, replicaArgs),
|
||||||
|
).Build()
|
||||||
|
|
||||||
|
impl := LifecycleImplementation{Client: cli}
|
||||||
|
args, err := impl.collectAdditionalInstanceArgs(ctx, pc)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(args).To(Equal(replicaArgs))
|
||||||
|
})
|
||||||
|
|
||||||
It("returns nil when neither object name is configured", func(ctx SpecContext) {
|
It("returns nil when neither object name is configured", func(ctx SpecContext) {
|
||||||
ns := "test-ns"
|
ns := "test-ns"
|
||||||
cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}}
|
cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}}
|
||||||
@ -386,6 +405,117 @@ var _ = Describe("LifecycleImplementation", func() {
|
|||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
Expect(args).To(Equal([]string{"--log-level=info"}))
|
Expect(args).To(Equal([]string{"--log-level=info"}))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("includes --log-level from replica source object store when only replica source set", func(ctx SpecContext) {
|
||||||
|
ns := "test-ns"
|
||||||
|
cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}}
|
||||||
|
pc := &config.PluginConfiguration{
|
||||||
|
Cluster: cluster,
|
||||||
|
ReplicaSourceBarmanObjectName: "replica-source-store",
|
||||||
|
}
|
||||||
|
store := &barmancloudv1.ObjectStore{
|
||||||
|
TypeMeta: metav1.TypeMeta{Kind: "ObjectStore", APIVersion: barmancloudv1.GroupVersion.String()},
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: pc.ReplicaSourceBarmanObjectName, Namespace: ns},
|
||||||
|
Spec: barmancloudv1.ObjectStoreSpec{
|
||||||
|
InstanceSidecarConfiguration: barmancloudv1.InstanceSidecarConfiguration{
|
||||||
|
LogLevel: "warning",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
s := runtime.NewScheme()
|
||||||
|
barmancloudv1.AddKnownTypes(s)
|
||||||
|
cli := fake.NewClientBuilder().WithScheme(s).WithRuntimeObjects(store).Build()
|
||||||
|
|
||||||
|
impl := LifecycleImplementation{Client: cli}
|
||||||
|
args, err := impl.collectAdditionalInstanceArgs(ctx, pc)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(args).To(Equal([]string{"--log-level=warning"}))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
Describe("collectSidecarResourcesForPod", func() {
|
||||||
|
makeStoreWithResourcesFunc := func(ns, name string, res corev1.ResourceRequirements) *barmancloudv1.ObjectStore {
|
||||||
|
return &barmancloudv1.ObjectStore{
|
||||||
|
TypeMeta: metav1.TypeMeta{Kind: "ObjectStore", APIVersion: barmancloudv1.GroupVersion.String()},
|
||||||
|
ObjectMeta: metav1.ObjectMeta{Name: name, Namespace: ns},
|
||||||
|
Spec: barmancloudv1.ObjectStoreSpec{
|
||||||
|
InstanceSidecarConfiguration: barmancloudv1.InstanceSidecarConfiguration{
|
||||||
|
Resources: res,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
It("uses the cluster object store resources when set", func(ctx SpecContext) {
|
||||||
|
ns := "test-ns"
|
||||||
|
cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}}
|
||||||
|
pc := &config.PluginConfiguration{Cluster: cluster, BarmanObjectName: "primary-store"}
|
||||||
|
res := corev1.ResourceRequirements{
|
||||||
|
Requests: corev1.ResourceList{corev1.ResourceMemory: resource.MustParse("64Mi")},
|
||||||
|
}
|
||||||
|
cli := buildClientFunc(makeStoreWithResourcesFunc(ns, pc.BarmanObjectName, res)).Build()
|
||||||
|
|
||||||
|
impl := LifecycleImplementation{Client: cli}
|
||||||
|
got, err := impl.collectSidecarResourcesForPod(ctx, pc)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
gotMem := got.Requests[corev1.ResourceMemory]
|
||||||
|
Expect(gotMem.String()).To(Equal("64Mi"))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("uses the recovery object store resources when only recovery is set", func(ctx SpecContext) {
|
||||||
|
ns := "test-ns"
|
||||||
|
cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}}
|
||||||
|
pc := &config.PluginConfiguration{Cluster: cluster, RecoveryBarmanObjectName: "recovery-store"}
|
||||||
|
res := corev1.ResourceRequirements{
|
||||||
|
Requests: corev1.ResourceList{corev1.ResourceMemory: resource.MustParse("128Mi")},
|
||||||
|
}
|
||||||
|
cli := buildClientFunc(makeStoreWithResourcesFunc(ns, pc.RecoveryBarmanObjectName, res)).Build()
|
||||||
|
|
||||||
|
impl := LifecycleImplementation{Client: cli}
|
||||||
|
got, err := impl.collectSidecarResourcesForPod(ctx, pc)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
gotMem := got.Requests[corev1.ResourceMemory]
|
||||||
|
Expect(gotMem.String()).To(Equal("128Mi"))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("uses the replica source object store resources when only replica source is set", func(ctx SpecContext) {
|
||||||
|
ns := "test-ns"
|
||||||
|
cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}}
|
||||||
|
pc := &config.PluginConfiguration{Cluster: cluster, ReplicaSourceBarmanObjectName: "replica-source-store"}
|
||||||
|
res := corev1.ResourceRequirements{
|
||||||
|
Requests: corev1.ResourceList{corev1.ResourceMemory: resource.MustParse("256Mi")},
|
||||||
|
}
|
||||||
|
cli := buildClientFunc(makeStoreWithResourcesFunc(ns, pc.ReplicaSourceBarmanObjectName, res)).Build()
|
||||||
|
|
||||||
|
impl := LifecycleImplementation{Client: cli}
|
||||||
|
got, err := impl.collectSidecarResourcesForPod(ctx, pc)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
gotMem := got.Requests[corev1.ResourceMemory]
|
||||||
|
Expect(gotMem.String()).To(Equal("256Mi"))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("returns empty resources when no object store is configured", func(ctx SpecContext) {
|
||||||
|
ns := "test-ns"
|
||||||
|
cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}}
|
||||||
|
pc := &config.PluginConfiguration{Cluster: cluster}
|
||||||
|
cli := buildClientFunc().Build()
|
||||||
|
|
||||||
|
impl := LifecycleImplementation{Client: cli}
|
||||||
|
got, err := impl.collectSidecarResourcesForPod(ctx, pc)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(got).To(Equal(corev1.ResourceRequirements{}))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("returns an error if the replica source object store cannot be retrieved", func(ctx SpecContext) {
|
||||||
|
ns := "test-ns"
|
||||||
|
cluster := &cnpgv1.Cluster{ObjectMeta: metav1.ObjectMeta{Name: "c", Namespace: ns}}
|
||||||
|
pc := &config.PluginConfiguration{Cluster: cluster, ReplicaSourceBarmanObjectName: "missing-store"}
|
||||||
|
cli := buildClientFunc().Build()
|
||||||
|
|
||||||
|
impl := LifecycleImplementation{Client: cli}
|
||||||
|
_, err := impl.collectSidecarResourcesForPod(ctx, pc)
|
||||||
|
Expect(err).To(HaveOccurred())
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
414
web/yarn.lock
414
web/yarn.lock
@ -2,15 +2,15 @@
|
|||||||
# yarn lockfile v1
|
# yarn lockfile v1
|
||||||
|
|
||||||
|
|
||||||
"@algolia/abtesting@1.20.0":
|
"@algolia/abtesting@1.21.0":
|
||||||
version "1.20.0"
|
version "1.21.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.20.0.tgz#0cbfa218156c1f522d49f2818c31447d356a1f19"
|
resolved "https://registry.yarnpkg.com/@algolia/abtesting/-/abtesting-1.21.0.tgz#a156291a4b3f19516f79dc8c163a8f5a38b5e8ae"
|
||||||
integrity sha512-5CqkS592H3+24b6H6CQ2RVpphdmAuIElZzv0Hngqo/ZEZpUZJ+KGLcueBhx33fv2wYBXyuuvskG5aQ7Ti+lR0g==
|
integrity sha512-kGvHfBa9oQCvZh0YXeguSToBD9GNJ+gzUZQ9KPTg+KSsM36obYcsKPoX0NnlJtPflHXu7RkMaIi44xs9meR6Zw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
"@algolia/requester-browser-xhr" "5.54.0"
|
"@algolia/requester-browser-xhr" "5.55.0"
|
||||||
"@algolia/requester-fetch" "5.54.0"
|
"@algolia/requester-fetch" "5.55.0"
|
||||||
"@algolia/requester-node-http" "5.54.0"
|
"@algolia/requester-node-http" "5.55.0"
|
||||||
|
|
||||||
"@algolia/autocomplete-core@1.19.2":
|
"@algolia/autocomplete-core@1.19.2":
|
||||||
version "1.19.2"
|
version "1.19.2"
|
||||||
@ -52,126 +52,126 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz#5d723d8bdb448efbb1b0e1c7ff94cc18e5b1dc0e"
|
resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz#5d723d8bdb448efbb1b0e1c7ff94cc18e5b1dc0e"
|
||||||
integrity sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ==
|
integrity sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ==
|
||||||
|
|
||||||
"@algolia/client-abtesting@5.54.0":
|
"@algolia/client-abtesting@5.55.0":
|
||||||
version "5.54.0"
|
version "5.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.54.0.tgz#d8e0f66dd4d33c38dd3536b9f309cf6bfa5da97e"
|
resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.55.0.tgz#8bcfc18f7796790ec68ece4cc4a5a6b26b80ff1e"
|
||||||
integrity sha512-IXnH1x3DBsPQA4/FRO0Pvkfy79tKy5Qr+ugAV9jdcGkpzHc476D0WV1MFJ+pZxtbts0xh2JqzUVmYEqA6LkOpA==
|
integrity sha512-Zt2GjIm7vsaf7K23tk5JmtcVNc38G9p0C2L2Lrm06miyLE/NL2etHtHInvuLc1DjxTp7Y2nId4X/tzwo372K8Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
"@algolia/requester-browser-xhr" "5.54.0"
|
"@algolia/requester-browser-xhr" "5.55.0"
|
||||||
"@algolia/requester-fetch" "5.54.0"
|
"@algolia/requester-fetch" "5.55.0"
|
||||||
"@algolia/requester-node-http" "5.54.0"
|
"@algolia/requester-node-http" "5.55.0"
|
||||||
|
|
||||||
"@algolia/client-analytics@5.54.0":
|
"@algolia/client-analytics@5.55.0":
|
||||||
version "5.54.0"
|
version "5.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.54.0.tgz#9da08afc41c17a683362a65e39df694186e16b79"
|
resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.55.0.tgz#895c0460b52d304cf5db2df8d0f78861d9a87dca"
|
||||||
integrity sha512-pBpRqm1wpE0GnGy2rNLk9rjDn0Le4iywNRtnAWblLeqfjxpWKg8lWnk7nmSoTShFO31sz2jatXXzxK2lz8ipbA==
|
integrity sha512-7BueMuWYg/KBA2EX9zsQ+3OAleEyrJcB+SV5Al/9pLjMQq5mXB/8M5HaUPqZwN812g5kLzj9j43VThlZgWq0hg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
"@algolia/requester-browser-xhr" "5.54.0"
|
"@algolia/requester-browser-xhr" "5.55.0"
|
||||||
"@algolia/requester-fetch" "5.54.0"
|
"@algolia/requester-fetch" "5.55.0"
|
||||||
"@algolia/requester-node-http" "5.54.0"
|
"@algolia/requester-node-http" "5.55.0"
|
||||||
|
|
||||||
"@algolia/client-common@5.54.0":
|
"@algolia/client-common@5.55.0":
|
||||||
version "5.54.0"
|
version "5.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.54.0.tgz#c9afb4677dc401d1e0fad6fc5c6c07ce5ef1fe0c"
|
resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.55.0.tgz#5b4e1cea958da4ad0c91bc4d7858ea87998eb5bf"
|
||||||
integrity sha512-WbuwRUlFvSOsuxqTDjSSmgusuF5KFt+oFPzobvPDvodra6EWnVwUXjz0elkNSsnsIlZGtcXlX3LhxkO7rF90jw==
|
integrity sha512-pJZIyhvUrs+B7c5Lw0iP5yP/NsqJMda7pKRYbfG4KtfGIVSMcAalZhdqL5UX8Z9DOC4KxO9tKV5RDeVjZU0VfQ==
|
||||||
|
|
||||||
"@algolia/client-insights@5.54.0":
|
"@algolia/client-insights@5.55.0":
|
||||||
version "5.54.0"
|
version "5.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.54.0.tgz#191f0086ad96e78cb2807cab293a3374e77e9123"
|
resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.55.0.tgz#20a1c3cd34c44a5b7cf3f5734096b2bcb5fb877d"
|
||||||
integrity sha512-/HNLVi3kPI+JhO59WbglLjPM2c4uECU+x4gk1iADseKtE5eYqJ/RJ+FIwM8xzPFKhFJaw+8hVq4lkd0nn8HDDg==
|
integrity sha512-RydkKDhx0GWTYuw0ndTXHGM8hD8hgwftKE65FfnJZb5bPc9CevOqv3qNPUQiviAwkqT9hQNH31uDGeV3yZkgfA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
"@algolia/requester-browser-xhr" "5.54.0"
|
"@algolia/requester-browser-xhr" "5.55.0"
|
||||||
"@algolia/requester-fetch" "5.54.0"
|
"@algolia/requester-fetch" "5.55.0"
|
||||||
"@algolia/requester-node-http" "5.54.0"
|
"@algolia/requester-node-http" "5.55.0"
|
||||||
|
|
||||||
"@algolia/client-personalization@5.54.0":
|
"@algolia/client-personalization@5.55.0":
|
||||||
version "5.54.0"
|
version "5.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.54.0.tgz#92611c484655d8da5dc42d80c08e89636558c1c2"
|
resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.55.0.tgz#041ec1f2a43bb24860805d236afb9d06e2220fc1"
|
||||||
integrity sha512-6TolyyDRumIKeLGBGSFAZsSIJ8hrm6NFCGR1jO7pQTiOtSWgAIxcFE5/JRpZ3g+unG4OkNOFy+I0dUEquIDbig==
|
integrity sha512-XiS7gdFq/COWiwdWXZ8+RHuewfEo03TkGESk44zU8zTc/Z6R8fm4DNmV52swJKkeB2N9iC7NKpgpM22OOkcgTw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
"@algolia/requester-browser-xhr" "5.54.0"
|
"@algolia/requester-browser-xhr" "5.55.0"
|
||||||
"@algolia/requester-fetch" "5.54.0"
|
"@algolia/requester-fetch" "5.55.0"
|
||||||
"@algolia/requester-node-http" "5.54.0"
|
"@algolia/requester-node-http" "5.55.0"
|
||||||
|
|
||||||
"@algolia/client-query-suggestions@5.54.0":
|
"@algolia/client-query-suggestions@5.55.0":
|
||||||
version "5.54.0"
|
version "5.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.54.0.tgz#f0870521076609f0dd57432b82bef19a7d036a43"
|
resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.55.0.tgz#94c57fbf92233f60bdade9a8a53a1976c031cb58"
|
||||||
integrity sha512-AxW2MLBhjBtGX5kIZrVLO2SP2vRkZxJw5qHGxnQJfLcYhA04mFNP0fWRtHshlcVnDk9M8L9lwfr2lGpf3Er+hw==
|
integrity sha512-LBEJ/q+hn1nJ0aYg5IcWgLNCPjWHTahWmpHNx1qUZMho+9CyWM6LaEnhac45UHjQm/j0m374HP685VrpL133lA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
"@algolia/requester-browser-xhr" "5.54.0"
|
"@algolia/requester-browser-xhr" "5.55.0"
|
||||||
"@algolia/requester-fetch" "5.54.0"
|
"@algolia/requester-fetch" "5.55.0"
|
||||||
"@algolia/requester-node-http" "5.54.0"
|
"@algolia/requester-node-http" "5.55.0"
|
||||||
|
|
||||||
"@algolia/client-search@5.54.0":
|
"@algolia/client-search@5.55.0":
|
||||||
version "5.54.0"
|
version "5.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.54.0.tgz#ec49bbb4592e93a971af23f119e0244a123afc5d"
|
resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.55.0.tgz#eace5977fa8a6ff3d1170ec387a363184d2165b0"
|
||||||
integrity sha512-ngdgVGp05lJzUyA+sUzr0MDZ7AMtANcJpwIzq4ZsfpZL5B3S7A4XYfMcU2sECZc3bx3ysOhYcdbbaTjc3ve0WQ==
|
integrity sha512-2/9jUXKH4IcdU5qxH6cbDH46ZBe46G7xr+MrcHwgEXZcUfdAvUgLSH53MAWuMgxvw0G5yoqiWMifHc62Os0fiQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
"@algolia/requester-browser-xhr" "5.54.0"
|
"@algolia/requester-browser-xhr" "5.55.0"
|
||||||
"@algolia/requester-fetch" "5.54.0"
|
"@algolia/requester-fetch" "5.55.0"
|
||||||
"@algolia/requester-node-http" "5.54.0"
|
"@algolia/requester-node-http" "5.55.0"
|
||||||
|
|
||||||
"@algolia/events@^4.0.1":
|
"@algolia/events@^4.0.1":
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950"
|
resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950"
|
||||||
integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==
|
integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==
|
||||||
|
|
||||||
"@algolia/ingestion@1.54.0":
|
"@algolia/ingestion@1.55.0":
|
||||||
version "1.54.0"
|
version "1.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.54.0.tgz#2fd01d4f4c4dbc90a987325302fc997c2beabb48"
|
resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.55.0.tgz#ad2ba098363d8d3849991f0d5e50a65bd091a193"
|
||||||
integrity sha512-hee59Z7FgZ6/13FYL05ANPwRJY1pfvIlrwC8eBZYdiRFXTJVvf94IyTWOxLqRVpbseDP6eQQTW+PT7/DxTZIng==
|
integrity sha512-80tKsQgxXWo+jK0v4YGCHqyTEXawhAKYyr3kOdN51ElfRqUFjZNPVhZk6vRiqSqXfvrH85ytacT3cbJR6+qolA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
"@algolia/requester-browser-xhr" "5.54.0"
|
"@algolia/requester-browser-xhr" "5.55.0"
|
||||||
"@algolia/requester-fetch" "5.54.0"
|
"@algolia/requester-fetch" "5.55.0"
|
||||||
"@algolia/requester-node-http" "5.54.0"
|
"@algolia/requester-node-http" "5.55.0"
|
||||||
|
|
||||||
"@algolia/monitoring@1.54.0":
|
"@algolia/monitoring@1.55.0":
|
||||||
version "1.54.0"
|
version "1.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.54.0.tgz#05e6019095cb8eb3ef43c9328992ad90a33c9a92"
|
resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.55.0.tgz#4a4935c61b11c4e0319569e355c585d4c1ed3262"
|
||||||
integrity sha512-diCjZVbIO7Pzw98tEKqLWIAgmQBI3Zt1sHsXyAPNGZgn32derpIXTnjjpJbZl+uAhSSznd6SfxFGdC9uYdN1TA==
|
integrity sha512-4UjmAL8ywGW4rCfK6Qmgw3wIjbrO2wl2s4Eq56JTiN40L2t0XTv0HZkYAmr6nfeiXO0he/2crvZRX6SATSepag==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
"@algolia/requester-browser-xhr" "5.54.0"
|
"@algolia/requester-browser-xhr" "5.55.0"
|
||||||
"@algolia/requester-fetch" "5.54.0"
|
"@algolia/requester-fetch" "5.55.0"
|
||||||
"@algolia/requester-node-http" "5.54.0"
|
"@algolia/requester-node-http" "5.55.0"
|
||||||
|
|
||||||
"@algolia/recommend@5.54.0":
|
"@algolia/recommend@5.55.0":
|
||||||
version "5.54.0"
|
version "5.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.54.0.tgz#5320031101788363852e5c74bd36b74a3efea1d6"
|
resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.55.0.tgz#d89fbb2148731dafcb7f458cd334dc18465bb9ed"
|
||||||
integrity sha512-6zeslypRAGWDgVJEJYAPuqmyquHvnw4MQwG+XXdrw5dTNDjXYIcCJdQQcCY06xPF9tUvmzy/1vHiH9QxhgwuOQ==
|
integrity sha512-LMpJPtIkfDsHIx5Ga+baNr22ntYbY+e2wT7MSIc/FjAnu9wnBFhx1H/GfhmP/c5/IvbThDX+3ilxPRjSfCI8aA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
"@algolia/requester-browser-xhr" "5.54.0"
|
"@algolia/requester-browser-xhr" "5.55.0"
|
||||||
"@algolia/requester-fetch" "5.54.0"
|
"@algolia/requester-fetch" "5.55.0"
|
||||||
"@algolia/requester-node-http" "5.54.0"
|
"@algolia/requester-node-http" "5.55.0"
|
||||||
|
|
||||||
"@algolia/requester-browser-xhr@5.54.0":
|
"@algolia/requester-browser-xhr@5.55.0":
|
||||||
version "5.54.0"
|
version "5.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.54.0.tgz#90326acee59cf7eb002f3c959932f0f565e01e4b"
|
resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.55.0.tgz#5b05c8a993b1c8052ec656005a1989515bcdb2ea"
|
||||||
integrity sha512-iHZax214LPXd7XizQ4BNnTsegl8f3IeKm8JcrmSNZ/5x1rZ5xLkbG/anltAWtLpoRNnfpr4Z80YdYeVVPpx6wQ==
|
integrity sha512-tDymJ7nFOAoUuecma3usK6o94dp8m4HYFDGh4ByYQXWkv14cpmDn+nWdylmcZO0Qvco107vqDo4+Anksnl8w1Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
|
|
||||||
"@algolia/requester-fetch@5.54.0":
|
"@algolia/requester-fetch@5.55.0":
|
||||||
version "5.54.0"
|
version "5.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.54.0.tgz#cb08734a88394d8c5c80973f33cfb076557c1c68"
|
resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.55.0.tgz#4b9aefcc31debd8c58429dab70a95d49b923eeea"
|
||||||
integrity sha512-YKtuG5YwPxZ+kkfd4HmUO7Z9aICPUSMlHslzKTmtMMhxGnetxEqGj9T/v2r/PdcuOUC5oW0CHe8akJk8cpS3gQ==
|
integrity sha512-6IDSB5o5dkDPQ4LdOW0Yuw/qy5MdWlO2xDHgPVZgW4YDjbxvnX5PAiV7/WWZdWyVObScZZnnHpPbiqfYs/zBLg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
|
|
||||||
"@algolia/requester-node-http@5.54.0":
|
"@algolia/requester-node-http@5.55.0":
|
||||||
version "5.54.0"
|
version "5.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.54.0.tgz#2d32cc6cfa5972653e6b3cb942c804d38d2a83ac"
|
resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.55.0.tgz#d62bf8a3b4f053e1b0df3f0e409b4aca330ac4fc"
|
||||||
integrity sha512-zyZDJ4WS5TnjZZ5pqywTBFO9olW7QMtY2kf2dbLnu+UTzfc9ri/HGf27jRN2NTbX9FcRPxSqPqzUhF/BZIx0VA==
|
integrity sha512-Yyyne4l//vDSdg4MhYJkaVne+KEPi833eCj3/T/87ernTwrvP6j9biXXZELsN8sLI/f2ndV/vugDIy2jdJQB6g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
|
|
||||||
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.29.7":
|
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.29.7":
|
||||||
version "7.29.7"
|
version "7.29.7"
|
||||||
@ -2132,74 +2132,74 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207"
|
resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207"
|
||||||
integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==
|
integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==
|
||||||
|
|
||||||
"@jsonjoy.com/fs-core@4.57.7":
|
"@jsonjoy.com/fs-core@4.57.8":
|
||||||
version "4.57.7"
|
version "4.57.8"
|
||||||
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.7.tgz#5d4bfbc95147407c8265d4bb67605c0c18c762a1"
|
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.57.8.tgz#3e399ca856968194b0be73aa4b6fc943bf313bb8"
|
||||||
integrity sha512-GDKuYHjP7vAI1kjBo73V+STKr9XIMZknW/xirpRW/EcShX0IKSev/ALafeRfC8Q331nodrXUFu04PugPB0MAhw==
|
integrity sha512-YzVbwggV9452VCeHgo0bjsTaUt1O7JE0XpEsPar93nn/+RAwXk0mb1Y+f5EDJ3TRtRCFe+Ck5RuojdfB4jeHVw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jsonjoy.com/fs-node-builtins" "4.57.7"
|
"@jsonjoy.com/fs-node-builtins" "4.57.8"
|
||||||
"@jsonjoy.com/fs-node-utils" "4.57.7"
|
"@jsonjoy.com/fs-node-utils" "4.57.8"
|
||||||
thingies "^2.5.0"
|
thingies "^2.5.0"
|
||||||
|
|
||||||
"@jsonjoy.com/fs-fsa@4.57.7":
|
"@jsonjoy.com/fs-fsa@4.57.8":
|
||||||
version "4.57.7"
|
version "4.57.8"
|
||||||
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.7.tgz#2c09a99ea9af292af7447c9eb78537763bf85433"
|
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.8.tgz#26a1688ff5c8d1189d32e76bfe2364e0763b6737"
|
||||||
integrity sha512-1rWsah2nZtRbNeP+c61QcfGfVrJXBmBD0Hm7Akvv4C9MKEasXnbiOS//iH3T3HwUSSBATGrfSp0Xi8nlNhATeQ==
|
integrity sha512-vmClyvCQMxgqz7uamDiGtRfp4MjzOznk3pcQjCxlIwJcw7TWeyr+bF30hI0x8NxdtNOGMg1pHM74VDIXOeyjuw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jsonjoy.com/fs-core" "4.57.7"
|
"@jsonjoy.com/fs-core" "4.57.8"
|
||||||
"@jsonjoy.com/fs-node-builtins" "4.57.7"
|
"@jsonjoy.com/fs-node-builtins" "4.57.8"
|
||||||
"@jsonjoy.com/fs-node-utils" "4.57.7"
|
"@jsonjoy.com/fs-node-utils" "4.57.8"
|
||||||
thingies "^2.5.0"
|
thingies "^2.5.0"
|
||||||
|
|
||||||
"@jsonjoy.com/fs-node-builtins@4.57.7":
|
"@jsonjoy.com/fs-node-builtins@4.57.8":
|
||||||
version "4.57.7"
|
version "4.57.8"
|
||||||
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.7.tgz#cc0fd121f58705878ce9b3f372fc00bd7d897ce3"
|
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.8.tgz#ba350bf262571e38d3c195f5346eddec07c1d053"
|
||||||
integrity sha512-LWqfY1m+uAosjwM1RrKhMkUnP9jcq1RUczHsNO779ovm1E9v8I/pmj04eBAcoBjhC7ltcPbNFGyRJ5JqSJ7Jdg==
|
integrity sha512-mxXSXw8zZwRVakcjLqR2I/psy4gURFSASZS10kKJ2kJw05GC2nXGroGrWVHxwgkxXgQLsFQnB74QaLzsxzdL/w==
|
||||||
|
|
||||||
"@jsonjoy.com/fs-node-to-fsa@4.57.7":
|
"@jsonjoy.com/fs-node-to-fsa@4.57.8":
|
||||||
version "4.57.7"
|
version "4.57.8"
|
||||||
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.7.tgz#2c4b1807bd1a7be599536d47fedf802706b6b366"
|
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.8.tgz#4372e75e7a6a76b4d8ac91dc2d93edfa8587599f"
|
||||||
integrity sha512-9T0zC9LKcAWXDoTLRdLMoJ0seOvJ5bgDKq1tSBoQAFQpPDstQUeV1Oe7PLypdu7F2D3ddRstmwgeNUEN/VaZ4Q==
|
integrity sha512-AWZcT/4+H+iDl4XCukbXrarvwEgOrf/prFI5/7eg4ix9FxqVsZysIDJd1Kjd+AjlCeHKHJOaRqjLd5HiGSCJEw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jsonjoy.com/fs-fsa" "4.57.7"
|
"@jsonjoy.com/fs-fsa" "4.57.8"
|
||||||
"@jsonjoy.com/fs-node-builtins" "4.57.7"
|
"@jsonjoy.com/fs-node-builtins" "4.57.8"
|
||||||
"@jsonjoy.com/fs-node-utils" "4.57.7"
|
"@jsonjoy.com/fs-node-utils" "4.57.8"
|
||||||
|
|
||||||
"@jsonjoy.com/fs-node-utils@4.57.7":
|
"@jsonjoy.com/fs-node-utils@4.57.8":
|
||||||
version "4.57.7"
|
version "4.57.8"
|
||||||
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.7.tgz#51308c4bdfc717ccbb155759fe7df9c91afec099"
|
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.8.tgz#a1a15d587fff235b616d5ea775e0f9a88f387a56"
|
||||||
integrity sha512-jjWSDOsfcog2cZnUCwX5AHmlIq6b6wx5Pz/2LAcNjJ62Rajwg89Fy7ubN+lDHew0/1reLDa9Z5urybYadhh37g==
|
integrity sha512-E/bJ7sQAb4pu9nbeJhbULU3WnqWrswte4N9Js/oHt7aHB746S8/XBqKlcbrqIgnD3095XluovNEZuu5ONT230g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jsonjoy.com/fs-node-builtins" "4.57.7"
|
"@jsonjoy.com/fs-node-builtins" "4.57.8"
|
||||||
|
|
||||||
"@jsonjoy.com/fs-node@4.57.7":
|
"@jsonjoy.com/fs-node@4.57.8":
|
||||||
version "4.57.7"
|
version "4.57.8"
|
||||||
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.7.tgz#3d62f93af1ccdffd39d439154f36155d7e3eb5c6"
|
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.57.8.tgz#d16b418d2179f7092f9fe5daeb18d31a5835a19b"
|
||||||
integrity sha512-xhnyeyEVTiIOibFvda/5n89nChMLCPKHHM2WQ+GGDf6+U/IrQBW3Qx6x+Uq1bkDbxBkybLOdIGoBtVBrE8Nngg==
|
integrity sha512-IPEOlDYSnTDYpjQlQg2F8h+eqxKQN3sdbroI0WrteRiQZ462HzVpBo9ZZX485njz4nAacoe3fd4iDiIhk+k5Hg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jsonjoy.com/fs-core" "4.57.7"
|
"@jsonjoy.com/fs-core" "4.57.8"
|
||||||
"@jsonjoy.com/fs-node-builtins" "4.57.7"
|
"@jsonjoy.com/fs-node-builtins" "4.57.8"
|
||||||
"@jsonjoy.com/fs-node-utils" "4.57.7"
|
"@jsonjoy.com/fs-node-utils" "4.57.8"
|
||||||
"@jsonjoy.com/fs-print" "4.57.7"
|
"@jsonjoy.com/fs-print" "4.57.8"
|
||||||
"@jsonjoy.com/fs-snapshot" "4.57.7"
|
"@jsonjoy.com/fs-snapshot" "4.57.8"
|
||||||
glob-to-regex.js "^1.0.0"
|
glob-to-regex.js "^1.0.0"
|
||||||
thingies "^2.5.0"
|
thingies "^2.5.0"
|
||||||
|
|
||||||
"@jsonjoy.com/fs-print@4.57.7":
|
"@jsonjoy.com/fs-print@4.57.8":
|
||||||
version "4.57.7"
|
version "4.57.8"
|
||||||
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.7.tgz#aec8e3f5d66cd64e90e1fc9913a5fa4811d824b1"
|
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.57.8.tgz#5ff6b2e0dd3f85aa7563f66cd36b4de1f0ce89a3"
|
||||||
integrity sha512-mFM4P4Gjq0QQHkLnXzPYPEMFrAoe6a5Myedgb6+CmL+nGd3MKvTxYPuD7N1dLIH9RBy1fLdzxd80qvuK8xrx3Q==
|
integrity sha512-DfzhOBpmvNu5P/KSe4NNQaOnvNliTdcf0qrh/4EReErF/XUQXYkd0vZl/OiJCm/qjEEo8DWRstliw2/JNS84dA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jsonjoy.com/fs-node-utils" "4.57.7"
|
"@jsonjoy.com/fs-node-utils" "4.57.8"
|
||||||
tree-dump "^1.1.0"
|
tree-dump "^1.1.0"
|
||||||
|
|
||||||
"@jsonjoy.com/fs-snapshot@4.57.7":
|
"@jsonjoy.com/fs-snapshot@4.57.8":
|
||||||
version "4.57.7"
|
version "4.57.8"
|
||||||
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.7.tgz#370cf405bac358a4ff426d848b733df9ec5149d2"
|
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.8.tgz#65b317f7698816c7196dbebc73e9d43e06f143be"
|
||||||
integrity sha512-1GS3+plfm2giB3PqokiqyydyqYTPLcCQIKSkp0TdMNRh3KVk7rqRM6U785FLlVRG7XLmkc0KWr215OY+22K3QA==
|
integrity sha512-L+eqKaWOHLDaiMv1dh/EWQ4hA+o6xAhWSumTo3Teg7OM18jU/KE13/e8Mfal+eAZ/pSl4wIhKHcDiwapJzC8Wg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jsonjoy.com/buffers" "^17.65.0"
|
"@jsonjoy.com/buffers" "^17.65.0"
|
||||||
"@jsonjoy.com/fs-node-utils" "4.57.7"
|
"@jsonjoy.com/fs-node-utils" "4.57.8"
|
||||||
"@jsonjoy.com/json-pack" "^17.65.0"
|
"@jsonjoy.com/json-pack" "^17.65.0"
|
||||||
"@jsonjoy.com/util" "^17.65.0"
|
"@jsonjoy.com/util" "^17.65.0"
|
||||||
|
|
||||||
@ -2923,11 +2923,11 @@
|
|||||||
integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==
|
integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "25.9.3"
|
version "26.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-25.9.3.tgz#11dfe7a33e68fa5c560f0aa76cc5595621ef26b9"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-26.0.0.tgz#d4aece9e9412e9f2008d59bc2d74f5279316b665"
|
||||||
integrity sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==
|
integrity sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types ">=7.24.0 <7.24.7"
|
undici-types "~8.3.0"
|
||||||
|
|
||||||
"@types/node@^17.0.5":
|
"@types/node@^17.0.5":
|
||||||
version "17.0.45"
|
version "17.0.45"
|
||||||
@ -3295,24 +3295,24 @@ algoliasearch-helper@^3.26.0:
|
|||||||
"@algolia/events" "^4.0.1"
|
"@algolia/events" "^4.0.1"
|
||||||
|
|
||||||
algoliasearch@^5.37.0:
|
algoliasearch@^5.37.0:
|
||||||
version "5.54.0"
|
version "5.55.0"
|
||||||
resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.54.0.tgz#49a65f246f85cf351c22fdff294a41c2afa44a80"
|
resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.55.0.tgz#ed56f8f10ad42e056761b1200b867ada2f5c5db4"
|
||||||
integrity sha512-APAX4ajIOgsmYoUlGe++oNZkSTBgmXYM4maHC0OxC+Yo7xkaKQElV0ATZYCZA7jzrSJX1OBiqEs7mk+ZxXgYqA==
|
integrity sha512-af+rI+tUVeS9KWHPAZQHIHPOIC3StPRR6IwQu2nz1aQoTL6Gs5Ty3KsHCgbXMHOpoh9QqSjq8F3KJ8xmaCZSBA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/abtesting" "1.20.0"
|
"@algolia/abtesting" "1.21.0"
|
||||||
"@algolia/client-abtesting" "5.54.0"
|
"@algolia/client-abtesting" "5.55.0"
|
||||||
"@algolia/client-analytics" "5.54.0"
|
"@algolia/client-analytics" "5.55.0"
|
||||||
"@algolia/client-common" "5.54.0"
|
"@algolia/client-common" "5.55.0"
|
||||||
"@algolia/client-insights" "5.54.0"
|
"@algolia/client-insights" "5.55.0"
|
||||||
"@algolia/client-personalization" "5.54.0"
|
"@algolia/client-personalization" "5.55.0"
|
||||||
"@algolia/client-query-suggestions" "5.54.0"
|
"@algolia/client-query-suggestions" "5.55.0"
|
||||||
"@algolia/client-search" "5.54.0"
|
"@algolia/client-search" "5.55.0"
|
||||||
"@algolia/ingestion" "1.54.0"
|
"@algolia/ingestion" "1.55.0"
|
||||||
"@algolia/monitoring" "1.54.0"
|
"@algolia/monitoring" "1.55.0"
|
||||||
"@algolia/recommend" "5.54.0"
|
"@algolia/recommend" "5.55.0"
|
||||||
"@algolia/requester-browser-xhr" "5.54.0"
|
"@algolia/requester-browser-xhr" "5.55.0"
|
||||||
"@algolia/requester-fetch" "5.54.0"
|
"@algolia/requester-fetch" "5.55.0"
|
||||||
"@algolia/requester-node-http" "5.54.0"
|
"@algolia/requester-node-http" "5.55.0"
|
||||||
|
|
||||||
ansi-align@^3.0.1:
|
ansi-align@^3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
@ -3471,9 +3471,9 @@ balanced-match@^1.0.0:
|
|||||||
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||||
|
|
||||||
baseline-browser-mapping@^2.10.12:
|
baseline-browser-mapping@^2.10.12:
|
||||||
version "2.10.37"
|
version "2.10.38"
|
||||||
resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.37.tgz#3e636475b6b293244e2b23e2c71a2ab9d9e6ba7d"
|
resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.38.tgz#c84d093c4bf7325c5053c279d90f153c66526042"
|
||||||
integrity sha512-girxaJ7WZssDOFhzCGZTDKoTa1gk6A1TbflaYTpykLJ4UU9Fz9kx1aREM8JCuoVHbL8X8T/mJg7w2oYSq72Oig==
|
integrity sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw==
|
||||||
|
|
||||||
batch@0.6.1:
|
batch@0.6.1:
|
||||||
version "0.6.1"
|
version "0.6.1"
|
||||||
@ -4476,9 +4476,9 @@ ee-first@1.1.1:
|
|||||||
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
|
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
|
||||||
|
|
||||||
electron-to-chromium@^1.5.328:
|
electron-to-chromium@^1.5.328:
|
||||||
version "1.5.372"
|
version "1.5.376"
|
||||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.372.tgz#ae8ac69942a37b231773b8fb01759f73733599e3"
|
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.376.tgz#16a9d4b72cb16c416aa73a879d92b047b96797ac"
|
||||||
integrity sha512-M3yhbAlilnwqC8D21t28UCDGHyitShTmmLRU/H+b74P6Ski16Nb9HONYEaVpMj/pwC7BEo5B95FpjODLCWbtfA==
|
integrity sha512-cUVA7/RvbFTEuw/i3obUwDTRIXojaxkResf+ibByPFxjc6XK3VNtcQXV0NSbAlJ0FMjcJGgftVVB4Qo184EXvA==
|
||||||
|
|
||||||
emoji-regex@^8.0.0:
|
emoji-regex@^8.0.0:
|
||||||
version "8.0.0"
|
version "8.0.0"
|
||||||
@ -5418,9 +5418,9 @@ http-parser-js@>=0.5.1:
|
|||||||
integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==
|
integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==
|
||||||
|
|
||||||
http-proxy-middleware@^2.0.9:
|
http-proxy-middleware@^2.0.9:
|
||||||
version "2.0.9"
|
version "2.0.10"
|
||||||
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef"
|
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.10.tgz#b2df7b705203d7a8c269ac8450cf96b00c532f94"
|
||||||
integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==
|
integrity sha512-RKzRWNPxUZqbuk3BC5mGVJbBnWgr+diEnjJexIOytFbBzDy88Fbh/YvBr3DsNrl1jYAfjWfpATEv0NO35FDuPQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/http-proxy" "^1.17.8"
|
"@types/http-proxy" "^1.17.8"
|
||||||
http-proxy "^1.18.1"
|
http-proxy "^1.18.1"
|
||||||
@ -6247,18 +6247,18 @@ media-typer@0.3.0:
|
|||||||
integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
|
integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
|
||||||
|
|
||||||
memfs@^4.43.1:
|
memfs@^4.43.1:
|
||||||
version "4.57.7"
|
version "4.57.8"
|
||||||
resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.7.tgz#bad8bc1680d8b5349da6575b095779956f6b89b0"
|
resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.57.8.tgz#b9c1995040307c60a1503e65a3e5902ad3927628"
|
||||||
integrity sha512-YZPphUQZSRGk6ddPlsNuMbztrLwsbUATFNZcqKscSbSJZ4g0+Y3vSZLJ/rfnGZaB1FFhC7SrywZXev6i8lnHgg==
|
integrity sha512-bApYhn8BLpFAnAQmFfEl/NPN+8qx5Ar3V4Qt3ek23mVwBEElzV7c6XoPkb/PCG8ZFpowCEpHcPwMFTwHS7tSMA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jsonjoy.com/fs-core" "4.57.7"
|
"@jsonjoy.com/fs-core" "4.57.8"
|
||||||
"@jsonjoy.com/fs-fsa" "4.57.7"
|
"@jsonjoy.com/fs-fsa" "4.57.8"
|
||||||
"@jsonjoy.com/fs-node" "4.57.7"
|
"@jsonjoy.com/fs-node" "4.57.8"
|
||||||
"@jsonjoy.com/fs-node-builtins" "4.57.7"
|
"@jsonjoy.com/fs-node-builtins" "4.57.8"
|
||||||
"@jsonjoy.com/fs-node-to-fsa" "4.57.7"
|
"@jsonjoy.com/fs-node-to-fsa" "4.57.8"
|
||||||
"@jsonjoy.com/fs-node-utils" "4.57.7"
|
"@jsonjoy.com/fs-node-utils" "4.57.8"
|
||||||
"@jsonjoy.com/fs-print" "4.57.7"
|
"@jsonjoy.com/fs-print" "4.57.8"
|
||||||
"@jsonjoy.com/fs-snapshot" "4.57.7"
|
"@jsonjoy.com/fs-snapshot" "4.57.8"
|
||||||
"@jsonjoy.com/json-pack" "^1.11.0"
|
"@jsonjoy.com/json-pack" "^1.11.0"
|
||||||
"@jsonjoy.com/util" "^1.9.0"
|
"@jsonjoy.com/util" "^1.9.0"
|
||||||
glob-to-regex.js "^1.0.1"
|
glob-to-regex.js "^1.0.1"
|
||||||
@ -6815,9 +6815,9 @@ multicast-dns@^7.2.5:
|
|||||||
thunky "^1.0.2"
|
thunky "^1.0.2"
|
||||||
|
|
||||||
nanoid@^3.3.12:
|
nanoid@^3.3.12:
|
||||||
version "3.3.12"
|
version "3.3.15"
|
||||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.12.tgz#ab3d912e217a6d0a514f00a72a16543a28982c05"
|
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.15.tgz#36c490fad8c6e86c824c940dfdde999b69ed4316"
|
||||||
integrity sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==
|
integrity sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==
|
||||||
|
|
||||||
negotiator@0.6.3:
|
negotiator@0.6.3:
|
||||||
version "0.6.3"
|
version "0.6.3"
|
||||||
@ -6853,9 +6853,9 @@ node-emoji@^2.1.0:
|
|||||||
skin-tone "^2.0.0"
|
skin-tone "^2.0.0"
|
||||||
|
|
||||||
node-releases@^2.0.36:
|
node-releases@^2.0.36:
|
||||||
version "2.0.47"
|
version "2.0.48"
|
||||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.47.tgz#521bb2786da8eb140b748841c0b3b3a75334ffc4"
|
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.48.tgz#4da73d040ada751fc9959d993f27de48792e3b7d"
|
||||||
integrity sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==
|
integrity sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA==
|
||||||
|
|
||||||
normalize-path@^3.0.0, normalize-path@~3.0.0:
|
normalize-path@^3.0.0, normalize-path@~3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
@ -8372,9 +8372,9 @@ semver@^6.3.1:
|
|||||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||||
|
|
||||||
semver@^7.3.5, semver@^7.3.7, semver@^7.5.4:
|
semver@^7.3.5, semver@^7.3.7, semver@^7.5.4:
|
||||||
version "7.8.4"
|
version "7.8.5"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.4.tgz#c73eceebae0616934be8dff28a7fd70757c8e696"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.5.tgz#39b646037dd50c14fb451e7e4cac58ed8b863f69"
|
||||||
integrity sha512-rUCObTnP32Q08R2uuIrt7r9PlEonuTmtuXYcW6s5kjdlj3xbnwe+21yXptAUYcMAABLkYYTtnmzb3w3EDZfueA==
|
integrity sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==
|
||||||
|
|
||||||
send@~0.19.0, send@~0.19.1:
|
send@~0.19.0, send@~0.19.1:
|
||||||
version "0.19.2"
|
version "0.19.2"
|
||||||
@ -8396,9 +8396,9 @@ send@~0.19.0, send@~0.19.1:
|
|||||||
statuses "~2.0.2"
|
statuses "~2.0.2"
|
||||||
|
|
||||||
serialize-javascript@>=7.0.5, serialize-javascript@^6.0.0, serialize-javascript@^6.0.1:
|
serialize-javascript@>=7.0.5, serialize-javascript@^6.0.0, serialize-javascript@^6.0.1:
|
||||||
version "7.0.5"
|
version "7.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.0.5.tgz#c798cc0552ffbb08981914a42a8756e339d0d5b1"
|
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.0.6.tgz#f2f20c8af0757e4d8fa329d0210636da0682ddef"
|
||||||
integrity sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==
|
integrity sha512-ATTK5Q4gFVg0YDp1my2vqygyvhcklD/UV5GIlYHooGTn/NogJqIzpetkD6E5kmuVULqz/S9inUL25XcAgDRJQg==
|
||||||
|
|
||||||
serve-handler@^6.1.7:
|
serve-handler@^6.1.7:
|
||||||
version "6.1.7"
|
version "6.1.7"
|
||||||
@ -8937,15 +8937,15 @@ typescript@~6.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-6.0.3.tgz#90251dc007916e972786cb94d74d15b185577d21"
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-6.0.3.tgz#90251dc007916e972786cb94d74d15b185577d21"
|
||||||
integrity sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==
|
integrity sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==
|
||||||
|
|
||||||
"undici-types@>=7.24.0 <7.24.7":
|
undici-types@~8.3.0:
|
||||||
version "7.24.6"
|
version "8.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.24.6.tgz#61275b485d7fd4e9d269c7cf04ec2873c9cc0f91"
|
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-8.3.0.tgz#44e9fc9f3244648cdea35e4f9bb2d681e9410809"
|
||||||
integrity sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==
|
integrity sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==
|
||||||
|
|
||||||
undici@^7.19.0:
|
undici@^7.19.0:
|
||||||
version "7.27.2"
|
version "7.28.0"
|
||||||
resolved "https://registry.yarnpkg.com/undici/-/undici-7.27.2.tgz#f8fae968ee68377cfc61713d9cd152773716804f"
|
resolved "https://registry.yarnpkg.com/undici/-/undici-7.28.0.tgz#97d64564198b285bc281f0e8e29597e3d11fe7ec"
|
||||||
integrity sha512-uZsKNuzQxDMUY6M3pIMvy5tvlGmtq8XJ2oLAkfRKGNu+1VQAIvLy2xIVG5ATZl5wDXl/tddByAWCizRbOme+TA==
|
integrity sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==
|
||||||
|
|
||||||
unicode-canonical-property-names-ecmascript@^2.0.0:
|
unicode-canonical-property-names-ecmascript@^2.0.0:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user