Compare commits

...

6 Commits

Author SHA1 Message Date
Ildar-fix
0f72ddba72
Merge 946c704bee into 3958ee4805 2026-09-01 16:29:41 +03:00
renovate[bot]
3958ee4805
chore(deps): lock file maintenance (#1089)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-01 09:46:28 +02:00
renovate[bot]
e7905b9da9
chore(deps): update dependency serialize-javascript to v7.1.1 (#1040)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-01 09:31:43 +02:00
Marco Nenciarini
cd71e7d5fd
docs(web): use active doc version for install manifest link (#1074)
The install snippet always linked to the manifest of the latest released
version, regardless of which versioned docs page it was rendered on.
Viewing the 0.13.0 installation page therefore pointed at the 0.14.0
manifest.

Build the manifest URL from the active doc version directly: each
versioned page links its own release tag, and the unreleased "current"
docs link the manifest built off `main` instead of a (nonexistent)
release tag.

---------

Signed-off-by: Marco Nenciarini <marco.nenciarini@enterprisedb.com>
Signed-off-by: Danish <danish.khan@enterprisedb.com>
Co-authored-by: Danish <danish.khan@enterprisedb.com>
2026-08-31 11:14:07 +02:00
Ildar Gilyazev
946c704bee feat: let a Cluster declare the object stores a Backup may request
The Role bound to the instance service account is built from the object
stores the Cluster refers to, so a Backup naming any other store fails
with a forbidden error on objectstores. The object store selection of a
Backup is therefore unusable on its own.

Add the additionalBarmanObjectNames parameter, a comma separated list of
stores that take part in the RBAC and in the certificates of the
instances while nothing is routed to them, so that a Backup can name one
of them.

Closes #611

Assisted-by: Claude Opus 5
Signed-off-by: Ildar Gilyazev <horiganmikle@gmail.com>
2026-08-26 10:32:38 +03:00
Ildar Gilyazev
ec238c4d42 fix: honour the object store requested by a Backup resource
The operator relays the parameters of a Backup resource to the plugin in
the BackupRequest, but the plugin builds its configuration from the
Cluster alone. A Backup asking for a different object store is therefore
written to the cluster one, and it completes without any warning, so the
mistake surfaces only when the archive turns out to be empty.

Apply the parameters of the Backup on top of the configuration derived
from the Cluster, so that barmanObjectName and serverName select the
destination of that single backup.

Closes #611

Assisted-by: Claude Opus 5
Signed-off-by: Ildar Gilyazev <horiganmikle@gmail.com>
2026-08-26 10:32:05 +03:00
9 changed files with 264 additions and 152 deletions

View File

@ -81,6 +81,8 @@ func (b BackupServiceImplementation) Backup(
return nil, err
}
configuration.ApplyBackupParameters(request.GetParameters())
var objectStore barmancloudv1.ObjectStore
if err := b.Client.Get(ctx, configuration.GetBarmanObjectKey(), &objectStore); err != nil {
contextLogger.Error(err, "while getting object store", "key", configuration.GetRecoveryBarmanObjectKey())

View File

@ -76,6 +76,12 @@ type PluginConfiguration struct {
ReplicaSourceBarmanObjectName string
ReplicaSourceServerName string
// AdditionalBarmanObjectNames lists the object stores that a Backup
// resource is allowed to request on top of the ones used by the cluster
// itself. Nothing is written to them unless a Backup asks for one, but
// they take part in the RBAC and in the certificates of the instances.
AdditionalBarmanObjectNames []string
}
// GetBarmanObjectKey gets the namespaced name of the barman object
@ -86,6 +92,24 @@ func (config *PluginConfiguration) GetBarmanObjectKey() types.NamespacedName {
}
}
// ApplyBackupParameters overrides the object store selection with the
// parameters of the Backup resource. The operator relays them in the
// BackupRequest, and without this a Backup asking for a different object
// store is silently written to the cluster one.
func (config *PluginConfiguration) ApplyBackupParameters(parameters map[string]string) {
if len(parameters) == 0 {
return
}
if value := parameters["barmanObjectName"]; len(value) > 0 {
config.BarmanObjectName = value
}
if value := parameters["serverName"]; len(value) > 0 {
config.ServerName = value
}
}
// GetRecoveryBarmanObjectKey gets the namespaced name of the recovery barman object
func (config *PluginConfiguration) GetRecoveryBarmanObjectKey() types.NamespacedName {
return types.NamespacedName{
@ -122,8 +146,11 @@ func (config *PluginConfiguration) GetReferredBarmanObjectsKey() []types.Namespa
if len(config.ReplicaSourceBarmanObjectName) > 0 {
objectNames.Put(config.ReplicaSourceBarmanObjectName)
}
for _, name := range config.AdditionalBarmanObjectNames {
objectNames.Put(name)
}
result := make([]types.NamespacedName, 0, 3)
result := make([]types.NamespacedName, 0, 4)
for _, name := range objectNames.ToSortedList() {
result = append(result, types.NamespacedName{
Name: name,
@ -186,6 +213,8 @@ func NewFromCluster(cluster *cnpgv1.Cluster) *PluginConfiguration {
// used for the backup/archive
BarmanObjectName: helper.Parameters["barmanObjectName"],
ServerName: serverName,
// reachable by a Backup resource requesting them explicitly
AdditionalBarmanObjectNames: parseObjectNameList(helper.Parameters["additionalBarmanObjectNames"]),
// used for restore and wal_restore during backup recovery
RecoveryServerName: recoveryServerName,
RecoveryBarmanObjectName: recoveryBarmanObjectName,
@ -197,6 +226,23 @@ func NewFromCluster(cluster *cnpgv1.Cluster) *PluginConfiguration {
return result
}
// parseObjectNameList splits a comma separated list of object store names,
// dropping the empty entries
func parseObjectNameList(value string) []string {
if len(value) == 0 {
return nil
}
var result []string
for _, name := range strings.Split(value, ",") {
if name = strings.TrimSpace(name); len(name) > 0 {
result = append(result, name)
}
}
return result
}
func getRecoveryParameters(cluster *cnpgv1.Cluster) map[string]string {
recoveryPluginConfiguration := getRecoverySourcePlugin(cluster)
if recoveryPluginConfiguration == nil {

View File

@ -124,3 +124,79 @@ var _ = Describe("NewFromCluster", func() {
Expect(cfg.Validate()).NotTo(Succeed())
})
})
var _ = Describe("PluginConfiguration.ApplyBackupParameters", func() {
newConfiguration := func(parameters map[string]string) *PluginConfiguration {
return NewFromCluster(&cnpgv1.Cluster{
ObjectMeta: metav1.ObjectMeta{Name: "cluster-example", Namespace: "test-ns"},
Spec: cnpgv1.ClusterSpec{
Plugins: []cnpgv1.PluginConfiguration{
{Name: metadata.PluginName, Parameters: parameters},
},
},
})
}
It("sends the backup to the object store requested by the Backup resource", func() {
cfg := newConfiguration(map[string]string{"barmanObjectName": "minio-store"})
cfg.ApplyBackupParameters(map[string]string{"barmanObjectName": "archive-store"})
Expect(cfg.GetBarmanObjectKey().Name).To(Equal("archive-store"))
})
It("overrides the server name too", func() {
cfg := newConfiguration(map[string]string{"barmanObjectName": "minio-store"})
cfg.ApplyBackupParameters(map[string]string{"serverName": "another-name"})
Expect(cfg.ServerName).To(Equal("another-name"))
Expect(cfg.GetBarmanObjectKey().Name).To(Equal("minio-store"))
})
It("keeps the cluster object store when the Backup carries no parameters", func() {
cfg := newConfiguration(map[string]string{"barmanObjectName": "minio-store"})
cfg.ApplyBackupParameters(nil)
Expect(cfg.GetBarmanObjectKey().Name).To(Equal("minio-store"))
Expect(cfg.ServerName).To(Equal("cluster-example"))
})
})
var _ = Describe("Additional object stores", func() {
newConfiguration := func(parameters map[string]string) *PluginConfiguration {
return NewFromCluster(&cnpgv1.Cluster{
ObjectMeta: metav1.ObjectMeta{Name: "cluster-example", Namespace: "test-ns"},
Spec: cnpgv1.ClusterSpec{
Plugins: []cnpgv1.PluginConfiguration{
{Name: metadata.PluginName, Parameters: parameters},
},
},
})
}
It("are referred to, so that they are covered by RBAC and certificates", func() {
cfg := newConfiguration(map[string]string{
"barmanObjectName": "minio-store",
"additionalBarmanObjectNames": "archive-store, monthly-store ,",
})
names := make([]string, 0, 3)
for _, key := range cfg.GetReferredBarmanObjectsKey() {
Expect(key.Namespace).To(Equal("test-ns"))
names = append(names, key.Name)
}
Expect(names).To(ConsistOf("minio-store", "archive-store", "monthly-store"))
})
It("do not receive anything on their own", func() {
cfg := newConfiguration(map[string]string{
"barmanObjectName": "minio-store",
"additionalBarmanObjectNames": "archive-store",
})
Expect(cfg.GetBarmanObjectKey().Name).To(Equal("minio-store"))
})
})

View File

@ -54,10 +54,9 @@ Both checks are required before proceeding with the installation.
## Installing the Barman Cloud Plugin
import { InstallationSnippet } from '@site/src/components/Installation';
import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation';
Install the plugin using `kubectl` by applying the manifest for the latest
release:
Install the plugin using `kubectl` by applying the manifest for <ManifestVersion />:
<InstallationSnippet />
@ -100,10 +99,6 @@ This confirms that the plugin is deployed and ready to use.
## Testing the latest development snapshot
You can also test the latest development snapshot of the plugin with the
following command:
import { DevSnapshotSection } from '@site/src/components/Installation';
```sh
kubectl apply -f \
https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml
```
<DevSnapshotSection />

View File

@ -1,16 +1,55 @@
import {ReactElement} from 'react';
import CodeBlock from '@theme/CodeBlock';
import {useCurrentVersion} from '@site/src/hooks/versions';
import {useActiveVersion} from '@docusaurus/plugin-content-docs/client';
// InstallationSnippet is the kubectl incantation to install the lastest
// available version of the Barman Cloud Plugin.
// DEV_MANIFEST_URL is the URL of the manifest.yaml on the main branch of the plugin repo.
const DEV_MANIFEST_URL =
'https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml';
// InstallationSnippet is the kubectl incantation to install the Barman
// Cloud Plugin: the manifest matching the doc version being viewed, or
// (on the unreleased "current" docs) the latest manifest on main.
export function InstallationSnippet(): ReactElement<null> {
const latest = useCurrentVersion('latestReleased');
const activeVersion = useActiveVersion('default');
const url = activeVersion && activeVersion.name !== 'current'
? `https://github.com/cloudnative-pg/plugin-barman-cloud/releases/download/v${activeVersion.name}/manifest.yaml`
: DEV_MANIFEST_URL;
return (
<CodeBlock language="sh">
{`kubectl apply -f \\
https://github.com/cloudnative-pg/plugin-barman-cloud/releases/download/v${latest}/manifest.yaml`}
${url}`}
</CodeBlock>
);
}
// ManifestVersion names the manifest the snippet below installs: the
// release tag for a versioned docs page, or the main branch on Dev docs.
export function ManifestVersion(): ReactElement<null> {
const activeVersion = useActiveVersion('default');
return activeVersion && activeVersion.name !== 'current'
? <code>v{activeVersion.name}</code>
: <>the latest development snapshot from the <code>main</code> branch</>;
}
// DevSnapshotSection offers the main-branch manifest as an alternative;
// on the Dev docs the main install already is that manifest, so hide it.
export function DevSnapshotSection(): ReactElement {
const activeVersion = useActiveVersion('default');
if (!activeVersion || activeVersion.name === 'current') {
return (
<p>The <a href="#installing-the-barman-cloud-plugin">install
command above</a> already applies the latest development
snapshot from the <code>main</code> branch.</p>
);
}
return (
<>
<p>You can also test the latest development snapshot of the plugin
with the following command:</p>
<CodeBlock language="sh">
{`kubectl apply -f \\
${DEV_MANIFEST_URL}`}
</CodeBlock>
</>
);
}

View File

@ -1,36 +0,0 @@
import {useActiveVersion, useLatestVersion, useVersions} from '@docusaurus/plugin-content-docs/client';
export function useCurrentVersion(fallback: 'latest' | 'latestReleased' = 'latest'): string {
switch (fallback) {
case 'latestReleased':
return useLatestReleasedVersion();
case 'latest': {
const version = useActiveVersion('default');
return version?.name ?? useLatestVersion('default')?.name;
}
default:
// The following line ensures that if `fallback` is not 'latest' or 'latestReleased',
// an error is thrown. This can be useful for catching unexpected states.
throw new Error(`Unhandled fallback type: ${fallback}`);
}
}
export function useLatestReleasedVersion(): string {
const allVersions = useVersions('default');
// Filter out "current" to only consider versioned docs
const versionedDocs = allVersions.filter(version => version.name !== 'current');
// Handle the case where no versioned documents are found
if (versionedDocs.length === 0) {
return "unknown_version";
}
const sortedVersions = versionedDocs.sort((a, b) => {
return b.name.localeCompare(a.name, undefined, { numeric: true, sensitivity: 'base' });
});
// The latest version is the first in the sorted list since versionedDocs was not empty,
return sortedVersions[0].name;
}

View File

@ -54,10 +54,9 @@ Both checks are required before proceeding with the installation.
## Installing the Barman Cloud Plugin
import { InstallationSnippet } from '@site/src/components/Installation';
import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation';
Install the plugin using `kubectl` by applying the manifest for the latest
release:
Install the plugin using `kubectl` by applying the manifest for <ManifestVersion />:
<InstallationSnippet />
@ -100,10 +99,6 @@ This confirms that the plugin is deployed and ready to use.
## Testing the latest development snapshot
You can also test the latest development snapshot of the plugin with the
following command:
import { DevSnapshotSection } from '@site/src/components/Installation';
```sh
kubectl apply -f \
https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml
```
<DevSnapshotSection />

View File

@ -54,10 +54,9 @@ Both checks are required before proceeding with the installation.
## Installing the Barman Cloud Plugin
import { InstallationSnippet } from '@site/src/components/Installation';
import { InstallationSnippet, ManifestVersion } from '@site/src/components/Installation';
Install the plugin using `kubectl` by applying the manifest for the latest
release:
Install the plugin using `kubectl` by applying the manifest for <ManifestVersion />:
<InstallationSnippet />
@ -100,10 +99,6 @@ This confirms that the plugin is deployed and ready to use.
## Testing the latest development snapshot
You can also test the latest development snapshot of the plugin with the
following command:
import { DevSnapshotSection } from '@site/src/components/Installation';
```sh
kubectl apply -f \
https://raw.githubusercontent.com/cloudnative-pg/plugin-barman-cloud/refs/heads/main/manifest.yaml
```
<DevSnapshotSection />

View File

@ -2099,9 +2099,9 @@
"@jridgewell/trace-mapping" "^0.3.25"
"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0":
version "1.5.5"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba"
integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==
version "1.6.0"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz#f4c663e862f06dc98ca4d453862c46902789a18d"
integrity sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==
"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28", "@jridgewell/trace-mapping@^0.3.31":
version "0.3.31"
@ -2141,75 +2141,75 @@
resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207"
integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==
"@jsonjoy.com/fs-core@4.68.1":
version "4.68.1"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.68.1.tgz#15fed282af2a8efbd1a335a83ae1bd3507fa0237"
integrity sha512-V5oZ4Gt9WJKyQef0n9cAd0N9qjSkIBm3E4MYsgNIWBk5aINCDPKxMPo1i29rBxqiT4Ixf1epklqV9VJMKIxwlw==
"@jsonjoy.com/fs-core@4.68.2":
version "4.68.2"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-core/-/fs-core-4.68.2.tgz#ea3e3e3e07e0d808844ba7ee908dd47ad121eddf"
integrity sha512-PoBeUNEbjyLKKwCap2z8LkkqdhdfttS4rTHCALVuP65BdF+sAoyBqHo1m+uGTRBiQWv3H7MGfr8f7lY4pDwanw==
dependencies:
"@jsonjoy.com/fs-node-builtins" "4.68.1"
"@jsonjoy.com/fs-node-utils" "4.68.1"
"@jsonjoy.com/fs-node-builtins" "4.68.2"
"@jsonjoy.com/fs-node-utils" "4.68.2"
thingies "^2.5.0"
"@jsonjoy.com/fs-fsa@4.68.1":
version "4.68.1"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.68.1.tgz#009ebc90396622d37df984691fbe8bad51fdedea"
integrity sha512-HCG72UioncuO7Gw09XNVG+S85e3cq2hrUC/mexBrsWsa3mI7eePkkqWie3uVYbtsb64OR9YGQs5SqaufDRYBcg==
"@jsonjoy.com/fs-fsa@4.68.2":
version "4.68.2"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-fsa/-/fs-fsa-4.68.2.tgz#01d59e3bedb3cfe4b32334abbb1004a75b481a76"
integrity sha512-h6eGXlLGGMyPfNliDQrbuHKTB9Z29ksCLjreAmdBqrDOBdfrTrHssi+b9WLfrF+J2KzAbIt9OMjJu6AEpTnYkg==
dependencies:
"@jsonjoy.com/fs-core" "4.68.1"
"@jsonjoy.com/fs-node-builtins" "4.68.1"
"@jsonjoy.com/fs-node-utils" "4.68.1"
"@jsonjoy.com/fs-core" "4.68.2"
"@jsonjoy.com/fs-node-builtins" "4.68.2"
"@jsonjoy.com/fs-node-utils" "4.68.2"
thingies "^2.5.0"
"@jsonjoy.com/fs-node-builtins@4.68.1":
version "4.68.1"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.68.1.tgz#3c4ee9877e12d76eab8611663bea127d0e261fc5"
integrity sha512-HK1BTksysokNZxNspqDH0yPaqN9YgR/AYIlYiIaU2Ys4BOk5CdybI7r6BgiZuiiPiV8n4sK/kZdice7Znpy2Kw==
"@jsonjoy.com/fs-node-builtins@4.68.2":
version "4.68.2"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.68.2.tgz#ef82d558a6894b54537857ba153daa38a5326a05"
integrity sha512-V8WzQsW2YIrH3RxBGY6HZisxn+dDUltHgksVRuCdPEOXEkAfXuhL/01eHFrabNu84Dn13XuLqvcQUKOYVKAUOA==
"@jsonjoy.com/fs-node-to-fsa@4.68.1":
version "4.68.1"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.68.1.tgz#d0dab7f007f9e01dcd1e62d2e27ec0fdd0126554"
integrity sha512-lpKmU4X9e/oh8GIuAI7EXaS5QiLNM3KD15CkdhfS6PYmrGvoJqKQcyEfnLgnnaGslh/PFUMYSIZBCf2ejJGw8g==
"@jsonjoy.com/fs-node-to-fsa@4.68.2":
version "4.68.2"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.68.2.tgz#faf01a277752868d90681f6dcb86d3e01f05a296"
integrity sha512-4O1K4w5G4oJIpKpoa3WSLG83AsQYVnGv+aUSBGOvIUph9Axm6bB1mPlvldkNg2tBx/4dkiTlZnqNrK5SQ21Wtg==
dependencies:
"@jsonjoy.com/fs-fsa" "4.68.1"
"@jsonjoy.com/fs-node-builtins" "4.68.1"
"@jsonjoy.com/fs-node-utils" "4.68.1"
"@jsonjoy.com/fs-fsa" "4.68.2"
"@jsonjoy.com/fs-node-builtins" "4.68.2"
"@jsonjoy.com/fs-node-utils" "4.68.2"
"@jsonjoy.com/fs-node-utils@4.68.1":
version "4.68.1"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.68.1.tgz#25fa70c1c11986eef75c1e6c52caea9fe2e69778"
integrity sha512-/GxfW1DWm9SCdkfbvqevLO/P5duobQfmKkHXxdMIDbcZMQeAgooAstIfZhkXpATzq9QbCQsnoWFM/dGHdZfndw==
"@jsonjoy.com/fs-node-utils@4.68.2":
version "4.68.2"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.68.2.tgz#78311a84df4e4edc51f8e41fc042d3eed21cb0d4"
integrity sha512-CxFwyG9fJr7dAKAd1uanNRNrRMtDDqbYJA8do53+M4LY7SxcBEEmMjC1zi9MOsBlVLHTXvA7OP9+n639UqtIcw==
dependencies:
"@jsonjoy.com/fs-node-builtins" "4.68.1"
"@jsonjoy.com/fs-node-builtins" "4.68.2"
glob-to-regex.js "^1.0.1"
"@jsonjoy.com/fs-node@4.68.1":
version "4.68.1"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.68.1.tgz#0ca716e6c3ef5ed8887fbd4b4557094f99293d19"
integrity sha512-R5D9mWtqdURzcOWj1vdXr3APCwX0xchtFT+kmW7fXLNDifWdDrnh26jSID8pdnUfFBxTyfHtFtTL/NWKzIH7kQ==
"@jsonjoy.com/fs-node@4.68.2":
version "4.68.2"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-node/-/fs-node-4.68.2.tgz#166b641f7c810e12cbf92c483e9c7084123ed669"
integrity sha512-Kpj519Qk4OXG4+mZ8vTf9BEflliJrPueIDEVcbx8tAOufMJJ8IxR0WwdbcEvJol2KQog3PJjtALXVclorE+xbQ==
dependencies:
"@jsonjoy.com/fs-core" "4.68.1"
"@jsonjoy.com/fs-node-builtins" "4.68.1"
"@jsonjoy.com/fs-node-utils" "4.68.1"
"@jsonjoy.com/fs-print" "4.68.1"
"@jsonjoy.com/fs-snapshot" "4.68.1"
"@jsonjoy.com/fs-core" "4.68.2"
"@jsonjoy.com/fs-node-builtins" "4.68.2"
"@jsonjoy.com/fs-node-utils" "4.68.2"
"@jsonjoy.com/fs-print" "4.68.2"
"@jsonjoy.com/fs-snapshot" "4.68.2"
glob-to-regex.js "^1.0.0"
thingies "^2.5.0"
"@jsonjoy.com/fs-print@4.68.1":
version "4.68.1"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.68.1.tgz#bd830f90764155fb131320624248d33e720d6130"
integrity sha512-oGeZOGPYKK9v1CgeVeEDsLomH1lCnslSpqUN5GmPzrmAVGQlsmsdcXNA2O4lV8Y4xkuSuynx2ITBkUHJVaTbow==
"@jsonjoy.com/fs-print@4.68.2":
version "4.68.2"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-print/-/fs-print-4.68.2.tgz#1562c2481393359644e2840c25a5082274378f39"
integrity sha512-cBABQmZJXig6bahwNka3+yPNGUF1GeMWbR76ZM1N2ajgCd+S+twZigCoe9+0ueZmkhM9xd2a7688Gy/ch7T+2w==
dependencies:
"@jsonjoy.com/fs-node-utils" "4.68.1"
"@jsonjoy.com/fs-node-utils" "4.68.2"
tree-dump "^1.1.0"
"@jsonjoy.com/fs-snapshot@4.68.1":
version "4.68.1"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.68.1.tgz#672d82cb65dad18c3a1fcf7d22254d037e6a794a"
integrity sha512-XZfP0FDZN32bbc4t2bZN2qRrYHg5AktJnzk22HRoKGK4BprrbNRH2k5ceSNS/kupKYcofCs+O841+xaAbjnxwQ==
"@jsonjoy.com/fs-snapshot@4.68.2":
version "4.68.2"
resolved "https://registry.yarnpkg.com/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.68.2.tgz#6f1b2e5aa6827a1075f82162055ca8bedee0fe58"
integrity sha512-Aix7+NM38LzvewM0T3PICSgFdF5BVCtVgsjNsrlDPGc9hiMgJzReTDDl2/elgl0A9USMl3QP27x5WwxZSOtrfw==
dependencies:
"@jsonjoy.com/buffers" "^17.65.0"
"@jsonjoy.com/fs-node-utils" "4.68.1"
"@jsonjoy.com/fs-node-utils" "4.68.2"
"@jsonjoy.com/json-pack" "^17.65.0"
"@jsonjoy.com/util" "^17.65.0"
@ -3564,9 +3564,9 @@ balanced-match@^1.0.0:
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
baseline-browser-mapping@^2.11.12:
version "2.11.19"
resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.19.tgz#4711abac48b88ccb56b5817e86f1b3a9a0764276"
integrity sha512-Grytf1xOxOEMTGRwx6rLGKkTabd4vMg3VrKdj/7joCmV0qgh4QwMMO6xh34YEXQqirAuUdgQGa5orJQQ+69RBw==
version "2.11.20"
resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.11.20.tgz#26078c7a4b08299656ea7ddceaebec955dc44303"
integrity sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw==
batch@0.6.1:
version "0.6.1"
@ -4241,9 +4241,9 @@ css-what@^6.0.1, css-what@^6.1.0:
integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==
cssdb@^8.6.0:
version "8.10.0"
resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.10.0.tgz#fdb9cc7af72c81839265811ad8ca4e0a4db919c1"
integrity sha512-+JWEEjjoqkPY7iGHps3SaCT2w67Zpaj9zHvhCJ2iPBavKHwgtOOD2YEbZSCU8VO2uVGpKdYjVz+j6bhkNSjZ0g==
version "8.11.0"
resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.11.0.tgz#e03c9cdc9c5e99d8cddf64a917bfc427b20c143a"
integrity sha512-VzY/8kcK5M8oCVr/cwh24J8XVlCOITpmzCizKBC28o7Z1s23MMojXoJ3q7a+TQQoMKvxC3YlG0Z9yU10kJF1uQ==
cssesc@^3.0.0:
version "3.0.0"
@ -4568,9 +4568,9 @@ ee-first@1.1.1:
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
electron-to-chromium@^1.5.402:
version "1.5.415"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.415.tgz#edd7356bfb4752a12c8293f8e38a00778b13bbb4"
integrity sha512-958V+Kbhtgz+SxXeEVKBjrlKRBIDAYvUJfwhjxMZ5S6ut9jAl7l9ZKBkBrvjyjZE36PabLUo2L8kEeV5O4vgJg==
version "1.5.418"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.418.tgz#40ccbf6d572447663041611e05924b53bc9a0331"
integrity sha512-UzS26r3AEbG5wSoGVpJKqwHIU9zwQN7LHdVIThDrJpS0I5KdlXFMEb8543fhc9dVnIIAST6ar8rhwa00AL5MlA==
emoji-regex@^8.0.0:
version "8.0.0"
@ -4897,9 +4897,9 @@ fast-uri@^3.0.1:
integrity sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q==
fastq@^1.6.0:
version "1.20.1"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.1.tgz#ca750a10dc925bc8b18839fd203e3ef4b3ced675"
integrity sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==
version "1.20.3"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.20.3.tgz#7ab8731e647b56abcfeee997dae333ca3ee1d04d"
integrity sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==
dependencies:
reusify "^1.0.4"
@ -6281,18 +6281,18 @@ media-typer@0.3.0:
integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
memfs@^4.43.1:
version "4.68.1"
resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.68.1.tgz#e42fa69c873305a9cd0b28a8d230b96efacd8b5d"
integrity sha512-OD+IDRUvIxu3QHL+nFm9gdyugInD27FDJ+sl4B5QgomPHXMlbw+GP918P8VNKu2FkNlVeqBkpzkwROpamVifRw==
version "4.68.2"
resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.68.2.tgz#26aeb07f3774ccf79bf9d79483ea3241e1383254"
integrity sha512-Un1ElEBoIdPI9kg0sm3LebVEuEViodfIvlaG8Z1MFXa7ZnR9vWuPKUo3dt/vuWY2ivc05l76B5QOjdgCzAzmGw==
dependencies:
"@jsonjoy.com/fs-core" "4.68.1"
"@jsonjoy.com/fs-fsa" "4.68.1"
"@jsonjoy.com/fs-node" "4.68.1"
"@jsonjoy.com/fs-node-builtins" "4.68.1"
"@jsonjoy.com/fs-node-to-fsa" "4.68.1"
"@jsonjoy.com/fs-node-utils" "4.68.1"
"@jsonjoy.com/fs-print" "4.68.1"
"@jsonjoy.com/fs-snapshot" "4.68.1"
"@jsonjoy.com/fs-core" "4.68.2"
"@jsonjoy.com/fs-fsa" "4.68.2"
"@jsonjoy.com/fs-node" "4.68.2"
"@jsonjoy.com/fs-node-builtins" "4.68.2"
"@jsonjoy.com/fs-node-to-fsa" "4.68.2"
"@jsonjoy.com/fs-node-utils" "4.68.2"
"@jsonjoy.com/fs-print" "4.68.2"
"@jsonjoy.com/fs-snapshot" "4.68.2"
"@jsonjoy.com/json-pack" "^1.11.0"
"@jsonjoy.com/util" "^1.9.0"
glob-to-regex.js "^1.0.1"
@ -8446,9 +8446,9 @@ send@~0.19.0, send@~0.19.1:
statuses "~2.0.2"
serialize-javascript@>=7.0.5, serialize-javascript@^6.0.0, serialize-javascript@^6.0.1:
version "7.1.0"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.1.0.tgz#9e462c5c6dec5dbc8b55d90c52a4ad6aff985b9f"
integrity sha512-RNEqWOyhhUQYN9V1GfHwu9AR/g+NTciH6Z5u3/no6X3/w+04J2lVDL+svFQVXgXrEGBMG2puMVN3gq2SNGuTGw==
version "7.1.1"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-7.1.1.tgz#c3b0a7ac13df6cf2fcda71cbb142ba9392a710b9"
integrity sha512-k3CMsaIvvdSwm8oLB4MXSl0wH2/cwlH7xGcnRd2DaeRmBkbzYmyT8j0tsX60DwD1eRwHTpNpH8ljKu9oUT1MeQ==
serve-handler@^6.1.7:
version "6.1.7"
@ -9117,9 +9117,9 @@ unpipe@~1.0.0:
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
update-browserslist-db@^1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz#a71c28dd22f505481dbc4689087b18d933e90afd"
integrity sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==
version "1.3.2"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.3.2.tgz#9d99fbff56c50bb11ba5fd35cece5916da595836"
integrity sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==
dependencies:
escalade "^3.2.0"
picocolors "^1.1.1"
@ -9326,9 +9326,9 @@ webpack-sources@^3.5.1:
integrity sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==
webpack@^5.88.1, webpack@^5.95.0:
version "5.110.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.110.0.tgz#504e6195f3a729ed3904b24961e43f0f51e1b79b"
integrity sha512-vzGjrgzXNYRs0MBVkdF288cJt0RIJMxlZy+3pLFo6KIeZI57sBGCgjBp+yNQWf5g9c1us34rjivM1sfNLijQYg==
version "5.110.2"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.110.2.tgz#ef23a0e62fe5e1ba71b033e3505b7f005d8d5c6e"
integrity sha512-TciLrfM7zgEjqGdY851HkirDsSPQgTFsWQpl9oHqMAMYsHhEC0bKjscvjpnz+pzx10hLC8qISApGrsnrCP4UtQ==
dependencies:
"@types/estree" "^1.0.8"
"@types/json-schema" "^7.0.15"