From d6e6976024fa7608ebaceca1cc075e573f6bb7c5 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Tue, 8 Aug 2023 12:46:42 -0400 Subject: [PATCH 01/44] WIP Signed-off-by: Case Wylie --- examples/archive-path/zarf.yaml | 33 ++++++++++++++ src/pkg/utils/helpers/compression.go | 66 ++++++++++++++++++++++++++++ src/types/component.go | 11 ++--- 3 files changed, 105 insertions(+), 5 deletions(-) create mode 100644 examples/archive-path/zarf.yaml create mode 100644 src/pkg/utils/helpers/compression.go diff --git a/examples/archive-path/zarf.yaml b/examples/archive-path/zarf.yaml new file mode 100644 index 0000000000..76ae04fe9e --- /dev/null +++ b/examples/archive-path/zarf.yaml @@ -0,0 +1,33 @@ +kind: ZarfPackageConfig +metadata: + name: archive-path + description: "Test archive path" + + +components: + - name: download-flux + required: true + actions: + onDeploy: + after: + - cmd: echo "$(uname -a)" + description: What is the arch? + files: + - source: https://github.com/fluxcd/flux2/releases/download/v2.0.1/flux_2.0.1_darwin_arm64.tar.gz + target: /Users/cmwylie19/zarf/flux_2.0.1_darwin_arm64.tar.gz + + # shasum: 2e3faa90e3adf639aed4dbefd7691f73f4b2a21d64d907e6bdbc086cd79bf275 + # archivePath: eksctl + - name: flux-version + required: true + actions: + onDeploy: + before: + - cmd: ls -l flux_2.0.1_darwin_arm64.tar.gz + dir: /Users/cmwylie19/zarf/ + description: "Check it out" + mute: false + - cmd: rm flux_2.0.1_darwin_arm64.tar.gz + dir: /Users/cmwylie19/zarf/ + description: Remove the zipped + \ No newline at end of file diff --git a/src/pkg/utils/helpers/compression.go b/src/pkg/utils/helpers/compression.go new file mode 100644 index 0000000000..156702733f --- /dev/null +++ b/src/pkg/utils/helpers/compression.go @@ -0,0 +1,66 @@ +package helpers + +import ( + "archive/tar" + "compress/gzip" + "io" + "os" + "path/filepath" +) + +func ExtractTarGz(filenameWithPath string) error { + // Open the .tar.gz file for reading + file, err := os.Open(filenameWithPath) + if err != nil { + return err + } + defer file.Close() + + // Create a gzip reader + gzReader, err := gzip.NewReader(file) + if err != nil { + return err + } + defer gzReader.Close() + + // Create a tar reader + tarReader := tar.NewReader(gzReader) + + // Extract files + for { + header, err := tarReader.Next() + if err == io.EOF { + break // End of archive + } + if err != nil { + return err + } + + // Construct the target file path + targetPath := filepath.Join(filepath.Dir(filenameWithPath), header.Name) + + // Create directories if needed + if header.Typeflag == tar.TypeDir { + err := os.MkdirAll(targetPath, os.ModePerm) + if err != nil { + return err + } + continue + } + + // Create the target file + fileWriter, err := os.Create(targetPath) + if err != nil { + return err + } + defer fileWriter.Close() + + // Copy the file contents + _, err = io.Copy(fileWriter, tarReader) + if err != nil { + return err + } + } + + return nil +} diff --git a/src/types/component.go b/src/types/component.go index 62e399e9b0..bbeb2474a6 100644 --- a/src/types/component.go +++ b/src/types/component.go @@ -79,11 +79,12 @@ type ZarfComponentOnlyCluster struct { // ZarfFile defines a file to deploy. type ZarfFile struct { - Source string `json:"source" jsonschema:"description=Local folder or file path or remote URL to pull into the package"` - Shasum string `json:"shasum,omitempty" jsonschema:"description=(files only) Optional SHA256 checksum of the file"` - Target string `json:"target" jsonschema:"description=The absolute or relative path where the file or folder should be copied to during package deploy"` - Executable bool `json:"executable,omitempty" jsonschema:"description=(files only) Determines if the file should be made executable during package deploy"` - Symlinks []string `json:"symlinks,omitempty" jsonschema:"description=List of symlinks to create during package deploy"` + Source string `json:"source" jsonschema:"description=Local folder or file path or remote URL to pull into the package"` + Shasum string `json:"shasum,omitempty" jsonschema:"description=(files only) Optional SHA256 checksum of the file"` + Target string `json:"target" jsonschema:"description=The absolute or relative path where the file or folder should be copied to during package deploy"` + Executable bool `json:"executable,omitempty" jsonschema:"description=(files only) Determines if the file should be made executable during package deploy"` + Symlinks []string `json:"symlinks,omitempty" jsonschema:"description=List of symlinks to create during package deploy"` + ArchivePath string `json:"archivePath,omitempty" jsonschema:"description=Local folder or file to be extracted into the package"` } // ZarfChart defines a helm chart to be deployed. From 0ec1054de05d3b5940ff9916d4c88e503f977da6 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Wed, 9 Aug 2023 11:01:46 -0400 Subject: [PATCH 02/44] base work done Signed-off-by: Case Wylie --- examples/archive-path/zarf.yaml | 19 +++--- src/config/lang/english.go | 1 + src/pkg/packager/create.go | 31 ++++++++++ src/pkg/utils/helpers/compression.go | 87 ++++++++++++++-------------- 4 files changed, 81 insertions(+), 57 deletions(-) diff --git a/examples/archive-path/zarf.yaml b/examples/archive-path/zarf.yaml index 76ae04fe9e..ac7e2a9aa7 100644 --- a/examples/archive-path/zarf.yaml +++ b/examples/archive-path/zarf.yaml @@ -7,27 +7,22 @@ metadata: components: - name: download-flux required: true - actions: - onDeploy: - after: - - cmd: echo "$(uname -a)" - description: What is the arch? files: - source: https://github.com/fluxcd/flux2/releases/download/v2.0.1/flux_2.0.1_darwin_arm64.tar.gz - target: /Users/cmwylie19/zarf/flux_2.0.1_darwin_arm64.tar.gz - - # shasum: 2e3faa90e3adf639aed4dbefd7691f73f4b2a21d64d907e6bdbc086cd79bf275 - # archivePath: eksctl + target: /Users/cmwylie19/zarf/flux + executable: true + shasum: 520f25324d42e222ccdc75009659452808adcbecb2b744f2ebf037e14e18cd69 + archivePath: flux - name: flux-version required: true actions: onDeploy: before: - - cmd: ls -l flux_2.0.1_darwin_arm64.tar.gz + - cmd: ./flux -v dir: /Users/cmwylie19/zarf/ - description: "Check it out" + description: What's the version mute: false - - cmd: rm flux_2.0.1_darwin_arm64.tar.gz + - cmd: rm flux dir: /Users/cmwylie19/zarf/ description: Remove the zipped \ No newline at end of file diff --git a/src/config/lang/english.go b/src/config/lang/english.go index 8bcda88363..be863b775b 100644 --- a/src/config/lang/english.go +++ b/src/config/lang/english.go @@ -27,6 +27,7 @@ const ( ErrCreatingDir = "failed to create directory %s: %s" ErrRemoveFile = "failed to remove file %s: %s" ErrUnarchive = "failed to unarchive %s: %s" + ErrFilename = "failed to extract filename from url %s: %s" ) // Zarf CLI commands. diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 38c0362f8d..d30676d230 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -383,6 +383,37 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel if err := utils.DownloadToFile(file.Source, dst, component.CosignKeyPath); err != nil { return fmt.Errorf(lang.ErrDownloading, file.Source, err.Error()) } + // Verify we can decompress the file + if file.ArchivePath != "" || helpers.SupportedCompressionFormat(file.Source) { + // extract filename from target + dstFileName, err := helpers.ExtractFilenameFromURL(file.Source) + if err != nil { + message.Fatalf(err, lang.ErrFilename, file.Source, err.Error()) + } + // For archiver support, we need to rename the file to the original + newDst, err := helpers.RenamePathWithFilename(dst, dstFileName) + if err != nil { + fmt.Printf("Could not renamePathWithFilename %s, %s, %s", file.Target, dst, err.Error()) + } + + err = os.Rename(dst, newDst) + if err != nil { + return fmt.Errorf(lang.ErrWritingFile, dst, err) + } + + // Decompress the file into the target directory + err = archiver.Unarchive(newDst, helpers.GetDirFromFilename(dst)) + if err != nil { + message.Fatalf(err, lang.CmdToolsArchiverDecompressErr, err.Error()) + } + + // Remove all files in directory other file + err = helpers.KeepOnlyFile(helpers.GetDirFromFilename(dst), file.ArchivePath) + if err != nil { + fmt.Println("Error cleaning up directory", err.Error()) + } + + } } else { if err := utils.CreatePathAndCopy(file.Source, dst); err != nil { return fmt.Errorf("unable to copy file %s: %w", file.Source, err) diff --git a/src/pkg/utils/helpers/compression.go b/src/pkg/utils/helpers/compression.go index 156702733f..4eca89b34d 100644 --- a/src/pkg/utils/helpers/compression.go +++ b/src/pkg/utils/helpers/compression.go @@ -1,66 +1,63 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: 2021-Present The Zarf Authors + +// Package helpers provides generic helper functions with no external imports package helpers import ( - "archive/tar" - "compress/gzip" - "io" + "fmt" + "net/url" "os" + "path" "path/filepath" + "strings" ) -func ExtractTarGz(filenameWithPath string) error { - // Open the .tar.gz file for reading - file, err := os.Open(filenameWithPath) - if err != nil { - return err - } - defer file.Close() - - // Create a gzip reader - gzReader, err := gzip.NewReader(file) +func KeepOnlyFile(directory, filename string) error { + files, err := os.ReadDir(directory) if err != nil { return err } - defer gzReader.Close() - - // Create a tar reader - tarReader := tar.NewReader(gzReader) - // Extract files - for { - header, err := tarReader.Next() - if err == io.EOF { - break // End of archive - } - if err != nil { - return err - } - - // Construct the target file path - targetPath := filepath.Join(filepath.Dir(filenameWithPath), header.Name) - - // Create directories if needed - if header.Typeflag == tar.TypeDir { - err := os.MkdirAll(targetPath, os.ModePerm) + for _, file := range files { + if file.Name() != filename { + filePath := filepath.Join(directory, file.Name()) + err := os.RemoveAll(filePath) if err != nil { return err } - continue + fmt.Println("Deleted:", filePath) } + } - // Create the target file - fileWriter, err := os.Create(targetPath) - if err != nil { - return err - } - defer fileWriter.Close() + return nil +} - // Copy the file contents - _, err = io.Copy(fileWriter, tarReader) - if err != nil { - return err +func SupportedCompressionFormat(filename string) bool { + supportedFormats := []string{".tar.gz", ".br", ".bz2", ".zip", ".lz4", ".sz", ".xz", ".zz", ".zst"} + + for _, format := range supportedFormats { + if strings.HasSuffix(filename, format) { + return true } } + return false +} - return nil +func GetDirFromFilename(target string) string { + return filepath.Dir(target) +} +func RenamePathWithFilename(target, fileName string) (string, error) { + dir := filepath.Dir(target) + newPath := filepath.Join(dir, fileName) + return newPath, nil +} +func ExtractFilenameFromURL(urlStr string) (string, error) { + parsedURL, err := url.Parse(urlStr) + if err != nil { + return "", err + } + + filename := path.Base(parsedURL.Path) + return filename, nil } From 5789d3606429a13baad1e6c551bffda3fd68b3e4 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Wed, 9 Aug 2023 14:27:40 -0400 Subject: [PATCH 03/44] archive-path Signed-off-by: Case Wylie --- src/pkg/packager/common.go | 39 ++++++++++---------- src/pkg/packager/create.go | 16 ++++++--- src/pkg/packager/deploy.go | 8 +++++ src/pkg/utils/helpers/compression.go | 43 ---------------------- src/pkg/utils/helpers/files.go | 53 ++++++++++++++++++++++++++++ 5 files changed, 91 insertions(+), 68 deletions(-) create mode 100644 src/pkg/utils/helpers/files.go diff --git a/src/pkg/packager/common.go b/src/pkg/packager/common.go index ad8120bdf1..3e06e27fa5 100644 --- a/src/pkg/packager/common.go +++ b/src/pkg/packager/common.go @@ -17,7 +17,6 @@ import ( "strings" "github.com/AlecAivazis/survey/v2" - "github.com/Masterminds/semver/v3" "github.com/defenseunicorns/zarf/src/config/lang" "github.com/defenseunicorns/zarf/src/internal/cluster" "github.com/defenseunicorns/zarf/src/internal/packager/sbom" @@ -468,25 +467,25 @@ func (p *Packager) validateLastNonBreakingVersion() (err error) { return nil } - lastNonBreakingSemVer, err := semver.NewVersion(lastNonBreakingVersion) - if err != nil { - return fmt.Errorf("unable to parse lastNonBreakingVersion '%s' from Zarf package build data : %w", lastNonBreakingVersion, err) - } - - cliSemVer, err := semver.NewVersion(cliVersion) - if err != nil { - return fmt.Errorf("unable to parse Zarf CLI version '%s' : %w", cliVersion, err) - } - - if cliSemVer.LessThan(lastNonBreakingSemVer) { - warning := fmt.Sprintf( - lang.CmdPackageDeployValidateLastNonBreakingVersionWarn, - cliVersion, - lastNonBreakingVersion, - lastNonBreakingVersion, - ) - p.warnings = append(p.warnings, warning) - } + // lastNonBreakingSemVer, err := semver.NewVersion(lastNonBreakingVersion) + // if err != nil { + // return fmt.Errorf("unable to parse lastNonBreakingVersion '%s' from Zarf package build data : %w", lastNonBreakingVersion, err) + // } + + // cliSemVer, err := semver.NewVersion(cliVersion) + // if err != nil { + // return fmt.Errorf("unable to parse Zarf CLI version '%s' : %w", cliVersion, err) + // } + + // if cliSemVer.LessThan(lastNonBreakingSemVer) { + // warning := fmt.Sprintf( + // lang.CmdPackageDeployValidateLastNonBreakingVersionWarn, + // cliVersion, + // lastNonBreakingVersion, + // lastNonBreakingVersion, + // ) + // p.warnings = append(p.warnings, warning) + // } return nil } diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index d30676d230..09772a5a3f 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -407,11 +407,8 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel message.Fatalf(err, lang.CmdToolsArchiverDecompressErr, err.Error()) } - // Remove all files in directory other file - err = helpers.KeepOnlyFile(helpers.GetDirFromFilename(dst), file.ArchivePath) - if err != nil { - fmt.Println("Error cleaning up directory", err.Error()) - } + // for Sha256sum rename dst + dst = newDst } } else { @@ -428,6 +425,15 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel if actualShasum, _ := utils.GetCryptoHashFromFile(dst, crypto.SHA256); actualShasum != file.Shasum { return fmt.Errorf("shasum mismatch for file %s: expected %s, got %s", file.Source, file.Shasum, actualShasum) } + + if file.ArchivePath != "" { + // Remove all files in directory other file + err = helpers.KeepOnlyFiles(filepath.Dir(dst), []string{file.ArchivePath, filepath.Base(dst)}) + if err != nil { + fmt.Println("Error cleaning up directory", err.Error()) + } + } + } if file.Executable || utils.IsDir(dst) { diff --git a/src/pkg/packager/deploy.go b/src/pkg/packager/deploy.go index 10f7882300..3f085b25a4 100644 --- a/src/pkg/packager/deploy.go +++ b/src/pkg/packager/deploy.go @@ -319,10 +319,18 @@ func (p *Packager) processComponentFiles(component types.ZarfComponent, pkgLocat // If a shasum is specified check it again on deployment as well if file.Shasum != "" { + tempFileLocation := fileLocation + if file.ArchivePath != "" { + fileSource := filepath.Base(file.Source) + + fileLocation, _ = helpers.RenamePathWithFilename(fileLocation, fileSource) + } + spinner.Updatef("Validating SHASUM for %s", file.Target) if shasum, _ := utils.GetCryptoHashFromFile(fileLocation, crypto.SHA256); shasum != file.Shasum { return fmt.Errorf("shasum mismatch for file %s: expected %s, got %s", file.Source, file.Shasum, shasum) } + fileLocation = tempFileLocation } // Replace temp target directory and home directory diff --git a/src/pkg/utils/helpers/compression.go b/src/pkg/utils/helpers/compression.go index 4eca89b34d..2f8632f5ce 100644 --- a/src/pkg/utils/helpers/compression.go +++ b/src/pkg/utils/helpers/compression.go @@ -5,34 +5,9 @@ package helpers import ( - "fmt" - "net/url" - "os" - "path" - "path/filepath" "strings" ) -func KeepOnlyFile(directory, filename string) error { - files, err := os.ReadDir(directory) - if err != nil { - return err - } - - for _, file := range files { - if file.Name() != filename { - filePath := filepath.Join(directory, file.Name()) - err := os.RemoveAll(filePath) - if err != nil { - return err - } - fmt.Println("Deleted:", filePath) - } - } - - return nil -} - func SupportedCompressionFormat(filename string) bool { supportedFormats := []string{".tar.gz", ".br", ".bz2", ".zip", ".lz4", ".sz", ".xz", ".zz", ".zst"} @@ -43,21 +18,3 @@ func SupportedCompressionFormat(filename string) bool { } return false } - -func GetDirFromFilename(target string) string { - return filepath.Dir(target) -} -func RenamePathWithFilename(target, fileName string) (string, error) { - dir := filepath.Dir(target) - newPath := filepath.Join(dir, fileName) - return newPath, nil -} -func ExtractFilenameFromURL(urlStr string) (string, error) { - parsedURL, err := url.Parse(urlStr) - if err != nil { - return "", err - } - - filename := path.Base(parsedURL.Path) - return filename, nil -} diff --git a/src/pkg/utils/helpers/files.go b/src/pkg/utils/helpers/files.go new file mode 100644 index 0000000000..66347bc290 --- /dev/null +++ b/src/pkg/utils/helpers/files.go @@ -0,0 +1,53 @@ +package helpers + +import ( + "fmt" + "net/url" + "os" + "path" + "path/filepath" +) + +func KeepOnlyFiles(directory string, fileNames []string) error { + files, err := os.ReadDir(directory) + if err != nil { + return err + } + + filesToKeep := make(map[string]bool) + for _, fileName := range fileNames { + filesToKeep[fileName] = true + } + + for _, file := range files { + filePath := filepath.Join(directory, file.Name()) + if !filesToKeep[file.Name()] { + err := os.RemoveAll(filePath) + if err != nil { + return err + } + fmt.Println("Deleted:", filePath) + } + } + + return nil +} + +func GetDirFromFilename(target string) string { + return filepath.Dir(target) +} +func RenamePathWithFilename(target, fileName string) (string, error) { + dir := filepath.Dir(target) + newPath := filepath.Join(dir, fileName) + return newPath, nil +} + +func ExtractFilenameFromURL(urlStr string) (string, error) { + parsedURL, err := url.Parse(urlStr) + if err != nil { + return "", err + } + + filename := path.Base(parsedURL.Path) + return filename, nil +} From a46cc7812effa371e35b00a1d2f3f0dd0cf439a0 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Wed, 9 Aug 2023 15:35:38 -0400 Subject: [PATCH 04/44] draft PR for review Signed-off-by: Case Wylie --- examples/archive-path/zarf.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/examples/archive-path/zarf.yaml b/examples/archive-path/zarf.yaml index ac7e2a9aa7..bfa8d65891 100644 --- a/examples/archive-path/zarf.yaml +++ b/examples/archive-path/zarf.yaml @@ -9,7 +9,8 @@ components: required: true files: - source: https://github.com/fluxcd/flux2/releases/download/v2.0.1/flux_2.0.1_darwin_arm64.tar.gz - target: /Users/cmwylie19/zarf/flux + # target: /Users/cmwylie19/zarf/flux + target: flux executable: true shasum: 520f25324d42e222ccdc75009659452808adcbecb2b744f2ebf037e14e18cd69 archivePath: flux @@ -19,10 +20,8 @@ components: onDeploy: before: - cmd: ./flux -v - dir: /Users/cmwylie19/zarf/ description: What's the version mute: false - cmd: rm flux - dir: /Users/cmwylie19/zarf/ description: Remove the zipped \ No newline at end of file From 7cac2e5a01255c9b109fdb7b07dbf3859cef5dc9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 9 Aug 2023 15:23:54 -0400 Subject: [PATCH 05/44] fix(deps): update all non-major dependencies (#1866) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | Type | Update | |---|---|---|---|---|---|---|---| | [@floating-ui/dom](https://floating-ui.com) ([source](https://togithub.com/floating-ui/floating-ui)) | [`1.4.2` -> `1.4.3`](https://renovatebot.com/diffs/npm/@floating-ui%2fdom/1.4.2/1.4.3) | [![age](https://badges.renovateapi.com/packages/npm/@floating-ui%2fdom/1.4.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@floating-ui%2fdom/1.4.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@floating-ui%2fdom/1.4.3/compatibility-slim/1.4.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@floating-ui%2fdom/1.4.3/confidence-slim/1.4.2)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [@fontsource/roboto](https://fontsource.org/fonts/roboto) ([source](https://togithub.com/fontsource/font-files)) | [`5.0.3` -> `5.0.4`](https://renovatebot.com/diffs/npm/@fontsource%2froboto/5.0.3/5.0.4) | [![age](https://badges.renovateapi.com/packages/npm/@fontsource%2froboto/5.0.4/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@fontsource%2froboto/5.0.4/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@fontsource%2froboto/5.0.4/compatibility-slim/5.0.3)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@fontsource%2froboto/5.0.4/confidence-slim/5.0.3)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [@sveltejs/kit](https://kit.svelte.dev) ([source](https://togithub.com/sveltejs/kit)) | [`1.20.5` -> `1.22.0`](https://renovatebot.com/diffs/npm/@sveltejs%2fkit/1.20.5/1.22.0) | [![age](https://badges.renovateapi.com/packages/npm/@sveltejs%2fkit/1.22.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@sveltejs%2fkit/1.22.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@sveltejs%2fkit/1.22.0/compatibility-slim/1.20.5)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@sveltejs%2fkit/1.22.0/confidence-slim/1.20.5)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [@testing-library/svelte](https://togithub.com/testing-library/svelte-testing-library) | [`4.0.2` -> `4.0.3`](https://renovatebot.com/diffs/npm/@testing-library%2fsvelte/4.0.2/4.0.3) | [![age](https://badges.renovateapi.com/packages/npm/@testing-library%2fsvelte/4.0.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@testing-library%2fsvelte/4.0.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@testing-library%2fsvelte/4.0.3/compatibility-slim/4.0.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@testing-library%2fsvelte/4.0.3/confidence-slim/4.0.2)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [@typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/typescript-eslint) | [`5.60.1` -> `5.61.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/5.60.1/5.61.0) | [![age](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2feslint-plugin/5.61.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2feslint-plugin/5.61.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2feslint-plugin/5.61.0/compatibility-slim/5.60.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2feslint-plugin/5.61.0/confidence-slim/5.60.1)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [@typescript-eslint/parser](https://togithub.com/typescript-eslint/typescript-eslint) | [`5.60.1` -> `5.61.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/5.60.1/5.61.0) | [![age](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2fparser/5.61.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2fparser/5.61.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2fparser/5.61.0/compatibility-slim/5.60.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@typescript-eslint%2fparser/5.61.0/confidence-slim/5.60.1)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [actions/setup-node](https://togithub.com/actions/setup-node) | `v3.6.0` -> `v3.7.0` | [![age](https://badges.renovateapi.com/packages/github-tags/actions%2fsetup-node/v3.7.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/github-tags/actions%2fsetup-node/v3.7.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/github-tags/actions%2fsetup-node/v3.7.0/compatibility-slim/v3.6.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/github-tags/actions%2fsetup-node/v3.7.0/confidence-slim/v3.6.0)](https://docs.renovatebot.com/merge-confidence/) | action | minor | | [aws](https://registry.terraform.io/providers/hashicorp/aws) ([source](https://togithub.com/hashicorp/terraform-provider-aws)) | `~> 5.5.0` -> `~> 5.6.0` | [![age](https://badges.renovateapi.com/packages/terraform-provider/aws/5.6.2/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/terraform-provider/aws/5.6.2/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/terraform-provider/aws/5.6.2/compatibility-slim/5.5.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/terraform-provider/aws/5.6.2/confidence-slim/5.5.0)](https://docs.renovatebot.com/merge-confidence/) | required_provider | minor | | [big-bang/bigbang](https://repo1.dso.mil/big-bang/bigbang) | `2.4.1` -> `2.5.0` | [![age](https://badges.renovateapi.com/packages/gitlab-releases/big-bang%2fbigbang/2.5.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/gitlab-releases/big-bang%2fbigbang/2.5.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/gitlab-releases/big-bang%2fbigbang/2.5.0/compatibility-slim/2.4.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/gitlab-releases/big-bang%2fbigbang/2.5.0/confidence-slim/2.4.1)](https://docs.renovatebot.com/merge-confidence/) | | minor | | [eslint](https://eslint.org) ([source](https://togithub.com/eslint/eslint)) | [`8.43.0` -> `8.44.0`](https://renovatebot.com/diffs/npm/eslint/8.43.0/8.44.0) | [![age](https://badges.renovateapi.com/packages/npm/eslint/8.44.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/eslint/8.44.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/eslint/8.44.0/compatibility-slim/8.43.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/eslint/8.44.0/confidence-slim/8.43.0)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor | | [eslint-plugin-svelte](https://sveltejs.github.io/eslint-plugin-svelte) ([source](https://togithub.com/sveltejs/eslint-plugin-svelte)) | [`2.32.0` -> `2.32.2`](https://renovatebot.com/diffs/npm/eslint-plugin-svelte/2.32.0/2.32.2) | [![age](https://badges.renovateapi.com/packages/npm/eslint-plugin-svelte/2.32.2/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/eslint-plugin-svelte/2.32.2/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/eslint-plugin-svelte/2.32.2/compatibility-slim/2.32.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/eslint-plugin-svelte/2.32.2/confidence-slim/2.32.0)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [github.com/anchore/syft](https://togithub.com/anchore/syft) | `v0.84.0` -> `v0.84.1` | [![age](https://badges.renovateapi.com/packages/go/github.com%2fanchore%2fsyft/v0.84.1/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/go/github.com%2fanchore%2fsyft/v0.84.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/go/github.com%2fanchore%2fsyft/v0.84.1/compatibility-slim/v0.84.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/go/github.com%2fanchore%2fsyft/v0.84.1/confidence-slim/v0.84.0)](https://docs.renovatebot.com/merge-confidence/) | require | patch | | [github.com/fluxcd/helm-controller/api](https://togithub.com/fluxcd/helm-controller) | `v0.34.2` -> `v0.35.0` | [![age](https://badges.renovateapi.com/packages/go/github.com%2ffluxcd%2fhelm-controller%2fapi/v0.35.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/go/github.com%2ffluxcd%2fhelm-controller%2fapi/v0.35.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/go/github.com%2ffluxcd%2fhelm-controller%2fapi/v0.35.0/compatibility-slim/v0.34.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/go/github.com%2ffluxcd%2fhelm-controller%2fapi/v0.35.0/confidence-slim/v0.34.2)](https://docs.renovatebot.com/merge-confidence/) | require | minor | | [github.com/opencontainers/image-spec](https://togithub.com/opencontainers/image-spec) | `v1.1.0-rc3` -> `v1.1.0-rc4` | [![age](https://badges.renovateapi.com/packages/go/github.com%2fopencontainers%2fimage-spec/v1.1.0-rc4/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/go/github.com%2fopencontainers%2fimage-spec/v1.1.0-rc4/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/go/github.com%2fopencontainers%2fimage-spec/v1.1.0-rc4/compatibility-slim/v1.1.0-rc3)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/go/github.com%2fopencontainers%2fimage-spec/v1.1.0-rc4/confidence-slim/v1.1.0-rc3)](https://docs.renovatebot.com/merge-confidence/) | require | patch | | [github/codeql-action](https://togithub.com/github/codeql-action) | `v2.20.1` -> `v2.20.2` | [![age](https://badges.renovateapi.com/packages/github-tags/github%2fcodeql-action/v2.20.2/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/github-tags/github%2fcodeql-action/v2.20.2/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/github-tags/github%2fcodeql-action/v2.20.2/compatibility-slim/v2.20.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/github-tags/github%2fcodeql-action/v2.20.2/confidence-slim/v2.20.1)](https://docs.renovatebot.com/merge-confidence/) | action | patch | | golang.org/x/crypto | `v0.10.0` -> `v0.11.0` | [![age](https://badges.renovateapi.com/packages/go/golang.org%2fx%2fcrypto/v0.11.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/go/golang.org%2fx%2fcrypto/v0.11.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/go/golang.org%2fx%2fcrypto/v0.11.0/compatibility-slim/v0.10.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/go/golang.org%2fx%2fcrypto/v0.11.0/confidence-slim/v0.10.0)](https://docs.renovatebot.com/merge-confidence/) | require | minor | | [longhorn](https://togithub.com/longhorn/longhorn) ([source](https://togithub.com/longhorn/charts)) | `1.4.0` -> `1.4.2` | [![age](https://badges.renovateapi.com/packages/helm/longhorn/1.4.2/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/helm/longhorn/1.4.2/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/helm/longhorn/1.4.2/compatibility-slim/1.4.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/helm/longhorn/1.4.2/confidence-slim/1.4.0)](https://docs.renovatebot.com/merge-confidence/) | | patch | | [material-symbols](https://marella.github.io/material-symbols/demo/) ([source](https://togithub.com/marella/material-symbols)) | [`0.8.1` -> `0.9.0`](https://renovatebot.com/diffs/npm/material-symbols/0.8.1/0.9.0) | [![age](https://badges.renovateapi.com/packages/npm/material-symbols/0.9.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/material-symbols/0.9.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/material-symbols/0.9.0/compatibility-slim/0.8.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/material-symbols/0.9.0/confidence-slim/0.8.1)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor | | oras.land/oras-go/v2 | `v2.2.0` -> `v2.2.1` | [![age](https://badges.renovateapi.com/packages/go/oras.land%2foras-go%2fv2/v2.2.1/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/go/oras.land%2foras-go%2fv2/v2.2.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/go/oras.land%2foras-go%2fv2/v2.2.1/compatibility-slim/v2.2.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/go/oras.land%2foras-go%2fv2/v2.2.1/confidence-slim/v2.2.0)](https://docs.renovatebot.com/merge-confidence/) | require | patch | | [quicktype](https://togithub.com/quicktype/quicktype) | [`23.0.48` -> `23.0.49`](https://renovatebot.com/diffs/npm/quicktype/23.0.48/23.0.49) | [![age](https://badges.renovateapi.com/packages/npm/quicktype/23.0.49/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/quicktype/23.0.49/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/quicktype/23.0.49/compatibility-slim/23.0.48)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/quicktype/23.0.49/confidence-slim/23.0.48)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [serde_json](https://togithub.com/serde-rs/json) | `1.0.99` -> `1.0.100` | [![age](https://badges.renovateapi.com/packages/crate/serde_json/1.0.100/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/crate/serde_json/1.0.100/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/crate/serde_json/1.0.100/compatibility-slim/1.0.99)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/crate/serde_json/1.0.100/confidence-slim/1.0.99)](https://docs.renovatebot.com/merge-confidence/) | dependencies | patch | | [sigs.k8s.io/kustomize/api](https://togithub.com/kubernetes-sigs/kustomize) | `v0.13.4` -> `v0.14.0` | [![age](https://badges.renovateapi.com/packages/go/sigs.k8s.io%2fkustomize%2fapi/v0.14.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/go/sigs.k8s.io%2fkustomize%2fapi/v0.14.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/go/sigs.k8s.io%2fkustomize%2fapi/v0.14.0/compatibility-slim/v0.13.4)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/go/sigs.k8s.io%2fkustomize%2fapi/v0.14.0/confidence-slim/v0.13.4)](https://docs.renovatebot.com/merge-confidence/) | require | minor | | [svelte](https://svelte.dev) ([source](https://togithub.com/sveltejs/svelte)) | [`4.0.0` -> `4.0.4`](https://renovatebot.com/diffs/npm/svelte/4.0.0/4.0.4) | [![age](https://badges.renovateapi.com/packages/npm/svelte/4.0.4/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/svelte/4.0.4/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/svelte/4.0.4/compatibility-slim/4.0.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/svelte/4.0.4/confidence-slim/4.0.0)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [typescript](https://www.typescriptlang.org/) ([source](https://togithub.com/Microsoft/TypeScript)) | [`5.1.5` -> `5.1.6`](https://renovatebot.com/diffs/npm/typescript/5.1.5/5.1.6) | [![age](https://badges.renovateapi.com/packages/npm/typescript/5.1.6/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/typescript/5.1.6/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/typescript/5.1.6/compatibility-slim/5.1.5)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/typescript/5.1.6/confidence-slim/5.1.5)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch | | [weaveworks/eksctl](https://togithub.com/weaveworks/eksctl) | `v0.146.0` -> `v0.147.0` | [![age](https://badges.renovateapi.com/packages/github-releases/weaveworks%2feksctl/v0.147.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/github-releases/weaveworks%2feksctl/v0.147.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/github-releases/weaveworks%2feksctl/v0.147.0/compatibility-slim/v0.146.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/github-releases/weaveworks%2feksctl/v0.147.0/confidence-slim/v0.146.0)](https://docs.renovatebot.com/merge-confidence/) | | minor | --- ### ⚠ Dependency Lookup Warnings ⚠ Warnings were logged while processing this repo. Please check the Dependency Dashboard for more information. --- ### Release Notes
floating-ui/floating-ui (@​floating-ui/dom) ### [`v1.4.3`](https://togithub.com/floating-ui/floating-ui/releases/tag/%40floating-ui/dom%401.4.3) [Compare Source](https://togithub.com/floating-ui/floating-ui/compare/@floating-ui/dom@1.4.2...@floating-ui/dom@1.4.3) #### Bug Fixes - fix(autoUpdate): handle `layoutShift` in `iframe`s ([#​2400](https://togithub.com/floating-ui/floating-ui/issues/2400)) - fix(autoUpdate): prevent `ResizeObserver` loop error when using `size` middleware when the reference element resizes ([#​2335](https://togithub.com/floating-ui/floating-ui/issues/2335)) - fix(autoUpdate): check if `ResizeObserver` exists to support testing envs by default ([#​2401](https://togithub.com/floating-ui/floating-ui/issues/2401)) - fix: incorrect positioning for `position: fixed` floating elements inside containers with `container-type` style (container queries) ([#​2402](https://togithub.com/floating-ui/floating-ui/issues/2402))
fontsource/font-files (@​fontsource/roboto) ### [`v5.0.4`](https://togithub.com/fontsource/font-files/compare/374cfdd71e905ac82abd9b7772813228f01efa81...b02089c146de321a36fd941f4129392b8f5fbccd) [Compare Source](https://togithub.com/fontsource/font-files/compare/374cfdd71e905ac82abd9b7772813228f01efa81...b02089c146de321a36fd941f4129392b8f5fbccd)
sveltejs/kit (@​sveltejs/kit) ### [`v1.22.0`](https://togithub.com/sveltejs/kit/blob/HEAD/packages/kit/CHANGELOG.md#​1220) [Compare Source](https://togithub.com/sveltejs/kit/compare/@sveltejs/kit@1.21.0...@sveltejs/kit@1.22.0) ##### Minor Changes - feat: add `HEAD` server method ([#​9753](https://togithub.com/sveltejs/kit/pull/9753)) - feat: support caching of responses with `Vary` header (except for `Vary: *`) ([#​9993](https://togithub.com/sveltejs/kit/pull/9993)) ##### Patch Changes - fix: avoid running load function on invalid requests ([#​9752](https://togithub.com/sveltejs/kit/pull/9752)) - fix: update page store when URL hash is changed from the address bar ([#​10202](https://togithub.com/sveltejs/kit/pull/10202)) - fix: include `Vary: Accept` header to fix browser caching of adjacent pages and endpoints ([#​9993](https://togithub.com/sveltejs/kit/pull/9993)) ### [`v1.21.0`](https://togithub.com/sveltejs/kit/blob/HEAD/packages/kit/CHANGELOG.md#​1210) [Compare Source](https://togithub.com/sveltejs/kit/compare/@sveltejs/kit@1.20.5...@sveltejs/kit@1.21.0) ##### Minor Changes - feat: add `event.isSubRequest` boolean indicating whether this is a call to one of the app's own APIs during SSR (or prerendering) ([#​10170](https://togithub.com/sveltejs/kit/pull/10170)) - feat: add `privatePrefix` to `config.kit.env` ([#​9996](https://togithub.com/sveltejs/kit/pull/9996)) - feat: export `VERSION` from `@sveltejs/kit` ([#​9969](https://togithub.com/sveltejs/kit/pull/9969)) ##### Patch Changes - docs: update inline NavigationType documentation ([#​10269](https://togithub.com/sveltejs/kit/pull/10269)) - perf: cache dynamic imports of nodes ([#​10080](https://togithub.com/sveltejs/kit/pull/10080))
testing-library/svelte-testing-library (@​testing-library/svelte) ### [`v4.0.3`](https://togithub.com/testing-library/svelte-testing-library/releases/tag/v4.0.3) [Compare Source](https://togithub.com/testing-library/svelte-testing-library/compare/v4.0.2...v4.0.3) ##### Bug Fixes - package.json exports order ([ed0bcdc](https://togithub.com/testing-library/svelte-testing-library/commit/ed0bcdc6af9801db324f2b579523924cfd759acb))
typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin) ### [`v5.61.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#​5610-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5601v5610-2023-07-03) [Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) ##### Features - **eslint-plugin:** \[ban-types] ban types in extends and implements ([#​7129](https://togithub.com/typescript-eslint/typescript-eslint/issues/7129)) ([997783f](https://togithub.com/typescript-eslint/typescript-eslint/commit/997783ff108ca18af709667ef3fdfa7134a8eefe)) - use graphemer instead of grapheme-splitter ([#​7069](https://togithub.com/typescript-eslint/typescript-eslint/issues/7069)) ([faea3ff](https://togithub.com/typescript-eslint/typescript-eslint/commit/faea3ff8b4d750974c41262b44db314f20d0c99c)) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. #### [5.60.1](https://togithub.com/typescript-eslint/typescript-eslint/compare/v5.60.0...v5.60.1) (2023-06-26) **Note:** Version bump only for package [@​typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
typescript-eslint/typescript-eslint (@​typescript-eslint/parser) ### [`v5.61.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#​5610-httpsgithubcomtypescript-eslinttypescript-eslintcomparev5601v5610-2023-07-03) [Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v5.60.1...v5.61.0) **Note:** Version bump only for package [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website. #### [5.60.1](https://togithub.com/typescript-eslint/typescript-eslint/compare/v5.60.0...v5.60.1) (2023-06-26) **Note:** Version bump only for package [@​typescript-eslint/parser](https://togithub.com/typescript-eslint/parser) You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.
actions/setup-node (actions/setup-node) ### [`v3.7.0`](https://togithub.com/actions/setup-node/releases/tag/v3.7.0) [Compare Source](https://togithub.com/actions/setup-node/compare/v3.6.0...v3.7.0) #### What's Changed In scope of this release we added a logic to save an additional cache path for yarn 3 ([related pull request](https://togithub.com/actions/setup-node/pull/744) and [feature request](https://togithub.com/actions/setup-node/issues/325)). Moreover, we added functionality to use all the sub directories derived from `cache-dependency-path` input and add detect all dependencies directories to cache (related [pull request](https://togithub.com/actions/setup-node/pull/735) and [feature request](https://togithub.com/actions/setup-node/issues/488)). ##### Besides, we made such changes as: - Replace workflow badge with new badge by [@​jongwooo](https://togithub.com/jongwooo) in [https://github.com/actions/setup-node/pull/653](https://togithub.com/actions/setup-node/pull/653) - Fix a minor typo by [@​phanan](https://togithub.com/phanan) in [https://github.com/actions/setup-node/pull/662](https://togithub.com/actions/setup-node/pull/662) - docs: fix typo in advanced-usage.md by [@​remarkablemark](https://togithub.com/remarkablemark) in [https://github.com/actions/setup-node/pull/697](https://togithub.com/actions/setup-node/pull/697) - bugfix: Don't attempt to use Windows fallbacks on non-Windows OSes by [@​domdomegg](https://togithub.com/domdomegg) in [https://github.com/actions/setup-node/pull/718](https://togithub.com/actions/setup-node/pull/718) - Update to node 18.x by [@​feelepxyz](https://togithub.com/feelepxyz) in [https://github.com/actions/setup-node/pull/751](https://togithub.com/actions/setup-node/pull/751) - Remove implicit dependencies by [@​nikolai-laevskii](https://togithub.com/nikolai-laevskii) in [https://github.com/actions/setup-node/pull/758](https://togithub.com/actions/setup-node/pull/758) - Fix description about ensuring workflow access to private package by [@​x86chi](https://togithub.com/x86chi) in [https://github.com/actions/setup-node/pull/704](https://togithub.com/actions/setup-node/pull/704) #### New Contributors - [@​jongwooo](https://togithub.com/jongwooo) made their first contribution in [https://github.com/actions/setup-node/pull/653](https://togithub.com/actions/setup-node/pull/653) - [@​phanan](https://togithub.com/phanan) made their first contribution in [https://github.com/actions/setup-node/pull/662](https://togithub.com/actions/setup-node/pull/662) - [@​remarkablemark](https://togithub.com/remarkablemark) made their first contribution in [https://github.com/actions/setup-node/pull/697](https://togithub.com/actions/setup-node/pull/697) - [@​domdomegg](https://togithub.com/domdomegg) made their first contribution in [https://github.com/actions/setup-node/pull/718](https://togithub.com/actions/setup-node/pull/718) - [@​feelepxyz](https://togithub.com/feelepxyz) made their first contribution in [https://github.com/actions/setup-node/pull/751](https://togithub.com/actions/setup-node/pull/751) - [@​nikolai-laevskii](https://togithub.com/nikolai-laevskii) made their first contribution in [https://github.com/actions/setup-node/pull/758](https://togithub.com/actions/setup-node/pull/758) - [@​x86chi](https://togithub.com/x86chi) made their first contribution in [https://github.com/actions/setup-node/pull/704](https://togithub.com/actions/setup-node/pull/704) **Full Changelog**: https://github.com/actions/setup-node/compare/v3...v3.7.0
hashicorp/terraform-provider-aws (aws) ### [`v5.6.2`](https://togithub.com/hashicorp/terraform-provider-aws/blob/HEAD/CHANGELOG.md#​562-June-30-2023) [Compare Source](https://togithub.com/hashicorp/terraform-provider-aws/compare/v5.6.1...v5.6.2) BUG FIXES: - resource/aws_s3\_bucket: Fix `InvalidArgument: Invalid attribute name specified` errors when listing S3 Bucket objects, caused by an [AWS SDK for Go regression](https://togithub.com/aws/aws-sdk-go/issues/4897) ([#​32317](https://togithub.com/hashicorp/terraform-provider-aws/issues/32317)) ### [`v5.6.1`](https://togithub.com/hashicorp/terraform-provider-aws/blob/HEAD/CHANGELOG.md#​561-June-30-2023) [Compare Source](https://togithub.com/hashicorp/terraform-provider-aws/compare/v5.6.0...v5.6.1) BUG FIXES: - provider: Prevent resource recreation if `tags` or `tags_all` are updated ([#​32297](https://togithub.com/hashicorp/terraform-provider-aws/issues/32297)) ### [`v5.6.0`](https://togithub.com/hashicorp/terraform-provider-aws/blob/HEAD/CHANGELOG.md#​560-June-29-2023) [Compare Source](https://togithub.com/hashicorp/terraform-provider-aws/compare/v5.5.0...v5.6.0) FEATURES: - **New Data Source:** `aws_opensearchserverless_access_policy` ([#​32231](https://togithub.com/hashicorp/terraform-provider-aws/issues/32231)) - **New Data Source:** `aws_opensearchserverless_collection` ([#​32247](https://togithub.com/hashicorp/terraform-provider-aws/issues/32247)) - **New Data Source:** `aws_sfn_alias` ([#​32176](https://togithub.com/hashicorp/terraform-provider-aws/issues/32176)) - **New Data Source:** `aws_sfn_state_machine_versions` ([#​32176](https://togithub.com/hashicorp/terraform-provider-aws/issues/32176)) - **New Resource:** `aws_ec2_instance_connect_endpoint` ([#​31858](https://togithub.com/hashicorp/terraform-provider-aws/issues/31858)) - **New Resource:** `aws_sfn_alias` ([#​32176](https://togithub.com/hashicorp/terraform-provider-aws/issues/32176)) - **New Resource:** `aws_transfer_agreement` ([#​32203](https://togithub.com/hashicorp/terraform-provider-aws/issues/32203)) - **New Resource:** `aws_transfer_certificate` ([#​32203](https://togithub.com/hashicorp/terraform-provider-aws/issues/32203)) - **New Resource:** `aws_transfer_connector` ([#​32203](https://togithub.com/hashicorp/terraform-provider-aws/issues/32203)) - **New Resource:** `aws_transfer_profile` ([#​32203](https://togithub.com/hashicorp/terraform-provider-aws/issues/32203)) ENHANCEMENTS: - resource/aws_batch_compute_environment: Add `placement_group` attribute to the `compute_resources` configuration block ([#​32200](https://togithub.com/hashicorp/terraform-provider-aws/issues/32200)) - resource/aws_emrserverless_application: Do not recreate the resource if `release_label` changes ([#​32278](https://togithub.com/hashicorp/terraform-provider-aws/issues/32278)) - resource/aws_fis_experiment_template: Add `log_configuration` configuration block ([#​32102](https://togithub.com/hashicorp/terraform-provider-aws/issues/32102)) - resource/aws_fis_experiment_template: Add `parameters` attribute to the `target` configuration block ([#​32160](https://togithub.com/hashicorp/terraform-provider-aws/issues/32160)) - resource/aws_fis_experiment_template: Add support for `Pods` and `Tasks` to `action.*.target` ([#​32152](https://togithub.com/hashicorp/terraform-provider-aws/issues/32152)) - resource/aws_lambda_event_source_mapping: The `queues` argument has changed from a set to a list with a maximum of one element. ([#​31931](https://togithub.com/hashicorp/terraform-provider-aws/issues/31931)) - resource/aws_pipes_pipe: Add `activemq_broker_parameters`, `dynamodb_stream_parameters`, `kinesis_stream_parameters`, `managed_streaming_kafka_parameters`, `rabbitmq_broker_parameters`, `self_managed_kafka_parameters` and `sqs_queue_parameters` attributes to the `source_parameters` configuration block. NOTE: Because we cannot easily test all this functionality, it is best effort and we ask for community help in testing ([#​31607](https://togithub.com/hashicorp/terraform-provider-aws/issues/31607)) - resource/aws_pipes_pipe: Add `batch_job_parameters`, `cloudwatch_logs_parameters`, `ecs_task_parameters`, `eventbridge_event_bus_parameters`, `http_parameters`, `kinesis_stream_parameters`, `lambda_function_parameters`, `redshift_data_parameters`, `sagemaker_pipeline_parameters`, `sqs_queue_parameters` and `step_function_state_machine_parameters` attributes to the `target_parameters` configuration block. NOTE: Because we cannot easily test all this functionality, it is best effort and we ask for community help in testing ([#​31607](https://togithub.com/hashicorp/terraform-provider-aws/issues/31607)) - resource/aws_pipes_pipe: Add `enrichment_parameters` argument ([#​31607](https://togithub.com/hashicorp/terraform-provider-aws/issues/31607)) - resource/aws_resourcegroups_group: `resource_query` no longer conflicts with `configuration` ([#​30242](https://togithub.com/hashicorp/terraform-provider-aws/issues/30242)) - resource/aws_s3\_bucket_logging: Retry on empty read of logging config ([#​30916](https://togithub.com/hashicorp/terraform-provider-aws/issues/30916)) - resource/aws_sfn_state_machine: Add `description`, `publish`, `revision_id`, `state_machine_version_arn` and `version_description` attributes ([#​32176](https://togithub.com/hashicorp/terraform-provider-aws/issues/32176)) BUG FIXES: - resource/aws_db_instance: Fix resource Create returning instances not in the `available` state when `identifier_prefix` is specified ([#​32287](https://togithub.com/hashicorp/terraform-provider-aws/issues/32287)) - resource/aws_resourcegroups_resource: Fix crash when resource Create fails ([#​30242](https://togithub.com/hashicorp/terraform-provider-aws/issues/30242)) - resource/aws_route: Fix `reading Route in Route Table (rtb-1234abcd) with destination (1.2.3.4/5): couldn't find resource` errors when reading new resource ([#​32196](https://togithub.com/hashicorp/terraform-provider-aws/issues/32196)) - resource/aws_vpc_security_group_egress_rule: `security_group_id` is Required ([#​32148](https://togithub.com/hashicorp/terraform-provider-aws/issues/32148)) - resource/aws_vpc_security_group_ingress_rule: `security_group_id` is Required ([#​32148](https://togithub.com/hashicorp/terraform-provider-aws/issues/32148))
eslint/eslint (eslint) ### [`v8.44.0`](https://togithub.com/eslint/eslint/releases/tag/v8.44.0) [Compare Source](https://togithub.com/eslint/eslint/compare/v8.43.0...v8.44.0) ##### Features - [`1766771`](https://togithub.com/eslint/eslint/commit/176677180a4a1209fc192771521c9192e1f67578) feat: add `es2023` and `es2024` environments ([#​17328](https://togithub.com/eslint/eslint/issues/17328)) (Milos Djermanovic) - [`4c50400`](https://togithub.com/eslint/eslint/commit/4c5040022639ae804c15b366afc6e64982bd8ae3) feat: add `ecmaVersion: 2024`, regexp `v` flag parsing ([#​17324](https://togithub.com/eslint/eslint/issues/17324)) (Milos Djermanovic) - [`4d411e4`](https://togithub.com/eslint/eslint/commit/4d411e4c7063274d6d346f1b7ee46f7575d0bbd2) feat: add ternaryOperandBinaryExpressions option to no-extra-parens rule ([#​17270](https://togithub.com/eslint/eslint/issues/17270)) (Percy Ma) - [`c8b1f4d`](https://togithub.com/eslint/eslint/commit/c8b1f4d61a256727755d561bf53f889b6cd712e0) feat: Move `parserServices` to `SourceCode` ([#​17311](https://togithub.com/eslint/eslint/issues/17311)) (Milos Djermanovic) - [`ef6e24e`](https://togithub.com/eslint/eslint/commit/ef6e24e42670f321d996948623846d9caaedac99) feat: treat unknown nodes as having the lowest precedence ([#​17302](https://togithub.com/eslint/eslint/issues/17302)) (Brad Zacher) - [`1866e1d`](https://togithub.com/eslint/eslint/commit/1866e1df6175e4ba0ae4a0d88dc3c956bb310035) feat: allow flat config files to export a Promise ([#​17301](https://togithub.com/eslint/eslint/issues/17301)) (Milos Djermanovic) ##### Bug Fixes - [`a36bcb6`](https://togithub.com/eslint/eslint/commit/a36bcb67f26be42c794797d0cc9948b9cfd4ff71) fix: no-unused-vars false positive with logical assignment operators ([#​17320](https://togithub.com/eslint/eslint/issues/17320)) (Gweesin Chan) - [`7620b89`](https://togithub.com/eslint/eslint/commit/7620b891e81c234f30f9dbcceb64a05fd0dde65e) fix: Remove `no-unused-labels` autofix before potential directives ([#​17314](https://togithub.com/eslint/eslint/issues/17314)) (Francesco Trotta) - [`391ed38`](https://togithub.com/eslint/eslint/commit/391ed38b09bd1a3abe85db65b8fcda980ab3d6f4) fix: Remove `no-extra-semi` autofix before potential directives ([#​17297](https://togithub.com/eslint/eslint/issues/17297)) (Francesco Trotta) ##### Documentation - [`526e911`](https://togithub.com/eslint/eslint/commit/526e91106e6fe101578e9478a9d7f4844d4f72ac) docs: resubmit pr 17115 doc changes ([#​17291](https://togithub.com/eslint/eslint/issues/17291)) (唯然) - [`e1314bf`](https://togithub.com/eslint/eslint/commit/e1314bf85a52bb0d05b1c9ca3b4c1732bae22172) docs: Integration section and tutorial ([#​17132](https://togithub.com/eslint/eslint/issues/17132)) (Ben Perlmutter) - [`19a8c5d`](https://togithub.com/eslint/eslint/commit/19a8c5d84596a9f7f2aa428c1696ba86daf854e6) docs: Update README (GitHub Actions Bot) ##### Chores - [`49e46ed`](https://togithub.com/eslint/eslint/commit/49e46edf3c8dc71d691a97fc33b63ed80ae0db0c) chore: upgrade [@​eslint/js](https://togithub.com/eslint/js)[@​8](https://togithub.com/8).44.0 ([#​17329](https://togithub.com/eslint/eslint/issues/17329)) (Milos Djermanovic) - [`a1cb642`](https://togithub.com/eslint/eslint/commit/a1cb6421f9d185901cd99e5f696e912226ef6632) chore: package.json update for [@​eslint/js](https://togithub.com/eslint/js) release (ESLint Jenkins) - [`840a264`](https://togithub.com/eslint/eslint/commit/840a26462bbf6c27c52c01b85ee2018062157951) test: More test cases for no-case-declarations ([#​17315](https://togithub.com/eslint/eslint/issues/17315)) (Elian Cordoba) - [`e6e74f9`](https://togithub.com/eslint/eslint/commit/e6e74f9eef0448129dd4775628aba554a2d8c8c9) chore: package.json update for eslint-config-eslint release (ESLint Jenkins) - [`eb3d794`](https://togithub.com/eslint/eslint/commit/eb3d7946e1e9f70254008744dba2397aaa730114) chore: upgrade semver@7.5.3 ([#​17323](https://togithub.com/eslint/eslint/issues/17323)) (Ziyad El Abid) - [`cf88439`](https://togithub.com/eslint/eslint/commit/cf884390ad8071d88eae05df9321100f1770363d) chore: upgrade optionator@0.9.3 ([#​17319](https://togithub.com/eslint/eslint/issues/17319)) (Milos Djermanovic) - [`9718a97`](https://togithub.com/eslint/eslint/commit/9718a9781d69d2c40b68c631aed97700b32c0082) refactor: remove unnecessary code in `flat-eslint.js` ([#​17308](https://togithub.com/eslint/eslint/issues/17308)) (Milos Djermanovic) - [`f82e56e`](https://togithub.com/eslint/eslint/commit/f82e56e9acfb9562ece76441472d5657d7d5e296) perf: various performance improvements ([#​17135](https://togithub.com/eslint/eslint/issues/17135)) (moonlightaria) - [`da81e66`](https://togithub.com/eslint/eslint/commit/da81e66e22b4f3d3fe292cf70c388753304deaad) chore: update eslint-plugin-jsdoc to 46.2.5 ([#​17245](https://togithub.com/eslint/eslint/issues/17245)) (唯然) - [`b991640`](https://togithub.com/eslint/eslint/commit/b991640176d5dce4750f7cc71c56cd6f284c882f) chore: switch eslint-config-eslint to the flat format ([#​17247](https://togithub.com/eslint/eslint/issues/17247)) (唯然)
sveltejs/eslint-plugin-svelte (eslint-plugin-svelte) ### [`v2.32.2`](https://togithub.com/sveltejs/eslint-plugin-svelte/blob/HEAD/CHANGELOG.md#​2322) [Compare Source](https://togithub.com/sveltejs/eslint-plugin-svelte/compare/v2.32.1...v2.32.2) ##### Patch Changes - [#​530](https://togithub.com/sveltejs/eslint-plugin-svelte/pull/530) [`c584404`](https://togithub.com/sveltejs/eslint-plugin-svelte/commit/c584404bd5a2134d81067abbd3c01525abc8e9f7) Thanks [@​pawelblaszczyk5](https://togithub.com/pawelblaszczyk5)! - fix: handle type aliases for $Events and $Slots declarations ### [`v2.32.1`](https://togithub.com/sveltejs/eslint-plugin-svelte/blob/HEAD/CHANGELOG.md#​2321) [Compare Source](https://togithub.com/sveltejs/eslint-plugin-svelte/compare/v2.32.0...v2.32.1) ##### Patch Changes - [#​527](https://togithub.com/sveltejs/eslint-plugin-svelte/pull/527) [`0212a78`](https://togithub.com/sveltejs/eslint-plugin-svelte/commit/0212a78541e2ff51305c3b75f115dabcba73ab78) Thanks [@​marekdedic](https://togithub.com/marekdedic)! - fix(no-ununsed-class-name): fixed an error with `@use` at-rules
anchore/syft (github.com/anchore/syft) ### [`v0.84.1`](https://togithub.com/anchore/syft/releases/tag/v0.84.1) [Compare Source](https://togithub.com/anchore/syft/compare/v0.84.0...v0.84.1) ### Changelog #### [v0.84.1](https://togithub.com/anchore/syft/tree/v0.84.1) (2023-06-29) [Full Changelog](https://togithub.com/anchore/syft/compare/v0.84.0...v0.84.1) ##### Bug Fixes - Fix version detection in Java archive name parsing \[[PR #​1889](https://togithub.com/anchore/syft/pull/1889)] \[[luhring](https://togithub.com/luhring)] - Improve support for Dart SDK package dependency lockfiles \[[PR #​1891](https://togithub.com/anchore/syft/pull/1891)] \[[rufman](https://togithub.com/rufman)] - Fix license output for some CycloneDX JSON SBOMs \[[Issue #​1877](https://togithub.com/anchore/syft/issues/1877)] \[[PR #​1879](https://togithub.com/anchore/syft/pull/1879)] \[[kzantow](https://togithub.com/kzantow)] - Correctly discover Debian file relationships in distroless images \[[Issue #​1900](https://togithub.com/anchore/syft/issues/1900)] \[[PR #​1901](https://togithub.com/anchore/syft/pull/1901)] \[[westonsteimel](https://togithub.com/westonsteimel)] ##### Additional Changes - Simplify the SBOM writer interface \[[PR #​1892](https://togithub.com/anchore/syft/pull/1892)] \[[wagoodman](https://togithub.com/wagoodman)]
fluxcd/helm-controller (github.com/fluxcd/helm-controller/api) ### [`v0.35.0`](https://togithub.com/fluxcd/helm-controller/releases/tag/v0.35.0) [Compare Source](https://togithub.com/fluxcd/helm-controller/compare/v0.34.2...v0.35.0) #### Changelog [v0.35.0 changelog](https://togithub.com/fluxcd/helm-controller/blob/v0.35.0/CHANGELOG.md) #### Container images - `docker.io/fluxcd/helm-controller:v0.35.0` - `ghcr.io/fluxcd/helm-controller:v0.35.0` Supported architectures: `linux/amd64`, `linux/arm64` and `linux/arm/v7`. The container images are built on GitHub hosted runners and are signed with cosign and GitHub OIDC. To verify the images and their provenance (SLSA level 3), please see the [security documentation](https://fluxcd.io/flux/security/).
opencontainers/image-spec (github.com/opencontainers/image-spec) ### [`v1.1.0-rc4`](https://togithub.com/opencontainers/image-spec/releases/tag/v1.1.0-rc4) [Compare Source](https://togithub.com/opencontainers/image-spec/compare/v1.1.0-rc3...v1.1.0-rc4) Vote passed \[+6 -0]: https://groups.google.com/a/opencontainers.org/g/dev/c/gPgzESGb7xs For changeset and diff please see - [https://github.com/opencontainers/image-spec/pull/1080](https://togithub.com/opencontainers/image-spec/pull/1080)
github/codeql-action (github/codeql-action) ### [`v2.20.2`](https://togithub.com/github/codeql-action/compare/v2.20.1...v2.20.2) [Compare Source](https://togithub.com/github/codeql-action/compare/v2.20.1...v2.20.2)
longhorn/charts (longhorn) ### [`v1.4.2`](https://togithub.com/longhorn/charts/releases/tag/longhorn-1.4.2) [Compare Source](https://togithub.com/longhorn/charts/compare/longhorn-1.4.1...longhorn-1.4.2) Longhorn is a distributed block storage system for Kubernetes. ### [`v1.4.1`](https://togithub.com/longhorn/charts/releases/tag/longhorn-1.4.1) [Compare Source](https://togithub.com/longhorn/charts/compare/longhorn-1.4.0...longhorn-1.4.1) Longhorn is a distributed block storage system for Kubernetes.
marella/material-symbols (material-symbols) ### [`v0.9.0`](https://togithub.com/marella/material-symbols/compare/v0.8.1...v0.9.0) [Compare Source](https://togithub.com/marella/material-symbols/compare/v0.8.1...v0.9.0)
quicktype/quicktype (quicktype) ### [`v23.0.49`](https://togithub.com/quicktype/quicktype/compare/90be42511604485f6d78be5d1458ca3aa2083906...fed3738eda530454454a0ca23855f2b1cc84e3b2) [Compare Source](https://togithub.com/quicktype/quicktype/compare/90be42511604485f6d78be5d1458ca3aa2083906...fed3738eda530454454a0ca23855f2b1cc84e3b2)
serde-rs/json (serde_json) ### [`v1.0.100`](https://togithub.com/serde-rs/json/releases/tag/v1.0.100) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.99...v1.0.100) - Support `-Z minimal-versions`
sveltejs/svelte (svelte) ### [`v4.0.4`](https://togithub.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#​404) [Compare Source](https://togithub.com/sveltejs/svelte/compare/svelte@4.0.3...svelte@4.0.4) ##### Patch Changes - fix: claim svg tags in raw mustache tags correctly ([#​8910](https://togithub.com/sveltejs/svelte/pull/8910)) - fix: repair invalid raw html content during hydration ([#​8912](https://togithub.com/sveltejs/svelte/pull/8912)) ### [`v4.0.3`](https://togithub.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#​403) [Compare Source](https://togithub.com/sveltejs/svelte/compare/svelte@4.0.2...svelte@4.0.3) ##### Patch Changes - fix: handle falsy srcset values ([#​8901](https://togithub.com/sveltejs/svelte/pull/8901)) ### [`v4.0.2`](https://togithub.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#​402) [Compare Source](https://togithub.com/sveltejs/svelte/compare/svelte@4.0.1...svelte@4.0.2) ##### Patch Changes - fix: reflect all custom element prop updates back to attribute ([#​8898](https://togithub.com/sveltejs/svelte/pull/8898)) - fix: shrink custom element baseline a bit ([#​8858](https://togithub.com/sveltejs/svelte/pull/8858)) - fix: use non-destructive hydration for all `@html` tags ([#​8880](https://togithub.com/sveltejs/svelte/pull/8880)) - fix: align `disclose-version` exports specification ([#​8874](https://togithub.com/sveltejs/svelte/pull/8874)) - fix: check srcset when hydrating to prevent needless requests ([#​8868](https://togithub.com/sveltejs/svelte/pull/8868)) ### [`v4.0.1`](https://togithub.com/sveltejs/svelte/blob/HEAD/packages/svelte/CHANGELOG.md#​401) [Compare Source](https://togithub.com/sveltejs/svelte/compare/svelte@4.0.0...svelte@4.0.1) ##### Patch Changes - fix: ensure identifiers in destructuring contexts don't clash with existing ones ([#​8840](https://togithub.com/sveltejs/svelte/pull/8840)) - fix: ensure `createEventDispatcher` and `ActionReturn` work with types from generic function parameters ([#​8872](https://togithub.com/sveltejs/svelte/pull/8872)) - fix: apply transition to `` with local transition ([#​8865](https://togithub.com/sveltejs/svelte/pull/8865)) - fix: relax a11y "no redundant role" rule for li, ul, ol ([#​8867](https://togithub.com/sveltejs/svelte/pull/8867)) - fix: remove tsconfig.json from published package ([#​8859](https://togithub.com/sveltejs/svelte/pull/8859))
weaveworks/eksctl (weaveworks/eksctl) ### [`v0.147.0`](https://togithub.com/weaveworks/eksctl/releases/tag/v0.147.0): eksctl 0.147.0 (permalink) [Compare Source](https://togithub.com/weaveworks/eksctl/compare/0.146.0...0.147.0) ##### Release v0.147.0 ##### 🎯 Improvements - Use nodeAffinity to determine if an addon supports ARM64 ([#​6695](https://togithub.com/weaveworks/eksctl/issues/6695)) ##### 🐛 Bug Fixes - Fix CoreDNS probes for Kubernetes 1.26 ([#​6707](https://togithub.com/weaveworks/eksctl/issues/6707)) ##### 🧰 Maintenance - Add identity action to update-generated workflow ([#​6735](https://togithub.com/weaveworks/eksctl/issues/6735)) - Bump dependencies ([#​6730](https://togithub.com/weaveworks/eksctl/issues/6730)) ##### 📝 Documentation - Update docs with \`preserve\` option to create addon resolveConflicts ([#​6729](https://togithub.com/weaveworks/eksctl/issues/6729)) ##### Acknowledgments Weaveworks would like to sincerely thank: [@​wind0r](https://togithub.com/wind0r)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/defenseunicorns/zarf). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Wayne Starr Co-authored-by: Wayne Starr --- .github/actions/node/action.yaml | 2 +- .github/workflows/scan-codeql.yml | 4 +- .github/workflows/scorecard.yaml | 2 +- examples/big-bang/yolo/zarf.yaml | 4 +- examples/big-bang/zarf.yaml | 4 +- examples/variables/simple-terraform.tf | 2 +- go.mod | 61 +- go.sum | 111 ++-- packages/distros/eks/zarf.yaml | 12 +- src/injector/Cargo.lock | 8 +- src/injector/Cargo.toml | 2 +- src/test/e2e/24_variables_test.go | 2 +- src/test/e2e/51_oci_compose_test.go | 4 +- src/ui/package-lock.json | 788 ++++++++++++++++++++++--- src/ui/package.json | 20 +- 15 files changed, 824 insertions(+), 202 deletions(-) diff --git a/.github/actions/node/action.yaml b/.github/actions/node/action.yaml index 897e32de74..c4b302980d 100644 --- a/.github/actions/node/action.yaml +++ b/.github/actions/node/action.yaml @@ -4,7 +4,7 @@ description: "Node cache" runs: using: composite steps: - - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + - uses: actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # v3.7.0 with: node-version: 18 cache: "npm" diff --git a/.github/workflows/scan-codeql.yml b/.github/workflows/scan-codeql.yml index adc3a64f00..7c62b301ae 100644 --- a/.github/workflows/scan-codeql.yml +++ b/.github/workflows/scan-codeql.yml @@ -48,7 +48,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@f6e388ebf0efc915c6c5b165b019ee61a6746a38 # v2.20.1 + uses: github/codeql-action/init@004c5de30b6423267685b897a3d595e944f7fed5 # v2.20.2 env: CODEQL_EXTRACTOR_GO_BUILD_TRACING: on with: @@ -59,6 +59,6 @@ jobs: run: make build-cli-linux-amd - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@f6e388ebf0efc915c6c5b165b019ee61a6746a38 # v2.20.1 + uses: github/codeql-action/analyze@004c5de30b6423267685b897a3d595e944f7fed5 # v2.20.2 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/scorecard.yaml b/.github/workflows/scorecard.yaml index 054fc907e0..ec34073aa0 100644 --- a/.github/workflows/scorecard.yaml +++ b/.github/workflows/scorecard.yaml @@ -45,6 +45,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@f6e388ebf0efc915c6c5b165b019ee61a6746a38 # v2.20.1 + uses: github/codeql-action/upload-sarif@004c5de30b6423267685b897a3d595e944f7fed5 # v2.20.2 with: sarif_file: results.sarif diff --git a/examples/big-bang/yolo/zarf.yaml b/examples/big-bang/yolo/zarf.yaml index 93a7a23696..d19c8a1d7d 100644 --- a/examples/big-bang/yolo/zarf.yaml +++ b/examples/big-bang/yolo/zarf.yaml @@ -4,7 +4,7 @@ metadata: name: yolo-big-bang description: Deploy Big Bang Core in YOLO mode # renovate: datasource=gitlab-releases depName=big-bang/bigbang versioning=semver registryUrl=https://repo1.dso.mil/ - version: 2.4.1 + version: 2.5.0 url: https://p1.dso.mil/products/big-bang architecture: amd64 yolo: true @@ -33,7 +33,7 @@ components: extensions: bigbang: # renovate: datasource=gitlab-releases depName=big-bang/bigbang versioning=semver registryUrl=https://repo1.dso.mil/ - version: 2.4.1 + version: 2.5.0 valuesFiles: - credentials.yaml - ../config/ingress.yaml diff --git a/examples/big-bang/zarf.yaml b/examples/big-bang/zarf.yaml index 049b205501..48755965cd 100644 --- a/examples/big-bang/zarf.yaml +++ b/examples/big-bang/zarf.yaml @@ -3,7 +3,7 @@ metadata: name: big-bang-example description: Deploy Big Bang Core # renovate: datasource=gitlab-releases depName=big-bang/bigbang versioning=semver registryUrl=https://repo1.dso.mil/ - version: 2.4.1 + version: 2.5.0 url: https://p1.dso.mil/products/big-bang # Big Bang / Iron Bank are only amd64 architecture: amd64 @@ -44,7 +44,7 @@ components: extensions: bigbang: # renovate: datasource=gitlab-releases depName=big-bang/bigbang versioning=semver registryUrl=https://repo1.dso.mil/ - version: 2.4.1 + version: 2.5.0 valuesFiles: # Istio configs - config/ingress.yaml diff --git a/examples/variables/simple-terraform.tf b/examples/variables/simple-terraform.tf index af2977dde6..86061012ff 100644 --- a/examples/variables/simple-terraform.tf +++ b/examples/variables/simple-terraform.tf @@ -8,7 +8,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = "~> 5.5.0" + version = "~> 5.6.0" } } } diff --git a/go.mod b/go.mod index b99cf6bae8..5aac366906 100644 --- a/go.mod +++ b/go.mod @@ -1,9 +1,9 @@ module github.com/defenseunicorns/zarf -go 1.19 +go 1.20 // TODO (@WSTARR) remove this temporary replacement of oras-go 1.2.2 with defenseunicorns version due to upgraded docker lib -replace oras.land/oras-go v1.2.2 => github.com/defenseunicorns/oras-go v1.2.4-0.20230605015028-85c595ed4b64 +replace oras.land/oras-go v1.2.3 => github.com/defenseunicorns/oras-go v1.2.4-0.20230605015028-85c595ed4b64 require ( cuelang.org/go v0.5.0 @@ -11,13 +11,13 @@ require ( github.com/Masterminds/semver/v3 v3.2.1 github.com/alecthomas/jsonschema v0.0.0-20220216202328-9eeeec9d044b github.com/anchore/stereoscope v0.0.0-20230727211946-d1f3d766295e - github.com/anchore/syft v0.84.0 + github.com/anchore/syft v0.84.1 github.com/derailed/k9s v0.27.4 github.com/distribution/distribution v2.8.2+incompatible github.com/docker/cli v24.0.2+incompatible github.com/fairwindsops/pluto/v5 v5.17.0 github.com/fatih/color v1.15.0 - github.com/fluxcd/helm-controller/api v0.34.2 + github.com/fluxcd/helm-controller/api v0.35.0 github.com/fluxcd/source-controller/api v1.0.1 github.com/go-chi/chi/v5 v5.0.8 github.com/go-git/go-git/v5 v5.7.0 @@ -26,7 +26,7 @@ require ( github.com/google/go-containerregistry v0.15.2 github.com/mholt/archiver/v3 v3.5.1 github.com/moby/moby v24.0.2+incompatible - github.com/opencontainers/image-spec v1.1.0-rc3 + github.com/opencontainers/image-spec v1.1.0-rc4 github.com/otiai10/copy v1.12.0 github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.15.1 @@ -37,15 +37,15 @@ require ( github.com/spf13/cobra v1.7.0 github.com/spf13/viper v1.16.0 github.com/stretchr/testify v1.8.4 - golang.org/x/crypto v0.10.0 - helm.sh/helm/v3 v3.12.1 - k8s.io/api v0.27.3 - k8s.io/apimachinery v0.27.3 - k8s.io/client-go v0.27.3 - k8s.io/component-base v0.27.3 + golang.org/x/crypto v0.12.0 + helm.sh/helm/v3 v3.12.2 + k8s.io/api v0.27.4 + k8s.io/apimachinery v0.27.4 + k8s.io/client-go v0.27.4 + k8s.io/component-base v0.27.4 k8s.io/klog/v2 v2.100.1 - k8s.io/kubectl v0.27.3 - oras.land/oras-go/v2 v2.2.0 + k8s.io/kubectl v0.27.4 + oras.land/oras-go/v2 v2.2.1 sigs.k8s.io/kustomize/api v0.13.4 sigs.k8s.io/kustomize/kyaml v0.14.2 sigs.k8s.io/yaml v1.3.0 @@ -100,7 +100,7 @@ require ( github.com/alibabacloud-go/tea-utils v1.4.4 // indirect github.com/alibabacloud-go/tea-xml v1.1.2 // indirect github.com/aliyun/credentials-go v1.2.3 // indirect - github.com/anchore/go-logger v0.0.0-20220728155337-03b66a5207d8 // indirect + github.com/anchore/go-logger v0.0.0-20230531193951-db5ae83e7dbe // indirect github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb // indirect github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect github.com/anchore/go-version v1.2.2-0.20200701162849-18adb9c92b9b // indirect @@ -141,7 +141,7 @@ require ( github.com/cloudflare/circl v1.3.3 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect - github.com/containerd/console v1.0.3 // indirect + github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect github.com/containerd/containerd v1.7.1 // indirect github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect github.com/coreos/go-oidc/v3 v3.4.0 // indirect @@ -171,7 +171,7 @@ require ( github.com/facebookincubator/nvdtools v0.1.5 // indirect github.com/fatih/camelcase v1.0.0 // indirect github.com/fluxcd/pkg/apis/acl v0.1.0 // indirect - github.com/fluxcd/pkg/apis/kustomize v1.1.0 // indirect + github.com/fluxcd/pkg/apis/kustomize v1.1.1 // indirect github.com/fluxcd/pkg/apis/meta v1.1.1 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/fvbommel/sortorder v1.0.2 // indirect @@ -276,7 +276,7 @@ require ( github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-isatty v0.0.18 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect @@ -354,6 +354,7 @@ require ( github.com/thales-e-security/pool v0.0.2 // indirect github.com/therootcompany/xz v1.0.1 // indirect github.com/theupdateframework/go-tuf v0.5.2-0.20220930112810-3890c1e7ace4 // indirect + github.com/tidwall/pretty v1.2.1 // indirect github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect github.com/tjfoc/gmsm v1.3.2 // indirect github.com/transparency-dev/merkle v0.0.2 // indirect @@ -361,7 +362,7 @@ require ( github.com/vbatts/go-mtree v0.5.3 // indirect github.com/vbatts/tar-split v0.11.3 // indirect github.com/vifraa/gopom v0.2.1 // indirect - github.com/wagoodman/go-partybus v0.0.0-20210627031916-db1f5573bbc5 // indirect + github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651 // indirect github.com/wagoodman/go-progress v0.0.0-20230301185719-21920a456ad5 // indirect github.com/wagoodman/jotframe v0.0.0-20211129225309-56b0d0a4aebb // indirect github.com/xanzy/go-gitlab v0.73.1 // indirect @@ -383,13 +384,13 @@ require ( go.uber.org/multierr v1.8.0 // indirect go.uber.org/zap v1.24.0 // indirect golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect - golang.org/x/mod v0.11.0 // indirect - golang.org/x/net v0.11.0 // indirect + golang.org/x/mod v0.12.0 // indirect + golang.org/x/net v0.12.0 // indirect golang.org/x/oauth2 v0.8.0 // indirect - golang.org/x/sync v0.2.0 // indirect - golang.org/x/sys v0.9.0 // indirect - golang.org/x/term v0.9.0 // indirect - golang.org/x/text v0.10.0 // indirect + golang.org/x/sync v0.3.0 // indirect + golang.org/x/sys v0.11.0 // indirect + golang.org/x/term v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.9.1 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect @@ -404,14 +405,14 @@ require ( gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apiextensions-apiserver v0.27.2 // indirect - k8s.io/apiserver v0.27.2 // indirect - k8s.io/cli-runtime v0.27.3 // indirect - k8s.io/component-helpers v0.27.3 // indirect + k8s.io/apiextensions-apiserver v0.27.3 // indirect + k8s.io/apiserver v0.27.3 // indirect + k8s.io/cli-runtime v0.27.4 // indirect + k8s.io/component-helpers v0.27.4 // indirect k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515 // indirect - k8s.io/metrics v0.27.3 // indirect + k8s.io/metrics v0.27.4 // indirect k8s.io/utils v0.0.0-20230505201702-9f6742963106 // indirect - oras.land/oras-go v1.2.2 // indirect + oras.land/oras-go v1.2.3 // indirect sigs.k8s.io/controller-runtime v0.15.0 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/kustomize/kustomize/v5 v5.0.1 // indirect diff --git a/go.sum b/go.sum index 83bf738903..c3bbfd2e71 100644 --- a/go.sum +++ b/go.sum @@ -225,8 +225,8 @@ github.com/alibabacloud-go/tea-xml v1.1.2/go.mod h1:Rq08vgCcCAjHyRi/M7xlHKUykZCE github.com/aliyun/credentials-go v1.1.2/go.mod h1:ozcZaMR5kLM7pwtCMEpVmQ242suV6qTJya2bDq4X1Tw= github.com/aliyun/credentials-go v1.2.3 h1:Vmodnr52Rz1mcbwn0kzMhLRKb6soizewuKXdfZiNemU= github.com/aliyun/credentials-go v1.2.3/go.mod h1:/KowD1cfGSLrLsH28Jr8W+xwoId0ywIy5lNzDz6O1vw= -github.com/anchore/go-logger v0.0.0-20220728155337-03b66a5207d8 h1:imgMA0gN0TZx7PSa/pdWqXadBvrz8WsN6zySzCe4XX0= -github.com/anchore/go-logger v0.0.0-20220728155337-03b66a5207d8/go.mod h1:+gPap4jha079qzRTUaehv+UZ6sSdaNwkH0D3b6zhTuk= +github.com/anchore/go-logger v0.0.0-20230531193951-db5ae83e7dbe h1:Df867YMmymdMG6z5IW8pR0/2CRpLIjYnaTXLp6j+s0k= +github.com/anchore/go-logger v0.0.0-20230531193951-db5ae83e7dbe/go.mod h1:ubLFmlsv8/DFUQrZwY5syT5/8Er3ugSr4rDFwHsE3hg= github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb h1:iDMnx6LIjtjZ46C0akqveX83WFzhpTD3eqOthawb5vU= github.com/anchore/go-macholibre v0.0.0-20220308212642-53e6d0aaf6fb/go.mod h1:DmTY2Mfcv38hsHbG78xMiTDdxFtkHpgYNVDPsF2TgHk= github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 h1:aM1rlcoLz8y5B2r4tTLMiVTrMtpfY0O8EScKJxaSaEc= @@ -238,8 +238,8 @@ github.com/anchore/packageurl-go v0.1.1-0.20230104203445-02e0a6721501 h1:AV7qjwM github.com/anchore/packageurl-go v0.1.1-0.20230104203445-02e0a6721501/go.mod h1:Blo6OgJNiYF41ufcgHKkbCKF2MDOMlrqhXv/ij6ocR4= github.com/anchore/stereoscope v0.0.0-20230727211946-d1f3d766295e h1:S6IhYpsBCpvphlHA1tN0glSG/kjVvFzC6OJuU2qW5Pc= github.com/anchore/stereoscope v0.0.0-20230727211946-d1f3d766295e/go.mod h1:0LsgHgXO4QFnk2hsYwtqd3fR18PIZXlFLIl2qb9tu3g= -github.com/anchore/syft v0.84.0 h1:mU0xTGVFjuJDIr9pGjZfjcRmCdpSKsQxghZmWihdPDc= -github.com/anchore/syft v0.84.0/go.mod h1:QM2WJFbV/mvBnb7nR1yYLm0mIw0MVhjzgd/QaxYMA/g= +github.com/anchore/syft v0.84.1 h1:O6V1gCSHTVbyfQq6M1qB86ui64qobZRC3h7lvKpVNWw= +github.com/anchore/syft v0.84.1/go.mod h1:dozEWcwhRawdB3ArPM2BGfZWLslZ+bDNwW+wWUwKySY= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= @@ -383,8 +383,9 @@ github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUo github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ= github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= -github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd v1.7.1 h1:k8DbDkSOwt5rgxQ3uCI4WMKIJxIndSCBUaGm5oRn+Go= github.com/containerd/containerd v1.7.1/go.mod h1:gA+nJUADRBm98QS5j5RPROnt0POQSMK+r7P7EGMC/Qc= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= @@ -512,12 +513,12 @@ github.com/fatih/set v0.2.1/go.mod h1:+RKtMCH+favT2+3YecHGxcc0b4KyVWA1QWWJUs4E0C github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= -github.com/fluxcd/helm-controller/api v0.34.2 h1:wgCezUC0yUkpSUuqNGDIShZ6QC+z7m30JdefdhMP9jY= -github.com/fluxcd/helm-controller/api v0.34.2/go.mod h1:1v1UqS5jOgWdMDzvJBgdcY40RminDUO6A0by4IkHd5s= +github.com/fluxcd/helm-controller/api v0.35.0 h1:UyhKXPni5z69DzPW7GtECGGdUwKsB+OTI0A/wc7HmFY= +github.com/fluxcd/helm-controller/api v0.35.0/go.mod h1:CdHMtr5wM0xgDt/PS147H7QQS+zDxAFgDW3ZN8MnUlU= github.com/fluxcd/pkg/apis/acl v0.1.0 h1:EoAl377hDQYL3WqanWCdifauXqXbMyFuK82NnX6pH4Q= github.com/fluxcd/pkg/apis/acl v0.1.0/go.mod h1:zfEZzz169Oap034EsDhmCAGgnWlcWmIObZjYMusoXS8= -github.com/fluxcd/pkg/apis/kustomize v1.1.0 h1:Fbv4dCB57r2+fiusozN7at8r7upTz58Z4wWw1njHPyU= -github.com/fluxcd/pkg/apis/kustomize v1.1.0/go.mod h1:CAe9Mjf9KVoTm1V4wpvq/FGXFDSnpBwfww/IG7mw3gM= +github.com/fluxcd/pkg/apis/kustomize v1.1.1 h1:MSGn4z0R9PptmoPFHnx2nEZ8Jtl1sKfw0cuDQY2HYwM= +github.com/fluxcd/pkg/apis/kustomize v1.1.1/go.mod h1:0pCu0ecIY+ZM0iE/hOHYwCMZ3b0SpBrjJ1SH3FFyYdE= github.com/fluxcd/pkg/apis/meta v1.1.1 h1:sLAKLbEu7rRzJ+Mytffu3NcpfdbOBTa6hcpOQzFWm+M= github.com/fluxcd/pkg/apis/meta v1.1.1/go.mod h1:soCfzjFWbm1mqybDcOywWKTCEYlH3skpoNGTboVk234= github.com/fluxcd/source-controller/api v1.0.1 h1:nycylbNBnQd+EO4UHpqXqAQJ1cGAPxgBbrfERCQ1pp8= @@ -1063,8 +1064,9 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= +github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-oci8 v0.1.1/go.mod h1:wjDx6Xm9q7dFtHJvIlrI99JytznLw5wQ4R+9mNXJwGI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= @@ -1181,8 +1183,8 @@ github.com/open-policy-agent/opa v0.45.0 h1:P5nuhVRtR+e58fk3CMMbiqr6ZFyWQPNOC3ot github.com/open-policy-agent/opa v0.45.0/go.mod h1:/OnsYljNEWJ6DXeFOOnoGn8CvwZGMUS4iRqzYdJvmBI= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8= -github.com/opencontainers/image-spec v1.1.0-rc3/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= +github.com/opencontainers/image-spec v1.1.0-rc4 h1:oOxKUJWnFC4YGHCCMNql1x4YaDfYBTS5Y4x/Cgeo1E0= +github.com/opencontainers/image-spec v1.1.0-rc4/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= @@ -1281,7 +1283,7 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.29.1 h1:cO+d60CHkknCbvzEWxP0S9K6KqyTjrCNUy1LdQLCGPc= github.com/rs/zerolog v1.29.1/go.mod h1:Le6ESbR7hc+DP6Lt1THiV8CQSdkkNrd3R0XbEgp3ZBU= @@ -1425,7 +1427,8 @@ github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0B github.com/theupdateframework/go-tuf v0.5.2-0.20220930112810-3890c1e7ace4 h1:1i/Afw3rmaR1gF3sfVkG2X6ldkikQwA9zY380LrR5YI= github.com/theupdateframework/go-tuf v0.5.2-0.20220930112810-3890c1e7ace4/go.mod h1:vAqWV3zEs89byeFsAYoh/Q14vJTgJkHwnnRCWBBBINY= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0= github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399/go.mod h1:LdwHTNJT99C5fTAzDz0ud328OgXz+gierycbcIx2fRs= github.com/tjfoc/gmsm v1.3.2 h1:7JVkAn5bvUJ7HtU08iW6UiD+UTmJTIToHCfeFzkcCxM= @@ -1448,8 +1451,8 @@ github.com/vifraa/gopom v0.2.1 h1:MYVMAMyiGzXPPy10EwojzKIL670kl5Zbae+o3fFvQEM= github.com/vifraa/gopom v0.2.1/go.mod h1:oPa1dcrGrtlO37WPDBm5SqHAT+wTgF8An1Q71Z6Vv4o= github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= -github.com/wagoodman/go-partybus v0.0.0-20210627031916-db1f5573bbc5 h1:phTLPgMRDYTizrBSKsNSOa2zthoC2KsJsaY/8sg3rD8= -github.com/wagoodman/go-partybus v0.0.0-20210627031916-db1f5573bbc5/go.mod h1:JPirS5jde/CF5qIjcK4WX+eQmKXdPc6vcZkJ/P0hfPw= +github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651 h1:jIVmlAFIqV3d+DOxazTR9v+zgj8+VYuQBzPgBZvWBHA= +github.com/wagoodman/go-partybus v0.0.0-20230516145632-8ccac152c651/go.mod h1:b26F2tHLqaoRQf8DywqzVaV1MQ9yvjb0OMcNl7Nxu20= github.com/wagoodman/go-progress v0.0.0-20230301185719-21920a456ad5 h1:lwgTsTy18nYqASnH58qyfRW/ldj7Gt2zzBvgYPzdA4s= github.com/wagoodman/go-progress v0.0.0-20230301185719-21920a456ad5/go.mod h1:jLXFoL31zFaHKAAyZUh+sxiTDFe1L1ZHrcK2T1itVKA= github.com/wagoodman/jotframe v0.0.0-20211129225309-56b0d0a4aebb h1:Yz6VVOcLuWLAHYlJzTw7JKnWxdV/WXpug2X0quEzRnY= @@ -1574,8 +1577,8 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= -golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1616,8 +1619,8 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1686,8 +1689,8 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= -golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1729,8 +1732,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= -golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1841,8 +1844,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1853,8 +1856,8 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= -golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1870,8 +1873,8 @@ golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2196,8 +2199,8 @@ gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= -helm.sh/helm/v3 v3.12.1 h1:lzU7etZX24A6BTMXYQF3bFq0ECfD8s+fKlNBBL8AbEc= -helm.sh/helm/v3 v3.12.1/go.mod h1:qhmSY9kcX7yH1xebe+FDMZa7E5NAeZ+LvK5j1gSln48= +helm.sh/helm/v3 v3.12.2 h1:kFyDBr/mgJUlyGzVTCieG4wW0zmo7fcNRWK0+FKkxqU= +helm.sh/helm/v3 v3.12.2/go.mod h1:v1PMayudIfZAvec3Wp4wAErensvK/rv5fu/xCiE6t3I= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -2206,38 +2209,38 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.27.3 h1:yR6oQXXnUEBWEWcvPWS0jQL575KoAboQPfJAuKNrw5Y= -k8s.io/api v0.27.3/go.mod h1:C4BNvZnQOF7JA/0Xed2S+aUyJSfTGkGFxLXz9MnpIpg= -k8s.io/apiextensions-apiserver v0.27.2 h1:iwhyoeS4xj9Y7v8YExhUwbVuBhMr3Q4bd/laClBV6Bo= -k8s.io/apiextensions-apiserver v0.27.2/go.mod h1:Oz9UdvGguL3ULgRdY9QMUzL2RZImotgxvGjdWRq6ZXQ= -k8s.io/apimachinery v0.27.3 h1:Ubye8oBufD04l9QnNtW05idcOe9Z3GQN8+7PqmuVcUM= -k8s.io/apimachinery v0.27.3/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= -k8s.io/apiserver v0.27.2 h1:p+tjwrcQEZDrEorCZV2/qE8osGTINPuS5ZNqWAvKm5E= -k8s.io/apiserver v0.27.2/go.mod h1:EsOf39d75rMivgvvwjJ3OW/u9n1/BmUMK5otEOJrb1Y= -k8s.io/cli-runtime v0.27.3 h1:h592I+2eJfXj/4jVYM+tu9Rv8FEc/dyCoD80UJlMW2Y= -k8s.io/cli-runtime v0.27.3/go.mod h1:LzXud3vFFuDFXn2LIrWnscPgUiEj7gQQcYZE2UPn9Kw= -k8s.io/client-go v0.27.3 h1:7dnEGHZEJld3lYwxvLl7WoehK6lAq7GvgjxpA3nv1E8= -k8s.io/client-go v0.27.3/go.mod h1:2MBEKuTo6V1lbKy3z1euEGnhPfGZLKTS9tiJ2xodM48= -k8s.io/component-base v0.27.3 h1:g078YmdcdTfrCE4fFobt7qmVXwS8J/3cI1XxRi/2+6k= -k8s.io/component-base v0.27.3/go.mod h1:JNiKYcGImpQ44iwSYs6dysxzR9SxIIgQalk4HaCNVUY= -k8s.io/component-helpers v0.27.3 h1:oK7+AlwBKsSUIIRC5Vv8/4HEtmgzXNQD+zLbsOUwVso= -k8s.io/component-helpers v0.27.3/go.mod h1:uxhXqoWHh4eBVcPj+LKWjtQq0V/vP5ihn4xmf5xNZso= +k8s.io/api v0.27.4 h1:0pCo/AN9hONazBKlNUdhQymmnfLRbSZjd5H5H3f0bSs= +k8s.io/api v0.27.4/go.mod h1:O3smaaX15NfxjzILfiln1D8Z3+gEYpjEpiNA/1EVK1Y= +k8s.io/apiextensions-apiserver v0.27.3 h1:xAwC1iYabi+TDfpRhxh4Eapl14Hs2OftM2DN5MpgKX4= +k8s.io/apiextensions-apiserver v0.27.3/go.mod h1:BH3wJ5NsB9XE1w+R6SSVpKmYNyIiyIz9xAmBl8Mb+84= +k8s.io/apimachinery v0.27.4 h1:CdxflD4AF61yewuid0fLl6bM4a3q04jWel0IlP+aYjs= +k8s.io/apimachinery v0.27.4/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= +k8s.io/apiserver v0.27.3 h1:AxLvq9JYtveYWK+D/Dz/uoPCfz8JC9asR5z7+I/bbQ4= +k8s.io/apiserver v0.27.3/go.mod h1:Y61+EaBMVWUBJtxD5//cZ48cHZbQD+yIyV/4iEBhhNA= +k8s.io/cli-runtime v0.27.4 h1:Zb0eci+58eHZNnoHhjRFc7W88s8dlG12VtIl3Nv2Hto= +k8s.io/cli-runtime v0.27.4/go.mod h1:k9Z1xiZq2xNplQmehpDquLgc+rE+pubpO1cK4al4Mlw= +k8s.io/client-go v0.27.4 h1:vj2YTtSJ6J4KxaC88P4pMPEQECWMY8gqPqsTgUKzvjk= +k8s.io/client-go v0.27.4/go.mod h1:ragcly7lUlN0SRPk5/ZkGnDjPknzb37TICq07WhI6Xc= +k8s.io/component-base v0.27.4 h1:Wqc0jMKEDGjKXdae8hBXeskRP//vu1m6ypC+gwErj4c= +k8s.io/component-base v0.27.4/go.mod h1:hoiEETnLc0ioLv6WPeDt8vD34DDeB35MfQnxCARq3kY= +k8s.io/component-helpers v0.27.4 h1:l1hn/Zx9mWXflo5xz1mo5RRW2g8b6rptWCG7My6rYoE= +k8s.io/component-helpers v0.27.4/go.mod h1:ayW5btpTdJkVv+CcxhzNRfWT+oPrV6T6qZ1Ay6NEJNI= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515 h1:OmK1d0WrkD3IPfkskvroRykOulHVHf0s0ZIFRjyt+UI= k8s.io/kube-openapi v0.0.0-20230525220651-2546d827e515/go.mod h1:kzo02I3kQ4BTtEfVLaPbjvCkX97YqGve33wzlb3fofQ= -k8s.io/kubectl v0.27.3 h1:HyC4o+8rCYheGDWrkcOQHGwDmyLKR5bxXFgpvF82BOw= -k8s.io/kubectl v0.27.3/go.mod h1:g9OQNCC2zxT+LT3FS09ZYqnDhlvsKAfFq76oyarBcq4= -k8s.io/metrics v0.27.3 h1:pBVKgQjfui8xzfTidIxiOmLHwcCk3KbeuWowo/Oh0t0= -k8s.io/metrics v0.27.3/go.mod h1:pXj63OTdOjpYgSc95p+88fB3t4krLybM7MOeqIksI6o= +k8s.io/kubectl v0.27.4 h1:RV1TQLIbtL34+vIM+W7HaS3KfAbqvy9lWn6pWB9els4= +k8s.io/kubectl v0.27.4/go.mod h1:qtc1s3BouB9KixJkriZMQqTsXMc+OAni6FeKAhq7q14= +k8s.io/metrics v0.27.4 h1:2s04bods7rA507iouGbxD55YrKNlFjLYzm30noOl9Sk= +k8s.io/metrics v0.27.4/go.mod h1:kRvfhFC7wCQEFvu6H92uiV7v05z3Ty/vtluYT5D2Xpk= k8s.io/utils v0.0.0-20230505201702-9f6742963106 h1:EObNQ3TW2D+WptiYXlApGNLVy0zm/JIBVY9i+M4wpAU= k8s.io/utils v0.0.0-20230505201702-9f6742963106/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE= modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= modernc.org/sqlite v1.23.1 h1:nrSBg4aRQQwq59JpvGEQ15tNxoO5pX/kUjcRNwSAGQM= -oras.land/oras-go/v2 v2.2.0 h1:E1fqITD56Eg5neZbxBtAdZVgDHD6wBabJo6xESTcQyo= -oras.land/oras-go/v2 v2.2.0/go.mod h1:pXjn0+KfarspMHHNR3A56j3tgvr+mxArHuI8qVn59v8= +oras.land/oras-go/v2 v2.2.1 h1:3VJTYqy5KfelEF9c2jo1MLSpr+TM3mX8K42wzZcd6qE= +oras.land/oras-go/v2 v2.2.1/go.mod h1:GeAwLuC4G/JpNwkd+bSZ6SkDMGaaYglt6YK2WvZP7uQ= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/packages/distros/eks/zarf.yaml b/packages/distros/eks/zarf.yaml index 8b3f0057a3..995f4d7d98 100644 --- a/packages/distros/eks/zarf.yaml +++ b/packages/distros/eks/zarf.yaml @@ -34,15 +34,15 @@ components: files: - source: eks.yaml target: eks.yaml - - source: https://github.com/weaveworks/eksctl/releases/download/v0.146.0/eksctl_Darwin_amd64.tar.gz + - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_amd64.tar.gz target: archives/eksctl_Darwin_x86_64.tar.gz - shasum: 2e3faa90e3adf639aed4dbefd7691f73f4b2a21d64d907e6bdbc086cd79bf275 - - source: https://github.com/weaveworks/eksctl/releases/download/v0.146.0/eksctl_Darwin_arm64.tar.gz + shasum: d3b2a204f68eaf151b8b79bb3a28857d45d5d56353b5c430a4cd34161c8fe6fe + - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_arm64.tar.gz target: archives/eksctl_Darwin_arm64.tar.gz - shasum: d9c21038e87df0a1f6e8a6090c19b55f011b9ca0910c1321e2ef75e56957fa2c - - source: https://github.com/weaveworks/eksctl/releases/download/v0.146.0/eksctl_Linux_amd64.tar.gz + shasum: bfc14880a3c5c8fec0e338726fdfa52e375dce0a8bfa766a34e4c4224ec5c929 + - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Linux_amd64.tar.gz target: archives/eksctl_Linux_x86_64.tar.gz - shasum: 5626aac166bb786992a98a47ce9586890966d523f1a80517eec86a4899323dbb + shasum: 56e5746160381a288d5ad70846f0f0b4cd7f5d51e1dfe0880043cf120a2eb10a - name: deploy-eks-cluster description: Create an EKS cluster! diff --git a/src/injector/Cargo.lock b/src/injector/Cargo.lock index f9ed1a6982..8ffc5bbbba 100644 --- a/src/injector/Cargo.lock +++ b/src/injector/Cargo.lock @@ -652,9 +652,9 @@ checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" [[package]] name = "serde" -version = "1.0.147" +version = "1.0.166" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +checksum = "d01b7404f9d441d3ad40e6a636a7782c377d2abdbe4fa2440e2edcc2f4f10db8" [[package]] name = "serde_derive" @@ -669,9 +669,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" +checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c" dependencies = [ "itoa", "ryu", diff --git a/src/injector/Cargo.toml b/src/injector/Cargo.toml index 50e52f398f..46cd268a4f 100644 --- a/src/injector/Cargo.toml +++ b/src/injector/Cargo.toml @@ -22,4 +22,4 @@ tar = "0.4.38" sha2 = "0.10.7" hex = "0.4.3" rouille = "3.6.2" -serde_json = "1.0.99" +serde_json = "1.0.100" diff --git a/src/test/e2e/24_variables_test.go b/src/test/e2e/24_variables_test.go index 5e5c3e569a..b92da10c52 100644 --- a/src/test/e2e/24_variables_test.go +++ b/src/test/e2e/24_variables_test.go @@ -58,7 +58,7 @@ func TestVariables(t *testing.T) { // AWS_REGION should have been templated and also templated into this config map require.Contains(t, string(kubectlOut), "unicorn-land") // MODIFIED_TERRAFORM_SHASUM should have been templated - require.Contains(t, string(kubectlOut), "0ce06459b27122d42703ba7bd50c65d6aa4d23b4d2344e1c93aea018fdd64219") + require.Contains(t, string(kubectlOut), "8e65f5eed501c4191f12cf9886a15955f2f0393d78e313f42b6d979547bca6e3") // Remove the variables example stdOut, stdErr, err = e2e.Zarf("package", "remove", path, "--confirm") diff --git a/src/test/e2e/51_oci_compose_test.go b/src/test/e2e/51_oci_compose_test.go index be2d9e655e..8491620136 100644 --- a/src/test/e2e/51_oci_compose_test.go +++ b/src/test/e2e/51_oci_compose_test.go @@ -96,7 +96,7 @@ func (suite *SkeletonSuite) Test_0_Publish_Skeletons() { _, _, err = e2e.Zarf("package", "pull", "oci://"+ref+"/helm-charts:0.0.1-skeleton", "-o", "build", "--insecure") suite.NoError(err) - _, _, err = e2e.Zarf("package", "pull", "oci://"+ref+"/big-bang-example:2.4.1-skeleton", "-o", "build", "--insecure") + _, _, err = e2e.Zarf("package", "pull", "oci://"+ref+"/big-bang-example:2.5.0-skeleton", "-o", "build", "--insecure") suite.NoError(err) } @@ -145,7 +145,7 @@ func (suite *SkeletonSuite) Test_3_FilePaths() { filepath.Join("build", "zarf-package-import-everything-skeleton-0.0.1.tar.zst"), filepath.Join("build", fmt.Sprintf("zarf-package-importception-%s-0.0.1.tar.zst", e2e.Arch)), filepath.Join("build", "zarf-package-helm-charts-skeleton-0.0.1.tar.zst"), - filepath.Join("build", "zarf-package-big-bang-example-skeleton-2.4.1.tar.zst"), + filepath.Join("build", "zarf-package-big-bang-example-skeleton-2.5.0.tar.zst"), } for _, pkgTar := range pkgTars { diff --git a/src/ui/package-lock.json b/src/ui/package-lock.json index c1b96f7154..31c6710f78 100644 --- a/src/ui/package-lock.json +++ b/src/ui/package-lock.json @@ -9,11 +9,11 @@ "version": "0.0.1", "dependencies": { "@defense-unicorns/unicorn-ui": "^0.0.49", - "@floating-ui/dom": "1.4.2", - "@fontsource/roboto": "5.0.3", + "@floating-ui/dom": "1.4.3", + "@fontsource/roboto": "5.0.4", "@microsoft/fetch-event-source": "^2.0.1", "ansi-to-html": "^0.7.2", - "material-symbols": "0.8.1", + "material-symbols": "0.9.0", "prismjs": "1.29.0", "sanitize.css": "13.0.0", "yaml": "2.3.1" @@ -21,28 +21,28 @@ "devDependencies": { "@playwright/test": "1.35.1", "@sveltejs/adapter-static": "2.0.2", - "@sveltejs/kit": "1.20.5", + "@sveltejs/kit": "1.22.0", "@sveltejs/package": "2.1.0", - "@testing-library/svelte": "4.0.2", + "@testing-library/svelte": "4.0.3", "@tsconfig/svelte": "5.0.0", "@types/prismjs": "1.26.0", "@typescript-eslint/eslint-plugin": "6.2.1", "@typescript-eslint/parser": "6.2.1", "concurrently": "8.2.0", - "eslint": "8.43.0", + "eslint": "8.44.0", "eslint-config-prettier": "8.8.0", - "eslint-plugin-svelte": "2.32.0", + "eslint-plugin-svelte": "2.32.2", "nodemon": "3.0.1", "playwright": "1.35.1", "prettier": "3.0.0", "prettier-plugin-svelte": "3.0.3", - "quicktype": "23.0.48", + "quicktype": "23.0.49", "sass": "1.63.6", - "svelte": "4.0.0", + "svelte": "4.0.4", "svelte-check": "3.4.4", "svelte-preprocess": "5.0.4", "tslib": "2.6.0", - "typescript": "5.1.5", + "typescript": "5.1.6", "vite": "4.3.9" } }, @@ -630,14 +630,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -653,9 +653,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.43.0.tgz", - "integrity": "sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -667,17 +667,17 @@ "integrity": "sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==" }, "node_modules/@floating-ui/dom": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.4.2.tgz", - "integrity": "sha512-VKmvHVatWnewmGGy+7Mdy4cTJX71Pli6v/Wjb5RQBuq5wjUYx+Ef+kRThi8qggZqDgD8CogCpqhRoVp3+yQk+g==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.4.3.tgz", + "integrity": "sha512-nB/68NyaQlcdY22L+Fgd1HERQ7UGv7XFN+tPxwrEfQL4nKtAP/jIZnZtpUlXbtV+VEGHh6W/63Gy2C5biWI3sA==", "dependencies": { "@floating-ui/core": "^1.3.1" } }, "node_modules/@fontsource/roboto": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.3.tgz", - "integrity": "sha512-jbZDFwEFARDlo8TqG7th/xjhuq87GYfFpFb+uxuy+0Ng1bhRVgBRWlLj8+WIKhCTOr+h4QXbjpybLWFLUirOwQ==" + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.0.4.tgz", + "integrity": "sha512-4aVlY+8u/8V15zP8Z4tscGebdD62trVo1CVNW8OsvLWYduebFxxETj7yzfkR/131fVGy/lO1RTeLf6CT7eD8CQ==" }, "node_modules/@glideapps/ts-necessities": { "version": "2.1.3", @@ -1266,9 +1266,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "1.20.5", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.20.5.tgz", - "integrity": "sha512-8rJYZ2boRlO75lwpbpB+DlSzIwmTuamXTpVlDtw4dBk86o3UaDe/+Ro4xCsV/4FtTw2U8xPHyV83edAWbQHG0w==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.22.0.tgz", + "integrity": "sha512-LQhM7CvTaO7OopQffFMuJ2n1lBhfYJKVO2Rujc+/473Yb8jb1mpJm59q5Avbx29kcz8N9lvYUyRP3FXc63VIFA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -1357,31 +1357,31 @@ } }, "node_modules/@testing-library/dom": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.0.tgz", - "integrity": "sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==", + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.1.tgz", + "integrity": "sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==", "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "^5.0.0", + "aria-query": "5.1.3", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.4.4", + "lz-string": "^1.5.0", "pretty-format": "^27.0.2" }, "engines": { - "node": ">=12" + "node": ">=14" } }, "node_modules/@testing-library/svelte": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@testing-library/svelte/-/svelte-4.0.2.tgz", - "integrity": "sha512-kUCZx7qx3W53lsQXcwz9wphOOL7R006T26ZTDpQ5Zt1wpA0E8qxhyjwRQIvExMXCBwmN3LcI5E76cCVPEaKNVQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@testing-library/svelte/-/svelte-4.0.3.tgz", + "integrity": "sha512-GldAnyGEOn5gMwME+hLVQrnfuKZFB+it5YOMnRBHX+nqeHMsSa18HeqkdvGqtqLpvn81xV7R7EYFb500ngUfXA==", "dev": true, "dependencies": { - "@testing-library/dom": "^8.1.0" + "@testing-library/dom": "^9.3.1" }, "engines": { "node": ">= 10" @@ -1683,9 +1683,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1792,12 +1792,12 @@ "dev": true }, "node_modules/aria-query": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.2.1.tgz", - "integrity": "sha512-7uFg4b+lETFgdaJyETnILsXgnnzVnkHcgRbwbPwevm5x/LmUlt3MjczMRe1zg824iBgXZNRPTBftNYyRSKLp2g==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, "dependencies": { - "dequal": "^2.0.3" + "deep-equal": "^2.0.5" } }, "node_modules/array-back": { @@ -1809,6 +1809,19 @@ "node": ">=6" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -1818,6 +1831,18 @@ "node": ">=8" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/axobject-query": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", @@ -1935,6 +1960,19 @@ "node": ">=10.16.0" } }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -2256,6 +2294,35 @@ "integrity": "sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==", "dev": true }, + "node_modules/deep-equal": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz", + "integrity": "sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.0", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -2271,6 +2338,22 @@ "node": ">=0.10.0" } }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -2348,6 +2431,26 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es6-promise": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", @@ -2413,15 +2516,15 @@ } }, "node_modules/eslint": { - "version": "8.43.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.43.0.tgz", - "integrity": "sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.43.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -2433,7 +2536,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "espree": "^9.6.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -2453,7 +2556,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -2481,9 +2584,9 @@ } }, "node_modules/eslint-plugin-svelte": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.32.0.tgz", - "integrity": "sha512-q8uxR4wFmAkb+RX2qIJIO+xAjecInZuGYXbXOvpxMwv7Y5oQrq5WOkiYwLqPZk6p1L5UmSr54duloKiBucDL7A==", + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-2.32.2.tgz", + "integrity": "sha512-Jgbop2fNZsoxxkklZAIbDNhwAPynvnCtUXLsEC6O2qax7N/pfe2cNqT0ZoBbubXKJitQQDEyVDQ1rZs4ZWcrTA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", @@ -2570,12 +2673,12 @@ "dev": true }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", + "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -2778,6 +2881,15 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", "dev": true }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2798,6 +2910,21 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -2807,6 +2934,21 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -2874,6 +3016,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -2895,6 +3049,27 @@ "iterall": "1.1.3" } }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -2904,6 +3079,57 @@ "node": ">=8" } }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -2986,6 +3212,62 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2998,6 +3280,49 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3028,6 +3353,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3037,6 +3371,21 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -3055,12 +3404,126 @@ "@types/estree": "*" } }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-url": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", "dev": true }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3240,9 +3703,9 @@ "dev": true }, "node_modules/material-symbols": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/material-symbols/-/material-symbols-0.8.1.tgz", - "integrity": "sha512-hJszgoT33GamNWfuH5GvO8vW+UgHs7SyloJbIfAQQ2KH8iEuQ0PgTdyFQFpVNdlDS3jm4wonswtKB8khGCSDgQ==" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/material-symbols/-/material-symbols-0.9.0.tgz", + "integrity": "sha512-6A0dRrZLDGQ3ag0V46WECmpj1KzY9qtZvd3yNwsTtG9I+qaobLEPbW7Z3uCw5mgnxR3XUklH1hXKmRgaSrB7fg==" }, "node_modules/mdn-data": { "version": "2.0.30", @@ -3501,6 +3964,58 @@ "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3923,9 +4438,9 @@ ] }, "node_modules/quicktype": { - "version": "23.0.48", - "resolved": "https://registry.npmjs.org/quicktype/-/quicktype-23.0.48.tgz", - "integrity": "sha512-htxIdD8FmS6fNcFLW7rAC1fLDm2TfCVJpMpmY4M6xbX/yjs7ywi6IKWju3+g40psEpPLuduD02A8YuV0/+Hhpg==", + "version": "23.0.49", + "resolved": "https://registry.npmjs.org/quicktype/-/quicktype-23.0.49.tgz", + "integrity": "sha512-SWF3MRBiW1JuIhQPFwN8cY6xHo6SogEF/9Y6m6XNunqaJrT7Lbp9gERpNR5wrkMyJb0KYYDOLo49HXWzi4jGCA==", "dev": true, "dependencies": { "@glideapps/ts-necessities": "^2.1.3", @@ -3937,9 +4452,9 @@ "graphql": "^0.11.7", "lodash": "^4.17.21", "moment": "^2.29.4", - "quicktype-core": "23.0.48", - "quicktype-graphql-input": "23.0.48", - "quicktype-typescript-input": "23.0.48", + "quicktype-core": "23.0.49", + "quicktype-graphql-input": "23.0.49", + "quicktype-typescript-input": "23.0.49", "readable-stream": "^4.3.0", "stream-json": "1.7.5", "string-to-stream": "^3.0.1", @@ -3953,9 +4468,9 @@ } }, "node_modules/quicktype-core": { - "version": "23.0.48", - "resolved": "https://registry.npmjs.org/quicktype-core/-/quicktype-core-23.0.48.tgz", - "integrity": "sha512-t7kjtHa1x5uywwPZH8oJ9EYuFCtEqG3eRSK+G5pkcQ1nTRGblcCkgBX1SVVClhc26DoLCkdfqxacAUEWy4AqVQ==", + "version": "23.0.49", + "resolved": "https://registry.npmjs.org/quicktype-core/-/quicktype-core-23.0.49.tgz", + "integrity": "sha512-lzPhHqqrqCvelt1+Hb/vsxyQtnv4nObcRCAItB3kOVQGYBYIfS8DQMG2t8FfC/fLW5o8xkhl6PF7CdHcejsFmg==", "dev": true, "dependencies": { "@glideapps/ts-necessities": "2.1.3", @@ -3991,24 +4506,24 @@ } }, "node_modules/quicktype-graphql-input": { - "version": "23.0.48", - "resolved": "https://registry.npmjs.org/quicktype-graphql-input/-/quicktype-graphql-input-23.0.48.tgz", - "integrity": "sha512-lcr6+eFPqRORqmVQl8Bw7EApRILHP7x/T7awz8sX2FOfVJIs6ECcjD+1nkSbNuokvQZNcbGWUu6TFdT/RpiEJA==", + "version": "23.0.49", + "resolved": "https://registry.npmjs.org/quicktype-graphql-input/-/quicktype-graphql-input-23.0.49.tgz", + "integrity": "sha512-3KtF6wOV8K7SSl1v5LG/CzgxzUNuslpibtKtzfUFiMwxfdQiG9vDhsiewdkoetCB+13HOiNCKysXfSgELPPMzg==", "dev": true, "dependencies": { "collection-utils": "^1.0.1", "graphql": "^0.11.7", - "quicktype-core": "23.0.48" + "quicktype-core": "23.0.49" } }, "node_modules/quicktype-typescript-input": { - "version": "23.0.48", - "resolved": "https://registry.npmjs.org/quicktype-typescript-input/-/quicktype-typescript-input-23.0.48.tgz", - "integrity": "sha512-NuQxjHzpFM5PfloUFi0qF7hhmG+hH1BSVy2oEJZI8JrdmJmAURiEbBHq/Z9X3OHRd/LmgZ1Uff1d8z/7DtzTfw==", + "version": "23.0.49", + "resolved": "https://registry.npmjs.org/quicktype-typescript-input/-/quicktype-typescript-input-23.0.49.tgz", + "integrity": "sha512-/hSUpeharpOxhls+S7KBKw0d9ig8Pm662OZ5a20eROtUl/qS5s/hSshxt+pW+R3RjD5fZw2SiyaWDY5L+LgfVQ==", "dev": true, "dependencies": { "@mark.probst/typescript-json-schema": "0.55.0", - "quicktype-core": "23.0.48", + "quicktype-core": "23.0.49", "typescript": "4.9.5" } }, @@ -4077,6 +4592,23 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4306,6 +4838,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/simple-update-notifier": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", @@ -4371,6 +4917,18 @@ "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", "dev": true }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stream-chain": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", @@ -4499,16 +5057,16 @@ } }, "node_modules/svelte": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.0.0.tgz", - "integrity": "sha512-+yCYu3AEUu9n91dnQNGIbnVp8EmNQtuF/YImW4+FTXRHard7NMo+yTsWzggPAbj3fUEJ1FBJLkql/jkp6YB5pg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.0.4.tgz", + "integrity": "sha512-DDJavyX1mpNFLZ7jU9FwBKouemh6CJHZXwePBa5GXSaW5GuHZ361L2/1uznBqOCxu2UsUoWu8wRsB2iB8QG5sQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.1", "@jridgewell/sourcemap-codec": "^1.4.15", "@jridgewell/trace-mapping": "^0.3.18", - "acorn": "^8.8.2", - "aria-query": "^5.2.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", "axobject-query": "^3.2.1", "code-red": "^1.0.3", "css-tree": "^2.3.1", @@ -4682,6 +5240,15 @@ "node": ">=12" } }, + "node_modules/svelte/node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, "node_modules/svelte2tsx": { "version": "0.6.15", "resolved": "https://registry.npmjs.org/svelte2tsx/-/svelte2tsx-0.6.15.tgz", @@ -4880,9 +5447,9 @@ } }, "node_modules/typescript": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.5.tgz", - "integrity": "sha512-FOH+WN/DQjUvN6WgW+c4Ml3yi0PH+a/8q+kNIfRehv1wLhWONedw85iu+vQ39Wp49IzTJEsZ2lyLXpBF7mkF1g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -5073,6 +5640,57 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/src/ui/package.json b/src/ui/package.json index 27f9c9a2b5..2fab5ca65c 100644 --- a/src/ui/package.json +++ b/src/ui/package.json @@ -30,11 +30,11 @@ }, "dependencies": { "@defense-unicorns/unicorn-ui": "^0.0.49", - "@floating-ui/dom": "1.4.2", - "@fontsource/roboto": "5.0.3", + "@floating-ui/dom": "1.4.3", + "@fontsource/roboto": "5.0.4", "@microsoft/fetch-event-source": "^2.0.1", "ansi-to-html": "^0.7.2", - "material-symbols": "0.8.1", + "material-symbols": "0.9.0", "prismjs": "1.29.0", "sanitize.css": "13.0.0", "yaml": "2.3.1" @@ -42,28 +42,28 @@ "devDependencies": { "@playwright/test": "1.35.1", "@sveltejs/adapter-static": "2.0.2", - "@sveltejs/kit": "1.20.5", + "@sveltejs/kit": "1.22.0", "@sveltejs/package": "2.1.0", - "@testing-library/svelte": "4.0.2", + "@testing-library/svelte": "4.0.3", "@tsconfig/svelte": "5.0.0", "@types/prismjs": "1.26.0", "@typescript-eslint/eslint-plugin": "6.2.1", "@typescript-eslint/parser": "6.2.1", "concurrently": "8.2.0", - "eslint": "8.43.0", + "eslint": "8.44.0", "eslint-config-prettier": "8.8.0", - "eslint-plugin-svelte": "2.32.0", + "eslint-plugin-svelte": "2.32.2", "nodemon": "3.0.1", "playwright": "1.35.1", "prettier": "3.0.0", "prettier-plugin-svelte": "3.0.3", - "quicktype": "23.0.48", + "quicktype": "23.0.49", "sass": "1.63.6", - "svelte": "4.0.0", + "svelte": "4.0.4", "svelte-check": "3.4.4", "svelte-preprocess": "5.0.4", "tslib": "2.6.0", - "typescript": "5.1.5", + "typescript": "5.1.6", "vite": "4.3.9" } } From 9ea87d7b5d6d4a238a07ec2e5463a3923f3a10f9 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Wed, 9 Aug 2023 15:39:13 -0400 Subject: [PATCH 06/44] removed commented code Signed-off-by: Case Wylie --- src/pkg/packager/common.go | 39 +++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/pkg/packager/common.go b/src/pkg/packager/common.go index 3e06e27fa5..d43aa0077a 100644 --- a/src/pkg/packager/common.go +++ b/src/pkg/packager/common.go @@ -17,6 +17,7 @@ import ( "strings" "github.com/AlecAivazis/survey/v2" + "github.com/Masterminds/semver" "github.com/defenseunicorns/zarf/src/config/lang" "github.com/defenseunicorns/zarf/src/internal/cluster" "github.com/defenseunicorns/zarf/src/internal/packager/sbom" @@ -467,25 +468,25 @@ func (p *Packager) validateLastNonBreakingVersion() (err error) { return nil } - // lastNonBreakingSemVer, err := semver.NewVersion(lastNonBreakingVersion) - // if err != nil { - // return fmt.Errorf("unable to parse lastNonBreakingVersion '%s' from Zarf package build data : %w", lastNonBreakingVersion, err) - // } - - // cliSemVer, err := semver.NewVersion(cliVersion) - // if err != nil { - // return fmt.Errorf("unable to parse Zarf CLI version '%s' : %w", cliVersion, err) - // } - - // if cliSemVer.LessThan(lastNonBreakingSemVer) { - // warning := fmt.Sprintf( - // lang.CmdPackageDeployValidateLastNonBreakingVersionWarn, - // cliVersion, - // lastNonBreakingVersion, - // lastNonBreakingVersion, - // ) - // p.warnings = append(p.warnings, warning) - // } + lastNonBreakingSemVer, err := semver.NewVersion(lastNonBreakingVersion) + if err != nil { + return fmt.Errorf("unable to parse lastNonBreakingVersion '%s' from Zarf package build data : %w", lastNonBreakingVersion, err) + } + + cliSemVer, err := semver.NewVersion(cliVersion) + if err != nil { + return fmt.Errorf("unable to parse Zarf CLI version '%s' : %w", cliVersion, err) + } + + if cliSemVer.LessThan(lastNonBreakingSemVer) { + warning := fmt.Sprintf( + lang.CmdPackageDeployValidateLastNonBreakingVersionWarn, + cliVersion, + lastNonBreakingVersion, + lastNonBreakingVersion, + ) + p.warnings = append(p.warnings, warning) + } return nil } From edcf11e41ca159dd9ed7c85dce3a53f918a7d850 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 15:38:34 -0400 Subject: [PATCH 07/44] clean up code - prepare tests Signed-off-by: Case Wylie --- examples/archive-path/zarf.yaml | 3 +- src/pkg/packager/common.go | 2 +- src/pkg/packager/create.go | 36 ++++----------- src/pkg/packager/deploy.go | 8 ---- src/pkg/utils/helpers/files.go | 73 +++++++++++++++---------------- src/pkg/utils/helpers/url.go | 12 +++++ src/pkg/utils/helpers/url_test.go | 23 ++++++++++ 7 files changed, 81 insertions(+), 76 deletions(-) diff --git a/examples/archive-path/zarf.yaml b/examples/archive-path/zarf.yaml index bfa8d65891..26cc30cf39 100644 --- a/examples/archive-path/zarf.yaml +++ b/examples/archive-path/zarf.yaml @@ -9,10 +9,9 @@ components: required: true files: - source: https://github.com/fluxcd/flux2/releases/download/v2.0.1/flux_2.0.1_darwin_arm64.tar.gz - # target: /Users/cmwylie19/zarf/flux target: flux executable: true - shasum: 520f25324d42e222ccdc75009659452808adcbecb2b744f2ebf037e14e18cd69 + shasum: 9b17a9d0ee8e0f0cf071e74df05e3e264320c7ce415cb706791b5773de7747f0 archivePath: flux - name: flux-version required: true diff --git a/src/pkg/packager/common.go b/src/pkg/packager/common.go index d43aa0077a..ad8120bdf1 100644 --- a/src/pkg/packager/common.go +++ b/src/pkg/packager/common.go @@ -17,7 +17,7 @@ import ( "strings" "github.com/AlecAivazis/survey/v2" - "github.com/Masterminds/semver" + "github.com/Masterminds/semver/v3" "github.com/defenseunicorns/zarf/src/config/lang" "github.com/defenseunicorns/zarf/src/internal/cluster" "github.com/defenseunicorns/zarf/src/internal/packager/sbom" diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 09772a5a3f..11e7c858f4 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -380,35 +380,23 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel if isSkeleton { continue } + // src without Hash if err := utils.DownloadToFile(file.Source, dst, component.CosignKeyPath); err != nil { return fmt.Errorf(lang.ErrDownloading, file.Source, err.Error()) } // Verify we can decompress the file - if file.ArchivePath != "" || helpers.SupportedCompressionFormat(file.Source) { - // extract filename from target - dstFileName, err := helpers.ExtractFilenameFromURL(file.Source) - if err != nil { - message.Fatalf(err, lang.ErrFilename, file.Source, err.Error()) - } - // For archiver support, we need to rename the file to the original - newDst, err := helpers.RenamePathWithFilename(dst, dstFileName) - if err != nil { - fmt.Printf("Could not renamePathWithFilename %s, %s, %s", file.Target, dst, err.Error()) - } - - err = os.Rename(dst, newDst) + if file.ArchivePath != "" { + compressFileName, _ := helpers.ExtractFilenameFromURL(file.Source) + archiveFile := filepath.Dir(dst) + "/" + compressFileName + targetFile := filepath.Dir(dst) + "/" + file.Target + err = os.Rename(targetFile, archiveFile) if err != nil { return fmt.Errorf(lang.ErrWritingFile, dst, err) } - - // Decompress the file into the target directory - err = archiver.Unarchive(newDst, helpers.GetDirFromFilename(dst)) + err = helpers.FindAndCopyFileFromArchive(archiveFile, file.ArchivePath, filepath.Dir(dst)) if err != nil { - message.Fatalf(err, lang.CmdToolsArchiverDecompressErr, err.Error()) - } - // for Sha256sum rename dst - dst = newDst + } } } else { @@ -426,14 +414,6 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel return fmt.Errorf("shasum mismatch for file %s: expected %s, got %s", file.Source, file.Shasum, actualShasum) } - if file.ArchivePath != "" { - // Remove all files in directory other file - err = helpers.KeepOnlyFiles(filepath.Dir(dst), []string{file.ArchivePath, filepath.Base(dst)}) - if err != nil { - fmt.Println("Error cleaning up directory", err.Error()) - } - } - } if file.Executable || utils.IsDir(dst) { diff --git a/src/pkg/packager/deploy.go b/src/pkg/packager/deploy.go index 3f085b25a4..10f7882300 100644 --- a/src/pkg/packager/deploy.go +++ b/src/pkg/packager/deploy.go @@ -319,18 +319,10 @@ func (p *Packager) processComponentFiles(component types.ZarfComponent, pkgLocat // If a shasum is specified check it again on deployment as well if file.Shasum != "" { - tempFileLocation := fileLocation - if file.ArchivePath != "" { - fileSource := filepath.Base(file.Source) - - fileLocation, _ = helpers.RenamePathWithFilename(fileLocation, fileSource) - } - spinner.Updatef("Validating SHASUM for %s", file.Target) if shasum, _ := utils.GetCryptoHashFromFile(fileLocation, crypto.SHA256); shasum != file.Shasum { return fmt.Errorf("shasum mismatch for file %s: expected %s, got %s", file.Source, file.Shasum, shasum) } - fileLocation = tempFileLocation } // Replace temp target directory and home directory diff --git a/src/pkg/utils/helpers/files.go b/src/pkg/utils/helpers/files.go index 66347bc290..f45a653d79 100644 --- a/src/pkg/utils/helpers/files.go +++ b/src/pkg/utils/helpers/files.go @@ -1,53 +1,52 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: 2021-Present The Zarf Authors + +// Package helpers provides generic helper functions with no external imports package helpers import ( "fmt" - "net/url" + "io" "os" - "path" "path/filepath" + "strings" + + "github.com/defenseunicorns/zarf/src/config/lang" + "github.com/mholt/archiver/v3" ) -func KeepOnlyFiles(directory string, fileNames []string) error { - files, err := os.ReadDir(directory) - if err != nil { - return err - } - - filesToKeep := make(map[string]bool) - for _, fileName := range fileNames { - filesToKeep[fileName] = true - } - - for _, file := range files { - filePath := filepath.Join(directory, file.Name()) - if !filesToKeep[file.Name()] { - err := os.RemoveAll(filePath) +// FindAndCopyFileFromArchive inspects an archive file, and copies the target file to the destination +func FindAndCopyFileFromArchive(archivePath, targetFile, destinationDir string) error { + err := archiver.Walk(archivePath, func(f archiver.File) error { + if strings.HasSuffix(f.Name(), targetFile) { + // read the file in the compressed file + data, err := io.ReadAll(f) if err != nil { return err } - fmt.Println("Deleted:", filePath) - } - } - return nil -} + // Create or open the destination file for writing + destinationPath := filepath.Join(destinationDir, filepath.Base(f.Name())) + destinationFile, err := os.Create(destinationPath) + if err != nil { + return err + } + defer destinationFile.Close() -func GetDirFromFilename(target string) string { - return filepath.Dir(target) -} -func RenamePathWithFilename(target, fileName string) (string, error) { - dir := filepath.Dir(target) - newPath := filepath.Join(dir, fileName) - return newPath, nil -} + // Write the data to the destination file + _, err = destinationFile.Write(data) + if err != nil { + return err + } -func ExtractFilenameFromURL(urlStr string) (string, error) { - parsedURL, err := url.Parse(urlStr) - if err != nil { - return "", err - } + } + // Remove the compressed file + err := os.Remove(archivePath) + if err != nil { + return fmt.Errorf(lang.ErrRemoveFile, archivePath, err.Error()) + } + return nil + }) - filename := path.Base(parsedURL.Path) - return filename, nil + return err } diff --git a/src/pkg/utils/helpers/url.go b/src/pkg/utils/helpers/url.go index 1b7278484b..5f8c1a502a 100644 --- a/src/pkg/utils/helpers/url.go +++ b/src/pkg/utils/helpers/url.go @@ -7,6 +7,7 @@ package helpers import ( "fmt" "net/url" + "path" ) // Nonstandard URL schemes or prefixes @@ -40,3 +41,14 @@ func DoHostnamesMatch(url1 string, url2 string) (bool, error) { return parsedURL1.Hostname() == parsedURL2.Hostname(), nil } + +// ExtractFilenameFromURL returns filename from URL string +func ExtractFilenameFromURL(urlStr string) (string, error) { + parsedURL, err := url.Parse(urlStr) + if err != nil { + return "", err + } + + filename := path.Base(parsedURL.Path) + return filename, nil +} diff --git a/src/pkg/utils/helpers/url_test.go b/src/pkg/utils/helpers/url_test.go index b5955d1a2d..44fdd6afee 100644 --- a/src/pkg/utils/helpers/url_test.go +++ b/src/pkg/utils/helpers/url_test.go @@ -90,6 +90,29 @@ func (suite *TestURLSuite) Test_2_DoHostnamesMatch() { suite.False(b) } +func (suite *TestURLSuite) Test_3_ExtractFilenameFromURL() { + urls := []string{ + "https://zarf.dev/file.txt", + "https://docs.zarf.dev/file.txt", + "https://zarf.dev/docs/file.tar.gz", + "https://defenseunicorns.com/file.yaml", + "https://google.com/file.md", + } + expectations := []string{ + "file.txt", + "file.txt", + "file.tar.gz", + "file.yaml", + "file.md", + } + + for idx, url := range urls { + actualURL, err := ExtractFilenameFromURL(url) + suite.NoError(err) + suite.Equal(actualURL, expectations[idx]) + } + +} func TestURL(t *testing.T) { suite.Run(t, new(TestURLSuite)) } From deb842b664bcbe773af5d294f032a64b1f62563e Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 16:07:23 -0400 Subject: [PATCH 08/44] implemented test Signed-off-by: Case Wylie --- examples/archive-path/zarf.yaml | 26 -------------------------- packages/distros/eks/zarf.yaml | 16 ++++++++++++++++ src/test/e2e/00_use_cli_test.go | 22 ++++++++++++++++++++++ 3 files changed, 38 insertions(+), 26 deletions(-) delete mode 100644 examples/archive-path/zarf.yaml diff --git a/examples/archive-path/zarf.yaml b/examples/archive-path/zarf.yaml deleted file mode 100644 index 26cc30cf39..0000000000 --- a/examples/archive-path/zarf.yaml +++ /dev/null @@ -1,26 +0,0 @@ -kind: ZarfPackageConfig -metadata: - name: archive-path - description: "Test archive path" - - -components: - - name: download-flux - required: true - files: - - source: https://github.com/fluxcd/flux2/releases/download/v2.0.1/flux_2.0.1_darwin_arm64.tar.gz - target: flux - executable: true - shasum: 9b17a9d0ee8e0f0cf071e74df05e3e264320c7ce415cb706791b5773de7747f0 - archivePath: flux - - name: flux-version - required: true - actions: - onDeploy: - before: - - cmd: ./flux -v - description: What's the version - mute: false - - cmd: rm flux - description: Remove the zipped - \ No newline at end of file diff --git a/packages/distros/eks/zarf.yaml b/packages/distros/eks/zarf.yaml index 995f4d7d98..d2c8139db1 100644 --- a/packages/distros/eks/zarf.yaml +++ b/packages/distros/eks/zarf.yaml @@ -20,6 +20,22 @@ variables: default: "1.23" components: + - name: test-archive + description: Test archive + required: true + actions: + onDeploy: + after: + - cmd: rm -rf eksctl + description: Remove eksctl + mute: false + files: + - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_arm64.tar.gz + target: eksctl + shasum: 1d7dd5b9907de1cb3fa7832659db29f50530444d10e77b4a8eb27aa648da6fab + archivePath: eksctl + executable: true + - name: load-eksctl required: true actions: diff --git a/src/test/e2e/00_use_cli_test.go b/src/test/e2e/00_use_cli_test.go index ccae6019b6..34ad38b7b1 100644 --- a/src/test/e2e/00_use_cli_test.go +++ b/src/test/e2e/00_use_cli_test.go @@ -155,6 +155,28 @@ func TestUseCLI(t *testing.T) { require.NoError(t, err, stdOut, stdErr) }) + t.Run("zarf package create for archive path", func(t *testing.T) { + t.Parallel() + stdOut, stdErr, err := e2e.Zarf("package", "create", "packages/distros/eks", "--zarf-cache", "--confirm") + require.NoError(t, err, stdOut, stdErr) + }) + + t.Run("zarf package inspect for archive path", func(t *testing.T) { + t.Parallel() + path := "build/zarf-package-distro-eks-multi-0.0.2.tar.zst" + stdOut, stdErr, err := e2e.Zarf("package", "inspect", path) + require.NoError(t, err, stdOut, stdErr) + }) + + t.Run("zarf package deploy for archive path", func(t *testing.T) { + t.Parallel() + expectedString := "Remove eksctl" + path := "build/zarf-package-distro-eks-multi-0.0.2.tar.zst" + stdOut, stdErr, err := e2e.Zarf("package", "deploy", path, "--confirm") + require.NoError(t, err, stdOut, stdErr) + require.Contains(t, stdOut, expectedString, "Should report 'Remove eksctl'") + }) + t.Run("remove cache", func(t *testing.T) { t.Parallel() tmpdir := t.TempDir() From 67fc9fc9b59953f2c3054639a5f157f7b7d3b503 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 16:11:58 -0400 Subject: [PATCH 09/44] Error handling Signed-off-by: Case Wylie --- src/config/lang/english.go | 2 +- src/pkg/packager/create.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/lang/english.go b/src/config/lang/english.go index 6f44fae3a1..f0fb2af7a8 100644 --- a/src/config/lang/english.go +++ b/src/config/lang/english.go @@ -27,7 +27,7 @@ const ( ErrCreatingDir = "failed to create directory %s: %s" ErrRemoveFile = "failed to remove file %s: %s" ErrUnarchive = "failed to unarchive %s: %s" - ErrFilename = "failed to extract filename from url %s: %s" + ErrFileExtract = "failed to extract filename %s from archive %s: %s" ) // Zarf CLI commands. diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 11e7c858f4..cb734a237a 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -395,7 +395,7 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel } err = helpers.FindAndCopyFileFromArchive(archiveFile, file.ArchivePath, filepath.Dir(dst)) if err != nil { - + return fmt.Errorf(lang.ErrFileExtract, file.ArchivePath, archiveFile, err) } } From 1baafd94f6a0c8e75340c96abcd583ef94e67951 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 16:13:07 -0400 Subject: [PATCH 10/44] removed unneeded files and lint Signed-off-by: Case Wylie --- src/pkg/packager/create.go | 1 - src/pkg/utils/helpers/compression.go | 20 -------------------- 2 files changed, 21 deletions(-) delete mode 100644 src/pkg/utils/helpers/compression.go diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index cb734a237a..f676172853 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -397,7 +397,6 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel if err != nil { return fmt.Errorf(lang.ErrFileExtract, file.ArchivePath, archiveFile, err) } - } } else { if err := utils.CreatePathAndCopy(file.Source, dst); err != nil { diff --git a/src/pkg/utils/helpers/compression.go b/src/pkg/utils/helpers/compression.go deleted file mode 100644 index 2f8632f5ce..0000000000 --- a/src/pkg/utils/helpers/compression.go +++ /dev/null @@ -1,20 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// SPDX-FileCopyrightText: 2021-Present The Zarf Authors - -// Package helpers provides generic helper functions with no external imports -package helpers - -import ( - "strings" -) - -func SupportedCompressionFormat(filename string) bool { - supportedFormats := []string{".tar.gz", ".br", ".bz2", ".zip", ".lz4", ".sz", ".xz", ".zz", ".zst"} - - for _, format := range supportedFormats { - if strings.HasSuffix(filename, format) { - return true - } - } - return false -} From b7fe01277c3e6a4de0ecca06ec26a5e296525d3b Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 16:22:54 -0400 Subject: [PATCH 11/44] make docs-and-schema Signed-off-by: Case Wylie --- docs/3-create-a-zarf-package/4-zarf-schema.md | 16 ++++++++++++++++ src/ui/lib/api-types.ts | 5 +++++ zarf.schema.json | 4 ++++ 3 files changed, 25 insertions(+) diff --git a/docs/3-create-a-zarf-package/4-zarf-schema.md b/docs/3-create-a-zarf-package/4-zarf-schema.md index 704a03cac6..cb2d652e84 100644 --- a/docs/3-create-a-zarf-package/4-zarf-schema.md +++ b/docs/3-create-a-zarf-package/4-zarf-schema.md @@ -980,6 +980,22 @@ Must be one of: +
+ + archivePath + +  +
+ +**Description:** Local folder or file to be extracted into the package + +| | | +| -------- | -------- | +| **Type** | `string` | + +
+
+ diff --git a/src/ui/lib/api-types.ts b/src/ui/lib/api-types.ts index 8ce498a114..5b75c6742f 100644 --- a/src/ui/lib/api-types.ts +++ b/src/ui/lib/api-types.ts @@ -718,6 +718,10 @@ export interface BigBang { } export interface ZarfFile { + /** + * Local folder or file to be extracted into the package + */ + archivePath?: string; /** * (files only) Determines if the file should be made executable during package deploy */ @@ -1593,6 +1597,7 @@ const typeMap: any = { { json: "version", js: "version", typ: "" }, ], false), "ZarfFile": o([ + { json: "archivePath", js: "archivePath", typ: u(undefined, "") }, { json: "executable", js: "executable", typ: u(undefined, true) }, { json: "shasum", js: "shasum", typ: u(undefined, "") }, { json: "source", js: "source", typ: "" }, diff --git a/zarf.schema.json b/zarf.schema.json index fa97af3d7f..e4ce5d15c0 100644 --- a/zarf.schema.json +++ b/zarf.schema.json @@ -794,6 +794,10 @@ }, "type": "array", "description": "List of symlinks to create during package deploy" + }, + "archivePath": { + "type": "string", + "description": "Local folder or file to be extracted into the package" } }, "additionalProperties": false, From 4e5299e9e5b8fa7deac86a6f0b8d39a56666fd6e Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 16:26:08 -0400 Subject: [PATCH 12/44] remove comments Signed-off-by: Case Wylie --- src/pkg/packager/create.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index f676172853..d38c02e17f 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -380,11 +380,11 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel if isSkeleton { continue } - // src without Hash + if err := utils.DownloadToFile(file.Source, dst, component.CosignKeyPath); err != nil { return fmt.Errorf(lang.ErrDownloading, file.Source, err.Error()) } - // Verify we can decompress the file + if file.ArchivePath != "" { compressFileName, _ := helpers.ExtractFilenameFromURL(file.Source) archiveFile := filepath.Dir(dst) + "/" + compressFileName @@ -412,7 +412,6 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel if actualShasum, _ := utils.GetCryptoHashFromFile(dst, crypto.SHA256); actualShasum != file.Shasum { return fmt.Errorf("shasum mismatch for file %s: expected %s, got %s", file.Source, file.Shasum, actualShasum) } - } if file.Executable || utils.IsDir(dst) { From 25d0f25410cdb771ce44b582a507a83288165d49 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 16:33:21 -0400 Subject: [PATCH 13/44] consistent error messaging Signed-off-by: Case Wylie --- src/pkg/utils/helpers/files.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/pkg/utils/helpers/files.go b/src/pkg/utils/helpers/files.go index f45a653d79..49f66fdcbf 100644 --- a/src/pkg/utils/helpers/files.go +++ b/src/pkg/utils/helpers/files.go @@ -5,13 +5,11 @@ package helpers import ( - "fmt" "io" "os" "path/filepath" "strings" - "github.com/defenseunicorns/zarf/src/config/lang" "github.com/mholt/archiver/v3" ) @@ -43,7 +41,7 @@ func FindAndCopyFileFromArchive(archivePath, targetFile, destinationDir string) // Remove the compressed file err := os.Remove(archivePath) if err != nil { - return fmt.Errorf(lang.ErrRemoveFile, archivePath, err.Error()) + return err } return nil }) From 97000e61f01af2aa8655e0e0fe4f8e8f2af23063 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 16:51:52 -0400 Subject: [PATCH 14/44] update test for windows binary Signed-off-by: Case Wylie --- packages/distros/eks/zarf.yaml | 6 ------ src/test/e2e/00_use_cli_test.go | 2 -- 2 files changed, 8 deletions(-) diff --git a/packages/distros/eks/zarf.yaml b/packages/distros/eks/zarf.yaml index d2c8139db1..e1d90f3460 100644 --- a/packages/distros/eks/zarf.yaml +++ b/packages/distros/eks/zarf.yaml @@ -23,12 +23,6 @@ components: - name: test-archive description: Test archive required: true - actions: - onDeploy: - after: - - cmd: rm -rf eksctl - description: Remove eksctl - mute: false files: - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_arm64.tar.gz target: eksctl diff --git a/src/test/e2e/00_use_cli_test.go b/src/test/e2e/00_use_cli_test.go index 34ad38b7b1..74a31d53b2 100644 --- a/src/test/e2e/00_use_cli_test.go +++ b/src/test/e2e/00_use_cli_test.go @@ -170,11 +170,9 @@ func TestUseCLI(t *testing.T) { t.Run("zarf package deploy for archive path", func(t *testing.T) { t.Parallel() - expectedString := "Remove eksctl" path := "build/zarf-package-distro-eks-multi-0.0.2.tar.zst" stdOut, stdErr, err := e2e.Zarf("package", "deploy", path, "--confirm") require.NoError(t, err, stdOut, stdErr) - require.Contains(t, stdOut, expectedString, "Should report 'Remove eksctl'") }) t.Run("remove cache", func(t *testing.T) { From 037d981a0a750fada1a958833a4c66a5219043d1 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 17:06:15 -0400 Subject: [PATCH 15/44] move order of tests Signed-off-by: Case Wylie --- src/test/e2e/00_use_cli_test.go | 40 ++++++++++++++++----------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/test/e2e/00_use_cli_test.go b/src/test/e2e/00_use_cli_test.go index 74a31d53b2..22dc763804 100644 --- a/src/test/e2e/00_use_cli_test.go +++ b/src/test/e2e/00_use_cli_test.go @@ -116,6 +116,26 @@ func TestUseCLI(t *testing.T) { require.Error(t, err, stdOut, stdErr) }) + t.Run("zarf package create for archive path", func(t *testing.T) { + t.Parallel() + stdOut, stdErr, err := e2e.Zarf("package", "create", "packages/distros/eks", "--zarf-cache", "--confirm") + require.NoError(t, err, stdOut, stdErr) + }) + + t.Run("zarf package inspect for archive path", func(t *testing.T) { + t.Parallel() + path := "build/zarf-package-distro-eks-multi-0.0.2.tar.zst" + stdOut, stdErr, err := e2e.Zarf("package", "inspect", path) + require.NoError(t, err, stdOut, stdErr) + }) + + t.Run("zarf package deploy for archive path", func(t *testing.T) { + t.Parallel() + path := "build/zarf-package-distro-eks-multi-0.0.2.tar.zst" + stdOut, stdErr, err := e2e.Zarf("package", "deploy", path, "--confirm") + require.NoError(t, err, stdOut, stdErr) + }) + t.Run("zarf package create with tmpdir and cache", func(t *testing.T) { t.Parallel() tmpdir := t.TempDir() @@ -155,26 +175,6 @@ func TestUseCLI(t *testing.T) { require.NoError(t, err, stdOut, stdErr) }) - t.Run("zarf package create for archive path", func(t *testing.T) { - t.Parallel() - stdOut, stdErr, err := e2e.Zarf("package", "create", "packages/distros/eks", "--zarf-cache", "--confirm") - require.NoError(t, err, stdOut, stdErr) - }) - - t.Run("zarf package inspect for archive path", func(t *testing.T) { - t.Parallel() - path := "build/zarf-package-distro-eks-multi-0.0.2.tar.zst" - stdOut, stdErr, err := e2e.Zarf("package", "inspect", path) - require.NoError(t, err, stdOut, stdErr) - }) - - t.Run("zarf package deploy for archive path", func(t *testing.T) { - t.Parallel() - path := "build/zarf-package-distro-eks-multi-0.0.2.tar.zst" - stdOut, stdErr, err := e2e.Zarf("package", "deploy", path, "--confirm") - require.NoError(t, err, stdOut, stdErr) - }) - t.Run("remove cache", func(t *testing.T) { t.Parallel() tmpdir := t.TempDir() From 5ece6711f06ce365452719030d385cf90aa61bcf Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 17:27:34 -0400 Subject: [PATCH 16/44] Update src/types/component.go Co-authored-by: Wayne Starr --- src/types/component.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/component.go b/src/types/component.go index bbeb2474a6..25f96a8f01 100644 --- a/src/types/component.go +++ b/src/types/component.go @@ -84,7 +84,7 @@ type ZarfFile struct { Target string `json:"target" jsonschema:"description=The absolute or relative path where the file or folder should be copied to during package deploy"` Executable bool `json:"executable,omitempty" jsonschema:"description=(files only) Determines if the file should be made executable during package deploy"` Symlinks []string `json:"symlinks,omitempty" jsonschema:"description=List of symlinks to create during package deploy"` - ArchivePath string `json:"archivePath,omitempty" jsonschema:"description=Local folder or file to be extracted into the package"` + ArchivePath string `json:"archivePath,omitempty" jsonschema:"description=Local folder or file to be extracted from a 'source' archive"` } // ZarfChart defines a helm chart to be deployed. From 04d51ff0599fb94c6ed13d975bc5ecb25b2dbae7 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 17:28:56 -0400 Subject: [PATCH 17/44] Update src/pkg/utils/helpers/url.go Co-authored-by: Wayne Starr --- src/pkg/utils/helpers/url.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pkg/utils/helpers/url.go b/src/pkg/utils/helpers/url.go index 5f8c1a502a..5da0936701 100644 --- a/src/pkg/utils/helpers/url.go +++ b/src/pkg/utils/helpers/url.go @@ -43,7 +43,7 @@ func DoHostnamesMatch(url1 string, url2 string) (bool, error) { } // ExtractFilenameFromURL returns filename from URL string -func ExtractFilenameFromURL(urlStr string) (string, error) { +func ExtractBasePathFromURL(urlStr string) (string, error) { parsedURL, err := url.Parse(urlStr) if err != nil { return "", err From 367f9c3d58f65399ed3a43575661df995ce7a489 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 17:26:55 -0400 Subject: [PATCH 18/44] update e2e test Signed-off-by: Case Wylie --- packages/distros/eks/zarf.yaml | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/packages/distros/eks/zarf.yaml b/packages/distros/eks/zarf.yaml index e1d90f3460..728c26cd5c 100644 --- a/packages/distros/eks/zarf.yaml +++ b/packages/distros/eks/zarf.yaml @@ -20,16 +20,6 @@ variables: default: "1.23" components: - - name: test-archive - description: Test archive - required: true - files: - - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_arm64.tar.gz - target: eksctl - shasum: 1d7dd5b9907de1cb3fa7832659db29f50530444d10e77b4a8eb27aa648da6fab - archivePath: eksctl - executable: true - - name: load-eksctl required: true actions: @@ -48,8 +38,9 @@ components: target: archives/eksctl_Darwin_x86_64.tar.gz shasum: d3b2a204f68eaf151b8b79bb3a28857d45d5d56353b5c430a4cd34161c8fe6fe - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_arm64.tar.gz - target: archives/eksctl_Darwin_arm64.tar.gz - shasum: bfc14880a3c5c8fec0e338726fdfa52e375dce0a8bfa766a34e4c4224ec5c929 + target: eksctl + shasum: 1d7dd5b9907de1cb3fa7832659db29f50530444d10e77b4a8eb27aa648da6fab + archivePath: eksctl - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Linux_amd64.tar.gz target: archives/eksctl_Linux_x86_64.tar.gz shasum: 56e5746160381a288d5ad70846f0f0b4cd7f5d51e1dfe0880043cf120a2eb10a From 42d168ec3190130aae518466e1a49b2a7015f5a5 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 10 Aug 2023 17:29:50 -0400 Subject: [PATCH 19/44] renamed function Signed-off-by: Case Wylie --- src/pkg/packager/create.go | 2 +- src/pkg/utils/helpers/url.go | 2 +- src/pkg/utils/helpers/url_test.go | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index d38c02e17f..023dde38f2 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -386,7 +386,7 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel } if file.ArchivePath != "" { - compressFileName, _ := helpers.ExtractFilenameFromURL(file.Source) + compressFileName, _ := helpers.ExtractBasePathFromURL(file.Source) archiveFile := filepath.Dir(dst) + "/" + compressFileName targetFile := filepath.Dir(dst) + "/" + file.Target err = os.Rename(targetFile, archiveFile) diff --git a/src/pkg/utils/helpers/url.go b/src/pkg/utils/helpers/url.go index 5da0936701..b3a658ba82 100644 --- a/src/pkg/utils/helpers/url.go +++ b/src/pkg/utils/helpers/url.go @@ -42,7 +42,7 @@ func DoHostnamesMatch(url1 string, url2 string) (bool, error) { return parsedURL1.Hostname() == parsedURL2.Hostname(), nil } -// ExtractFilenameFromURL returns filename from URL string +// ExtractBasePathFromURL returns filename from URL string func ExtractBasePathFromURL(urlStr string) (string, error) { parsedURL, err := url.Parse(urlStr) if err != nil { diff --git a/src/pkg/utils/helpers/url_test.go b/src/pkg/utils/helpers/url_test.go index 44fdd6afee..43d2c8e02d 100644 --- a/src/pkg/utils/helpers/url_test.go +++ b/src/pkg/utils/helpers/url_test.go @@ -90,7 +90,7 @@ func (suite *TestURLSuite) Test_2_DoHostnamesMatch() { suite.False(b) } -func (suite *TestURLSuite) Test_3_ExtractFilenameFromURL() { +func (suite *TestURLSuite) Test_3_ExtractBasePathFromURL() { urls := []string{ "https://zarf.dev/file.txt", "https://docs.zarf.dev/file.txt", @@ -107,7 +107,7 @@ func (suite *TestURLSuite) Test_3_ExtractFilenameFromURL() { } for idx, url := range urls { - actualURL, err := ExtractFilenameFromURL(url) + actualURL, err := ExtractBasePathFromURL(url) suite.NoError(err) suite.Equal(actualURL, expectations[idx]) } From 84f5add5500009074d23998eaa626e0a0308637b Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Fri, 11 Aug 2023 13:21:57 -0400 Subject: [PATCH 20/44] refactor more efficiently Signed-off-by: Case Wylie --- examples/archive-path/zarf.yaml | 31 +++++++++++++++++++ src/pkg/packager/create.go | 3 +- src/pkg/utils/helpers/files.go | 50 ------------------------------- src/pkg/utils/helpers/url.go | 5 ++++ src/pkg/utils/helpers/url_test.go | 19 ++++++++++-- src/test/e2e/00_use_cli_test.go | 14 ++------- 6 files changed, 57 insertions(+), 65 deletions(-) create mode 100644 examples/archive-path/zarf.yaml delete mode 100644 src/pkg/utils/helpers/files.go diff --git a/examples/archive-path/zarf.yaml b/examples/archive-path/zarf.yaml new file mode 100644 index 0000000000..d18cdaa4de --- /dev/null +++ b/examples/archive-path/zarf.yaml @@ -0,0 +1,31 @@ +kind: ZarfPackageConfig +metadata: + name: archive-path + description: "Test archive path" + + +components: + - name: download-flux + required: true + files: + - source: https://github.com/fluxcd/flux2/releases/download/v2.0.1/flux_2.0.1_darwin_arm64.tar.gz + target: flux + executable: true + shasum: 9b17a9d0ee8e0f0cf071e74df05e3e264320c7ce415cb706791b5773de7747f0 + archivePath: flux + # - source: https://github.com/cmwylie19/archive-path/raw/main/archive-path.tar.gz + # target: archive-path + # # executable: true + # # shasum: 9b17a9d0ee8e0f0cf071e74df05e3e264320c7ce415cb706791b5773de7747f0 + # archivePath: archive-path + # - name: flux-version + # required: true + # actions: + # onDeploy: + # before: + # - cmd: ./flux -v + # description: What's the version + # mute: false + # - cmd: rm flux + # description: Remove the zipped + \ No newline at end of file diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 023dde38f2..1c79d922c7 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -393,7 +393,8 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel if err != nil { return fmt.Errorf(lang.ErrWritingFile, dst, err) } - err = helpers.FindAndCopyFileFromArchive(archiveFile, file.ArchivePath, filepath.Dir(dst)) + + err = archiver.Extract(archiveFile, file.ArchivePath, filepath.Dir(dst)) if err != nil { return fmt.Errorf(lang.ErrFileExtract, file.ArchivePath, archiveFile, err) } diff --git a/src/pkg/utils/helpers/files.go b/src/pkg/utils/helpers/files.go deleted file mode 100644 index 49f66fdcbf..0000000000 --- a/src/pkg/utils/helpers/files.go +++ /dev/null @@ -1,50 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// SPDX-FileCopyrightText: 2021-Present The Zarf Authors - -// Package helpers provides generic helper functions with no external imports -package helpers - -import ( - "io" - "os" - "path/filepath" - "strings" - - "github.com/mholt/archiver/v3" -) - -// FindAndCopyFileFromArchive inspects an archive file, and copies the target file to the destination -func FindAndCopyFileFromArchive(archivePath, targetFile, destinationDir string) error { - err := archiver.Walk(archivePath, func(f archiver.File) error { - if strings.HasSuffix(f.Name(), targetFile) { - // read the file in the compressed file - data, err := io.ReadAll(f) - if err != nil { - return err - } - - // Create or open the destination file for writing - destinationPath := filepath.Join(destinationDir, filepath.Base(f.Name())) - destinationFile, err := os.Create(destinationPath) - if err != nil { - return err - } - defer destinationFile.Close() - - // Write the data to the destination file - _, err = destinationFile.Write(data) - if err != nil { - return err - } - - } - // Remove the compressed file - err := os.Remove(archivePath) - if err != nil { - return err - } - return nil - }) - - return err -} diff --git a/src/pkg/utils/helpers/url.go b/src/pkg/utils/helpers/url.go index b3a658ba82..7ad3017ecd 100644 --- a/src/pkg/utils/helpers/url.go +++ b/src/pkg/utils/helpers/url.go @@ -8,6 +8,8 @@ import ( "fmt" "net/url" "path" + + "github.com/defenseunicorns/zarf/src/config/lang" ) // Nonstandard URL schemes or prefixes @@ -44,6 +46,9 @@ func DoHostnamesMatch(url1 string, url2 string) (bool, error) { // ExtractBasePathFromURL returns filename from URL string func ExtractBasePathFromURL(urlStr string) (string, error) { + if !IsURL(urlStr) { + return "", fmt.Errorf(lang.PkgValidateErrImportURLInvalid, urlStr) + } parsedURL, err := url.Parse(urlStr) if err != nil { return "", err diff --git a/src/pkg/utils/helpers/url_test.go b/src/pkg/utils/helpers/url_test.go index 43d2c8e02d..99a073f8a7 100644 --- a/src/pkg/utils/helpers/url_test.go +++ b/src/pkg/utils/helpers/url_test.go @@ -5,6 +5,7 @@ package helpers import ( + "fmt" "testing" "github.com/stretchr/testify/require" @@ -91,13 +92,22 @@ func (suite *TestURLSuite) Test_2_DoHostnamesMatch() { } func (suite *TestURLSuite) Test_3_ExtractBasePathFromURL() { - urls := []string{ + good_urls := []string{ "https://zarf.dev/file.txt", "https://docs.zarf.dev/file.txt", "https://zarf.dev/docs/file.tar.gz", "https://defenseunicorns.com/file.yaml", "https://google.com/file.md", } + bad_urls := []string{ + "invalid-url", + "am", + "not", + "a url", + "info@defenseunicorns.com", + "12345", + "kubernetes.svc.default.svc.cluster.local", + } expectations := []string{ "file.txt", "file.txt", @@ -106,11 +116,16 @@ func (suite *TestURLSuite) Test_3_ExtractBasePathFromURL() { "file.md", } - for idx, url := range urls { + for idx, url := range good_urls { actualURL, err := ExtractBasePathFromURL(url) suite.NoError(err) suite.Equal(actualURL, expectations[idx]) } + for _, url := range bad_urls { + url, err := ExtractBasePathFromURL(url) + fmt.Println(url) + suite.Error(err) + } } func TestURL(t *testing.T) { diff --git a/src/test/e2e/00_use_cli_test.go b/src/test/e2e/00_use_cli_test.go index 22dc763804..8f5e7288db 100644 --- a/src/test/e2e/00_use_cli_test.go +++ b/src/test/e2e/00_use_cli_test.go @@ -116,23 +116,13 @@ func TestUseCLI(t *testing.T) { require.Error(t, err, stdOut, stdErr) }) - t.Run("zarf package create for archive path", func(t *testing.T) { + t.Run("zarf package to test archive path", func(t *testing.T) { t.Parallel() stdOut, stdErr, err := e2e.Zarf("package", "create", "packages/distros/eks", "--zarf-cache", "--confirm") require.NoError(t, err, stdOut, stdErr) - }) - t.Run("zarf package inspect for archive path", func(t *testing.T) { - t.Parallel() - path := "build/zarf-package-distro-eks-multi-0.0.2.tar.zst" - stdOut, stdErr, err := e2e.Zarf("package", "inspect", path) - require.NoError(t, err, stdOut, stdErr) - }) - - t.Run("zarf package deploy for archive path", func(t *testing.T) { - t.Parallel() path := "build/zarf-package-distro-eks-multi-0.0.2.tar.zst" - stdOut, stdErr, err := e2e.Zarf("package", "deploy", path, "--confirm") + stdOut, stdErr, err = e2e.Zarf("package", "deploy", path, "--confirm") require.NoError(t, err, stdOut, stdErr) }) From 8c5d0ae456d2ffce0556c023a672870907113834 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Fri, 11 Aug 2023 13:22:25 -0400 Subject: [PATCH 21/44] refactor more efficiently Signed-off-by: Case Wylie --- src/test/e2e/00_use_cli_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/e2e/00_use_cli_test.go b/src/test/e2e/00_use_cli_test.go index 8f5e7288db..f69b293117 100644 --- a/src/test/e2e/00_use_cli_test.go +++ b/src/test/e2e/00_use_cli_test.go @@ -116,7 +116,7 @@ func TestUseCLI(t *testing.T) { require.Error(t, err, stdOut, stdErr) }) - t.Run("zarf package to test archive path", func(t *testing.T) { + t.Run("zarf package to test archive path", func(t *testing.T) { t.Parallel() stdOut, stdErr, err := e2e.Zarf("package", "create", "packages/distros/eks", "--zarf-cache", "--confirm") require.NoError(t, err, stdOut, stdErr) From 1932629d453f0fb782b5685b5bddc35f518ffba0 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Sat, 12 Aug 2023 07:05:59 -0400 Subject: [PATCH 22/44] updates for folders and files in folders Signed-off-by: Case Wylie --- eks.yaml | 24 +++++++++++ examples/archive-path/zarf.yaml | 20 ++++----- packages/distros/eks/zarf.yaml | 75 +++++++++++++++++---------------- src/pkg/packager/create.go | 28 +++++++++--- src/pkg/packager/deploy.go | 2 +- 5 files changed, 94 insertions(+), 55 deletions(-) create mode 100644 eks.yaml diff --git a/eks.yaml b/eks.yaml new file mode 100644 index 0000000000..d4d78aaddd --- /dev/null +++ b/eks.yaml @@ -0,0 +1,24 @@ +# eksctl create cluster --config-file=eks.yaml +apiVersion: eksctl.io/v1alpha5 +kind: ClusterConfig +metadata: + name: + region: us-east-1 + version: "1.23" + +iam: + withOIDC: true + +addons: + - name: aws-ebs-csi-driver + version: v1.5.2-eksbuild.1 + attachPolicyARNs: + - arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy + + +managedNodeGroups: +- instanceType: t3.small + name: -ng + minSize: 3 + maxSize: 6 + spot: true diff --git a/examples/archive-path/zarf.yaml b/examples/archive-path/zarf.yaml index d18cdaa4de..8ea48621a9 100644 --- a/examples/archive-path/zarf.yaml +++ b/examples/archive-path/zarf.yaml @@ -8,16 +8,16 @@ components: - name: download-flux required: true files: - - source: https://github.com/fluxcd/flux2/releases/download/v2.0.1/flux_2.0.1_darwin_arm64.tar.gz - target: flux - executable: true - shasum: 9b17a9d0ee8e0f0cf071e74df05e3e264320c7ce415cb706791b5773de7747f0 - archivePath: flux - # - source: https://github.com/cmwylie19/archive-path/raw/main/archive-path.tar.gz - # target: archive-path - # # executable: true - # # shasum: 9b17a9d0ee8e0f0cf071e74df05e3e264320c7ce415cb706791b5773de7747f0 - # archivePath: archive-path + # - source: https://github.com/fluxcd/flux2/releases/download/v2.0.1/flux_2.0.1_darwin_arm64.tar.gz + # target: flux + # executable: true + # shasum: 9b17a9d0ee8e0f0cf071e74df05e3e264320c7ce415cb706791b5773de7747f0 + # archivePath: flux + - source: https://github.com/cmwylie19/archive-path/raw/main/archive-path.tar.gz + target: archive-path + # executable: true + # shasum: 9b17a9d0ee8e0f0cf071e74df05e3e264320c7ce415cb706791b5773de7747f0 + archivePath: archive-path # - name: flux-version # required: true # actions: diff --git a/packages/distros/eks/zarf.yaml b/packages/distros/eks/zarf.yaml index 728c26cd5c..fcad575525 100644 --- a/packages/distros/eks/zarf.yaml +++ b/packages/distros/eks/zarf.yaml @@ -26,48 +26,49 @@ components: onDeploy: after: # Remove existing eksctl - - cmd: rm -f eksctl - # Extract the correct linux or mac binary from the tarball - - cmd: ./zarf tools archiver decompress archives/eksctl_$(uname -s)_$(uname -m).tar.gz . - # Cleanup temp files - - cmd: rm -fr archives + - cmd: ./binaries/eksctl_$(uname -s)_$(uname -m) version + files: - source: eks.yaml target: eks.yaml - - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_amd64.tar.gz - target: archives/eksctl_Darwin_x86_64.tar.gz - shasum: d3b2a204f68eaf151b8b79bb3a28857d45d5d56353b5c430a4cd34161c8fe6fe + # - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_amd64.tar.gz + # target: binaries_Darwin_x86_64/eksctl + # shasum: 6d72fe0bafa5ac62e1da3889b6987af6192b330abd9c50491bcf1c5966358f89 + # archivePath: eksctl - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_arm64.tar.gz - target: eksctl + target: binaries/eksctl_Darwin_arm64 + #target: eksctl + executable: true shasum: 1d7dd5b9907de1cb3fa7832659db29f50530444d10e77b4a8eb27aa648da6fab archivePath: eksctl - - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Linux_amd64.tar.gz - target: archives/eksctl_Linux_x86_64.tar.gz - shasum: 56e5746160381a288d5ad70846f0f0b4cd7f5d51e1dfe0880043cf120a2eb10a + # - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Linux_amd64.tar.gz + # target: binaries_Linux_x86_64/eksctl + # shasum: 2a47bb9c86c7531a166542aa2d8cb8e1e0be326308ebcfaf724d016abe31636b + # archivePath: eksctl - - name: deploy-eks-cluster - description: Create an EKS cluster! - actions: - onDeploy: - before: - - cmd: ./eksctl create cluster --dry-run -f eks.yaml - - cmd: sleep 15 - - cmd: ./eksctl create cluster -f eks.yaml - - cmd: ./eksctl utils write-kubeconfig -c ${ZARF_VAR_CLUSTER_NAME} - - cmd: ./zarf tools kubectl create namespace zarf - - cmd: ./zarf tools kubectl create secret generic zarf-eks-yaml -n zarf --from-file=eks.yaml + # - name: deploy-eks-cluster + # description: Create an EKS cluster! + # actions: + # onDeploy: + # before: + # - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl create cluster --dry-run -f eks.yaml + # - cmd: sleep 15 + # - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl create cluster -f eks.yaml + # - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl utils write-kubeconfig -c ${ZARF_VAR_CLUSTER_NAME} + # - cmd: ./zarf tools kubectl create namespace zarf + # - cmd: ./zarf tools kubectl create secret generic zarf-eks-yaml -n zarf --from-file=eks.yaml - - name: teardown-eks-cluster - description: Delete the EKS cluster that this package was used to create. - actions: - onDeploy: - before: - # Get the secret that stores the eks.yaml we used to create this cluster - - cmd: ./zarf tools kubectl get secret -n zarf zarf-eks-yaml -o jsonpath='{.data.*}' | base64 -d > eks.yaml - # TODO: Error handling in case the eks.yaml isn't what we expect ??? - # Use eksctl to delete the cluster - - cmd: ./eksctl delete cluster -f eks.yaml --disable-nodegroup-eviction --wait - after: - # clean up after ourselves - - cmd: rm -f eks.yaml - - cmd: rm -f eksctl + # - name: teardown-eks-cluster + # description: Delete the EKS cluster that this package was used to create. + # actions: + # onDeploy: + # before: + # # Get the secret that stores the eks.yaml we used to create this cluster + # - cmd: ./zarf tools kubectl get secret -n zarf zarf-eks-yaml -o jsonpath='{.data.*}' | base64 -d > eks.yaml + # # TODO: Error handling in case the eks.yaml isn't what we expect ??? + # # Use eksctl to delete the cluster + # - cmd: ./eksctl delete cluster -f eks.yaml --disable-nodegroup-eviction --wait + # after: + # # clean up after ourselves + # - cmd: rm -f eks.yaml + # - cmd: rm -f eksctl diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 1c79d922c7..12de5a626c 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -285,8 +285,8 @@ func (p *Packager) getFilesToSBOM(component types.ZarfComponent) (*types.Compone } for filesIdx, file := range component.Files { - path := filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), filepath.Base(file.Target)) - + // path := filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), filepath.Base(file.Target)) + path := filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), file.Target) appendSBOMFiles(path) } @@ -387,17 +387,29 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel if file.ArchivePath != "" { compressFileName, _ := helpers.ExtractBasePathFromURL(file.Source) - archiveFile := filepath.Dir(dst) + "/" + compressFileName - targetFile := filepath.Dir(dst) + "/" + file.Target + targetFile := filepath.Join(filepath.Dir(dst), filepath.Base(file.Target)) + targetDir := filepath.Join(filepath.Dir(dst), filepath.Dir(file.Target)) + archiveFile := filepath.Join(filepath.Dir(targetFile), compressFileName) err = os.Rename(targetFile, archiveFile) if err != nil { return fmt.Errorf(lang.ErrWritingFile, dst, err) } - - err = archiver.Extract(archiveFile, file.ArchivePath, filepath.Dir(dst)) + // archiver.Extract() + err = archiver.Extract(archiveFile, file.ArchivePath, targetDir) if err != nil { return fmt.Errorf(lang.ErrFileExtract, file.ArchivePath, archiveFile, err) } + file.Target = filepath.Join(targetDir, filepath.Base(file.Target)) + extractedArchiveFile := filepath.Join(targetDir, file.ArchivePath) + if file.Target != extractedArchiveFile { + err = os.Rename(filepath.Join(targetDir, file.ArchivePath), file.Target) + if err != nil { + return fmt.Errorf(lang.ErrWritingFile, dst, err) + } + } + + dst = filepath.Join(targetDir, filepath.Base(file.Target)) + } } else { if err := utils.CreatePathAndCopy(file.Source, dst); err != nil { @@ -410,9 +422,11 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel // Abort packaging on invalid shasum (if one is specified). if file.Shasum != "" { - if actualShasum, _ := utils.GetCryptoHashFromFile(dst, crypto.SHA256); actualShasum != file.Shasum { + actualShasum, _ := utils.GetCryptoHashFromFile(dst, crypto.SHA256) + if actualShasum != file.Shasum { return fmt.Errorf("shasum mismatch for file %s: expected %s, got %s", file.Source, file.Shasum, actualShasum) } + } if file.Executable || utils.IsDir(dst) { diff --git a/src/pkg/packager/deploy.go b/src/pkg/packager/deploy.go index 2147aac8ad..6448f4ea27 100644 --- a/src/pkg/packager/deploy.go +++ b/src/pkg/packager/deploy.go @@ -319,7 +319,7 @@ func (p *Packager) processComponentFiles(component types.ZarfComponent, pkgLocat for fileIdx, file := range component.Files { spinner.Updatef("Loading %s", file.Target) - fileLocation := filepath.Join(pkgLocation, strconv.Itoa(fileIdx), filepath.Base(file.Target)) + fileLocation := filepath.Join(pkgLocation, strconv.Itoa(fileIdx), file.Target) if utils.InvalidPath(fileLocation) { fileLocation = filepath.Join(pkgLocation, strconv.Itoa(fileIdx)) } From 23cc0872e4b7fefa27b7fc52063f1d350a18b64e Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Sat, 12 Aug 2023 07:20:00 -0400 Subject: [PATCH 23/44] update e2e tests Signed-off-by: Case Wylie --- packages/distros/eks/zarf.yaml | 69 +++++++++++++++++----------------- src/pkg/packager/create.go | 12 +++++- 2 files changed, 45 insertions(+), 36 deletions(-) diff --git a/packages/distros/eks/zarf.yaml b/packages/distros/eks/zarf.yaml index fcad575525..64058cb165 100644 --- a/packages/distros/eks/zarf.yaml +++ b/packages/distros/eks/zarf.yaml @@ -31,44 +31,45 @@ components: files: - source: eks.yaml target: eks.yaml - # - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_amd64.tar.gz - # target: binaries_Darwin_x86_64/eksctl - # shasum: 6d72fe0bafa5ac62e1da3889b6987af6192b330abd9c50491bcf1c5966358f89 - # archivePath: eksctl + - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_amd64.tar.gz + target: binaries/eksctl__Darwin_x86_64 + executable: true + shasum: 6d72fe0bafa5ac62e1da3889b6987af6192b330abd9c50491bcf1c5966358f89 + archivePath: eksctl - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_arm64.tar.gz target: binaries/eksctl_Darwin_arm64 - #target: eksctl executable: true shasum: 1d7dd5b9907de1cb3fa7832659db29f50530444d10e77b4a8eb27aa648da6fab archivePath: eksctl - # - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Linux_amd64.tar.gz - # target: binaries_Linux_x86_64/eksctl - # shasum: 2a47bb9c86c7531a166542aa2d8cb8e1e0be326308ebcfaf724d016abe31636b - # archivePath: eksctl + - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Linux_amd64.tar.gz + target: binaries/eksctl_Linux_x86_64 + executable: true + shasum: 2a47bb9c86c7531a166542aa2d8cb8e1e0be326308ebcfaf724d016abe31636b + archivePath: eksctl - # - name: deploy-eks-cluster - # description: Create an EKS cluster! - # actions: - # onDeploy: - # before: - # - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl create cluster --dry-run -f eks.yaml - # - cmd: sleep 15 - # - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl create cluster -f eks.yaml - # - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl utils write-kubeconfig -c ${ZARF_VAR_CLUSTER_NAME} - # - cmd: ./zarf tools kubectl create namespace zarf - # - cmd: ./zarf tools kubectl create secret generic zarf-eks-yaml -n zarf --from-file=eks.yaml + - name: deploy-eks-cluster + description: Create an EKS cluster! + actions: + onDeploy: + before: + - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl create cluster --dry-run -f eks.yaml + - cmd: sleep 15 + - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl create cluster -f eks.yaml + - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl utils write-kubeconfig -c ${ZARF_VAR_CLUSTER_NAME} + - cmd: ./zarf tools kubectl create namespace zarf + - cmd: ./zarf tools kubectl create secret generic zarf-eks-yaml -n zarf --from-file=eks.yaml - # - name: teardown-eks-cluster - # description: Delete the EKS cluster that this package was used to create. - # actions: - # onDeploy: - # before: - # # Get the secret that stores the eks.yaml we used to create this cluster - # - cmd: ./zarf tools kubectl get secret -n zarf zarf-eks-yaml -o jsonpath='{.data.*}' | base64 -d > eks.yaml - # # TODO: Error handling in case the eks.yaml isn't what we expect ??? - # # Use eksctl to delete the cluster - # - cmd: ./eksctl delete cluster -f eks.yaml --disable-nodegroup-eviction --wait - # after: - # # clean up after ourselves - # - cmd: rm -f eks.yaml - # - cmd: rm -f eksctl + - name: teardown-eks-cluster + description: Delete the EKS cluster that this package was used to create. + actions: + onDeploy: + before: + # Get the secret that stores the eks.yaml we used to create this cluster + - cmd: ./zarf tools kubectl get secret -n zarf zarf-eks-yaml -o jsonpath='{.data.*}' | base64 -d > eks.yaml + # TODO: Error handling in case the eks.yaml isn't what we expect ??? + # Use eksctl to delete the cluster + - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl delete cluster -f eks.yaml --disable-nodegroup-eviction --wait + after: + # clean up after ourselves + - cmd: rm -f binaries + - cmd: rm -f eksctl diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 12de5a626c..2e24658f2e 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -285,7 +285,6 @@ func (p *Packager) getFilesToSBOM(component types.ZarfComponent) (*types.Compone } for filesIdx, file := range component.Files { - // path := filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), filepath.Base(file.Target)) path := filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), file.Target) appendSBOMFiles(path) } @@ -386,21 +385,30 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel } if file.ArchivePath != "" { + compressFileName, _ := helpers.ExtractBasePathFromURL(file.Source) targetFile := filepath.Join(filepath.Dir(dst), filepath.Base(file.Target)) targetDir := filepath.Join(filepath.Dir(dst), filepath.Dir(file.Target)) archiveFile := filepath.Join(filepath.Dir(targetFile), compressFileName) + + // Rename the targetFile to the archiveFile so that we can extract it err = os.Rename(targetFile, archiveFile) if err != nil { return fmt.Errorf(lang.ErrWritingFile, dst, err) } - // archiver.Extract() + + // Extract the ArchivePath from the archive file into the targetDir err = archiver.Extract(archiveFile, file.ArchivePath, targetDir) if err != nil { return fmt.Errorf(lang.ErrFileExtract, file.ArchivePath, archiveFile, err) } + + // Update the new file.Target to reflect extracted file file.Target = filepath.Join(targetDir, filepath.Base(file.Target)) extractedArchiveFile := filepath.Join(targetDir, file.ArchivePath) + + // If the extractedArchiveFile has a different name than file.Target + // rename for cases when file.Target = dir/binary if file.Target != extractedArchiveFile { err = os.Rename(filepath.Join(targetDir, file.ArchivePath), file.Target) if err != nil { From de9665af58036b3b553bad33d1b268c3077210e0 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Sat, 12 Aug 2023 07:21:07 -0400 Subject: [PATCH 24/44] remove archive-path example Signed-off-by: Case Wylie --- examples/archive-path/zarf.yaml | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 examples/archive-path/zarf.yaml diff --git a/examples/archive-path/zarf.yaml b/examples/archive-path/zarf.yaml deleted file mode 100644 index 8ea48621a9..0000000000 --- a/examples/archive-path/zarf.yaml +++ /dev/null @@ -1,31 +0,0 @@ -kind: ZarfPackageConfig -metadata: - name: archive-path - description: "Test archive path" - - -components: - - name: download-flux - required: true - files: - # - source: https://github.com/fluxcd/flux2/releases/download/v2.0.1/flux_2.0.1_darwin_arm64.tar.gz - # target: flux - # executable: true - # shasum: 9b17a9d0ee8e0f0cf071e74df05e3e264320c7ce415cb706791b5773de7747f0 - # archivePath: flux - - source: https://github.com/cmwylie19/archive-path/raw/main/archive-path.tar.gz - target: archive-path - # executable: true - # shasum: 9b17a9d0ee8e0f0cf071e74df05e3e264320c7ce415cb706791b5773de7747f0 - archivePath: archive-path - # - name: flux-version - # required: true - # actions: - # onDeploy: - # before: - # - cmd: ./flux -v - # description: What's the version - # mute: false - # - cmd: rm flux - # description: Remove the zipped - \ No newline at end of file From 84f295ca14a49a75a788315247a2ab30cb3184d0 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Sat, 12 Aug 2023 07:30:46 -0400 Subject: [PATCH 25/44] resolve lang conflict Signed-off-by: Case Wylie --- src/config/lang/english.go | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/config/lang/english.go b/src/config/lang/english.go index f0fb2af7a8..dd2cdf054f 100644 --- a/src/config/lang/english.go +++ b/src/config/lang/english.go @@ -27,11 +27,16 @@ const ( ErrCreatingDir = "failed to create directory %s: %s" ErrRemoveFile = "failed to remove file %s: %s" ErrUnarchive = "failed to unarchive %s: %s" + ErrConfirmCancel = "confirm selection canceled: %s" ErrFileExtract = "failed to extract filename %s from archive %s: %s" ) // Zarf CLI commands. const ( + // common command language + CmdConfirmProvided = "Confirm flag specified, continuing without prompting." + CmdConfirmContinue = "Continue with these changes?" + // root zarf command RootCmdShort = "DevSecOps for Airgap" RootCmdLong = "Zarf eliminates the complexity of air gap software delivery for Kubernetes clusters and cloud native workloads\n" + @@ -359,6 +364,27 @@ const ( $ zarf tools registry pull reg.example.com/stefanprodan/podinfo:6.4.0 image.tar ` + CmdToolsRegistryDeleteExample = ` +# delete an image digest from an internal repo in Zarf +$ zarf tools registry delete 127.0.0.1:31999/stefanprodan/podinfo@sha256:57a654ace69ec02ba8973093b6a786faa15640575fbf0dbb603db55aca2ccec8 + +# delete an image digest from a repo hosted at reg.example.com +$ zarf tools registry delete reg.example.com/stefanprodan/podinfo@sha256:57a654ace69ec02ba8973093b6a786faa15640575fbf0dbb603db55aca2ccec8 +` + + CmdToolsRegistryDigestExample = ` +# return an image digest for an internal repo in Zarf +$ zarf tools registry digest 127.0.0.1:31999/stefanprodan/podinfo:6.4.0 + +# return an image digest from a repo hosted at reg.example.com +$ zarf tools registry digest reg.example.com/stefanprodan/podinfo:6.4.0 +` + + CmdToolsRegistryPruneShort = "Prunes images from the registry that are not currently being used by any Zarf packages." + CmdToolsRegistryPruneFlagConfirm = "Confirm the image prune action to prevent accidental deletions" + CmdToolsRegistryPruneImageList = "The following image digests will be pruned from the registry:" + CmdToolsRegistryPruneNoImages = "There are no images to prune" + CmdToolsRegistryInvalidPlatformErr = "Invalid platform '%s': %s" CmdToolsRegistryFlagVerbose = "Enable debug logs" CmdToolsRegistryFlagInsecure = "Allow image references to be fetched without TLS" @@ -515,9 +541,10 @@ const ( // Collection of reusable error messages. var ( - ErrInitNotFound = errors.New("this command requires a zarf-init package, but one was not found on the local system. Re-run the last command again without '--confirm' to download the package") - ErrUnableToCheckArch = errors.New("unable to get the configured cluster's architecture") - ErrInterrupt = errors.New("execution cancelled due to an interrupt") + ErrInitNotFound = errors.New("this command requires a zarf-init package, but one was not found on the local system. Re-run the last command again without '--confirm' to download the package") + ErrUnableToCheckArch = errors.New("unable to get the configured cluster's architecture") + ErrInterrupt = errors.New("execution cancelled due to an interrupt") + ErrUnableToGetPackages = errors.New("unable to load the Zarf Package data from the cluster") ) // Collection of reusable warn messages. From d98e2577f43c5dec1062e23430cab171139d1aa4 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Sat, 12 Aug 2023 07:41:38 -0400 Subject: [PATCH 26/44] remove eks.yaml Signed-off-by: Case Wylie --- eks.yaml | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 eks.yaml diff --git a/eks.yaml b/eks.yaml deleted file mode 100644 index d4d78aaddd..0000000000 --- a/eks.yaml +++ /dev/null @@ -1,24 +0,0 @@ -# eksctl create cluster --config-file=eks.yaml -apiVersion: eksctl.io/v1alpha5 -kind: ClusterConfig -metadata: - name: - region: us-east-1 - version: "1.23" - -iam: - withOIDC: true - -addons: - - name: aws-ebs-csi-driver - version: v1.5.2-eksbuild.1 - attachPolicyARNs: - - arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy - - -managedNodeGroups: -- instanceType: t3.small - name: -ng - minSize: 3 - maxSize: 6 - spot: true From deb4ee89d908784467ec7aa4932346b46e063e54 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Sat, 12 Aug 2023 07:43:57 -0400 Subject: [PATCH 27/44] update e2e test Signed-off-by: Case Wylie --- packages/distros/eks/zarf.yaml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/distros/eks/zarf.yaml b/packages/distros/eks/zarf.yaml index 64058cb165..e46413f9c1 100644 --- a/packages/distros/eks/zarf.yaml +++ b/packages/distros/eks/zarf.yaml @@ -22,12 +22,6 @@ variables: components: - name: load-eksctl required: true - actions: - onDeploy: - after: - # Remove existing eksctl - - cmd: ./binaries/eksctl_$(uname -s)_$(uname -m) version - files: - source: eks.yaml target: eks.yaml @@ -52,10 +46,10 @@ components: actions: onDeploy: before: - - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl create cluster --dry-run -f eks.yaml + - cmd: ./binaries/eksctl_$(uname -s)_$(uname -m) create cluster --dry-run -f eks.yaml - cmd: sleep 15 - - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl create cluster -f eks.yaml - - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl utils write-kubeconfig -c ${ZARF_VAR_CLUSTER_NAME} + - cmd: ./binaries/eksctl_$(uname -s)_$(uname -m) create cluster -f eks.yaml + - cmd: ./binaries/eksctl_$(uname -s)_$(uname -m) utils write-kubeconfig -c ${ZARF_VAR_CLUSTER_NAME} - cmd: ./zarf tools kubectl create namespace zarf - cmd: ./zarf tools kubectl create secret generic zarf-eks-yaml -n zarf --from-file=eks.yaml @@ -68,7 +62,7 @@ components: - cmd: ./zarf tools kubectl get secret -n zarf zarf-eks-yaml -o jsonpath='{.data.*}' | base64 -d > eks.yaml # TODO: Error handling in case the eks.yaml isn't what we expect ??? # Use eksctl to delete the cluster - - cmd: ./binaries_$(uname -s)_$(uname -m)/eksctl delete cluster -f eks.yaml --disable-nodegroup-eviction --wait + - cmd: ./binaries/eksctl_$(uname -s)_$(uname -m) delete cluster -f eks.yaml --disable-nodegroup-eviction --wait after: # clean up after ourselves - cmd: rm -f binaries From 2473f5ea60fec52dc756f6201991cbbb8d4afbff Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Sat, 12 Aug 2023 07:44:35 -0400 Subject: [PATCH 28/44] rm eks.yaml Signed-off-by: Case Wylie --- packages/distros/eks/zarf.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/distros/eks/zarf.yaml b/packages/distros/eks/zarf.yaml index e46413f9c1..2b9854152c 100644 --- a/packages/distros/eks/zarf.yaml +++ b/packages/distros/eks/zarf.yaml @@ -66,4 +66,4 @@ components: after: # clean up after ourselves - cmd: rm -f binaries - - cmd: rm -f eksctl + - cmd: rm -f eks.yaml From 75dfa5ee5925672915576ace9cee90b1d47a002e Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Sat, 12 Aug 2023 08:00:46 -0400 Subject: [PATCH 29/44] logic for files Signed-off-by: Case Wylie --- src/pkg/packager/create.go | 8 +++++++- src/pkg/packager/deploy.go | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 2e24658f2e..4248b5900a 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -285,7 +285,13 @@ func (p *Packager) getFilesToSBOM(component types.ZarfComponent) (*types.Compone } for filesIdx, file := range component.Files { - path := filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), file.Target) + var path string + if file.ArchivePath != "" { + path = filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), file.Target) + appendSBOMFiles(path) + } else { + path = filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), filepath.Base(file.Target)) + } appendSBOMFiles(path) } diff --git a/src/pkg/packager/deploy.go b/src/pkg/packager/deploy.go index dd41751336..ef18f38431 100644 --- a/src/pkg/packager/deploy.go +++ b/src/pkg/packager/deploy.go @@ -318,8 +318,13 @@ func (p *Packager) processComponentFiles(component types.ZarfComponent, pkgLocat for fileIdx, file := range component.Files { spinner.Updatef("Loading %s", file.Target) + var fileLocation string + if file.ArchivePath != "" { + fileLocation = filepath.Join(pkgLocation, strconv.Itoa(fileIdx), file.Target) + } else { + fileLocation = filepath.Join(pkgLocation, strconv.Itoa(fileIdx), filepath.Base(file.Target)) + } - fileLocation := filepath.Join(pkgLocation, strconv.Itoa(fileIdx), file.Target) if utils.InvalidPath(fileLocation) { fileLocation = filepath.Join(pkgLocation, strconv.Itoa(fileIdx)) } From bdecac3433520cc84e61c97220d591c10fd03569 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Sat, 12 Aug 2023 08:12:01 -0400 Subject: [PATCH 30/44] rerun docs-and-schema Signed-off-by: Case Wylie --- docs/3-create-a-zarf-package/4-zarf-schema.md | 2 +- src/ui/lib/api-types.ts | 2 +- zarf.schema.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/3-create-a-zarf-package/4-zarf-schema.md b/docs/3-create-a-zarf-package/4-zarf-schema.md index cb2d652e84..faebb83b46 100644 --- a/docs/3-create-a-zarf-package/4-zarf-schema.md +++ b/docs/3-create-a-zarf-package/4-zarf-schema.md @@ -987,7 +987,7 @@ Must be one of:  
-**Description:** Local folder or file to be extracted into the package +**Description:** Local folder or file to be extracted from a 'source' archive | | | | -------- | -------- | diff --git a/src/ui/lib/api-types.ts b/src/ui/lib/api-types.ts index 5b75c6742f..915686c815 100644 --- a/src/ui/lib/api-types.ts +++ b/src/ui/lib/api-types.ts @@ -719,7 +719,7 @@ export interface BigBang { export interface ZarfFile { /** - * Local folder or file to be extracted into the package + * Local folder or file to be extracted from a 'source' archive */ archivePath?: string; /** diff --git a/zarf.schema.json b/zarf.schema.json index e4ce5d15c0..0d805ffe35 100644 --- a/zarf.schema.json +++ b/zarf.schema.json @@ -797,7 +797,7 @@ }, "archivePath": { "type": "string", - "description": "Local folder or file to be extracted into the package" + "description": "Local folder or file to be extracted from a 'source' archive" } }, "additionalProperties": false, From ad951de367f791a61ee7ae5ca0e1c1524dea8dee Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Sat, 12 Aug 2023 08:25:25 -0400 Subject: [PATCH 31/44] remove zarf-cache from test-archive e2e test Signed-off-by: Case Wylie --- src/test/e2e/00_use_cli_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/e2e/00_use_cli_test.go b/src/test/e2e/00_use_cli_test.go index f69b293117..d0493bf761 100644 --- a/src/test/e2e/00_use_cli_test.go +++ b/src/test/e2e/00_use_cli_test.go @@ -118,7 +118,7 @@ func TestUseCLI(t *testing.T) { t.Run("zarf package to test archive path", func(t *testing.T) { t.Parallel() - stdOut, stdErr, err := e2e.Zarf("package", "create", "packages/distros/eks", "--zarf-cache", "--confirm") + stdOut, stdErr, err := e2e.Zarf("package", "create", "packages/distros/eks", "--confirm") require.NoError(t, err, stdOut, stdErr) path := "build/zarf-package-distro-eks-multi-0.0.2.tar.zst" From ac14d5b9d867a27d925d825e900d1a8c95f2929b Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Sat, 12 Aug 2023 08:43:09 -0400 Subject: [PATCH 32/44] remove extra underscore in distros Signed-off-by: Case Wylie --- packages/distros/eks/zarf.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/distros/eks/zarf.yaml b/packages/distros/eks/zarf.yaml index 2b9854152c..0d5655acf3 100644 --- a/packages/distros/eks/zarf.yaml +++ b/packages/distros/eks/zarf.yaml @@ -26,7 +26,7 @@ components: - source: eks.yaml target: eks.yaml - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_amd64.tar.gz - target: binaries/eksctl__Darwin_x86_64 + target: binaries/eksctl_Darwin_x86_64 executable: true shasum: 6d72fe0bafa5ac62e1da3889b6987af6192b330abd9c50491bcf1c5966358f89 archivePath: eksctl From f27727524e4b47395837aa7646d6649dd4a73ef5 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Mon, 14 Aug 2023 12:19:22 -0400 Subject: [PATCH 33/44] update path for zarf-package-distro-eks-multi-0.0.2.tar.zst Signed-off-by: Case Wylie --- src/test/e2e/00_use_cli_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/e2e/00_use_cli_test.go b/src/test/e2e/00_use_cli_test.go index d0493bf761..0c926724af 100644 --- a/src/test/e2e/00_use_cli_test.go +++ b/src/test/e2e/00_use_cli_test.go @@ -121,7 +121,7 @@ func TestUseCLI(t *testing.T) { stdOut, stdErr, err := e2e.Zarf("package", "create", "packages/distros/eks", "--confirm") require.NoError(t, err, stdOut, stdErr) - path := "build/zarf-package-distro-eks-multi-0.0.2.tar.zst" + path := "zarf-package-distro-eks-multi-0.0.2.tar.zst" stdOut, stdErr, err = e2e.Zarf("package", "deploy", path, "--confirm") require.NoError(t, err, stdOut, stdErr) }) From 3e4c4b00c4f47def748dc4af1bc6bb9bb0f3a8f9 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Mon, 14 Aug 2023 13:02:54 -0400 Subject: [PATCH 34/44] lint and recursive delete Signed-off-by: Case Wylie --- packages/distros/eks/zarf.yaml | 2 +- src/pkg/utils/helpers/url_test.go | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/distros/eks/zarf.yaml b/packages/distros/eks/zarf.yaml index 0d5655acf3..46e7506a42 100644 --- a/packages/distros/eks/zarf.yaml +++ b/packages/distros/eks/zarf.yaml @@ -65,5 +65,5 @@ components: - cmd: ./binaries/eksctl_$(uname -s)_$(uname -m) delete cluster -f eks.yaml --disable-nodegroup-eviction --wait after: # clean up after ourselves - - cmd: rm -f binaries + - cmd: rm -rf binaries - cmd: rm -f eks.yaml diff --git a/src/pkg/utils/helpers/url_test.go b/src/pkg/utils/helpers/url_test.go index 99a073f8a7..6c81c4279c 100644 --- a/src/pkg/utils/helpers/url_test.go +++ b/src/pkg/utils/helpers/url_test.go @@ -92,14 +92,14 @@ func (suite *TestURLSuite) Test_2_DoHostnamesMatch() { } func (suite *TestURLSuite) Test_3_ExtractBasePathFromURL() { - good_urls := []string{ + goodURLs := []string{ "https://zarf.dev/file.txt", "https://docs.zarf.dev/file.txt", "https://zarf.dev/docs/file.tar.gz", "https://defenseunicorns.com/file.yaml", "https://google.com/file.md", } - bad_urls := []string{ + badURLs := []string{ "invalid-url", "am", "not", @@ -116,12 +116,12 @@ func (suite *TestURLSuite) Test_3_ExtractBasePathFromURL() { "file.md", } - for idx, url := range good_urls { + for idx, url := range goodURLs { actualURL, err := ExtractBasePathFromURL(url) suite.NoError(err) suite.Equal(actualURL, expectations[idx]) } - for _, url := range bad_urls { + for _, url := range badURLs { url, err := ExtractBasePathFromURL(url) fmt.Println(url) suite.Error(err) From 6a330e66f34ee6199d7e9fd8c01f4e948f830334 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Tue, 15 Aug 2023 06:52:56 -0400 Subject: [PATCH 35/44] remove duplicated code Signed-off-by: Case Wylie --- src/pkg/packager/create.go | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 4248b5900a..5d01de9bf3 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -288,7 +288,6 @@ func (p *Packager) getFilesToSBOM(component types.ZarfComponent) (*types.Compone var path string if file.ArchivePath != "" { path = filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), file.Target) - appendSBOMFiles(path) } else { path = filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), filepath.Base(file.Target)) } From 284c7035d6910682f1ee17a834ef45067db7e4ae Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Tue, 15 Aug 2023 07:35:01 -0400 Subject: [PATCH 36/44] disable bb Signed-off-by: Case Wylie --- src/extensions/bigbang/test/package/disable-all-bb2.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/extensions/bigbang/test/package/disable-all-bb2.yaml b/src/extensions/bigbang/test/package/disable-all-bb2.yaml index 153ce37c80..b8776699bc 100644 --- a/src/extensions/bigbang/test/package/disable-all-bb2.yaml +++ b/src/extensions/bigbang/test/package/disable-all-bb2.yaml @@ -53,6 +53,9 @@ monitoring: twistlock: enabled: false +grafana: + enabled: false + addons: metricsServer: enabled: false From 98128cf502d2f04d19f091847e471785c5bb1b64 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Mon, 21 Aug 2023 18:38:09 -0400 Subject: [PATCH 37/44] address updates from team Signed-off-by: Case Wylie --- src/config/lang/english.go | 1 + src/pkg/packager/create.go | 77 +++++++++++++++++++++----------------- src/pkg/packager/deploy.go | 6 +-- 3 files changed, 44 insertions(+), 40 deletions(-) diff --git a/src/config/lang/english.go b/src/config/lang/english.go index dd2cdf054f..b219d6dbd1 100644 --- a/src/config/lang/english.go +++ b/src/config/lang/english.go @@ -29,6 +29,7 @@ const ( ErrUnarchive = "failed to unarchive %s: %s" ErrConfirmCancel = "confirm selection canceled: %s" ErrFileExtract = "failed to extract filename %s from archive %s: %s" + ErrFileNameExtract = "failed to extract filename from URL %s: %s" ) // Zarf CLI commands. diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 5d01de9bf3..0f907d32de 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -285,12 +285,7 @@ func (p *Packager) getFilesToSBOM(component types.ZarfComponent) (*types.Compone } for filesIdx, file := range component.Files { - var path string - if file.ArchivePath != "" { - path = filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), file.Target) - } else { - path = filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), filepath.Base(file.Target)) - } + path := filepath.Join(componentPath.Files, strconv.Itoa(filesIdx), filepath.Base(file.Target)) appendSBOMFiles(path) } @@ -384,50 +379,62 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel if isSkeleton { continue } - - if err := utils.DownloadToFile(file.Source, dst, component.CosignKeyPath); err != nil { - return fmt.Errorf(lang.ErrDownloading, file.Source, err.Error()) - } - if file.ArchivePath != "" { - compressFileName, _ := helpers.ExtractBasePathFromURL(file.Source) - targetFile := filepath.Join(filepath.Dir(dst), filepath.Base(file.Target)) - targetDir := filepath.Join(filepath.Dir(dst), filepath.Dir(file.Target)) - archiveFile := filepath.Join(filepath.Dir(targetFile), compressFileName) - - // Rename the targetFile to the archiveFile so that we can extract it - err = os.Rename(targetFile, archiveFile) + // get the compressedFileName from the source + compressedFileName, err := helpers.ExtractBasePathFromURL(file.Source) if err != nil { - return fmt.Errorf(lang.ErrWritingFile, dst, err) + return fmt.Errorf(lang.ErrFileNameExtract, file.Source, err.Error()) } - // Extract the ArchivePath from the archive file into the targetDir - err = archiver.Extract(archiveFile, file.ArchivePath, targetDir) - if err != nil { - return fmt.Errorf(lang.ErrFileExtract, file.ArchivePath, archiveFile, err) - } + compressedFile := filepath.Join(componentPath.Temp, compressedFileName) - // Update the new file.Target to reflect extracted file - file.Target = filepath.Join(targetDir, filepath.Base(file.Target)) - extractedArchiveFile := filepath.Join(targetDir, file.ArchivePath) + // If the file is an archive, download it to the componentPath.Temp + if err := utils.DownloadToFile(file.Source, compressedFile, component.CosignKeyPath); err != nil { + return fmt.Errorf(lang.ErrDownloading, file.Source, err.Error()) + } + // dst = /var/folders/v0/slmrzc4s6kx4n7jb77ch9fc80000gn/T/zarf-1676087642/components/load-eksctl/files/1/eksctl_Darwin_x86_64 - // If the extractedArchiveFile has a different name than file.Target - // rename for cases when file.Target = dir/binary - if file.Target != extractedArchiveFile { - err = os.Rename(filepath.Join(targetDir, file.ArchivePath), file.Target) + dirDst := filepath.Dir(dst) + err = archiver.Extract(compressedFile, file.ArchivePath, dirDst) + if err != nil { + return fmt.Errorf(lang.ErrFileExtract, file.ArchivePath, compressedFileName, err.Error()) + } + // this extracts to /var/folders/v0/slmrzc4s6kx4n7jb77ch9fc80000gn/T/zarf-3537766959/components/load-eksctl/files/1/eksctl + updatedExtractedFileOrDir := filepath.Join(dirDst, file.ArchivePath) + if updatedExtractedFileOrDir != dst { + err = os.Rename(updatedExtractedFileOrDir, dst) if err != nil { return fmt.Errorf(lang.ErrWritingFile, dst, err) } } - dst = filepath.Join(targetDir, filepath.Base(file.Target)) - + } else { + if err := utils.DownloadToFile(file.Source, dst, component.CosignKeyPath); err != nil { + return fmt.Errorf(lang.ErrDownloading, file.Source, err.Error()) + } } + } else { - if err := utils.CreatePathAndCopy(file.Source, dst); err != nil { - return fmt.Errorf("unable to copy file %s: %w", file.Source, err) + if file.ArchivePath != "" { + dirDst := filepath.Dir(dst) + err = archiver.Extract(file.Source, file.ArchivePath, dirDst) + if err != nil { + return fmt.Errorf(lang.ErrFileExtract, file.ArchivePath, file.Source, err.Error()) + } + updatedExtractedFileOrDir := filepath.Join(dirDst, file.ArchivePath) + if updatedExtractedFileOrDir != dst { + err = os.Rename(updatedExtractedFileOrDir, dst) + if err != nil { + return fmt.Errorf(lang.ErrWritingFile, dst, err) + } + } + } else { + if err := utils.CreatePathAndCopy(file.Source, dst); err != nil { + return fmt.Errorf("unable to copy file %s: %w", file.Source, err) + } } + if isSkeleton { p.cfg.Pkg.Components[index].Files[filesIdx].Source = rel } diff --git a/src/pkg/packager/deploy.go b/src/pkg/packager/deploy.go index ef18f38431..0caf2e28c2 100644 --- a/src/pkg/packager/deploy.go +++ b/src/pkg/packager/deploy.go @@ -319,11 +319,7 @@ func (p *Packager) processComponentFiles(component types.ZarfComponent, pkgLocat for fileIdx, file := range component.Files { spinner.Updatef("Loading %s", file.Target) var fileLocation string - if file.ArchivePath != "" { - fileLocation = filepath.Join(pkgLocation, strconv.Itoa(fileIdx), file.Target) - } else { - fileLocation = filepath.Join(pkgLocation, strconv.Itoa(fileIdx), filepath.Base(file.Target)) - } + fileLocation = filepath.Join(pkgLocation, strconv.Itoa(fileIdx), filepath.Base(file.Target)) if utils.InvalidPath(fileLocation) { fileLocation = filepath.Join(pkgLocation, strconv.Itoa(fileIdx)) From d66232d471fd8cfa76178ed451afd9368ead1ead Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Mon, 21 Aug 2023 18:52:13 -0400 Subject: [PATCH 38/44] make docs-and-schema Signed-off-by: Case Wylie --- docs/3-create-a-zarf-package/4-zarf-schema.md | 2 +- src/pkg/packager/create.go | 18 +++++++++--------- src/types/component.go | 2 +- src/ui/lib/api-types.ts | 10 +++++----- zarf.schema.json | 2 +- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/3-create-a-zarf-package/4-zarf-schema.md b/docs/3-create-a-zarf-package/4-zarf-schema.md index 6f3c0916a4..93035f4135 100644 --- a/docs/3-create-a-zarf-package/4-zarf-schema.md +++ b/docs/3-create-a-zarf-package/4-zarf-schema.md @@ -977,7 +977,7 @@ Must be one of:
- archivePath + extractPath  
diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 21e163f66d..6a777262c5 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -389,7 +389,7 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel continue } - if file.ArchivePath != "" { + if file.ExtractPath != "" { // get the compressedFileName from the source compressedFileName, err := helpers.ExtractBasePathFromURL(file.Source) @@ -400,18 +400,18 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel compressedFile := filepath.Join(componentPath.Temp, compressedFileName) // If the file is an archive, download it to the componentPath.Temp - if err := utils.DownloadToFile(file.Source, compressedFile, component.CosignKeyPath); err != nil { + if err := utils.DownloadToFile(file.Source, compressedFile, component.DeprecatedCosignKeyPath); err != nil { return fmt.Errorf(lang.ErrDownloading, file.Source, err.Error()) } // dst = /var/folders/v0/slmrzc4s6kx4n7jb77ch9fc80000gn/T/zarf-1676087642/components/load-eksctl/files/1/eksctl_Darwin_x86_64 dirDst := filepath.Dir(dst) - err = archiver.Extract(compressedFile, file.ArchivePath, dirDst) + err = archiver.Extract(compressedFile, file.ExtractPath, dirDst) if err != nil { - return fmt.Errorf(lang.ErrFileExtract, file.ArchivePath, compressedFileName, err.Error()) + return fmt.Errorf(lang.ErrFileExtract, file.ExtractPath, compressedFileName, err.Error()) } // this extracts to /var/folders/v0/slmrzc4s6kx4n7jb77ch9fc80000gn/T/zarf-3537766959/components/load-eksctl/files/1/eksctl - updatedExtractedFileOrDir := filepath.Join(dirDst, file.ArchivePath) + updatedExtractedFileOrDir := filepath.Join(dirDst, file.ExtractPath) if updatedExtractedFileOrDir != dst { err = os.Rename(updatedExtractedFileOrDir, dst) if err != nil { @@ -426,13 +426,13 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel } } else { - if file.ArchivePath != "" { + if file.ExtractPath != "" { dirDst := filepath.Dir(dst) - err = archiver.Extract(file.Source, file.ArchivePath, dirDst) + err = archiver.Extract(file.Source, file.ExtractPath, dirDst) if err != nil { - return fmt.Errorf(lang.ErrFileExtract, file.ArchivePath, file.Source, err.Error()) + return fmt.Errorf(lang.ErrFileExtract, file.ExtractPath, file.Source, err.Error()) } - updatedExtractedFileOrDir := filepath.Join(dirDst, file.ArchivePath) + updatedExtractedFileOrDir := filepath.Join(dirDst, file.ExtractPath) if updatedExtractedFileOrDir != dst { err = os.Rename(updatedExtractedFileOrDir, dst) if err != nil { diff --git a/src/types/component.go b/src/types/component.go index 2ceee6de6c..a6fb4a4ebd 100644 --- a/src/types/component.go +++ b/src/types/component.go @@ -84,7 +84,7 @@ type ZarfFile struct { Target string `json:"target" jsonschema:"description=The absolute or relative path where the file or folder should be copied to during package deploy"` Executable bool `json:"executable,omitempty" jsonschema:"description=(files only) Determines if the file should be made executable during package deploy"` Symlinks []string `json:"symlinks,omitempty" jsonschema:"description=List of symlinks to create during package deploy"` - ArchivePath string `json:"archivePath,omitempty" jsonschema:"description=Local folder or file to be extracted from a 'source' archive"` + ExtractPath string `json:"extractPath,omitempty" jsonschema:"description=Local folder or file to be extracted from a 'source' archive"` } // ZarfChart defines a helm chart to be deployed. diff --git a/src/ui/lib/api-types.ts b/src/ui/lib/api-types.ts index a7df71d2aa..4bfa2abecf 100644 --- a/src/ui/lib/api-types.ts +++ b/src/ui/lib/api-types.ts @@ -715,14 +715,14 @@ export interface BigBang { } export interface ZarfFile { - /** - * Local folder or file to be extracted from a 'source' archive - */ - archivePath?: string; /** * (files only) Determines if the file should be made executable during package deploy */ executable?: boolean; + /** + * Local folder or file to be extracted from a 'source' archive + */ + extractPath?: string; /** * (files only) Optional SHA256 checksum of the file */ @@ -1593,8 +1593,8 @@ const typeMap: any = { { json: "version", js: "version", typ: "" }, ], false), "ZarfFile": o([ - { json: "archivePath", js: "archivePath", typ: u(undefined, "") }, { json: "executable", js: "executable", typ: u(undefined, true) }, + { json: "extractPath", js: "extractPath", typ: u(undefined, "") }, { json: "shasum", js: "shasum", typ: u(undefined, "") }, { json: "source", js: "source", typ: "" }, { json: "symlinks", js: "symlinks", typ: u(undefined, a("")) }, diff --git a/zarf.schema.json b/zarf.schema.json index 79c749221b..8bc6520679 100644 --- a/zarf.schema.json +++ b/zarf.schema.json @@ -792,7 +792,7 @@ "type": "array", "description": "List of symlinks to create during package deploy" }, - "archivePath": { + "extractPath": { "type": "string", "description": "Local folder or file to be extracted from a 'source' archive" } From 6bba743e2aa92feacba137e348c05997aff72105 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Tue, 22 Aug 2023 08:11:48 -0400 Subject: [PATCH 39/44] update test Signed-off-by: Case Wylie --- packages/distros/eks/zarf.yaml | 6 +++--- src/pkg/packager/create.go | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/distros/eks/zarf.yaml b/packages/distros/eks/zarf.yaml index 9947d7d69b..a537280be7 100644 --- a/packages/distros/eks/zarf.yaml +++ b/packages/distros/eks/zarf.yaml @@ -36,17 +36,17 @@ components: target: binaries/eksctl_Darwin_x86_64 executable: true shasum: 6d72fe0bafa5ac62e1da3889b6987af6192b330abd9c50491bcf1c5966358f89 - archivePath: eksctl + extractPath: eksctl - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Darwin_arm64.tar.gz target: binaries/eksctl_Darwin_arm64 executable: true shasum: 1d7dd5b9907de1cb3fa7832659db29f50530444d10e77b4a8eb27aa648da6fab - archivePath: eksctl + extractPath: eksctl - source: https://github.com/weaveworks/eksctl/releases/download/v0.147.0/eksctl_Linux_amd64.tar.gz target: binaries/eksctl_Linux_x86_64 executable: true shasum: 2a47bb9c86c7531a166542aa2d8cb8e1e0be326308ebcfaf724d016abe31636b - archivePath: eksctl + extractPath: eksctl - name: deploy-eks-cluster description: Create an EKS cluster! diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 6a777262c5..fcca0c223e 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -403,14 +403,13 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel if err := utils.DownloadToFile(file.Source, compressedFile, component.DeprecatedCosignKeyPath); err != nil { return fmt.Errorf(lang.ErrDownloading, file.Source, err.Error()) } - // dst = /var/folders/v0/slmrzc4s6kx4n7jb77ch9fc80000gn/T/zarf-1676087642/components/load-eksctl/files/1/eksctl_Darwin_x86_64 dirDst := filepath.Dir(dst) err = archiver.Extract(compressedFile, file.ExtractPath, dirDst) if err != nil { return fmt.Errorf(lang.ErrFileExtract, file.ExtractPath, compressedFileName, err.Error()) } - // this extracts to /var/folders/v0/slmrzc4s6kx4n7jb77ch9fc80000gn/T/zarf-3537766959/components/load-eksctl/files/1/eksctl + updatedExtractedFileOrDir := filepath.Join(dirDst, file.ExtractPath) if updatedExtractedFileOrDir != dst { err = os.Rename(updatedExtractedFileOrDir, dst) From 8866d44941c102fc50c9b0a6cc7d7cad5e8269b9 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Tue, 22 Aug 2023 17:18:16 -0400 Subject: [PATCH 40/44] clean up duplicated code, address comments Signed-off-by: Case Wylie --- src/pkg/packager/create.go | 36 +++++++++++++++--------------------- src/pkg/packager/deploy.go | 3 +-- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index fcca0c223e..0ab876529f 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -5,7 +5,6 @@ package packager import ( - "crypto" "errors" "fmt" "os" @@ -383,6 +382,7 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel rel := filepath.Join(types.FilesFolder, strconv.Itoa(filesIdx), filepath.Base(file.Target)) dst := filepath.Join(componentPath.Base, rel) + destinationDir := filepath.Dir(dst) if helpers.IsURL(file.Source) { if isSkeleton { @@ -404,20 +404,11 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel return fmt.Errorf(lang.ErrDownloading, file.Source, err.Error()) } - dirDst := filepath.Dir(dst) - err = archiver.Extract(compressedFile, file.ExtractPath, dirDst) + err = archiver.Extract(compressedFile, file.ExtractPath, destinationDir) if err != nil { return fmt.Errorf(lang.ErrFileExtract, file.ExtractPath, compressedFileName, err.Error()) } - updatedExtractedFileOrDir := filepath.Join(dirDst, file.ExtractPath) - if updatedExtractedFileOrDir != dst { - err = os.Rename(updatedExtractedFileOrDir, dst) - if err != nil { - return fmt.Errorf(lang.ErrWritingFile, dst, err) - } - } - } else { if err := utils.DownloadToFile(file.Source, dst, component.DeprecatedCosignKeyPath); err != nil { return fmt.Errorf(lang.ErrDownloading, file.Source, err.Error()) @@ -426,18 +417,10 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel } else { if file.ExtractPath != "" { - dirDst := filepath.Dir(dst) - err = archiver.Extract(file.Source, file.ExtractPath, dirDst) + err = archiver.Extract(file.Source, file.ExtractPath, destinationDir) if err != nil { return fmt.Errorf(lang.ErrFileExtract, file.ExtractPath, file.Source, err.Error()) } - updatedExtractedFileOrDir := filepath.Join(dirDst, file.ExtractPath) - if updatedExtractedFileOrDir != dst { - err = os.Rename(updatedExtractedFileOrDir, dst) - if err != nil { - return fmt.Errorf(lang.ErrWritingFile, dst, err) - } - } } else { if err := utils.CreatePathAndCopy(file.Source, dst); err != nil { return fmt.Errorf("unable to copy file %s: %w", file.Source, err) @@ -449,9 +432,20 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel } } + if file.ExtractPath != "" { + // Make sure dst reflects the actual file or directory. + updatedExtractedFileOrDir := filepath.Join(destinationDir, file.ExtractPath) + if updatedExtractedFileOrDir != dst { + err = os.Rename(updatedExtractedFileOrDir, dst) + if err != nil { + return fmt.Errorf(lang.ErrWritingFile, dst, err) + } + } + } + // Abort packaging on invalid shasum (if one is specified). if file.Shasum != "" { - actualShasum, _ := utils.GetCryptoHashFromFile(dst, crypto.SHA256) + actualShasum, _ := utils.GetSHA256OfFile(dst) if actualShasum != file.Shasum { return fmt.Errorf("shasum mismatch for file %s: expected %s, got %s", file.Source, file.Shasum, actualShasum) } diff --git a/src/pkg/packager/deploy.go b/src/pkg/packager/deploy.go index 385e142c62..00eea92d9e 100644 --- a/src/pkg/packager/deploy.go +++ b/src/pkg/packager/deploy.go @@ -306,9 +306,8 @@ func (p *Packager) processComponentFiles(component types.ZarfComponent, pkgLocat for fileIdx, file := range component.Files { spinner.Updatef("Loading %s", file.Target) - var fileLocation string - fileLocation = filepath.Join(pkgLocation, strconv.Itoa(fileIdx), filepath.Base(file.Target)) + fileLocation := filepath.Join(pkgLocation, strconv.Itoa(fileIdx), filepath.Base(file.Target)) if utils.InvalidPath(fileLocation) { fileLocation = filepath.Join(pkgLocation, strconv.Itoa(fileIdx)) } From 9f9b71ef90cf0305f6c83cfe8393c19886074a4f Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 24 Aug 2023 19:00:10 -0400 Subject: [PATCH 41/44] Update src/test/e2e/00_use_cli_test.go Commit CLI test suggestion Co-authored-by: Wayne Starr --- src/test/e2e/00_use_cli_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/test/e2e/00_use_cli_test.go b/src/test/e2e/00_use_cli_test.go index 44546512c4..33ebcf41b7 100644 --- a/src/test/e2e/00_use_cli_test.go +++ b/src/test/e2e/00_use_cli_test.go @@ -124,6 +124,12 @@ func TestUseCLI(t *testing.T) { path := "zarf-package-distro-eks-multi-0.0.2.tar.zst" stdOut, stdErr, err = e2e.Zarf("package", "deploy", path, "--confirm") require.NoError(t, err, stdOut, stdErr) + + require.FileExists(t, "binaries/eksctl_Darwin_x86_64") + require.FileExists(t, "binaries/eksctl_Darwin_arm64") + require.FileExists(t, "binaries/eksctl_Linux_x86_64") + + e2e.CleanFiles("binaries/eksctl_Darwin_x86_64", "binaries/eksctl_Darwin_arm64", "binaries/eksctl_Linux_x86_64") }) t.Run("zarf package create with tmpdir and cache", func(t *testing.T) { From e048b712d3a6e7470ca7330100c41eafeb6f6208 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 24 Aug 2023 19:00:31 -0400 Subject: [PATCH 42/44] Update src/pkg/packager/create.go use dst instead of file.Source Co-authored-by: Wayne Starr --- src/pkg/packager/create.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 0ab876529f..83023f8527 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -447,7 +447,7 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel if file.Shasum != "" { actualShasum, _ := utils.GetSHA256OfFile(dst) if actualShasum != file.Shasum { - return fmt.Errorf("shasum mismatch for file %s: expected %s, got %s", file.Source, file.Shasum, actualShasum) + return fmt.Errorf("shasum mismatch for file %s: expected %s, got %s", dst, file.Shasum, actualShasum) } } From 1f7ae7060fac39e6f41939887635500c77cf7dac Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 24 Aug 2023 19:00:47 -0400 Subject: [PATCH 43/44] Update src/pkg/packager/create.go Co-authored-by: Wayne Starr --- src/pkg/packager/create.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index 83023f8527..a2347641d6 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -427,9 +427,6 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel } } - if isSkeleton { - p.cfg.Pkg.Components[index].Files[filesIdx].Source = rel - } } if file.ExtractPath != "" { From 17e965ad9c11405eef8d81cfb6a41e6f56537178 Mon Sep 17 00:00:00 2001 From: Case Wylie Date: Thu, 24 Aug 2023 19:01:19 -0400 Subject: [PATCH 44/44] Update src/pkg/packager/create.go Updates around isSkeleton Co-authored-by: Wayne Starr --- src/pkg/packager/create.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/pkg/packager/create.go b/src/pkg/packager/create.go index a2347641d6..62d7177347 100755 --- a/src/pkg/packager/create.go +++ b/src/pkg/packager/create.go @@ -440,6 +440,13 @@ func (p *Packager) addComponent(index int, component types.ZarfComponent, isSkel } } + if isSkeleton { + // Change the source to the new relative source directory (any remote files will have been skipped above) + p.cfg.Pkg.Components[index].Files[filesIdx].Source = rel + // Remove the extractPath from a skeleton since it will already extract it + p.cfg.Pkg.Components[index].Files[filesIdx].ExtractPath = "" + } + // Abort packaging on invalid shasum (if one is specified). if file.Shasum != "" { actualShasum, _ := utils.GetSHA256OfFile(dst)