diff --git a/.github/actions/cleanup-files/action.yaml b/.github/actions/cleanup-files/action.yaml
index 1ea4b72ebd..d490cc086b 100644
--- a/.github/actions/cleanup-files/action.yaml
+++ b/.github/actions/cleanup-files/action.yaml
@@ -7,7 +7,7 @@ runs:
- run: |
lsblk -f
- sudo rm -rf zarf-sbom /tmp/zarf-* src/ui/node_modules
+ sudo rm -rf zarf-sbom /tmp/zarf-*
sudo env "PATH=$PATH" CI=true make delete-packages
sudo build/zarf tools clear-cache
sudo docker system prune --all --force
diff --git a/.github/actions/node/action.yaml b/.github/actions/node/action.yaml
deleted file mode 100644
index 2481e906dd..0000000000
--- a/.github/actions/node/action.yaml
+++ /dev/null
@@ -1,11 +0,0 @@
-name: node-cache
-description: "Node cache"
-
-runs:
- using: composite
- steps:
- - uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3.8.1
- with:
- node-version: 18
- cache: "npm"
- cache-dependency-path: "src/ui/package-lock.json"
diff --git a/.github/workflows/nightly-ecr.yml b/.github/workflows/nightly-ecr.yml
index 1fa30fd82e..58cdf92682 100644
--- a/.github/workflows/nightly-ecr.yml
+++ b/.github/workflows/nightly-ecr.yml
@@ -25,9 +25,6 @@ jobs:
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build the Zarf binary
run: make build-cli-linux-amd
diff --git a/.github/workflows/nightly-eks.yml b/.github/workflows/nightly-eks.yml
index b301fe6cad..455a3d8548 100644
--- a/.github/workflows/nightly-eks.yml
+++ b/.github/workflows/nightly-eks.yml
@@ -33,9 +33,6 @@ jobs:
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build binary and zarf packages
uses: ./.github/actions/packages
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 212cb49722..40cb7ede68 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -23,9 +23,6 @@ jobs:
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Install tools
uses: ./.github/actions/install-tools
@@ -131,9 +128,6 @@ jobs:
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Install tools
uses: ./.github/actions/install-tools
diff --git a/.github/workflows/scan-codeql.yml b/.github/workflows/scan-codeql.yml
index 4242fb78b8..1344da29f5 100644
--- a/.github/workflows/scan-codeql.yml
+++ b/.github/workflows/scan-codeql.yml
@@ -30,7 +30,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- language: ["go", "javascript"]
+ language: ["go"]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
@@ -41,9 +41,6 @@ jobs:
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@04daf014b50eaf774287bf3f0f1869d4b4c4b913 # v2.21.7
diff --git a/.github/workflows/scan-cves.yml b/.github/workflows/scan-cves.yml
index 7db25fb44c..6fb59a3d88 100644
--- a/.github/workflows/scan-cves.yml
+++ b/.github/workflows/scan-cves.yml
@@ -10,8 +10,6 @@ on:
paths:
- "go.mod"
- "go.sum"
- - "src/ui/package.json"
- - "src/ui/package-lock.json"
- "cargo.toml"
- "cargo.lock"
diff --git a/.github/workflows/test-bigbang.yml b/.github/workflows/test-bigbang.yml
index efb88978bd..b8fc38c7be 100644
--- a/.github/workflows/test-bigbang.yml
+++ b/.github/workflows/test-bigbang.yml
@@ -29,9 +29,6 @@ jobs:
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build Zarf binary
uses: ./.github/actions/packages
with:
diff --git a/.github/workflows/test-e2e.yml b/.github/workflows/test-e2e.yml
index ce0dab73b9..2840115600 100644
--- a/.github/workflows/test-e2e.yml
+++ b/.github/workflows/test-e2e.yml
@@ -30,9 +30,6 @@ jobs:
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build binary and zarf packages
uses: ./.github/actions/packages
with:
diff --git a/.github/workflows/test-external.yml b/.github/workflows/test-external.yml
index 157b00af15..48142edae6 100644
--- a/.github/workflows/test-external.yml
+++ b/.github/workflows/test-external.yml
@@ -29,9 +29,6 @@ jobs:
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build binary and zarf packages
uses: ./.github/actions/packages
with:
diff --git a/.github/workflows/test-ui.yml b/.github/workflows/test-ui.yml
deleted file mode 100644
index 344ec9512a..0000000000
--- a/.github/workflows/test-ui.yml
+++ /dev/null
@@ -1,64 +0,0 @@
-name: Test Web UI
-on:
- pull_request:
- paths-ignore:
- - "**.md"
- - "**.jpg"
- - "**.png"
- - "**.gif"
- - "**.svg"
- - "adr/**"
- - "docs/**"
- - "CODEOWNERS"
-
-permissions:
- contents: read
-
-# Abort prior jobs in the same workflow / PR
-concurrency:
- group: e2e-ui-${{ github.ref }}
- cancel-in-progress: true
-
-jobs:
- validate:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
-
- # Have to run early for now since UI tests are a little brittle around cluster state
- - name: Setup K3d
- uses: ./.github/actions/k3d
-
- - name: Setup golang
- uses: ./.github/actions/golang
-
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- - name: Build binary and zarf packages
- uses: ./.github/actions/packages
-
- - name: Cache browsers
- uses: actions/cache@v3
- with:
- path: "~/.cache/ms-playwright/"
- key: ${{ runner.os }}-browsers
-
- - name: Ensure playright is installed
- run: npx --prefix src/ui playwright install
-
- - name: Run UI tests
- run: make test-ui
-
- - name: Save logs
- if: always()
- uses: ./.github/actions/save-logs
-
- - name: Save playright logs
- uses: actions/upload-artifact@v3
- if: always()
- with:
- name: playwright-report
- path: src/ui/playwright-report/
- retention-days: 30
diff --git a/.github/workflows/test-upgrade.yml b/.github/workflows/test-upgrade.yml
index b51ff401f6..350e5f1111 100644
--- a/.github/workflows/test-upgrade.yml
+++ b/.github/workflows/test-upgrade.yml
@@ -29,9 +29,6 @@ jobs:
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build PR binary and zarf init package
uses: ./.github/actions/packages
with:
diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml
index 23ff729e8f..53471284d6 100644
--- a/.github/workflows/test-windows.yml
+++ b/.github/workflows/test-windows.yml
@@ -33,9 +33,6 @@ jobs:
- name: Setup golang
uses: ./.github/actions/golang
- - name: Setup NodeJS
- uses: ./.github/actions/node
-
- name: Build windows binary
run: make build-cli-windows-amd
shell: pwsh
diff --git a/.images/get-started/dosbox.png b/.images/get-started/dosbox.png
deleted file mode 100644
index b0bd13f6ee..0000000000
Binary files a/.images/get-started/dosbox.png and /dev/null differ
diff --git a/.images/get-started/not-private-verify.png b/.images/get-started/not-private-verify.png
deleted file mode 100644
index beae6c892a..0000000000
Binary files a/.images/get-started/not-private-verify.png and /dev/null differ
diff --git a/.images/get-started/not-private.png b/.images/get-started/not-private.png
deleted file mode 100644
index 1a3e658c05..0000000000
Binary files a/.images/get-started/not-private.png and /dev/null differ
diff --git a/.images/get-started/plg.png b/.images/get-started/plg.png
deleted file mode 100644
index ca356e9c76..0000000000
Binary files a/.images/get-started/plg.png and /dev/null differ
diff --git a/.images/harbor-credentials.png b/.images/harbor-credentials.png
deleted file mode 100644
index 5f2ef80c5a..0000000000
Binary files a/.images/harbor-credentials.png and /dev/null differ
diff --git a/.images/zarf-dod.jpg b/.images/zarf-dod.jpg
deleted file mode 100644
index 21b396d843..0000000000
Binary files a/.images/zarf-dod.jpg and /dev/null differ
diff --git a/CODEOWNERS b/CODEOWNERS
index df6532b8b1..1286239544 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -15,14 +15,7 @@ main.go @jeff-mccoy @Racer159 @Noxsios
/packages/ @jeff-mccoy @Racer159 @Noxsios
/zarf.yaml @jeff-mccoy @Racer159 @Noxsios
-# Web UI-specific
-/package*.json @mike-winberry @Racer159 @Noxsios @jeff-mccoy
-/src/internal/api @mike-winberry @Racer159 @Noxsios @jeff-mccoy
-/src/ui/ @mike-winberry @Racer159 @Noxsios @jeff-mccoy
-/playwright.config.ts @mike-winberry @Racer159 @Noxsios @jeff-mccoy
-/svelte.config.js @mike-winberry @Racer159 @Noxsios @jeff-mccoy
-/tsconfig.json @mike-winberry @Racer159 @Noxsios @jeff-mccoy
-/vite.config.ts @mike-winberry @Racer159 @Noxsios @jeff-mccoy
+# Docs Website
/docs-website/ @mike-winberry @Racer159 @Noxsios @jeff-mccoy
# Privileged pipeline files
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 6d7ac7860f..941690c720 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -50,7 +50,7 @@ You can learn more about the testing of Zarf [here](docs/12-contribute-to-zarf/2
### Updating Our Documentation
-Our documentation is auto-generated from the `src/types` and `src/cmd` go packages. This includes the [Zarf package jsonschema](https://github.com/defenseunicorns/zarf/blob/main/zarf.schema.json), the [Zarf schema docs](https://docs.zarf.dev/docs/create-a-zarf-package/zarf-schema), the [Zarf CLI docs](https://docs.zarf.dev/docs/the-zarf-cli/), and our [front-end API types](https://github.com/defenseunicorns/zarf/blob/main/src/ui/lib/api-types.ts). When an update to types or the CLI commands is made you will need to run `make docs-and-schema` locally to regenerate the schema and documentation. CI checks if this was ran, and will fail if it wasn't.
+Our documentation is auto-generated from the `src/types` and `src/cmd` go packages. This includes the [Zarf package jsonschema](https://github.com/defenseunicorns/zarf/blob/main/zarf.schema.json), the [Zarf schema docs](https://docs.zarf.dev/docs/create-a-zarf-package/zarf-schema), and the [Zarf CLI docs](https://docs.zarf.dev/docs/the-zarf-cli/). When an update to types or the CLI commands is made you will need to run `make docs-and-schema` locally to regenerate the schema and documentation. CI checks if this was ran, and will fail if it wasn't.
We do this so that there is a git commit signature from a person on the commit for better traceability, rather than a non-person entity (e.g. GitHub CI token).
diff --git a/Makefile b/Makefile
index 911519ccdb..84e8cd721f 100644
--- a/Makefile
+++ b/Makefile
@@ -48,59 +48,34 @@ destroy: ## Run `zarf destroy` on the current cluster
delete-packages: ## Delete all Zarf package tarballs in the project recursively
find . -type f -name 'zarf-package-*' -delete
-# INTERNAL: used to ensure the ui directory exists
-ensure-ui-build-dir:
- mkdir -p build/ui
- touch build/ui/index.html
-
-# INTERNAL: used to build the UI only if necessary
-check-ui:
- @ if [ ! -z "$(shell command -v shasum)" ]; then\
- if test "$(shell ./hack/print-ui-diff.sh | shasum)" != "$(shell cat build/ui/git-info.txt | shasum)" ; then\
- $(MAKE) build-ui;\
- ./hack/print-ui-diff.sh > build/ui/git-info.txt;\
- fi;\
- else\
- $(MAKE) build-ui;\
- fi
-
-build-ui: ## Build the Zarf UI
- npm --prefix src/ui ci
- npm --prefix src/ui run build
-
# Note: the path to the main.go file is not used due to https://github.com/golang/go/issues/51831#issuecomment-1074188363
-build-cli-linux-amd: check-ui ## Build the Zarf CLI for Linux on AMD64
+build-cli-linux-amd: ## Build the Zarf CLI for Linux on AMD64
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="$(BUILD_ARGS)" -o build/zarf .
-build-cli-linux-arm: check-ui ## Build the Zarf CLI for Linux on ARM
+build-cli-linux-arm: ## Build the Zarf CLI for Linux on ARM
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="$(BUILD_ARGS)" -o build/zarf-arm .
-build-cli-mac-intel: check-ui ## Build the Zarf CLI for macOS on AMD64
+build-cli-mac-intel: ## Build the Zarf CLI for macOS on AMD64
GOOS=darwin GOARCH=amd64 go build -ldflags="$(BUILD_ARGS)" -o build/zarf-mac-intel .
-build-cli-mac-apple: check-ui ## Build the Zarf CLI for macOS on ARM
+build-cli-mac-apple: ## Build the Zarf CLI for macOS on ARM
GOOS=darwin GOARCH=arm64 go build -ldflags="$(BUILD_ARGS)" -o build/zarf-mac-apple .
-build-cli-windows-amd: check-ui ## Build the Zarf CLI for Windows on AMD64
+build-cli-windows-amd: ## Build the Zarf CLI for Windows on AMD64
GOOS=windows GOARCH=amd64 go build -ldflags="$(BUILD_ARGS)" -o build/zarf.exe . ## Build the Zarf CLI for Windows on AMD64
-build-cli-windows-arm: check-ui ## Build the Zarf CLI for Windows on ARM
+build-cli-windows-arm: ## Build the Zarf CLI for Windows on ARM
GOOS=windows GOARCH=arm64 go build -ldflags="$(BUILD_ARGS)" -o build/zarf-arm.exe . ## Build the Zarf CLI for Windows on ARM
build-cli-linux: build-cli-linux-amd build-cli-linux-arm ## Build the Zarf CLI for Linux on AMD64 and ARM
build-cli: build-cli-linux-amd build-cli-linux-arm build-cli-mac-intel build-cli-mac-apple build-cli-windows-amd build-cli-windows-arm ## Build the CLI
-docs-and-schema: ensure-ui-build-dir ## Generate the Zarf Documentation and Schema
+docs-and-schema: ## Generate the Zarf Documentation and Schema
hack/gen-cli-docs.sh
ZARF_CONFIG=hack/empty-config.toml hack/create-zarf-schema.sh
-dev: ensure-ui-build-dir ## Start a Dev Server for the Zarf UI
- go mod download
- npm --prefix src/ui ci
- npm --prefix src/ui run dev
-
# INTERNAL: a shim used to build the agent image only if needed on Windows using the `test` command
init-package-local-agent:
@test "$(AGENT_IMAGE_TAG)" != "local" || $(MAKE) build-local-agent-image
@@ -190,42 +165,21 @@ test-upgrade: ## Run the Zarf CLI E2E tests for an external registry and cluster
cd src/test/upgrade && go test -failfast -v -timeout 30m
.PHONY: test-unit
-test-unit: ensure-ui-build-dir ## Run unit tests
+test-unit: ## Run unit tests
cd src/pkg && go test ./... -failfast -v -timeout 30m
cd src/internal && go test ./... -failfast -v timeout 30m
cd src/extensions/bigbang && go test ./. -failfast -v timeout 30m
-.PHONY: test-ui
-test-ui: ## Run the Zarf UI E2E tests (requires `make build-ui` first) (run with env CI=true to use build/zarf)
- export NODE_PATH=$(CURDIR)/src/ui/node_modules && \
- npm --prefix src/ui run test:pre-init && \
- npm --prefix src/ui run test:init && \
- npm --prefix src/ui run test:post-init && \
- npm --prefix src/ui run test:connect
-
-.PHONY: test-ui-dev-server
-# INTERNAL: used to start a dev version of the API server for the Zarf Web UI tests (locally)
-test-ui-dev-server:
- API_DEV_PORT=5173 \
- API_PORT=3333 \
- API_TOKEN=insecure \
- go run -ldflags="$(BUILD_ARGS)" main.go dev ui -l=trace
-
-.PHONY: test-ui-build-server
-# INTERNAL: used to start the built version of the API server for the Zarf Web UI (in CI)
-test-ui-build-server:
- API_PORT=3333 API_TOKEN=insecure $(ZARF_BIN) dev ui
-
# INTERNAL: used to test that a dev has ran `make docs-and-schema` in their PR
test-docs-and-schema:
$(MAKE) docs-and-schema
hack/check-zarf-docs-and-schema.sh
# INTERNAL: used to test for new CVEs that may have been introduced
-test-cves: ensure-ui-build-dir
+test-cves:
go run main.go tools sbom packages . -o json --exclude './docs-website' --exclude './examples' | grype --fail-on low
-cve-report: ensure-ui-build-dir ## Create a CVE report for the current project (must `brew install grype` first)
+cve-report: ## Create a CVE report for the current project (must `brew install grype` first)
go run main.go tools sbom packages . -o json --exclude './docs-website' --exclude './examples' | grype -o template -t hack/.templates/grype.tmpl > build/zarf-known-cves.csv
lint-go: ## Run revive to lint the go code (must `brew install revive` first)
diff --git a/docs-website/package-lock.json b/docs-website/package-lock.json
index 6b70b707ba..05ba961af4 100644
--- a/docs-website/package-lock.json
+++ b/docs-website/package-lock.json
@@ -177,16 +177,81 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
- "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
"dependencies": {
- "@babel/highlight": "^7.22.5"
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
},
"engines": {
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/code-frame/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/@babel/code-frame/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/@babel/code-frame/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/@babel/compat-data": {
"version": "7.22.5",
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.5.tgz",
@@ -225,19 +290,19 @@
}
},
"node_modules/@babel/core/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/generator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz",
- "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
+ "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
"dependencies": {
- "@babel/types": "^7.22.5",
+ "@babel/types": "^7.23.0",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
@@ -300,9 +365,9 @@
}
},
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -330,9 +395,9 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -354,9 +419,9 @@
}
},
"node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -378,28 +443,28 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz",
- "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-function-name": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz",
- "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
"dependencies": {
- "@babel/template": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
},
"engines": {
"node": ">=6.9.0"
@@ -531,9 +596,9 @@
}
},
"node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz",
- "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
"dependencies": {
"@babel/types": "^7.22.5"
},
@@ -550,9 +615,9 @@
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
- "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
"engines": {
"node": ">=6.9.0"
}
@@ -593,12 +658,12 @@
}
},
"node_modules/@babel/highlight": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
- "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
"engines": {
@@ -670,9 +735,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz",
- "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+ "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -1670,9 +1735,9 @@
}
},
"node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -1918,9 +1983,9 @@
}
},
"node_modules/@babel/preset-env/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -2006,31 +2071,31 @@
}
},
"node_modules/@babel/template": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz",
- "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
"dependencies": {
- "@babel/code-frame": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz",
- "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==",
- "dependencies": {
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
+ "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
+ "dependencies": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.23.0",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
"@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.0",
+ "@babel/types": "^7.23.0",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -2039,12 +2104,12 @@
}
},
"node_modules/@babel/types": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz",
- "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
+ "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
"dependencies": {
"@babel/helper-string-parser": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -2936,9 +3001,9 @@
}
},
"node_modules/@mdx-js/mdx/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"bin": {
"semver": "bin/semver"
}
@@ -4375,9 +4440,9 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -8530,9 +8595,9 @@
}
},
"node_modules/make-dir/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -8863,9 +8928,15 @@
}
},
"node_modules/nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
"bin": {
"nanoid": "bin/nanoid.cjs"
},
@@ -9187,9 +9258,9 @@
}
},
"node_modules/package-json/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -9424,9 +9495,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.21",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
- "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
"funding": [
{
"type": "opencollective",
@@ -9435,10 +9506,14 @@
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
}
],
"dependencies": {
- "nanoid": "^3.3.4",
+ "nanoid": "^3.3.6",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
},
@@ -10751,9 +10826,9 @@
}
},
"node_modules/remark-mdx/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"bin": {
"semver": "bin/semver"
}
@@ -11238,9 +11313,9 @@
}
},
"node_modules/semver-diff/node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -13544,11 +13619,63 @@
}
},
"@babel/code-frame": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz",
- "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==",
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
"requires": {
- "@babel/highlight": "^7.22.5"
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
}
},
"@babel/compat-data": {
@@ -13579,18 +13706,18 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
"@babel/generator": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.5.tgz",
- "integrity": "sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
+ "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
"requires": {
- "@babel/types": "^7.22.5",
+ "@babel/types": "^7.23.0",
"@jridgewell/gen-mapping": "^0.3.2",
"@jridgewell/trace-mapping": "^0.3.17",
"jsesc": "^2.5.1"
@@ -13637,9 +13764,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -13660,9 +13787,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -13677,9 +13804,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -13697,24 +13824,24 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
"@babel/helper-environment-visitor": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz",
- "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q=="
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA=="
},
"@babel/helper-function-name": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz",
- "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
"requires": {
- "@babel/template": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
}
},
"@babel/helper-hoist-variables": {
@@ -13810,9 +13937,9 @@
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz",
- "integrity": "sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==",
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
"requires": {
"@babel/types": "^7.22.5"
}
@@ -13823,9 +13950,9 @@
"integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw=="
},
"@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
- "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ=="
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A=="
},
"@babel/helper-validator-option": {
"version": "7.22.5",
@@ -13854,12 +13981,12 @@
}
},
"@babel/highlight": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz",
- "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==",
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
"requires": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
"js-tokens": "^4.0.0"
},
"dependencies": {
@@ -13915,9 +14042,9 @@
}
},
"@babel/parser": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz",
- "integrity": "sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q=="
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+ "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw=="
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.22.5",
@@ -14532,9 +14659,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -14713,9 +14840,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -14779,39 +14906,39 @@
}
},
"@babel/template": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz",
- "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==",
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
"requires": {
- "@babel/code-frame": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5"
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
}
},
"@babel/traverse": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.5.tgz",
- "integrity": "sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==",
- "requires": {
- "@babel/code-frame": "^7.22.5",
- "@babel/generator": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
+ "version": "7.23.2",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
+ "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
+ "requires": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.23.0",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
"@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.5",
- "@babel/parser": "^7.22.5",
- "@babel/types": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.0",
+ "@babel/types": "^7.23.0",
"debug": "^4.1.0",
"globals": "^11.1.0"
}
},
"@babel/types": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz",
- "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==",
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
+ "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
"requires": {
"@babel/helper-string-parser": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.20",
"to-fast-properties": "^2.0.0"
}
},
@@ -15490,9 +15617,9 @@
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
},
"source-map": {
"version": "0.5.7",
@@ -16539,9 +16666,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -19532,9 +19659,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -19776,9 +19903,9 @@
}
},
"nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
},
"negotiator": {
"version": "0.6.3",
@@ -19996,9 +20123,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
@@ -20176,11 +20303,11 @@
}
},
"postcss": {
- "version": "8.4.21",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
- "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
+ "version": "8.4.31",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
"requires": {
- "nanoid": "^3.3.4",
+ "nanoid": "^3.3.6",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2"
}
@@ -21092,9 +21219,9 @@
}
},
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
},
"source-map": {
"version": "0.5.7",
@@ -21449,9 +21576,9 @@
},
"dependencies": {
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
}
}
},
diff --git a/docs/.images/dashboard/Web UI - Launch.gif b/docs/.images/dashboard/Web UI - Launch.gif
new file mode 100644
index 0000000000..c9781b65b9
Binary files /dev/null and b/docs/.images/dashboard/Web UI - Launch.gif differ
diff --git a/docs/.images/dashboard/Web_UI__Launch_w__Cluster_AdobeExpress.gif b/docs/.images/dashboard/Web_UI__Launch_w__Cluster_AdobeExpress.gif
deleted file mode 100644
index 5300580c80..0000000000
Binary files a/docs/.images/dashboard/Web_UI__Launch_w__Cluster_AdobeExpress.gif and /dev/null differ
diff --git a/docs/12-contribute-to-zarf/2-testing.md b/docs/12-contribute-to-zarf/2-testing.md
index 1425a053a6..024fd6acda 100644
--- a/docs/12-contribute-to-zarf/2-testing.md
+++ b/docs/12-contribute-to-zarf/2-testing.md
@@ -102,28 +102,3 @@ When adding new unit tests, please ensure that the following requirements are me
If all these requirements are met, then a unit test would be appropriate. If not, please consider writing an end-to-end test instead or modify your approach to meet these requirements.
To create a unit test, search for or create a file that ends with `_test.go` in the package of the file that requires testing, such as `auth.go` -> `auth_test.go`. Import the testing library and create test functions as necessary. In case you need to mock something out, determine the most suitable approach and if the mock can be used in multiple tests, consider placing it in `./src/test/mocks/`. This will help enhance the efficiency and organization of the unit tests.
-
-## UI End-to-End Tests
-
-The end-to-end tests for the UI are executed through [Playwright](https://playwright.dev/), which is a NodeJS library designed for running end-to-end tests against a browser. These tests are run against the Zarf UI and can be located in the `./src/test/ui` directory. By utilizing Playwright, developers can verify the functionality of the UI in a realistic and reliable manner, ensuring that it meets the intended requirements and user experience. The location of the UI tests in the directory also allows for easy access and maintenance of the tests.
-
-### Running UI End-to-End Tests
-
-There are several ways to run tests depending on your specific situation, such as:
-
-```shell
-# dont forget to install dependencies
-npm --prefix src/ui ci
-
-# allow playwright to find the node modules
-export NODE_PATH=$(pwd)/src/ui/node_modules
-
-# run tests with @pre-init tag
-npm --prefix src/ui run test:pre-init
-
-# run tests with @init tag
-npm --prefix src/ui run test:init
-
-# run tests with @post-init tag
-npm --prefix src/ui run test:post-init
-```
diff --git a/docs/4-deploy-a-zarf-package/3-deployment-ui.md b/docs/4-deploy-a-zarf-package/3-deployment-ui.md
index 0bef8509e8..efa1f360f5 100644
--- a/docs/4-deploy-a-zarf-package/3-deployment-ui.md
+++ b/docs/4-deploy-a-zarf-package/3-deployment-ui.md
@@ -1,26 +1,26 @@
# Deployment Web UI
-Zarf has a Deployment Web UI built in that supports a number of Zarf features used during the package deployment process. For users who prefer not to use the command line tool, the Web UI creates a simple experience to deploy and manage Zarf clusters and packages. The Web UI can be used to connect to existing clusters (via a Kubeconfig), initialize a cluster, deploy packages into a cluster, update packages in the cluster, and remove packages from the cluster.
+Zarf is also available in a version that exposes a Deployment Web UI that supports a number of Zarf features used during the package deployment process. For users who prefer not to use the command line tool, the Web UI creates a simple experience to deploy and manage Zarf clusters and packages. The Web UI can be used to connect to existing clusters (via a Kubeconfig), initialize a cluster, deploy packages into a cluster, update packages in the cluster, and remove packages from the cluster.
The Zarf Web UI mirrors the functionality of the Zarf CLI commands, but with a more intuitive flow and familiar web application patterns for non-technical users. The web UI does not offer any additional commands or core functionality to Zarf.
## Open the Zarf Deployment Web UI
-The Zarf Deployment Web UI can easily be spun up with a single command from the CLI.
+The Zarf Deployment Web UI can easily be downloaded from the [Zarf UI Github Project](https://github.com/defenseunicorns/zarf-ui/releases/latest).
Follow these steps to get started using the Web UI
-1. Step one: [Install the Zarf binary](../1-getting-started/index.md#installing-zarf)
-2. Step two: Open a terminal shell
-3. Step three: Type in the following command: ```zarf dev UI```
+1. Step one: [Download the Zarf UI](https://github.com/defenseunicorns/zarf-ui/releases/latest) version that matches your system (i.e. `zarf-ui_v0.1.0-Darwin_arm64`)
+2. Step two: (if applicable) Mark the file as executable with `chmod +x zarf-ui_v0.1.0-Darwin_arm64`
+3. Step three: Run the binary with `./zarf-ui_v0.1.0-Darwin_arm64` or by double clicking the file in your file browser
-![GIF showing the Web UI launched from the CLI terminal](../.images/dashboard/Web_UI__Launch_w__Cluster_AdobeExpress.gif)
+![GIF showing the Web UI launched from the CLI terminal](../.images/dashboard/Web%20UI%20-%20Launch.gif)
## Using the Zarf Deployment Web UI
### Cluster Connection Status
-When Zarf is running it automatically searches for a Kubeconfig on the local machine. If the Kubeconfig is found, it searches the default cluster to determine if it is a Zarf cluster (i.e. initialized). There are two different cluster statuses the Web UI will display based on the state of the cluster found.
+When Zarf UI is running it automatically searches for a Kubeconfig on the local machine. If the Kubeconfig is found, it searches the default cluster to determine if it is a Zarf cluster (i.e. initialized). There are two different cluster statuses the Web UI will display based on the state of the cluster found.
#### Cluster not Connected (Not Initialized)
@@ -95,7 +95,7 @@ Once a package is deployed into the cluster, the Web UI offers additional comman
## Technical Details
-The web UI is packaged into the Zarf binary, so you don't have to worry about additional dependencies or trying to install it yourself! The Web UI is served through your machine's local browser, running on `localhost`, and utilizes the Zarf go binary as the backend.
+The web UI is packaged into a separate Go binary using Zarf as a library, so you don't have to worry about additional dependencies or needing to manually hook it into Zarf! The web UI is served through your machine's local browser, running on `localhost`, and utilizes the Go binary as the backend.
Use the Zarf Deployment UI to execute the existing Zarf CLI commands:
- [Zarf tools Kubectl top](../2-the-zarf-cli/100-cli-commands/zarf_tools_kubectl.md)
@@ -103,9 +103,9 @@ Use the Zarf Deployment UI to execute the existing Zarf CLI commands:
- [Zarf Package Deploy](../2-the-zarf-cli/100-cli-commands/zarf_package_deploy.md)
- [Zarf Package Remove](../2-the-zarf-cli/100-cli-commands/zarf_package_remove.md)
- [Zarf Package List](../2-the-zarf-cli/100-cli-commands/zarf_package_list.md)
-- [Zarf Package Inspect](../2-the-zarf-cli/100-cli-commands/zarf_package_inspect.md) (coming soon)
-- [Zarf Tools Sbom](../2-the-zarf-cli/100-cli-commands/zarf_tools_sbom.md) (Coming soon)
-- [Zarf Connect](../2-the-zarf-cli/100-cli-commands/zarf_connect.md) (coming soon)
+- [Zarf Package Inspect](../2-the-zarf-cli/100-cli-commands/zarf_package_inspect.md)
+- [Zarf Tools Sbom](../2-the-zarf-cli/100-cli-commands/zarf_tools_sbom.md)
+- [Zarf Connect](../2-the-zarf-cli/100-cli-commands/zarf_connect.md)
:::info
diff --git a/go.mod b/go.mod
index fb60c15555..59841f5a90 100644
--- a/go.mod
+++ b/go.mod
@@ -18,7 +18,6 @@ require (
github.com/fatih/color v1.15.0
github.com/fluxcd/helm-controller/api v0.36.0
github.com/fluxcd/source-controller/api v1.1.0
- github.com/go-chi/chi/v5 v5.0.10
github.com/go-git/go-git/v5 v5.9.0
github.com/go-logr/logr v1.2.4
github.com/goccy/go-yaml v1.11.2
@@ -42,9 +41,9 @@ require (
github.com/spf13/pflag v1.0.5
github.com/spf13/viper v1.16.0
github.com/stretchr/testify v1.8.4
- golang.org/x/crypto v0.13.0
+ golang.org/x/crypto v0.14.0
golang.org/x/sync v0.3.0
- golang.org/x/term v0.12.0
+ golang.org/x/term v0.13.0
helm.sh/helm/v3 v3.12.3
k8s.io/api v0.28.2
k8s.io/apimachinery v0.28.2
@@ -432,9 +431,9 @@ require (
go4.org/unsafe/assume-no-moving-gc v0.0.0-20220617031537-928513b29760 // indirect
golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect
golang.org/x/mod v0.12.0 // indirect
- golang.org/x/net v0.15.0 // indirect
+ golang.org/x/net v0.17.0 // indirect
golang.org/x/oauth2 v0.11.0 // indirect
- golang.org/x/sys v0.12.0 // indirect
+ golang.org/x/sys v0.13.0 // indirect
golang.org/x/text v0.13.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.13.0 // indirect
diff --git a/go.sum b/go.sum
index 7032a61d88..5d76bfb4fb 100644
--- a/go.sum
+++ b/go.sum
@@ -623,8 +623,6 @@ github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY=
github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4=
github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec=
github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ=
-github.com/go-chi/chi/v5 v5.0.10 h1:rLz5avzKpjqxrYwXNfmjkrYYXOyLJd37pz53UFHC6vk=
-github.com/go-chi/chi/v5 v5.0.10/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
@@ -1739,8 +1737,8 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
-golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck=
-golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
+golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
+golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
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=
@@ -1846,8 +1844,8 @@ golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
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.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=
-golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
+golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
+golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
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=
@@ -1990,8 +1988,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
-golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
+golang.org/x/sys v0.13.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=
@@ -2004,8 +2002,8 @@ golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
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.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU=
-golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
+golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek=
+golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
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=
diff --git a/hack/check-zarf-docs-and-schema.sh b/hack/check-zarf-docs-and-schema.sh
index 6539e88966..93f4e4be0e 100755
--- a/hack/check-zarf-docs-and-schema.sh
+++ b/hack/check-zarf-docs-and-schema.sh
@@ -1,9 +1,9 @@
#!/usr/bin/env sh
-if [ -z "$(git status -s docs/ zarf.schema.json src/ui/lib/api-types.ts)" ]; then
+if [ -z "$(git status -s docs/ zarf.schema.json)" ]; then
echo "Success!"
exit 0
else
- git diff docs/ zarf.schema.json src/ui/lib/api-types.ts
+ git diff docs/ zarf.schema.json
exit 1
fi
diff --git a/hack/create-zarf-schema.sh b/hack/create-zarf-schema.sh
index 35e11dee9f..68752db6c7 100755
--- a/hack/create-zarf-schema.sh
+++ b/hack/create-zarf-schema.sh
@@ -3,8 +3,5 @@
# Create the json schema for the zarf.yaml
go run main.go internal config-schema > zarf.schema.json
-# Create the json schema for the API and use it to create the typescript definitions
-go run main.go internal api-schema | npx quicktype -s schema -o src/ui/lib/api-types.ts
-
# Create docs from the zarf.yaml JSON schema
docker run -v $(pwd):/app -w /app --rm python:3.8-alpine /bin/sh -c "pip install json-schema-for-humans && generate-schema-doc --config-file hack/.templates/jsfh-config.json zarf.schema.json docs/3-create-a-zarf-package/4-zarf-schema.md"
diff --git a/hack/print-ui-diff.sh b/hack/print-ui-diff.sh
deleted file mode 100755
index 1ab4616f9f..0000000000
--- a/hack/print-ui-diff.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env sh
-
-# Get the diff for UI related files
-git diff HEAD src/ui
-git diff HEAD .eslint*
-git diff HEAD ts*
-git diff HEAD prettier*
-git diff HEAD svelte*
-git diff HEAD vite*
-git diff HEAD playwright*
-
-# Get the current commit, branch and other information
-git show --oneline -s
diff --git a/main.go b/main.go
index b3c621ef93..67396e0381 100644
--- a/main.go
+++ b/main.go
@@ -5,20 +5,16 @@
package main
import (
- "embed"
+ _ "embed"
"github.com/defenseunicorns/zarf/src/cmd"
"github.com/defenseunicorns/zarf/src/config"
)
-//go:embed all:build/ui/*
-var assets embed.FS
-
//go:embed cosign.pub
var cosignPublicKey string
func main() {
- config.UIAssets = assets
config.CosignPublicKey = cosignPublicKey
cmd.Execute()
}
diff --git a/src/cmd/internal.go b/src/cmd/internal.go
index e5ee2f6bd6..a8e6e2ff64 100644
--- a/src/cmd/internal.go
+++ b/src/cmd/internal.go
@@ -13,7 +13,6 @@ import (
"github.com/defenseunicorns/zarf/src/cmd/common"
"github.com/defenseunicorns/zarf/src/config/lang"
"github.com/defenseunicorns/zarf/src/internal/agent"
- "github.com/defenseunicorns/zarf/src/internal/api"
"github.com/defenseunicorns/zarf/src/internal/cluster"
"github.com/defenseunicorns/zarf/src/internal/packager/git"
"github.com/defenseunicorns/zarf/src/pkg/message"
@@ -126,19 +125,6 @@ var configSchemaCmd = &cobra.Command{
},
}
-var apiSchemaCmd = &cobra.Command{
- Use: "api-schema",
- Short: lang.CmdInternalAPISchemaShort,
- Run: func(cmd *cobra.Command, args []string) {
- schema := jsonschema.Reflect(&types.RestAPI{})
- output, err := json.MarshalIndent(schema, "", " ")
- if err != nil {
- message.Fatal(err, lang.CmdInternalAPISchemaGenerateErr)
- }
- fmt.Print(string(output) + "\n")
- },
-}
-
var createReadOnlyGiteaUser = &cobra.Command{
Use: "create-read-only-gitea-user",
Short: lang.CmdInternalCreateReadOnlyGiteaUserShort,
@@ -183,16 +169,6 @@ var createPackageRegistryToken = &cobra.Command{
},
}
-var uiCmd = &cobra.Command{
- Use: "ui",
- Short: lang.CmdInternalUIShort,
- Long: lang.CmdInternalUILong,
- Run: func(cmd *cobra.Command, args []string) {
- message.Warn(lang.CmdInternalUIDeprecated)
- api.LaunchAPIServer()
- },
-}
-
var isValidHostname = &cobra.Command{
Use: "is-valid-hostname",
Short: lang.CmdInternalIsValidHostnameShort,
@@ -223,10 +199,8 @@ func init() {
internalCmd.AddCommand(httpProxyCmd)
internalCmd.AddCommand(generateCLIDocs)
internalCmd.AddCommand(configSchemaCmd)
- internalCmd.AddCommand(apiSchemaCmd)
internalCmd.AddCommand(createReadOnlyGiteaUser)
internalCmd.AddCommand(createPackageRegistryToken)
- internalCmd.AddCommand(uiCmd)
internalCmd.AddCommand(isValidHostname)
internalCmd.AddCommand(computeCrc32)
}
diff --git a/src/config/config.go b/src/config/config.go
index 669efd4fb4..e1a8d6f816 100644
--- a/src/config/config.go
+++ b/src/config/config.go
@@ -6,7 +6,6 @@ package config
import (
"crypto/tls"
- "embed"
"fmt"
"net/http"
"os"
@@ -93,7 +92,6 @@ var (
NoColor bool
CosignPublicKey string
- UIAssets embed.FS
// Timestamp of when the CLI was started
operationStartTime = time.Now().Unix()
diff --git a/src/config/lang/english.go b/src/config/lang/english.go
index 7d1bd85688..1642e605d1 100644
--- a/src/config/lang/english.go
+++ b/src/config/lang/english.go
@@ -198,9 +198,6 @@ const (
CmdInternalConfigSchemaShort = "Generates a JSON schema for the zarf.yaml configuration"
CmdInternalConfigSchemaErr = "Unable to generate the zarf config schema"
- CmdInternalAPISchemaShort = "Generates a JSON schema from the API types"
- CmdInternalAPISchemaGenerateErr = "Unable to generate the zarf api schema"
-
CmdInternalCreateReadOnlyGiteaUserShort = "Creates a read-only user in Gitea"
CmdInternalCreateReadOnlyGiteaUserLong = "Creates a read-only user in Gitea by using the Gitea API. " +
"This is called internally by the supported Gitea package component."
@@ -211,11 +208,6 @@ const (
"This is called internally by the supported Gitea package component."
CmdInternalArtifactRegistryGiteaTokenErr = "Unable to create an artifact registry token for the Gitea service."
- CmdInternalUIShort = "[Deprecated] Launches the Zarf Web UI"
- CmdInternalUILong = "[Deprecated] This command launches the Zarf deployment Web UI to connect to clusters and deploy packages" +
- "using a Web GUI instead of the CLI. "
- CmdInternalUIDeprecated = "Deprecated: This command has been replaced by https://github.com/defenseunicorns/zarf-ui and will be removed in the next Zarf release."
-
CmdInternalIsValidHostnameShort = "Checks if the current machine's hostname is RFC1123 compliant"
CmdInternalIsValidHostnameErr = "The hostname '%s' is not valid. Ensure the hostname meets RFC1123 requirements https://www.rfc-editor.org/rfc/rfc1123.html."
diff --git a/src/internal/api/auth/token.go b/src/internal/api/auth/token.go
deleted file mode 100644
index 2750e412dc..0000000000
--- a/src/internal/api/auth/token.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package auth provides an endpoint for authenticating against the Zarf UI server.
-package auth
-
-import (
- "net/http"
-)
-
-// RequireSecret ensures the request has a valid token.
-func RequireSecret(validToken string) func(http.Handler) http.Handler {
- return func(next http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-
- if r.Header.Get("Authorization") != validToken {
- w.WriteHeader(http.StatusUnauthorized)
- return
- }
-
- next.ServeHTTP(w, r)
- })
- }
-}
-
-// Connect is a head-only request to test the connection.
-func Connect(w http.ResponseWriter, _ *http.Request) {
- w.WriteHeader(http.StatusOK)
-}
diff --git a/src/internal/api/cluster/cluster.go b/src/internal/api/cluster/cluster.go
deleted file mode 100644
index 81bfdc3873..0000000000
--- a/src/internal/api/cluster/cluster.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package cluster contains Zarf-specific cluster management functions.
-package cluster
-
-import (
- "net/http"
-
- "github.com/defenseunicorns/zarf/src/internal/api/common"
- "github.com/defenseunicorns/zarf/src/internal/cluster"
- "github.com/defenseunicorns/zarf/src/pkg/message"
- "github.com/defenseunicorns/zarf/src/types"
- "k8s.io/client-go/tools/clientcmd"
-)
-
-// Summary returns a summary of cluster status.
-func Summary(w http.ResponseWriter, _ *http.Request) {
- message.Debug("cluster.Summary()")
-
- var state *types.ZarfState
- var reachable bool
- var distro string
- var hasZarf bool
- var k8sRevision string
-
- c, err := cluster.NewCluster()
- rawConfig, _ := clientcmd.NewDefaultClientConfigLoadingRules().GetStartingConfig()
-
- reachable = err == nil
- if reachable {
- distro, _ = c.DetectDistro()
- state, _ = c.LoadZarfState()
- hasZarf = state != nil
- k8sRevision, _ = c.GetServerVersion()
- }
-
- data := types.ClusterSummary{
- Reachable: reachable,
- HasZarf: hasZarf,
- Distro: distro,
- ZarfState: state,
- K8sRevision: k8sRevision,
- RawConfig: rawConfig,
- }
-
- common.WriteJSONResponse(w, data, http.StatusOK)
-}
diff --git a/src/internal/api/cluster/state.go b/src/internal/api/cluster/state.go
deleted file mode 100644
index 941f5bf206..0000000000
--- a/src/internal/api/cluster/state.go
+++ /dev/null
@@ -1,44 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package cluster contains Zarf-specific cluster management functions.
-package cluster
-
-import (
- "net/http"
-
- "github.com/defenseunicorns/zarf/src/config/lang"
- "github.com/defenseunicorns/zarf/src/internal/api/common"
- "github.com/defenseunicorns/zarf/src/internal/cluster"
- "github.com/defenseunicorns/zarf/src/pkg/message"
- "github.com/defenseunicorns/zarf/src/types"
-)
-
-// ReadState reads the Zarf state secret from the cluster, if it exists.
-func ReadState(w http.ResponseWriter, _ *http.Request) {
- message.Debug("state.Read()")
-
- data, err := cluster.NewClusterOrDie().LoadZarfState()
- if err != nil {
- message.ErrorWebf(err, w, lang.ErrLoadState)
- }
-
- if data.Distro == "" {
- common.WriteEmpty(w)
- } else {
- common.WriteJSONResponse(w, data, http.StatusOK)
- }
-}
-
-// UpdateState updates the Zarf state secret in the cluster.
-func UpdateState(w http.ResponseWriter, _ *http.Request) {
- message.Debug("state.Update()")
-
- var data *types.ZarfState
-
- if err := cluster.NewClusterOrDie().SaveZarfState(data); err != nil {
- message.ErrorWebf(err, w, lang.ErrLoadState)
- } else {
- common.WriteJSONResponse(w, data, http.StatusCreated)
- }
-}
diff --git a/src/internal/api/common/common.go b/src/internal/api/common/common.go
deleted file mode 100644
index 6006c451f4..0000000000
--- a/src/internal/api/common/common.go
+++ /dev/null
@@ -1,36 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package common provides common functions for the api.
-package common
-
-import (
- "encoding/json"
- "net/http"
-
- "github.com/defenseunicorns/zarf/src/pkg/message"
-)
-
-// WriteEmpty returns a 204 response with no body.
-func WriteEmpty(w http.ResponseWriter) {
- message.Debug("api.WriteEmpty()")
- w.WriteHeader(http.StatusNoContent)
-}
-
-// WriteJSONResponse returns any data provided as a JSON body to the caller.
-func WriteJSONResponse(w http.ResponseWriter, data any, statusCode int) {
- message.Debug("api.WriteJSONResponse()")
-
- var encoded []byte
- var err error
- if data != nil {
- encoded, err = json.Marshal(data)
- if err != nil {
- message.WarnErr(err, "Error marshalling JSON")
- panic(err)
- }
- }
-
- w.WriteHeader(statusCode)
- w.Write(encoded)
-}
diff --git a/src/internal/api/components/list.go b/src/internal/api/components/list.go
deleted file mode 100644
index 1441961f86..0000000000
--- a/src/internal/api/components/list.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package components provides api functions for managing Zarf components.
-package components
-
-import (
- "net/http"
-
- "github.com/defenseunicorns/zarf/src/config/lang"
- "github.com/defenseunicorns/zarf/src/internal/api/common"
- "github.com/defenseunicorns/zarf/src/internal/cluster"
- "github.com/defenseunicorns/zarf/src/pkg/message"
- "github.com/go-chi/chi/v5"
-)
-
-// ListDeployedComponents writes a list of packages that have been deployed to the connected cluster.
-func ListDeployedComponents(w http.ResponseWriter, r *http.Request) {
- pkgName := chi.URLParam(r, "pkg")
- dp, err := cluster.NewClusterOrDie().GetDeployedPackage(pkgName)
- if err != nil {
- message.ErrorWebf(err, w, lang.ErrLoadPackageSecret, pkgName)
- }
- common.WriteJSONResponse(w, dp.DeployedComponents, http.StatusOK)
-}
diff --git a/src/internal/api/packages/deploy.go b/src/internal/api/packages/deploy.go
deleted file mode 100644
index 4bc96ba5cf..0000000000
--- a/src/internal/api/packages/deploy.go
+++ /dev/null
@@ -1,130 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package packages provides api functions for managing Zarf packages.
-package packages
-
-import (
- "bufio"
- "bytes"
- "encoding/json"
- "fmt"
- "io"
- "net/http"
- "os"
- "strings"
-
- globalConfig "github.com/defenseunicorns/zarf/src/config"
- "github.com/defenseunicorns/zarf/src/internal/api/common"
- "github.com/defenseunicorns/zarf/src/pkg/message"
- "github.com/defenseunicorns/zarf/src/pkg/packager"
- "github.com/defenseunicorns/zarf/src/pkg/packager/sources"
- "github.com/defenseunicorns/zarf/src/types"
- "github.com/pterm/pterm"
-)
-
-// DeployPackage deploys a package to the Zarf cluster.
-func DeployPackage(w http.ResponseWriter, r *http.Request) {
- cfg := types.PackagerConfig{}
-
- var body types.APIZarfDeployPayload
-
- err := json.NewDecoder(r.Body).Decode(&body)
- if err != nil {
- message.ErrorWebf(err, w, "Unable to decode the request to deploy the cluster")
- return
- }
-
- if body.InitOpts != nil {
- cfg.InitOpts = *body.InitOpts
- }
- cfg.PkgOpts = body.PackageOpts
-
- globalConfig.CommonOptions.Confirm = true
-
- src, err := sources.New(&cfg.PkgOpts)
- if err != nil {
- message.ErrorWebf(err, w, "Unable to create a package source")
- return
- }
- pkgClient, err := packager.New(&cfg, packager.WithSource(src))
- if err != nil {
- pkgClient.ClearTempPaths()
- message.ErrorWebf(err, w, "Unable to create a packager instance")
- return
- }
- defer pkgClient.ClearTempPaths()
-
- if err := pkgClient.Deploy(); err != nil {
- message.ErrorWebf(err, w, err.Error())
- return
- }
-
- common.WriteJSONResponse(w, true, http.StatusCreated)
-}
-
-// StreamDeployPackage Establishes a stream that redirects pterm output to the stream
-// Resets the output to std.err after the stream connection is closed
-func StreamDeployPackage(w http.ResponseWriter, r *http.Request) {
- w.Header().Set("Content-Type", "text/event-stream; charset=utf-8")
- w.Header().Set("Cache-Control", "no-cache")
- w.Header().Set("Connection", "keep-alive")
-
- pr, pw, _ := os.Pipe()
- logStream := io.MultiWriter(message.LogWriter, pw)
- pterm.SetDefaultOutput(logStream)
-
- scanner := bufio.NewScanner(pr)
- scanner.Split(splitStreamLines)
- done := r.Context().Done()
-
- // Loop through the scanner and send each line to the stream
- for scanner.Scan() {
- select {
- // If the context is done, reset the output and return
- case (<-done):
- pterm.SetDefaultOutput(message.LogWriter)
- return
- default:
- err := scanner.Err()
- if err != nil {
- message.ErrorWebf(err, w, "Unable to read the stream")
- return
- }
- line := scanner.Text()
-
- // Clean up the line and send it to the stream
- trimmed := strings.TrimSpace(line)
-
- fmt.Fprintf(w, "data: %s\n\n", trimmed)
- w.(http.Flusher).Flush()
- }
- }
-}
-
-// Splits scanner lines on '\n', '\r', and '\r\n' line endings to ensure the progress and spinner lines show up correctly
-func splitStreamLines(data []byte, atEOF bool) (advance int, token []byte, err error) {
- if atEOF && len(data) == 0 {
- return 0, nil, nil
- }
- // If data ends with '\n', return the line without '\n' or '\r\n'
- if i := bytes.IndexByte(data, '\n'); i >= 0 {
- // Drop the preceding carriage return if it exists
- if i > 0 && data[i-1] == '\r' {
- return i + 1, data[:i-1], nil
- }
-
- return i + 1, data[:i], nil
- }
- // if data ends with '\r', return the line without '\r'
- if i := bytes.IndexByte(data, '\r'); i >= 0 {
- return i + 1, data[:i], nil
- }
-
- // If we're at EOF and we have a final non-terminated line. Return it.
- if atEOF {
- return len(data), data, nil
- }
-
- return 0, nil, nil
-}
diff --git a/src/internal/api/packages/find.go b/src/internal/api/packages/find.go
deleted file mode 100644
index 5836542be9..0000000000
--- a/src/internal/api/packages/find.go
+++ /dev/null
@@ -1,178 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package packages provides api functions for managing Zarf packages.
-package packages
-
-import (
- "encoding/json"
- "fmt"
- "io/fs"
- "net/http"
- "os"
- "path/filepath"
- "regexp"
-
- "github.com/defenseunicorns/zarf/src/config"
- "github.com/defenseunicorns/zarf/src/pkg/packager"
- "github.com/defenseunicorns/zarf/src/pkg/utils"
-)
-
-// FindInHomeStream returns all packages in the user's home directory.
-// If the init query parameter is true, only init packages will be returned.
-func FindInHomeStream(w http.ResponseWriter, r *http.Request) {
- w.Header().Set("Content-Type", "text/event-stream; charset=utf-8")
- w.Header().Set("Cache-Control", "no-cache")
- w.Header().Set("Connection", "keep-alive")
-
- init := r.URL.Query().Get("init")
- regexp := packager.ZarfPackagePattern
- if init == "true" {
- regexp = packager.ZarfInitPattern
- }
-
- done := make(chan bool)
- go func() {
- // User home directory
- homePath, err := os.UserHomeDir()
- if err != nil {
- streamError(err, w)
- } else {
- // Recursively search for and stream packages in the home directory
- recursivePackageStream(homePath, regexp, w)
- }
- close(done)
- }()
-
- <-done
-}
-
-// FindInitStream finds and streams all init packages in the current working directory, the cache directory, and execution directory
-func FindInitStream(w http.ResponseWriter, _ *http.Request) {
- w.Header().Set("Content-Type", "text/event-stream; charset=utf-8")
- w.Header().Set("Cache-Control", "no-cache")
- w.Header().Set("Connection", "keep-alive")
-
- done := make(chan bool)
- go func() {
- // stream init packages in the execution directory
- if binaryPath, err := utils.GetFinalExecutablePath(); err == nil {
- streamDirPackages(filepath.Dir(binaryPath), packager.ZarfInitPattern, w)
- } else {
- streamError(err, w)
- }
-
- // Cache directory
- cachePath := config.GetAbsCachePath()
- // Create the cache directory if it doesn't exist
- if utils.InvalidPath(cachePath) {
- if err := os.MkdirAll(cachePath, 0755); err != nil {
- streamError(err, w)
- }
- }
- streamDirPackages(cachePath, packager.ZarfInitPattern, w)
-
- // Find init packages in the current working directory
- if cwd, err := os.Getwd(); err == nil {
- streamDirPackages(cwd, packager.ZarfInitPattern, w)
- } else {
- streamError(err, w)
- }
- close(done)
- }()
- <-done
-}
-
-// FindPackageStream finds and streams all packages in the current working directory
-func FindPackageStream(w http.ResponseWriter, _ *http.Request) {
- w.Header().Set("Content-Type", "text/event-stream; charset=utf-8")
- w.Header().Set("Cache-Control", "no-cache")
- w.Header().Set("Connection", "keep-alive")
- done := make(chan bool)
-
- go func() {
- if cwd, err := os.Getwd(); err == nil {
- streamDirPackages(cwd, packager.ZarfPackagePattern, w)
- } else {
- streamError(err, w)
- }
- close(done)
- }()
-
- <-done
- // Find init packages in the current working directory
-}
-
-// recursivePackageStream recursively searches for and streams packages in the given directory
-func recursivePackageStream(dir string, pattern *regexp.Regexp, w http.ResponseWriter) {
- err := filepath.WalkDir(dir, func(path string, d fs.DirEntry, err error) error {
- // ignore files/dirs that it does not have permission to read
- if err != nil && os.IsPermission(err) {
- return nil
- }
-
- // Return error if the pattern is invalid
- if pattern == nil {
- return filepath.ErrBadPattern
- }
-
- // Return errors
- if err != nil {
- return err
- }
-
- if !d.IsDir() {
- if len(pattern.FindStringIndex(path)) > 0 {
- streamPackage(path, w)
- }
- // Skip the trash bin and hidden directories
- } else if utils.IsTrashBin(path) {
- return filepath.SkipDir
- }
-
- return nil
- })
- if err != nil {
- streamError(err, w)
- }
-}
-
-// streamDirPackages streams all packages in the given directory
-func streamDirPackages(dir string, pattern *regexp.Regexp, w http.ResponseWriter) {
- files, err := os.ReadDir(dir)
- if err != nil {
- streamError(err, w)
- }
- for _, file := range files {
- if !file.IsDir() {
- path := fmt.Sprintf("%s/%s", dir, file.Name())
- if pattern != nil {
- if len(pattern.FindStringIndex(path)) > 0 {
- streamPackage(path, w)
- }
- }
- }
- }
-}
-
-// streamPackage streams the package at the given path
-func streamPackage(path string, w http.ResponseWriter) {
- pkg, err := ReadPackage(path)
- if err != nil {
- streamError(err, w)
- } else {
- jsonData, err := json.Marshal(pkg)
- if err != nil {
- streamError(err, w)
- } else {
- fmt.Fprintf(w, "data: %s\n\n", jsonData)
- w.(http.Flusher).Flush()
- }
- }
-}
-
-// streamError streams the given error to the client
-func streamError(err error, w http.ResponseWriter) {
- fmt.Fprintf(w, "data: %s\n\n", err.Error())
- w.(http.Flusher).Flush()
-}
diff --git a/src/internal/api/packages/list.go b/src/internal/api/packages/list.go
deleted file mode 100644
index afc840d03c..0000000000
--- a/src/internal/api/packages/list.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package packages provides api functions for managing Zarf packages.
-package packages
-
-import (
- "net/http"
-
- "github.com/defenseunicorns/zarf/src/internal/api/common"
- "github.com/defenseunicorns/zarf/src/internal/cluster"
- "github.com/defenseunicorns/zarf/src/pkg/message"
-)
-
-// ListDeployedPackages writes a list of packages that have been deployed to the connected cluster.
-func ListDeployedPackages(w http.ResponseWriter, _ *http.Request) {
- c, err := cluster.NewCluster()
- if err != nil {
- message.ErrorWebf(err, w, "Could not connect to cluster")
- return
- }
-
- deployedPackages, errs := c.GetDeployedZarfPackages()
- // TODO #1312: Handle errors where some deployedPackages were able to be parsed
- if len(errs) > 0 && len(deployedPackages) == 0 {
- message.ErrorWebf(err, w, "Unable to get a list of the deployed Zarf packages")
- return
- }
-
- common.WriteJSONResponse(w, deployedPackages, http.StatusOK)
-}
diff --git a/src/internal/api/packages/read.go b/src/internal/api/packages/read.go
deleted file mode 100644
index 2c4b7e7e32..0000000000
--- a/src/internal/api/packages/read.go
+++ /dev/null
@@ -1,61 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package packages provides api functions for managing Zarf packages.
-package packages
-
-import (
- "io"
- "net/http"
- "net/url"
-
- "github.com/defenseunicorns/zarf/src/internal/api/common"
- "github.com/defenseunicorns/zarf/src/pkg/layout"
- "github.com/defenseunicorns/zarf/src/pkg/message"
- "github.com/defenseunicorns/zarf/src/types"
- "github.com/go-chi/chi/v5"
- goyaml "github.com/goccy/go-yaml"
- "github.com/mholt/archiver/v3"
-)
-
-// Read reads a package from the local filesystem and writes the Zarf.yaml json to the response.
-func Read(w http.ResponseWriter, r *http.Request) {
- message.Debug("packages.Read()")
-
- path := chi.URLParam(r, "path")
-
- if pkg, err := ReadPackage(path); err != nil {
- message.ErrorWebf(err, w, "Unable to read the package at: `%s`", path)
- } else {
- common.WriteJSONResponse(w, pkg, http.StatusOK)
- }
-}
-
-// ReadPackage reads a packages yaml from the local filesystem and returns an APIZarfPackage.
-func ReadPackage(path string) (pkg types.APIZarfPackage, err error) {
- var file []byte
-
- pkg.Path, err = url.QueryUnescape(path)
- if err != nil {
- return pkg, err
- }
-
- // Check for zarf.yaml in the package and read into file
- err = archiver.Walk(pkg.Path, func(f archiver.File) error {
- if f.Name() == layout.ZarfYAML {
- file, err = io.ReadAll(f)
- if err != nil {
- return err
- }
- return archiver.ErrStopWalk
- }
-
- return nil
- })
- if err != nil {
- return pkg, err
- }
-
- err = goyaml.Unmarshal(file, &pkg.ZarfPackage)
- return pkg, err
-}
diff --git a/src/internal/api/packages/remove.go b/src/internal/api/packages/remove.go
deleted file mode 100644
index 523a3600a8..0000000000
--- a/src/internal/api/packages/remove.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package packages provides api functions for managing Zarf packages.
-package packages
-
-import (
- "net/http"
-
- "github.com/defenseunicorns/zarf/src/internal/api/common"
- "github.com/defenseunicorns/zarf/src/pkg/message"
- "github.com/defenseunicorns/zarf/src/pkg/packager"
- "github.com/defenseunicorns/zarf/src/types"
- "github.com/go-chi/chi/v5"
-)
-
-// RemovePackage removes a package that has been deployed to the cluster.
-func RemovePackage(w http.ResponseWriter, r *http.Request) {
- // Get the components to remove from the (optional) query params
- components := r.URL.Query().Get("components")
-
- // Get the name of the package we're removing from the URL params
- name := chi.URLParam(r, "name")
-
- // Setup the packager
- pkg, err := packager.New(&types.PackagerConfig{
- PkgOpts: types.ZarfPackageOptions{
- OptionalComponents: components,
- PackageSource: name,
- },
- })
- defer pkg.ClearTempPaths()
-
- if err != nil {
- message.ErrorWebf(err, w, "Unable to remove the zarf package from the cluster")
- }
-
- // Remove the package
- if err := pkg.Remove(); err != nil {
- message.ErrorWebf(err, w, "Unable to remove the zarf package from the cluster")
- return
- }
-
- common.WriteJSONResponse(w, nil, http.StatusOK)
-}
diff --git a/src/internal/api/packages/sbom.go b/src/internal/api/packages/sbom.go
deleted file mode 100644
index fd486030c4..0000000000
--- a/src/internal/api/packages/sbom.go
+++ /dev/null
@@ -1,134 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package packages provides api functions for managing Zarf packages.
-package packages
-
-import (
- "net/http"
- "net/url"
- "os"
- "os/signal"
- "path/filepath"
- "syscall"
-
- "github.com/defenseunicorns/zarf/src/internal/api/common"
- "github.com/defenseunicorns/zarf/src/pkg/layout"
- "github.com/defenseunicorns/zarf/src/pkg/message"
- "github.com/defenseunicorns/zarf/src/pkg/utils"
- "github.com/defenseunicorns/zarf/src/types"
- "github.com/go-chi/chi/v5"
- "github.com/mholt/archiver/v3"
-)
-
-var signalChan = make(chan os.Signal, 1)
-
-// ExtractSBOM Extracts the SBOM from the package and returns the path to the SBOM
-func ExtractSBOM(w http.ResponseWriter, r *http.Request) {
- path := chi.URLParam(r, "path")
-
- sbom, err := extractSBOM(path)
-
- if err != nil {
- message.ErrorWebf(err, w, err.Error())
- } else {
- common.WriteJSONResponse(w, sbom, http.StatusOK)
- }
-
-}
-
-// DeleteSBOM removes the SBOM directory
-func DeleteSBOM(w http.ResponseWriter, _ *http.Request) {
- err := cleanupSBOM()
- if err != nil {
- message.ErrorWebf(err, w, err.Error())
- return
- }
- common.WriteJSONResponse(w, nil, http.StatusOK)
-}
-
-// cleanupSBOM removes the SBOM directory
-func cleanupSBOM() error {
- err := os.RemoveAll(layout.SBOMDir)
- if err != nil {
- return err
- }
- return nil
-}
-
-// Extracts the SBOM from the package and returns the path to the SBOM
-func extractSBOM(escapedPath string) (sbom types.APIPackageSBOM, err error) {
- path, err := url.QueryUnescape(escapedPath)
- if err != nil {
- return sbom, err
- }
-
- // Ensure we can get the cwd
- cwd, err := os.Getwd()
- if err != nil {
- return sbom, err
- }
-
- // ensure the package exists
- if _, err := os.Stat(path); os.IsNotExist(err) {
- return sbom, err
- }
-
- // Join the current working directory with the zarf-sbom directory
- sbomPath := filepath.Join(cwd, layout.SBOMDir)
-
- // ensure the zarf-sbom directory is empty
- if _, err := os.Stat(sbomPath); !os.IsNotExist(err) {
- cleanupSBOM()
- }
-
- // Create the Zarf SBOM directory
- err = utils.CreateDirectory(sbomPath, 0700)
- if err != nil {
- return sbom, err
- }
-
- // Extract the sbom.tar from the package
- err = archiver.Extract(path, layout.SBOMTar, sbomPath)
- if err != nil {
- cleanupSBOM()
- return sbom, err
- }
-
- // Unarchive the sbom.tar
- err = archiver.Unarchive(filepath.Join(sbomPath, layout.SBOMTar), sbomPath)
- if err != nil {
- cleanupSBOM()
- return sbom, err
- }
-
- // Get the SBOM viewer files
- sbom, err = getSbomViewFiles(sbomPath)
- if err != nil {
- cleanupSBOM()
- return sbom, err
- }
-
- // Cleanup the temp directory on exit
- go func() {
- signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)
- // Wait for a signal to be received
- <-signalChan
-
- cleanupSBOM()
-
- // Exit the program
- os.Exit(0)
- }()
-
- return sbom, err
-}
-
-func getSbomViewFiles(sbomPath string) (sbom types.APIPackageSBOM, err error) {
- sbomViewFiles, err := filepath.Glob(filepath.Join(sbomPath, "sbom-viewer-*"))
- if len(sbomViewFiles) > 0 {
- sbom.Path = sbomViewFiles[0]
- sbom.SBOMS = sbomViewFiles
- }
- return sbom, err
-}
diff --git a/src/internal/api/packages/tunnels.go b/src/internal/api/packages/tunnels.go
deleted file mode 100644
index 2f8a7e65a3..0000000000
--- a/src/internal/api/packages/tunnels.go
+++ /dev/null
@@ -1,112 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package packages provides api functions for managing Zarf packages.
-package packages
-
-import (
- "errors"
- "net/http"
-
- "github.com/defenseunicorns/zarf/src/internal/api/common"
- "github.com/defenseunicorns/zarf/src/internal/cluster"
- "github.com/defenseunicorns/zarf/src/pkg/k8s"
- "github.com/defenseunicorns/zarf/src/pkg/message"
- "github.com/defenseunicorns/zarf/src/types"
- "github.com/go-chi/chi/v5"
-)
-
-// PackageTunnel is a struct for storing a tunnel and its connection details
-type PackageTunnel struct {
- tunnel *k8s.Tunnel
- Connection types.APIDeployedPackageConnection `json:"connection,omitempty"`
-}
-
-// packageTunnels is a map of package names to PackageTunnel objects
-type packageTunnels map[string]map[string]PackageTunnel
-
-// tunnels is a map of package names to tunnel objects used for storing connected tunnels
-var tunnels = make(packageTunnels)
-
-// ListConnections returns a map of pkgName to a list of connections
-func ListConnections(w http.ResponseWriter, _ *http.Request) {
- allConnections := make(types.APIConnections)
- for name, pkgTunnels := range tunnels {
- for _, pkgTunnel := range pkgTunnels {
- if allConnections[name] == nil {
- allConnections[name] = make(types.APIDeployedPackageConnections, 0)
- }
- allConnections[name] = append(allConnections[name], pkgTunnel.Connection)
- }
- }
- common.WriteJSONResponse(w, allConnections, http.StatusOK)
-}
-
-// ListPackageConnections lists all tunnel names
-func ListPackageConnections(w http.ResponseWriter, r *http.Request) {
- pkgName := chi.URLParam(r, "pkg")
- if tunnels[pkgName] == nil {
- message.ErrorWebf(errors.New("No tunnels for package %s"), w, pkgName)
- return
- }
- pkgTunnels := make(types.APIDeployedPackageConnections, 0, len(tunnels[pkgName]))
- for _, pkgTunnel := range tunnels[pkgName] {
- pkgTunnels = append(pkgTunnels, pkgTunnel.Connection)
- }
-
- common.WriteJSONResponse(w, pkgTunnels, http.StatusOK)
-}
-
-// ConnectTunnel establishes a tunnel for the requested resource
-func ConnectTunnel(w http.ResponseWriter, r *http.Request) {
- pkgName := chi.URLParam(r, "pkg")
- connectionName := chi.URLParam(r, "name")
-
- if tunnels[pkgName] == nil {
- tunnels[pkgName] = make(map[string]PackageTunnel)
- }
-
- pkgTunnels := tunnels[pkgName]
-
- if pkgTunnels[connectionName].tunnel != nil {
- common.WriteJSONResponse(w, tunnels[pkgName][connectionName].Connection, http.StatusOK)
- return
- }
-
- c, err := cluster.NewCluster()
- if err != nil {
- message.ErrorWebf(err, w, "Failed to create cluster connection")
- return
- }
-
- tunnel, err := c.Connect(connectionName)
- if err != nil {
- message.ErrorWebf(err, w, "Failed to connect to %s", connectionName)
- return
- }
-
- tunnels[pkgName][connectionName] = PackageTunnel{
- tunnel: tunnel,
- Connection: types.APIDeployedPackageConnection{
- Name: connectionName,
- URL: tunnel.FullURL(),
- },
- }
- common.WriteJSONResponse(w, tunnels[pkgName][connectionName].Connection, http.StatusCreated)
-}
-
-// DisconnectTunnel closes the tunnel for the requested resource
-func DisconnectTunnel(w http.ResponseWriter, r *http.Request) {
- pkgName := chi.URLParam(r, "pkg")
- connectionName := chi.URLParam(r, "name")
- pkgTunnel := tunnels[pkgName][connectionName]
- if pkgTunnel.tunnel == nil {
- message.ErrorWebf(errors.New("Tunnel not found"), w, "Failed to disconnect from %s", connectionName)
- return
- }
-
- pkgTunnel.tunnel.Close()
- delete(tunnels[pkgName], connectionName)
-
- common.WriteJSONResponse(w, true, http.StatusOK)
-}
diff --git a/src/internal/api/start.go b/src/internal/api/start.go
deleted file mode 100644
index 8ef90ac861..0000000000
--- a/src/internal/api/start.go
+++ /dev/null
@@ -1,168 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package api provides the UI API server.
-package api
-
-import (
- "fmt"
- "io/fs"
- "log"
- "net/http"
- "os"
- "strings"
- "time"
-
- "github.com/defenseunicorns/zarf/src/config"
- "github.com/defenseunicorns/zarf/src/internal/api/auth"
- "github.com/defenseunicorns/zarf/src/internal/api/cluster"
- "github.com/defenseunicorns/zarf/src/internal/api/components"
- "github.com/defenseunicorns/zarf/src/internal/api/packages"
- "github.com/defenseunicorns/zarf/src/pkg/layout"
- "github.com/defenseunicorns/zarf/src/pkg/message"
- "github.com/defenseunicorns/zarf/src/pkg/utils"
- "github.com/defenseunicorns/zarf/src/pkg/utils/exec"
- "github.com/defenseunicorns/zarf/src/pkg/utils/helpers"
-
- "github.com/go-chi/chi/v5"
- "github.com/go-chi/chi/v5/middleware"
-)
-
-// LaunchAPIServer launches UI API server.
-func LaunchAPIServer() {
- message.Debug("api.LaunchAPIServer()")
-
- // Track the developer port if it's set
- devPort := os.Getenv("API_DEV_PORT")
-
- // If the env variable API_PORT is set, use that for the listening port
- port := os.Getenv("API_PORT")
- // Otherwise, use a random available port
- if port == "" {
- // If we can't find an available port, just use the default
- if portRaw, err := helpers.GetAvailablePort(); err != nil {
- port = "8080"
- } else {
- port = fmt.Sprintf("%d", portRaw)
- }
- }
-
- // If the env variable API_TOKEN is set, use that for the API secret
- token := os.Getenv("API_TOKEN")
- // Otherwise, generate a random secret
- if token == "" {
- token = utils.RandomString(96)
- }
-
- // Init the Chi router
- router := chi.NewRouter()
-
- // Push logs into the message buffer for log persistence
- genericMsg := message.Generic{}
- logFormatter := middleware.DefaultLogFormatter{
- Logger: log.New(&genericMsg, "API CALL | ", log.LstdFlags),
- }
-
- router.Use(middleware.RequestLogger(&logFormatter))
- router.Use(middleware.Recoverer)
-
- // Set a timeout value on the request context (ctx), that will signal
- // through ctx.Done() that the request has timed out and further
- // processing should be stopped.
- router.Use(middleware.Timeout(60 * time.Second))
-
- router.Route("/api", func(r chi.Router) {
- // Require a valid token for API calls
- r.Use(auth.RequireSecret(token))
- r.Use(middleware.NoCache)
-
- r.Head("/", auth.Connect)
-
- r.Route("/cluster", func(r chi.Router) {
- r.Get("/", cluster.Summary)
-
- r.Route("/state", func(r chi.Router) {
- r.Get("/", cluster.ReadState)
- r.Put("/", cluster.UpdateState)
- })
- })
-
- r.Route("/packages", func(r chi.Router) {
- r.Get("/read/{path}", packages.Read)
- r.Get("/list", packages.ListDeployedPackages)
- r.Put("/deploy", packages.DeployPackage)
- r.Get("/deploy-stream", packages.StreamDeployPackage)
- r.Delete("/remove/{name}", packages.RemovePackage)
- r.Put("/{pkg}/connect/{name}", packages.ConnectTunnel)
- r.Delete("/{pkg}/disconnect/{name}", packages.DisconnectTunnel)
- r.Get("/{pkg}/connections", packages.ListPackageConnections)
- r.Get("/{pkg}/components/deployed", components.ListDeployedComponents)
- r.Get("/connections", packages.ListConnections)
- r.Get("/sbom/{path}", packages.ExtractSBOM)
- r.Delete("/sbom", packages.DeleteSBOM)
- r.Route("/find", func(r chi.Router) {
- r.Route("/stream", func(r chi.Router) {
- r.Get("/", packages.FindPackageStream)
- r.Get("/init", packages.FindInitStream)
- r.Get("/home", packages.FindInHomeStream)
- })
- })
- })
- })
-
- // If no dev port specified, use the server port for the URL and try to open it
- if devPort == "" {
- url := fmt.Sprintf("http://127.0.0.1:%s/auth?token=%s", port, token)
- message.Infof("Zarf UI connection: %s", url)
- message.Debug(exec.LaunchURL(url))
- } else {
- // Otherwise, use the dev port for the URL and don't try to open
- message.Infof("Zarf UI connection: http://127.0.0.1:%s/auth?token=%s", devPort, token)
- }
-
- // Setup the static SBOM server
- sbomSub := os.DirFS(layout.SBOMDir)
- sbomFs := http.FileServer(http.FS(sbomSub))
-
- // Serve the SBOM viewer files
- router.Get("/sbom-viewer/*", func(w http.ResponseWriter, r *http.Request) {
- message.Debug("api.LaunchAPIServer() - /sbom-viewer/*")
-
- // Extract the file name from the URL
- file := strings.TrimPrefix(r.URL.Path, "/sbom-viewer/")
-
- // Ensure SBOM file exists in the layout.SBOMDir
- if test, err := sbomSub.Open(file); err != nil {
- // If the file doesn't exist, redirect to the homepage
- r.URL.Path = "/"
- http.Redirect(w, r, "/", http.StatusFound)
- } else {
- // If the file exists, close the file and serve it
- test.Close()
- }
- r.URL.Path = file
- sbomFs.ServeHTTP(w, r)
- })
-
- // Load the static UI files
- if sub, err := fs.Sub(config.UIAssets, "build/ui"); err != nil {
- message.WarnErr(err, "Unable to load the embedded ui assets")
- } else {
- // Setup a file server for the static UI files
- fs := http.FileServer(http.FS(sub))
-
- // Catch all routes
- router.Get("/*", func(w http.ResponseWriter, r *http.Request) {
- message.Debug("api.LaunchAPIServer() - /*")
- // If the request is not a real file, serve the index.html instead
- if test, err := sub.Open(strings.TrimPrefix(r.URL.Path, "/")); err != nil {
- r.URL.Path = "/"
- } else {
- test.Close()
- }
- fs.ServeHTTP(w, r)
- })
- }
-
- http.ListenAndServe(":"+port, router)
-}
diff --git a/src/test/ui/01_start_page.spec.ts b/src/test/ui/01_start_page.spec.ts
deleted file mode 100644
index 7b5f4d8dcd..0000000000
--- a/src/test/ui/01_start_page.spec.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-import { test, expect } from '@playwright/test';
-
-test.beforeEach(async ({ page }) => {
- page.on('pageerror', (err) => console.log(err.message));
-});
-
-test.describe('Landing Page', () => {
- test('Landing Page @pre-init', async ({ page }) => {
- await page.goto('/auth?token=insecure', { waitUntil: 'networkidle' });
-
- // Expect cluster table to display not connected state
- const clusterInfo = page.locator('.cluster-not-connected');
- expect(await clusterInfo.textContent()).toContain('Cluster not connected');
-
- // Expect navdrawer cluster state to display not connected
- const navDrawerHeader = page.locator('.nav-drawer-header');
- expect(await navDrawerHeader.textContent()).toContain('Cluster not connected');
-
- // Expect the Packages Table to contain no packages
- const packageTableBody = page.locator('.package-list-body');
- expect(await packageTableBody.textContent()).toContain('No Packages have been Deployed');
-
- // Open Connect Cluster Dialog
- const connectClusterButton = page.locator('button:has-text("Connect Cluster")');
- await connectClusterButton.click();
-
- // Ensure Kubeconfig is found
- const kubeconfigDialog = page.locator('.dialog-content');
- expect(await kubeconfigDialog.textContent()).toContain('Kubeconfig Found');
-
- // Click Connect Cluster Anchor in the dialog to goto /packages?init=true
- const connectAnchor = kubeconfigDialog.locator('a:has-text("Connect Cluster")');
- await connectAnchor.click();
-
- await page.waitForURL('/packages?init=true');
- });
-
- test('Landing page @post-init', async ({ page }) => {
- await page.goto('/auth?token=insecure', { waitUntil: 'networkidle' });
-
- // Expect cluster table to have one package.
- const clusterInfo = page.locator('.metadata-values').first();
- expect(await clusterInfo.textContent()).not.toContain('0 Packages');
-
- // Validate that the init package now shows in the package-list-table
- const packageTableBody = page.locator('.package-list-body');
- expect(await packageTableBody.textContent()).toContain('ZarfInitConfig');
-
- // Validate the cluster name shows in the nav-drawer-header
- expect(await page.locator('.nav-drawer-header').textContent()).not.toContain(
- 'Cluster not connected'
- );
- });
-});
diff --git a/src/test/ui/02_initialize_cluster.spec.ts b/src/test/ui/02_initialize_cluster.spec.ts
deleted file mode 100644
index 08fee31953..0000000000
--- a/src/test/ui/02_initialize_cluster.spec.ts
+++ /dev/null
@@ -1,138 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-import { expect, test } from '@playwright/test';
-
-test.beforeEach(async ({ page }) => {
- page.on('pageerror', (err) => console.log(err.message));
-});
-
-const getToSelectPage = async (page) => {
- await page.goto('/auth?token=insecure&next=/packages?init=true', { waitUntil: 'networkidle' });
-};
-
-const getToConfigurePage = async (page) => {
- await getToSelectPage(page);
- // Find first init package deploy button.
- const deployInit = page.getByTitle('init').first();
- // click the init package deploy button.
- await deployInit.click();
-};
-
-const validateHorizontalStepperItems = async (page, activeIndex, steps) => {
- const stepperItems = await page.locator('.stepper .stepper-item .step');
- for (let i = 0; i < stepperItems.length; i++) {
- await expect(stepperItems.nth(i)).toContainText(steps[i]);
- if (activeIndex <= i) {
- await expect(stepperItems.nth(i).locator('.step-icon')).toHaveClass(/primary/);
- } else {
- await expect(stepperItems.nth(i).locator('.step-icon')).toHaveClass(/disabled/);
- }
- }
-};
-
-test.describe('initialize a zarf cluster', () => {
- test('Select, configure, and review init package @pre-init', async ({ page }) => {
- await getToSelectPage(page);
-
- await validateHorizontalStepperItems(page, 0, [
- '1 Select',
- '2 Configure',
- '3 Review',
- '4 Deploy',
- ]);
-
- // Find first init package deploy button.
- let deployInit = page.getByTitle('init').first();
- // click the init package deploy button.
- deployInit.click();
-
- // Validate that the SBOM has been loaded
- const sbomInfo = await page.waitForSelector('#sbom-info', { timeout: 15000 });
- expect(await sbomInfo.innerText()).toMatch(/[0-9]+ artifacts to be reviewed/);
-
- // Components (check most functionaliy with k3s component)
- const k3s = page.locator('.accordion:has-text("k3s")');
- await expect(k3s.locator('.deploy-component-toggle')).toHaveAttribute('aria-pressed', 'false');
- await k3s.locator('text=Deploy').click();
- await expect(k3s.locator('.deploy-component-toggle')).toHaveAttribute('aria-pressed', 'true');
- await expect(
- page.locator(
- '.component-accordion-header:has-text("*** REQUIRES ROOT (not sudo) *** Install K3s")'
- )
- ).toBeVisible();
- await expect(k3s.locator('code')).toBeHidden();
- await k3s.locator('.accordion-toggle').click();
- await expect(k3s.locator('code')).toBeVisible();
- await expect(k3s.locator('code:has-text("name: k3s")')).toBeVisible();
-
- // Check remaining components for deploy states
- await validateRequiredCheckboxes(page);
-
- const loggingDeployToggle = page
- .locator('.accordion:has-text("logging")')
- .locator('.deploy-component-toggle');
- await loggingDeployToggle.click();
- await expect(loggingDeployToggle).toHaveAttribute('aria-pressed', 'true');
-
- const gitServerDeployToggle = page
- .locator('.accordion-header:has-text("git-server")')
- .locator('.deploy-component-toggle');
- await gitServerDeployToggle.click();
- await expect(gitServerDeployToggle).toHaveAttribute('aria-pressed', 'true');
-
- // Validate that components are maintained in the review package page.
- await page.locator('text=review deployment').click();
-
- await validateHorizontalStepperItems(page, 1, ['Select', 'Configure', '3 Review', '4 Deploy']);
-
- await validateRequiredCheckboxes(page);
- });
-
- test('deploy the init package @init', async ({ page }) => {
- await getToConfigurePage(page);
- await page.getByRole('link', { name: 'review deployment' }).click();
- await page.waitForURL('/packages/init/review');
- await page.getByRole('link', { name: 'deploy package' }).click();
- await page.waitForURL('/packages/init/deploy', { waitUntil: 'networkidle' });
- await validateHorizontalStepperItems(page, 2, ['Select', 'Configure', 'Review', '3 Deploy']);
-
- // expect all steps to have success class
- const stepperItems = page.locator('.stepper-vertical .step-icon');
-
- // deploy zarf-injector
- await expect(stepperItems.nth(0)).not.toHaveClass(/error/, {
- timeout: 45000,
- });
- // deploy zarf-seed-registry
- await expect(stepperItems.nth(1)).not.toHaveClass(/error/, {
- timeout: 45000,
- });
- // deploy zarf-registry
- await expect(stepperItems.nth(2)).not.toHaveClass(/error/, {
- timeout: 45000,
- });
- // deploy zarf-agent
- await expect(stepperItems.nth(3)).not.toHaveClass(/error/, {
- timeout: 45000,
- });
-
- // verify the final step succeeded
- await expect(page.locator('text=Deployment Succeeded')).toBeVisible({ timeout: 120000 });
-
- // then verify the page redirects to the packages dashboard
- await page.waitForURL('/', { timeout: 10000 });
- });
-});
-
-async function validateRequiredCheckboxes(page) {
- // Check remaining components for deploy states
- const injector = page.locator('.accordion-header:has-text("zarf-injector")');
- await expect(injector.locator('.deploy-component-toggle')).toBeHidden();
-
- const seedRegistry = page.locator('.accordion-header:has-text("zarf-seed-registry")');
- await expect(seedRegistry.locator('.deploy-component-toggle')).toBeHidden();
-
- const registry = page.locator('.accordion-header:has-text("zarf-registry")');
- await expect(registry.locator('.deploy-component-toggle')).toBeHidden();
-}
diff --git a/src/test/ui/03_deploy_non_init.spec.ts b/src/test/ui/03_deploy_non_init.spec.ts
deleted file mode 100644
index 24c577ece0..0000000000
--- a/src/test/ui/03_deploy_non_init.spec.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-import { expect, test } from '@playwright/test';
-
-test.beforeEach(async ({ page }) => {
- page.on('pageerror', (err) => console.log(err.message));
-});
-
-const getToSelectPage = async (page) => {
- await page.goto('/auth?token=insecure&next=/packages', { waitUntil: 'networkidle' });
-};
-
-const getToReview = async (page) => {
- await getToSelectPage(page);
- const expanded = (await page.locator('.button-label:has-text("Search Directory")')).first();
- if (expanded.isVisible()) {
- await expanded.click();
- }
- // Find first dos-games package deploy button.
- const dosGames = page.getByTitle('dos-games').first();
- // click the dos-games package deploy button.
- await dosGames.click();
- await page.getByRole('link', { name: 'review deployment' }).click();
- await page.waitForURL('/packages/dos-games/review');
-};
-
-test('deploy the dos-games package @post-init', async ({ page }) => {
- await getToReview(page);
-
- // Validate that the SBOM has been loaded
- const sbomInfo = await page.waitForSelector('#sbom-info', { timeout: 20000 });
- expect(await sbomInfo.innerText()).toMatch(/[0-9]+ artifacts to be reviewed/);
-
- await page.getByRole('link', { name: 'deploy package' }).click();
- await page.waitForURL('/packages/dos-games/deploy', { waitUntil: 'networkidle' });
-
- // verify the deployment succeeded
- await expect(page.locator('text=Deployment Succeeded')).toBeVisible({ timeout: 120000 });
-
- // then verify the page redirects to the Landing Page
- await page.waitForURL('/', { timeout: 10000 });
-});
diff --git a/src/test/ui/04_connect_doom.spec.ts b/src/test/ui/04_connect_doom.spec.ts
deleted file mode 100644
index be320e5fc2..0000000000
--- a/src/test/ui/04_connect_doom.spec.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-import { expect, test } from '@playwright/test';
-
-test.describe.serial('connect the dos-games package @connect', async () => {
- test.beforeEach(async ({ page }) => {
- page.on('pageerror', (err) => console.log(err.message));
- await page.goto('/auth?token=insecure', { waitUntil: 'networkidle' });
- });
-
- test('connect the dos-games package', async ({ page }) => {
- let menu = await openDosGamesMenu(page);
-
- // Ensure the menu contains the Connect option
- expect(await menu.textContent()).toContain('Connect...');
-
- const connect = menu.locator('p:text-is("Connect...")').first();
-
- // Open Connect Deployed Package Dialog
- await connect.click();
-
- const connectDialog = page.locator('.dialog-open');
- expect(await connectDialog.textContent()).toContain('Connect to Resource');
- const connectButton = connectDialog.locator('button:has-text("Connect")');
-
- // Click the Connect Button
- await Promise.all([
- page.waitForResponse('api/packages/dos-games/connect/doom'),
- connectButton.click(),
- ]);
-
- menu = await openDosGamesMenu(page);
- expect(await menu.textContent()).toContain('Disconnect...');
- });
-
- test('disconnect the dos-games package', async ({ page }) => {
- // Dispose context once it's no longer needed.
- let menu = await openDosGamesMenu(page);
-
- // Ensure the menu contains the Disconnect option
- expect(await menu.textContent()).toContain('Disconnect...');
-
- const disconnect = menu.locator('p:text-is("Disconnect...")');
-
- // Open Disconnect Deployed Package Dialog
- await disconnect.click();
-
- const dialog = page.locator('.dialog-open');
- expect(await dialog.textContent()).toContain('Disconnect Resource');
- const disconnectButton = dialog.locator('.button-label:text-is("Disconnect")');
-
- // Click the Disconnect Button
- await Promise.all([
- page.waitForResponse('api/packages/dos-games/disconnect/doom'),
- disconnectButton.click(),
- ]);
-
- // Ensure the menu no longer contains the Disconnect option
- menu = await openDosGamesMenu(page);
- expect(await menu.textContent()).not.toContain('Disconnect...');
- });
-});
-
-async function openDosGamesMenu(page: any) {
- // Find Dos Games Package in Packages Table
- const packageTableBody = page.locator('.package-list-body');
- const packageRow = packageTableBody.locator('.package-table-row:has-text("dos-games")');
-
- // Open the menu for the package
- const more = packageRow.locator('.more > button').first();
- await more.click();
-
- // Find the menu and return it
- const menu = page.locator('.menu.open');
- return menu;
-}
diff --git a/src/types/api.go b/src/types/api.go
deleted file mode 100644
index 0b27170507..0000000000
--- a/src/types/api.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// Package types contains all the types used by Zarf.
-package types
-
-import (
- "k8s.io/client-go/tools/clientcmd/api"
-)
-
-// RestAPI is the struct that is used to marshal/unmarshal the top-level API objects.
-type RestAPI struct {
- ZarfPackage ZarfPackage `json:"zarfPackage"`
- ZarfState ZarfState `json:"zarfState"`
- ZarfCommonOptions ZarfCommonOptions `json:"zarfCommonOptions"`
- ZarfCreateOptions ZarfCreateOptions `json:"zarfCreateOptions"`
- ZarfPackageOptions ZarfPackageOptions `json:"zarfPackageOptions"`
- ZarfInitOptions ZarfInitOptions `json:"zarfInitOptions"`
- ConnectStrings ConnectStrings `json:"connectStrings"`
- ClusterSummary ClusterSummary `json:"clusterSummary"`
- DeployedPackage DeployedPackage `json:"deployedPackage"`
- APIZarfPackage APIZarfPackage `json:"apiZarfPackage"`
- APIZarfDeployPayload APIZarfDeployPayload `json:"apiZarfDeployPayload"`
- APIZarfPackageConnection APIDeployedPackageConnection `json:"apiZarfPackageConnection"`
- APIDeployedPackageConnections APIDeployedPackageConnections `json:"apiZarfPackageConnections"`
- APIConnections APIConnections `json:"apiConnections"`
- APIPackageSBOM APIPackageSBOM `json:"apiPackageSBOM"`
-}
-
-// ClusterSummary contains the summary of a cluster for the API.
-type ClusterSummary struct {
- Reachable bool `json:"reachable"`
- HasZarf bool `json:"hasZarf"`
- Distro string `json:"distro"`
- ZarfState *ZarfState `json:"zarfState"`
- K8sRevision string `json:"k8sRevision"`
- RawConfig *api.Config `json:"rawConfig"`
-}
-
-// APIZarfPackage represents a ZarfPackage and its path for the API.
-type APIZarfPackage struct {
- Path string `json:"path"`
- ZarfPackage ZarfPackage `json:"zarfPackage"`
-}
-
-// APIZarfDeployPayload represents the needed data to deploy a ZarfPackage/ZarfInit
-type APIZarfDeployPayload struct {
- PackageOpts ZarfPackageOptions `json:"packageOpts"`
- InitOpts *ZarfInitOptions `json:"initOpts,omitempty"`
-}
-
-// APIPackageSBOM represents the SBOM viewer files for a package
-type APIPackageSBOM struct {
- Path string `json:"path"`
- SBOMS []string `json:"sboms"`
-}
-
-// APIConnections represents all of the existing connections
-type APIConnections map[string]APIDeployedPackageConnections
-
-// APIDeployedPackageConnections represents all of the connections for a deployed package
-type APIDeployedPackageConnections []APIDeployedPackageConnection
-
-// APIDeployedPackageConnection represents a single connection from a deployed package
-type APIDeployedPackageConnection struct {
- Name string `json:"name"`
- URL string `json:"url,omitempty"`
-}
diff --git a/src/ui/.eslintignore b/src/ui/.eslintignore
deleted file mode 100644
index 0fa5eb55ee..0000000000
--- a/src/ui/.eslintignore
+++ /dev/null
@@ -1,12 +0,0 @@
-.DS_Store
-node_modules
-/build
-/.svelte-kit
-/package
-.env
-.env.*
-!.env.example
-pnpm-lock.yaml
-package-lock.json
-yarn.lock
-lib/api-types.ts
diff --git a/src/ui/.eslintrc.cjs b/src/ui/.eslintrc.cjs
deleted file mode 100644
index 4b9e4c45d9..0000000000
--- a/src/ui/.eslintrc.cjs
+++ /dev/null
@@ -1,20 +0,0 @@
-module.exports = {
- root: true,
- parser: '@typescript-eslint/parser',
- extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', "plugin:svelte/recommended", 'prettier'],
- plugins: ['@typescript-eslint'],
- ignorePatterns: ['*.cjs'],
- overrides: [{ files: ['*.svelte'], processor: 'svelte-eslint-parser' }],
- settings: {
- 'svelte3/typescript': () => require('typescript'),
- },
- parserOptions: {
- sourceType: 'module',
- ecmaVersion: 2020,
- },
- env: {
- browser: true,
- es2017: true,
- node: true,
- },
-};
diff --git a/src/ui/.gitignore b/src/ui/.gitignore
deleted file mode 100644
index 6b02da73c4..0000000000
--- a/src/ui/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.DS_Store
-node_modules
-/build
-/.svelte-kit
-/package
-.env
-.env.*
-!.env.example
-dist/
diff --git a/src/ui/.npmrc b/src/ui/.npmrc
deleted file mode 100644
index b6f27f1359..0000000000
--- a/src/ui/.npmrc
+++ /dev/null
@@ -1 +0,0 @@
-engine-strict=true
diff --git a/src/ui/.prettierignore b/src/ui/.prettierignore
deleted file mode 100644
index 5a453f48f0..0000000000
--- a/src/ui/.prettierignore
+++ /dev/null
@@ -1,12 +0,0 @@
-.DS_Store
-node_modules
-.svelte-kit
-.env
-.env.*
-!.env.example
-lib/api-types.ts
-
-# Ignore files for PNPM, NPM and YARN
-pnpm-lock.yaml
-package-lock.json
-yarn.lock
diff --git a/src/ui/.prettierrc b/src/ui/.prettierrc
deleted file mode 100644
index b105bb213f..0000000000
--- a/src/ui/.prettierrc
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "useTabs": true,
- "singleQuote": true,
- "printWidth": 100,
- "pluginSearchDirs": ["."],
- "htmlWhitespaceSensitivity": "ignore",
- "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
-}
diff --git a/src/ui/app.css b/src/ui/app.css
deleted file mode 100644
index ada26cdf94..0000000000
--- a/src/ui/app.css
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
- */
-
-*,
-::before,
-::after {
- margin-block: unset;
-}
-
-html,
-body {
- margin: 0;
- padding: 0;
- height: 100vh;
- width: 100vw;
- overflow: hidden;
-}
-
-/* https://github.com/sveltejs/kit/discussions/7585 */
-body > div {
- display: contents;
-}
-
-.card {
- background-color: var(--mdc-theme-surface);
-}
-
-/* Shorthand Classes */
-.invisible {
- visibility: hidden;
-}
-
-.ripple {
- background-position: center;
- transition: background 0.3s;
-}
-.ripple:hover {
- background: var(--action-hover-on-dark)
- radial-gradient(circle, transparent 1%, var(--action-hover-on-dark) 1%) center/15000%;
-}
-.ripple:active {
- background-color: var(--action-hover-on-dark);
- background-size: 100%;
- transition: background 0s;
-}
diff --git a/src/ui/app.d.ts b/src/ui/app.d.ts
deleted file mode 100644
index 7434df3244..0000000000
--- a/src/ui/app.d.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-// See https://kit.svelte.dev/docs/types#app
-// for information about these interfaces
-// and what to do when importing types
-declare namespace App {
- // interface Locals {}
- // interface PageData {}
- // interface PageError {}
- // interface Platform {}
-}
-
-declare module '*.jpg';
-declare module '*.png';
-declare module '*.svg';
diff --git a/src/ui/app.html b/src/ui/app.html
deleted file mode 100644
index 8e47b2da45..0000000000
--- a/src/ui/app.html
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
- %sveltekit.head%
-
-
-
%sveltekit.body%
-
-
diff --git a/src/ui/images/png/zarf-kube-config-found.png b/src/ui/images/png/zarf-kube-config-found.png
deleted file mode 100644
index 16fb8dc3f7..0000000000
Binary files a/src/ui/images/png/zarf-kube-config-found.png and /dev/null differ
diff --git a/src/ui/images/png/zarf-kube-not-found.png b/src/ui/images/png/zarf-kube-not-found.png
deleted file mode 100644
index 0cc682b6a3..0000000000
Binary files a/src/ui/images/png/zarf-kube-not-found.png and /dev/null differ
diff --git a/src/ui/images/sadness.png b/src/ui/images/sadness.png
deleted file mode 100644
index e77a9e3c76..0000000000
Binary files a/src/ui/images/sadness.png and /dev/null differ
diff --git a/src/ui/images/zarf-bubbles-left.png b/src/ui/images/zarf-bubbles-left.png
deleted file mode 100644
index 9d5d459611..0000000000
Binary files a/src/ui/images/zarf-bubbles-left.png and /dev/null differ
diff --git a/src/ui/images/zarf-bubbles-right.png b/src/ui/images/zarf-bubbles-right.png
deleted file mode 100644
index f446dddd5a..0000000000
Binary files a/src/ui/images/zarf-bubbles-right.png and /dev/null differ
diff --git a/src/ui/images/zarf-logo.png b/src/ui/images/zarf-logo.png
deleted file mode 100644
index d12d462908..0000000000
Binary files a/src/ui/images/zarf-logo.png and /dev/null differ
diff --git a/src/ui/lib/api-types.ts b/src/ui/lib/api-types.ts
deleted file mode 100644
index 7a1975ade1..0000000000
--- a/src/ui/lib/api-types.ts
+++ /dev/null
@@ -1,1856 +0,0 @@
-// To parse this data:
-//
-// import { Convert, APITypes } from "./file";
-//
-// const aPITypes = Convert.toAPITypes(json);
-//
-// These functions will throw an error if the JSON doesn't
-// match the expected interface, even if the JSON is valid.
-
-export interface APITypes {
- apiConnections: { [key: string]: APIDeployedPackageConnection[] };
- apiPackageSBOM: APIPackageSBOM;
- apiZarfDeployPayload: APIZarfDeployPayload;
- apiZarfPackage: APIZarfPackage;
- apiZarfPackageConnection: APIDeployedPackageConnection;
- apiZarfPackageConnections: APIDeployedPackageConnection[];
- clusterSummary: ClusterSummary;
- connectStrings: { [key: string]: ConnectString };
- deployedPackage: DeployedPackage;
- zarfCommonOptions: ZarfCommonOptions;
- zarfCreateOptions: ZarfCreateOptions;
- zarfInitOptions: ZarfInitOptions;
- zarfPackage: ZarfPackage;
- zarfPackageOptions: ZarfPackageOptions;
- zarfState: ZarfState;
-}
-
-export interface APIDeployedPackageConnection {
- name: string;
- url?: string;
-}
-
-export interface APIPackageSBOM {
- path: string;
- sboms: string[];
-}
-
-export interface APIZarfDeployPayload {
- initOpts?: ZarfInitOptions;
- packageOpts: ZarfPackageOptions;
-}
-
-export interface ZarfInitOptions {
- /**
- * Indicates if Zarf was initialized while deploying its own k8s cluster
- */
- applianceMode: boolean;
- /**
- * Information about the artifact registry Zarf is going to be using
- */
- artifactServer: ArtifactServerInfo;
- /**
- * Information about the repository Zarf is going to be using
- */
- gitServer: GitServerInfo;
- /**
- * Information about the container registry Zarf is going to be using
- */
- registryInfo: RegistryInfo;
- /**
- * StorageClass of the k8s cluster Zarf is initializing
- */
- storageClass: string;
-}
-
-/**
- * Information about the artifact registry Zarf is going to be using
- *
- * Information about the artifact registry Zarf is configured to use
- */
-export interface ArtifactServerInfo {
- /**
- * URL address of the artifact registry
- */
- address: string;
- /**
- * Indicates if we are using a artifact registry that Zarf is directly managing
- */
- internalServer: boolean;
- /**
- * Password of a user with push access to the artifact registry
- */
- pushPassword: string;
- /**
- * Username of a user with push access to the artifact registry
- */
- pushUsername: string;
-}
-
-/**
- * Information about the repository Zarf is going to be using
- *
- * Information about the repository Zarf is configured to use
- */
-export interface GitServerInfo {
- /**
- * URL address of the git server
- */
- address: string;
- /**
- * Indicates if we are using a git server that Zarf is directly managing
- */
- internalServer: boolean;
- /**
- * Password of a user with pull-only access to the git repository. If not provided for an
- * external repository then the push-user is used
- */
- pullPassword: string;
- /**
- * Username of a user with pull-only access to the git repository. If not provided for an
- * external repository then the push-user is used
- */
- pullUsername: string;
- /**
- * Password of a user with push access to the git repository
- */
- pushPassword: string;
- /**
- * Username of a user with push access to the git repository
- */
- pushUsername: string;
-}
-
-/**
- * Information about the container registry Zarf is going to be using
- *
- * Information about the container registry Zarf is configured to use
- */
-export interface RegistryInfo {
- /**
- * URL address of the registry
- */
- address: string;
- /**
- * Indicates if we are using a registry that Zarf is directly managing
- */
- internalRegistry: boolean;
- /**
- * Nodeport of the registry. Only needed if the registry is running inside the kubernetes
- * cluster
- */
- nodePort: number;
- /**
- * Password of a user with pull-only access to the registry. If not provided for an external
- * registry than the push-user is used
- */
- pullPassword: string;
- /**
- * Username of a user with pull-only access to the registry. If not provided for an external
- * registry than the push-user is used
- */
- pullUsername: string;
- /**
- * Password of a user with push access to the registry
- */
- pushPassword: string;
- /**
- * Username of a user with push access to the registry
- */
- pushUsername: string;
- /**
- * Secret value that the registry was seeded with
- */
- secret: string;
-}
-
-export interface ZarfPackageOptions {
- /**
- * Comma separated list of optional components
- */
- optionalComponents: string;
- /**
- * Location where a Zarf package can be found
- */
- packageSource: string;
- /**
- * Location where the public key component of a cosign key-pair can be found
- */
- publicKeyPath: string;
- /**
- * Key-Value map of variable names and their corresponding values that will be used to
- * template manifests and files in the Zarf package
- */
- setVariables: { [key: string]: string };
- /**
- * Location where the public key component of a cosign key-pair can be found
- */
- sGetKeyPath: string;
- /**
- * The SHA256 checksum of the package
- */
- shasum: string;
-}
-
-export interface APIZarfPackage {
- path: string;
- zarfPackage: ZarfPackage;
-}
-
-export interface ZarfPackage {
- /**
- * Zarf-generated package build data
- */
- build?: ZarfBuildData;
- /**
- * List of components to deploy in this package
- */
- components: ZarfComponent[];
- /**
- * Constant template values applied on deploy for K8s resources
- */
- constants?: ZarfPackageConstant[];
- /**
- * The kind of Zarf package
- */
- kind: Kind;
- /**
- * Package metadata
- */
- metadata?: ZarfMetadata;
- /**
- * Variable template values applied on deploy for K8s resources
- */
- variables?: ZarfPackageVariable[];
-}
-
-/**
- * Zarf-generated package build data
- */
-export interface ZarfBuildData {
- /**
- * The architecture this package was created on
- */
- architecture: string;
- /**
- * Whether this package was created with differential components
- */
- differential?: boolean;
- /**
- * List of components that were not included in this package due to differential packaging
- */
- differentialMissing?: string[];
- /**
- * The minimum version of Zarf that does not have breaking package structure changes
- */
- lastNonBreakingVersion?: string;
- /**
- * Any migrations that have been run on this package
- */
- migrations?: string[];
- /**
- * Map of components that were imported via OCI. The keys are OCI Package URLs and values
- * are the component names
- */
- OCIImportedComponents?: { [key: string]: string };
- /**
- * Any registry domains that were overridden on package create when pulling images
- */
- registryOverrides?: { [key: string]: string };
- /**
- * The machine name that created this package
- */
- terminal: string;
- /**
- * The timestamp when this package was created
- */
- timestamp: string;
- /**
- * The username who created this package
- */
- user: string;
- /**
- * The version of Zarf used to build this package
- */
- version: string;
-}
-
-export interface ZarfComponent {
- /**
- * Custom commands to run at various stages of a package lifecycle
- */
- actions?: ZarfComponentActions;
- /**
- * Helm charts to install during package deploy
- */
- charts?: ZarfChart[];
- /**
- * [Deprecated] Specify a path to a public key to validate signed online resources. This
- * will be removed in Zarf v1.0.0.
- */
- cosignKeyPath?: string;
- /**
- * Datasets to inject into a container in the target cluster
- */
- dataInjections?: ZarfDataInjection[];
- /**
- * Determines the default Y/N state for installing this component on package deploy
- */
- default?: boolean;
- /**
- * Message to include during package deploy describing the purpose of this component
- */
- description?: string;
- /**
- * Extend component functionality with additional features
- */
- extensions?: ZarfComponentExtensions;
- /**
- * Files or folders to place on disk during package deployment
- */
- files?: ZarfFile[];
- /**
- * [Deprecated] Create a user selector field based on all components in the same group. This
- * will be removed in Zarf v1.0.0.
- */
- group?: string;
- /**
- * List of OCI images to include in the package
- */
- images?: string[];
- /**
- * Import a component from another Zarf package
- */
- import?: ZarfComponentImport;
- /**
- * Kubernetes manifests to be included in a generated Helm chart on package deploy
- */
- manifests?: ZarfManifest[];
- /**
- * The name of the component
- */
- name: string;
- /**
- * Filter when this component is included in package creation or deployment
- */
- only?: ZarfComponentOnlyTarget;
- /**
- * List of git repos to include in the package
- */
- repos?: string[];
- /**
- * Do not prompt user to install this component
- */
- required?: boolean;
- /**
- * [Deprecated] (replaced by actions) Custom commands to run before or after package
- * deployment. This will be removed in Zarf v1.0.0.
- */
- scripts?: DeprecatedZarfComponentScripts;
-}
-
-/**
- * Custom commands to run at various stages of a package lifecycle
- */
-export interface ZarfComponentActions {
- /**
- * Actions to run during package creation
- */
- onCreate?: ZarfComponentActionSet;
- /**
- * Actions to run during package deployment
- */
- onDeploy?: ZarfComponentActionSet;
- /**
- * Actions to run during package removal
- */
- onRemove?: ZarfComponentActionSet;
-}
-
-/**
- * Actions to run during package creation
- *
- * Actions to run during package deployment
- *
- * Actions to run during package removal
- */
-export interface ZarfComponentActionSet {
- /**
- * Actions to run at the end of an operation
- */
- after?: ZarfComponentAction[];
- /**
- * Actions to run at the start of an operation
- */
- before?: ZarfComponentAction[];
- /**
- * Default configuration for all actions in this set
- */
- defaults?: ZarfComponentActionDefaults;
- /**
- * Actions to run if all operations fail
- */
- onFailure?: ZarfComponentAction[];
- /**
- * Actions to run if all operations succeed
- */
- onSuccess?: ZarfComponentAction[];
-}
-
-export interface ZarfComponentAction {
- /**
- * The command to run. Must specify either cmd or wait for the action to do anything.
- */
- cmd?: string;
- /**
- * Description of the action to be displayed during package execution instead of the command
- */
- description?: string;
- /**
- * The working directory to run the command in (default is CWD)
- */
- dir?: string;
- /**
- * Additional environment variables to set for the command
- */
- env?: string[];
- /**
- * Retry the command if it fails up to given number of times (default 0)
- */
- maxRetries?: number;
- /**
- * Timeout in seconds for the command (default to 0
- */
- maxTotalSeconds?: number;
- /**
- * Hide the output of the command during package deployment (default false)
- */
- mute?: boolean;
- /**
- * [Deprecated] (replaced by setVariables) (onDeploy/cmd only) The name of a variable to
- * update with the output of the command. This variable will be available to all remaining
- * actions and components in the package. This will be removed in Zarf v1.0.0
- */
- setVariable?: string;
- /**
- * (onDeploy/cmd only) An array of variables to update with the output of the command. These
- * variables will be available to all remaining actions and components in the package.
- */
- setVariables?: ZarfComponentActionSetVariable[];
- /**
- * (cmd only) Indicates a preference for a shell for the provided cmd to be executed in on
- * supported operating systems
- */
- shell?: ZarfComponentActionShell;
- /**
- * Wait for a condition to be met before continuing. Must specify either cmd or wait for the
- * action. See the 'zarf tools wait-for' command for more info.
- */
- wait?: ZarfComponentActionWait;
-}
-
-export interface ZarfComponentActionSetVariable {
- /**
- * Whether to automatically indent the variable's value (if multiline) when templating.
- * Based on the number of chars before the start of ###ZARF_VAR_.
- */
- autoIndent?: boolean;
- /**
- * The name to be used for the variable
- */
- name: string;
- /**
- * An optional regex pattern that a variable value must match before a package deployment
- * can continue.
- */
- pattern?: string;
- /**
- * Whether to mark this variable as sensitive to not print it in the Zarf log
- */
- sensitive?: boolean;
- /**
- * Changes the handling of a variable to load contents differently (i.e. from a file rather
- * than as a raw variable - templated files should be kept below 1 MiB)
- */
- type?: Type;
-}
-
-/**
- * Changes the handling of a variable to load contents differently (i.e. from a file rather
- * than as a raw variable - templated files should be kept below 1 MiB)
- */
-export enum Type {
- File = "file",
- Raw = "raw",
-}
-
-/**
- * (cmd only) Indicates a preference for a shell for the provided cmd to be executed in on
- * supported operating systems
- */
-export interface ZarfComponentActionShell {
- /**
- * (default 'sh') Indicates a preference for the shell to use on macOS systems
- */
- darwin?: string;
- /**
- * (default 'sh') Indicates a preference for the shell to use on Linux systems
- */
- linux?: string;
- /**
- * (default 'powershell') Indicates a preference for the shell to use on Windows systems
- * (note that choosing 'cmd' will turn off migrations like touch -> New-Item)
- */
- windows?: string;
-}
-
-/**
- * Wait for a condition to be met before continuing. Must specify either cmd or wait for the
- * action. See the 'zarf tools wait-for' command for more info.
- */
-export interface ZarfComponentActionWait {
- /**
- * Wait for a condition to be met in the cluster before continuing. Only one of cluster or
- * network can be specified.
- */
- cluster?: ZarfComponentActionWaitCluster;
- /**
- * Wait for a condition to be met on the network before continuing. Only one of cluster or
- * network can be specified.
- */
- network?: ZarfComponentActionWaitNetwork;
-}
-
-/**
- * Wait for a condition to be met in the cluster before continuing. Only one of cluster or
- * network can be specified.
- */
-export interface ZarfComponentActionWaitCluster {
- /**
- * The condition or jsonpath state to wait for; defaults to exist
- */
- condition?: string;
- /**
- * The kind of resource to wait for
- */
- kind: string;
- /**
- * The name of the resource or selector to wait for
- */
- name: string;
- /**
- * The namespace of the resource to wait for
- */
- namespace?: string;
-}
-
-/**
- * Wait for a condition to be met on the network before continuing. Only one of cluster or
- * network can be specified.
- */
-export interface ZarfComponentActionWaitNetwork {
- /**
- * The address to wait for
- */
- address: string;
- /**
- * The HTTP status code to wait for if using http or https
- */
- code?: number;
- /**
- * The protocol to wait for
- */
- protocol: Protocol;
-}
-
-/**
- * The protocol to wait for
- */
-export enum Protocol {
- HTTP = "http",
- HTTPS = "https",
- TCP = "tcp",
-}
-
-/**
- * Default configuration for all actions in this set
- */
-export interface ZarfComponentActionDefaults {
- /**
- * Working directory for commands (default CWD)
- */
- dir?: string;
- /**
- * Additional environment variables for commands
- */
- env?: string[];
- /**
- * Retry commands given number of times if they fail (default 0)
- */
- maxRetries?: number;
- /**
- * Default timeout in seconds for commands (default to 0
- */
- maxTotalSeconds?: number;
- /**
- * Hide the output of commands during execution (default false)
- */
- mute?: boolean;
- /**
- * (cmd only) Indicates a preference for a shell for the provided cmd to be executed in on
- * supported operating systems
- */
- shell?: ZarfComponentActionShell;
-}
-
-export interface ZarfChart {
- /**
- * The path to the chart in the repo if using a git repo instead of a helm repo
- */
- gitPath?: string;
- /**
- * The path to the chart folder
- */
- localPath?: string;
- /**
- * The name of the chart to deploy; this should be the name of the chart as it is installed
- * in the helm repo
- */
- name: string;
- /**
- * The namespace to deploy the chart to
- */
- namespace: string;
- /**
- * Whether to not wait for chart resources to be ready before continuing
- */
- noWait?: boolean;
- /**
- * The name of the release to create; defaults to the name of the chart
- */
- releaseName?: string;
- /**
- * The URL of the OCI registry, chart repository, or git repo where the helm chart is stored
- */
- url?: string;
- /**
- * List of local values file paths or remote URLs to include in the package; these will be
- * merged together
- */
- valuesFiles?: string[];
- /**
- * The version of the chart to deploy; for git-based charts this is also the tag of the git
- * repo
- */
- version?: string;
-}
-
-export interface ZarfDataInjection {
- /**
- * Compress the data before transmitting using gzip. Note: this requires support for
- * tar/gzip locally and in the target image.
- */
- compress?: boolean;
- /**
- * Either a path to a local folder/file or a remote URL of a file to inject into the given
- * target pod + container
- */
- source: string;
- /**
- * The target pod + container to inject the data into
- */
- target: ZarfContainerTarget;
-}
-
-/**
- * The target pod + container to inject the data into
- */
-export interface ZarfContainerTarget {
- /**
- * The container name to target for data injection
- */
- container: string;
- /**
- * The namespace to target for data injection
- */
- namespace: string;
- /**
- * The path within the container to copy the data into
- */
- path: string;
- /**
- * The K8s selector to target for data injection
- */
- selector: string;
-}
-
-/**
- * Extend component functionality with additional features
- */
-export interface ZarfComponentExtensions {
- /**
- * Configurations for installing Big Bang and Flux in the cluster
- */
- bigbang?: BigBang;
-}
-
-/**
- * Configurations for installing Big Bang and Flux in the cluster
- */
-export interface BigBang {
- /**
- * Optional paths to Flux kustomize strategic merge patch files
- */
- fluxPatchFiles?: string[];
- /**
- * Override repo to pull Big Bang from instead of Repo One
- */
- repo?: string;
- /**
- * Whether to skip deploying flux; Defaults to false
- */
- skipFlux?: boolean;
- /**
- * The list of values files to pass to Big Bang; these will be merged together
- */
- valuesFiles?: string[];
- /**
- * The version of Big Bang to use
- */
- version: string;
-}
-
-export interface ZarfFile {
- /**
- * (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
- */
- shasum?: string;
- /**
- * Local folder or file path or remote URL to pull into the package
- */
- source: string;
- /**
- * List of symlinks to create during package deploy
- */
- symlinks?: string[];
- /**
- * The absolute or relative path where the file or folder should be copied to during package
- * deploy
- */
- target: string;
-}
-
-/**
- * Import a component from another Zarf package
- */
-export interface ZarfComponentImport {
- /**
- * The name of the component to import from the referenced zarf.yaml
- */
- name?: string;
- /**
- * The relative path to a directory containing a zarf.yaml to import from
- */
- path?: string;
- /**
- * [beta] The URL to a Zarf package to import via OCI
- */
- url?: string;
-}
-
-export interface ZarfManifest {
- /**
- * List of local K8s YAML files or remote URLs to deploy (in order)
- */
- files?: string[];
- /**
- * List of local kustomization paths or remote URLs to include in the package
- */
- kustomizations?: string[];
- /**
- * Allow traversing directory above the current directory if needed for kustomization
- */
- kustomizeAllowAnyDirectory?: boolean;
- /**
- * A name to give this collection of manifests; this will become the name of the
- * dynamically-created helm chart
- */
- name: string;
- /**
- * The namespace to deploy the manifests to
- */
- namespace?: string;
- /**
- * Whether to not wait for manifest resources to be ready before continuing
- */
- noWait?: boolean;
-}
-
-/**
- * Filter when this component is included in package creation or deployment
- */
-export interface ZarfComponentOnlyTarget {
- /**
- * Only deploy component to specified clusters
- */
- cluster?: ZarfComponentOnlyCluster;
- /**
- * Only deploy component to specified OS
- */
- localOS?: LocalOS;
-}
-
-/**
- * Only deploy component to specified clusters
- */
-export interface ZarfComponentOnlyCluster {
- /**
- * Only create and deploy to clusters of the given architecture
- */
- architecture?: Architecture;
- /**
- * A list of kubernetes distros this package works with (Reserved for future use)
- */
- distros?: string[];
-}
-
-/**
- * Only create and deploy to clusters of the given architecture
- */
-export enum Architecture {
- Amd64 = "amd64",
- Arm64 = "arm64",
-}
-
-/**
- * Only deploy component to specified OS
- */
-export enum LocalOS {
- Darwin = "darwin",
- Linux = "linux",
- Windows = "windows",
-}
-
-/**
- * [Deprecated] (replaced by actions) Custom commands to run before or after package
- * deployment. This will be removed in Zarf v1.0.0.
- */
-export interface DeprecatedZarfComponentScripts {
- /**
- * Scripts to run after the component successfully deploys
- */
- after?: string[];
- /**
- * Scripts to run before the component is deployed
- */
- before?: string[];
- /**
- * Scripts to run before the component is added during package create
- */
- prepare?: string[];
- /**
- * Retry the script if it fails
- */
- retry?: boolean;
- /**
- * Show the output of the script during package deployment
- */
- showOutput?: boolean;
- /**
- * Timeout in seconds for the script
- */
- timeoutSeconds?: number;
-}
-
-export interface ZarfPackageConstant {
- /**
- * Whether to automatically indent the variable's value (if multiline) when templating.
- * Based on the number of chars before the start of ###ZARF_CONST_.
- */
- autoIndent?: boolean;
- /**
- * A description of the constant to explain its purpose on package create or deploy
- * confirmation prompts
- */
- description?: string;
- /**
- * The name to be used for the constant
- */
- name: string;
- /**
- * An optional regex pattern that a constant value must match before a package can be
- * created.
- */
- pattern?: string;
- /**
- * The value to set for the constant during deploy
- */
- value: string;
-}
-
-/**
- * The kind of Zarf package
- */
-export enum Kind {
- ZarfInitConfig = "ZarfInitConfig",
- ZarfPackageConfig = "ZarfPackageConfig",
-}
-
-/**
- * Package metadata
- */
-export interface ZarfMetadata {
- /**
- * Checksum of a checksums.txt file that contains checksums all the layers within the
- * package.
- */
- aggregateChecksum?: string;
- /**
- * The target cluster architecture for this package
- */
- architecture?: string;
- /**
- * Comma-separated list of package authors (including contact info)
- */
- authors?: string;
- /**
- * Additional information about this package
- */
- description?: string;
- /**
- * Link to package documentation when online
- */
- documentation?: string;
- /**
- * An image URL to embed in this package (Reserved for future use in Zarf UI)
- */
- image?: string;
- /**
- * Name to identify this Zarf package
- */
- name: string;
- /**
- * Link to package source code when online
- */
- source?: string;
- /**
- * Disable compression of this package
- */
- uncompressed?: boolean;
- /**
- * Link to package information when online
- */
- url?: string;
- /**
- * Name of the distributing entity, organization or individual.
- */
- vendor?: string;
- /**
- * Generic string set by a package author to track the package version (Note:
- * ZarfInitConfigs will always be versioned to the CLIVersion they were created with)
- */
- version?: string;
- /**
- * Yaml OnLy Online (YOLO): True enables deploying a Zarf package without first running zarf
- * init against the cluster. This is ideal for connected environments where you want to use
- * existing VCS and container registries.
- */
- yolo?: boolean;
-}
-
-export interface ZarfPackageVariable {
- /**
- * Whether to automatically indent the variable's value (if multiline) when templating.
- * Based on the number of chars before the start of ###ZARF_VAR_.
- */
- autoIndent?: boolean;
- /**
- * The default value to use for the variable
- */
- default?: string;
- /**
- * A description of the variable to be used when prompting the user a value
- */
- description?: string;
- /**
- * The name to be used for the variable
- */
- name: string;
- /**
- * An optional regex pattern that a variable value must match before a package can be
- * deployed.
- */
- pattern?: string;
- /**
- * Whether to prompt the user for input for this variable
- */
- prompt?: boolean;
- /**
- * Whether to mark this variable as sensitive to not print it in the Zarf log
- */
- sensitive?: boolean;
- /**
- * Changes the handling of a variable to load contents differently (i.e. from a file rather
- * than as a raw variable - templated files should be kept below 1 MiB)
- */
- type?: Type;
-}
-
-export interface ClusterSummary {
- distro: string;
- hasZarf: boolean;
- k8sRevision: string;
- rawConfig: Config;
- reachable: boolean;
- zarfState: ZarfState;
-}
-
-export interface Config {
- apiVersion?: string;
- clusters: { [key: string]: Cluster };
- contexts: { [key: string]: Context };
- "current-context": string;
- extensions?: { [key: string]: any[] | boolean | number | number | { [key: string]: any } | null | string };
- kind?: string;
- preferences: Preferences;
- users: { [key: string]: AuthInfo };
-}
-
-export interface Cluster {
- "certificate-authority"?: string;
- "certificate-authority-data"?: string;
- "disable-compression"?: boolean;
- extensions?: { [key: string]: any[] | boolean | number | number | { [key: string]: any } | null | string };
- "insecure-skip-tls-verify"?: boolean;
- "proxy-url"?: string;
- server: string;
- "tls-server-name"?: string;
-}
-
-export interface Context {
- cluster: string;
- extensions?: { [key: string]: any[] | boolean | number | number | { [key: string]: any } | null | string };
- namespace?: string;
- user: string;
-}
-
-export interface Preferences {
- colors?: boolean;
- extensions?: { [key: string]: any[] | boolean | number | number | { [key: string]: any } | null | string };
-}
-
-export interface AuthInfo {
- "act-as"?: string;
- "act-as-groups"?: string[];
- "act-as-uid"?: string;
- "act-as-user-extra"?: { [key: string]: string[] };
- "auth-provider"?: AuthProviderConfig;
- "client-certificate"?: string;
- "client-certificate-data"?: string;
- "client-key"?: string;
- "client-key-data"?: string;
- exec?: ExecConfig;
- extensions?: { [key: string]: any[] | boolean | number | number | { [key: string]: any } | null | string };
- password?: string;
- token?: string;
- tokenFile?: string;
- username?: string;
-}
-
-export interface AuthProviderConfig {
- config?: { [key: string]: string };
- name: string;
-}
-
-export interface ExecConfig {
- apiVersion?: string;
- args: string[];
- command: string;
- env: ExecEnvVar[];
- installHint?: string;
- interactiveMode?: string;
- provideClusterInfo: boolean;
-}
-
-export interface ExecEnvVar {
- name: string;
- value: string;
-}
-
-export interface ZarfState {
- agentTLS: GeneratedPKI;
- /**
- * Machine architecture of the k8s node(s)
- */
- architecture: string;
- /**
- * Information about the artifact registry Zarf is configured to use
- */
- artifactServer: ArtifactServerInfo;
- /**
- * K8s distribution of the cluster Zarf was deployed to
- */
- distro: string;
- /**
- * Information about the repository Zarf is configured to use
- */
- gitServer: GitServerInfo;
- /**
- * Secret value that the internal Grafana server was seeded with
- */
- loggingSecret: string;
- /**
- * Information about the container registry Zarf is configured to use
- */
- registryInfo: RegistryInfo;
- storageClass: string;
- /**
- * Indicates if Zarf was initialized while deploying its own k8s cluster
- */
- zarfAppliance: boolean;
-}
-
-export interface GeneratedPKI {
- ca: string;
- cert: string;
- key: string;
-}
-
-export interface ConnectString {
- /**
- * Descriptive text that explains what the resource you would be connecting to is used for
- */
- description: string;
- /**
- * URL path that gets appended to the k8s port-forward result
- */
- url: string;
-}
-
-export interface DeployedPackage {
- cliVersion: string;
- componentWebhooks?: { [key: string]: { [key: string]: Webhook } };
- connectStrings?: { [key: string]: ConnectString };
- data: ZarfPackage;
- deployedComponents: DeployedComponent[];
- generation: number;
- name: string;
-}
-
-export interface Webhook {
- name: string;
- observedGeneration: number;
- status: string;
- waitDurationSeconds?: number;
-}
-
-export interface DeployedComponent {
- installedCharts: InstalledChart[];
- name: string;
- observedGeneration: number;
- status: string;
-}
-
-export interface InstalledChart {
- chartName: string;
- namespace: string;
-}
-
-export interface ZarfCommonOptions {
- /**
- * Path to use to cache images and git repos on package create
- */
- cachePath: string;
- /**
- * Verify that Zarf should perform an action
- */
- confirm: boolean;
- /**
- * Allow insecure connections for remote packages
- */
- insecure: boolean;
- /**
- * Number of concurrent layer operations to perform when interacting with a remote package
- */
- OCIConcurrency: number;
- /**
- * Location Zarf should use as a staging ground when managing files and images for package
- * creation and deployment
- */
- tempDirectory: string;
-}
-
-export interface ZarfCreateOptions {
- /**
- * Location where the Zarf package will be created from
- */
- baseDir: string;
- /**
- * A package's differential images and git repositories from a referenced previously built
- * package
- */
- differential: DifferentialData;
- /**
- * Size of chunks to use when splitting a zarf package into multiple files in megabytes
- */
- maxPackageSizeMB: number;
- /**
- * Location where the finalized Zarf package will be placed
- */
- output: string;
- /**
- * A map of domains to override on package create when pulling images
- */
- registryOverrides: { [key: string]: string };
- /**
- * Whether to pause to allow for viewing the SBOM post-creation
- */
- sbom: boolean;
- /**
- * Location to output an SBOM into after package creation
- */
- sbomOutput: string;
- /**
- * Key-Value map of variable names and their corresponding values that will be used to
- * template against the Zarf package being used
- */
- setVariables: { [key: string]: string };
- /**
- * Password to the private key signature file that will be used to sigh the created package
- */
- signingKeyPassword: string;
- /**
- * Location where the private key component of a cosign key-pair can be found
- */
- signingKeyPath: string;
- /**
- * Disable the generation of SBOM materials during package creation
- */
- skipSBOM: boolean;
-}
-
-/**
- * A package's differential images and git repositories from a referenced previously built
- * package
- */
-export interface DifferentialData {
- DifferentialImages: { [key: string]: boolean };
- DifferentialOCIComponents: { [key: string]: string };
- DifferentialPackagePath: string;
- DifferentialPackageVersion: string;
- DifferentialRepos: { [key: string]: boolean };
-}
-
-// Converts JSON strings to/from your types
-// and asserts the results of JSON.parse at runtime
-export class Convert {
- public static toAPITypes(json: string): APITypes {
- return cast(JSON.parse(json), r("APITypes"));
- }
-
- public static aPITypesToJson(value: APITypes): string {
- return JSON.stringify(uncast(value, r("APITypes")), null, 2);
- }
-}
-
-function invalidValue(typ: any, val: any, key: any, parent: any = ''): never {
- const prettyTyp = prettyTypeName(typ);
- const parentText = parent ? ` on ${parent}` : '';
- const keyText = key ? ` for key "${key}"` : '';
- throw Error(`Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}`);
-}
-
-function prettyTypeName(typ: any): string {
- if (Array.isArray(typ)) {
- if (typ.length === 2 && typ[0] === undefined) {
- return `an optional ${prettyTypeName(typ[1])}`;
- } else {
- return `one of [${typ.map(a => { return prettyTypeName(a); }).join(", ")}]`;
- }
- } else if (typeof typ === "object" && typ.literal !== undefined) {
- return typ.literal;
- } else {
- return typeof typ;
- }
-}
-
-function jsonToJSProps(typ: any): any {
- if (typ.jsonToJS === undefined) {
- const map: any = {};
- typ.props.forEach((p: any) => map[p.json] = { key: p.js, typ: p.typ });
- typ.jsonToJS = map;
- }
- return typ.jsonToJS;
-}
-
-function jsToJSONProps(typ: any): any {
- if (typ.jsToJSON === undefined) {
- const map: any = {};
- typ.props.forEach((p: any) => map[p.js] = { key: p.json, typ: p.typ });
- typ.jsToJSON = map;
- }
- return typ.jsToJSON;
-}
-
-function transform(val: any, typ: any, getProps: any, key: any = '', parent: any = ''): any {
- function transformPrimitive(typ: string, val: any): any {
- if (typeof typ === typeof val) return val;
- return invalidValue(typ, val, key, parent);
- }
-
- function transformUnion(typs: any[], val: any): any {
- // val must validate against one typ in typs
- const l = typs.length;
- for (let i = 0; i < l; i++) {
- const typ = typs[i];
- try {
- return transform(val, typ, getProps);
- } catch (_) {}
- }
- return invalidValue(typs, val, key, parent);
- }
-
- function transformEnum(cases: string[], val: any): any {
- if (cases.indexOf(val) !== -1) return val;
- return invalidValue(cases.map(a => { return l(a); }), val, key, parent);
- }
-
- function transformArray(typ: any, val: any): any {
- // val must be an array with no invalid elements
- if (!Array.isArray(val)) return invalidValue(l("array"), val, key, parent);
- return val.map(el => transform(el, typ, getProps));
- }
-
- function transformDate(val: any): any {
- if (val === null) {
- return null;
- }
- const d = new Date(val);
- if (isNaN(d.valueOf())) {
- return invalidValue(l("Date"), val, key, parent);
- }
- return d;
- }
-
- function transformObject(props: { [k: string]: any }, additional: any, val: any): any {
- if (val === null || typeof val !== "object" || Array.isArray(val)) {
- return invalidValue(l(ref || "object"), val, key, parent);
- }
- const result: any = {};
- Object.getOwnPropertyNames(props).forEach(key => {
- const prop = props[key];
- const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;
- result[prop.key] = transform(v, prop.typ, getProps, key, ref);
- });
- Object.getOwnPropertyNames(val).forEach(key => {
- if (!Object.prototype.hasOwnProperty.call(props, key)) {
- result[key] = transform(val[key], additional, getProps, key, ref);
- }
- });
- return result;
- }
-
- if (typ === "any") return val;
- if (typ === null) {
- if (val === null) return val;
- return invalidValue(typ, val, key, parent);
- }
- if (typ === false) return invalidValue(typ, val, key, parent);
- let ref: any = undefined;
- while (typeof typ === "object" && typ.ref !== undefined) {
- ref = typ.ref;
- typ = typeMap[typ.ref];
- }
- if (Array.isArray(typ)) return transformEnum(typ, val);
- if (typeof typ === "object") {
- return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val)
- : typ.hasOwnProperty("arrayItems") ? transformArray(typ.arrayItems, val)
- : typ.hasOwnProperty("props") ? transformObject(getProps(typ), typ.additional, val)
- : invalidValue(typ, val, key, parent);
- }
- // Numbers can be parsed by Date but shouldn't be.
- if (typ === Date && typeof val !== "number") return transformDate(val);
- return transformPrimitive(typ, val);
-}
-
-function cast(val: any, typ: any): T {
- return transform(val, typ, jsonToJSProps);
-}
-
-function uncast(val: T, typ: any): any {
- return transform(val, typ, jsToJSONProps);
-}
-
-function l(typ: any) {
- return { literal: typ };
-}
-
-function a(typ: any) {
- return { arrayItems: typ };
-}
-
-function u(...typs: any[]) {
- return { unionMembers: typs };
-}
-
-function o(props: any[], additional: any) {
- return { props, additional };
-}
-
-function m(additional: any) {
- return { props: [], additional };
-}
-
-function r(name: string) {
- return { ref: name };
-}
-
-const typeMap: any = {
- "APITypes": o([
- { json: "apiConnections", js: "apiConnections", typ: m(a(r("APIDeployedPackageConnection"))) },
- { json: "apiPackageSBOM", js: "apiPackageSBOM", typ: r("APIPackageSBOM") },
- { json: "apiZarfDeployPayload", js: "apiZarfDeployPayload", typ: r("APIZarfDeployPayload") },
- { json: "apiZarfPackage", js: "apiZarfPackage", typ: r("APIZarfPackage") },
- { json: "apiZarfPackageConnection", js: "apiZarfPackageConnection", typ: r("APIDeployedPackageConnection") },
- { json: "apiZarfPackageConnections", js: "apiZarfPackageConnections", typ: a(r("APIDeployedPackageConnection")) },
- { json: "clusterSummary", js: "clusterSummary", typ: r("ClusterSummary") },
- { json: "connectStrings", js: "connectStrings", typ: m(r("ConnectString")) },
- { json: "deployedPackage", js: "deployedPackage", typ: r("DeployedPackage") },
- { json: "zarfCommonOptions", js: "zarfCommonOptions", typ: r("ZarfCommonOptions") },
- { json: "zarfCreateOptions", js: "zarfCreateOptions", typ: r("ZarfCreateOptions") },
- { json: "zarfInitOptions", js: "zarfInitOptions", typ: r("ZarfInitOptions") },
- { json: "zarfPackage", js: "zarfPackage", typ: r("ZarfPackage") },
- { json: "zarfPackageOptions", js: "zarfPackageOptions", typ: r("ZarfPackageOptions") },
- { json: "zarfState", js: "zarfState", typ: r("ZarfState") },
- ], false),
- "APIDeployedPackageConnection": o([
- { json: "name", js: "name", typ: "" },
- { json: "url", js: "url", typ: u(undefined, "") },
- ], false),
- "APIPackageSBOM": o([
- { json: "path", js: "path", typ: "" },
- { json: "sboms", js: "sboms", typ: a("") },
- ], false),
- "APIZarfDeployPayload": o([
- { json: "initOpts", js: "initOpts", typ: u(undefined, r("ZarfInitOptions")) },
- { json: "packageOpts", js: "packageOpts", typ: r("ZarfPackageOptions") },
- ], false),
- "ZarfInitOptions": o([
- { json: "applianceMode", js: "applianceMode", typ: true },
- { json: "artifactServer", js: "artifactServer", typ: r("ArtifactServerInfo") },
- { json: "gitServer", js: "gitServer", typ: r("GitServerInfo") },
- { json: "registryInfo", js: "registryInfo", typ: r("RegistryInfo") },
- { json: "storageClass", js: "storageClass", typ: "" },
- ], false),
- "ArtifactServerInfo": o([
- { json: "address", js: "address", typ: "" },
- { json: "internalServer", js: "internalServer", typ: true },
- { json: "pushPassword", js: "pushPassword", typ: "" },
- { json: "pushUsername", js: "pushUsername", typ: "" },
- ], false),
- "GitServerInfo": o([
- { json: "address", js: "address", typ: "" },
- { json: "internalServer", js: "internalServer", typ: true },
- { json: "pullPassword", js: "pullPassword", typ: "" },
- { json: "pullUsername", js: "pullUsername", typ: "" },
- { json: "pushPassword", js: "pushPassword", typ: "" },
- { json: "pushUsername", js: "pushUsername", typ: "" },
- ], false),
- "RegistryInfo": o([
- { json: "address", js: "address", typ: "" },
- { json: "internalRegistry", js: "internalRegistry", typ: true },
- { json: "nodePort", js: "nodePort", typ: 0 },
- { json: "pullPassword", js: "pullPassword", typ: "" },
- { json: "pullUsername", js: "pullUsername", typ: "" },
- { json: "pushPassword", js: "pushPassword", typ: "" },
- { json: "pushUsername", js: "pushUsername", typ: "" },
- { json: "secret", js: "secret", typ: "" },
- ], false),
- "ZarfPackageOptions": o([
- { json: "optionalComponents", js: "optionalComponents", typ: "" },
- { json: "packageSource", js: "packageSource", typ: "" },
- { json: "publicKeyPath", js: "publicKeyPath", typ: "" },
- { json: "setVariables", js: "setVariables", typ: m("") },
- { json: "sGetKeyPath", js: "sGetKeyPath", typ: "" },
- { json: "shasum", js: "shasum", typ: "" },
- ], false),
- "APIZarfPackage": o([
- { json: "path", js: "path", typ: "" },
- { json: "zarfPackage", js: "zarfPackage", typ: r("ZarfPackage") },
- ], false),
- "ZarfPackage": o([
- { json: "build", js: "build", typ: u(undefined, r("ZarfBuildData")) },
- { json: "components", js: "components", typ: a(r("ZarfComponent")) },
- { json: "constants", js: "constants", typ: u(undefined, a(r("ZarfPackageConstant"))) },
- { json: "kind", js: "kind", typ: r("Kind") },
- { json: "metadata", js: "metadata", typ: u(undefined, r("ZarfMetadata")) },
- { json: "variables", js: "variables", typ: u(undefined, a(r("ZarfPackageVariable"))) },
- ], false),
- "ZarfBuildData": o([
- { json: "architecture", js: "architecture", typ: "" },
- { json: "differential", js: "differential", typ: u(undefined, true) },
- { json: "differentialMissing", js: "differentialMissing", typ: u(undefined, a("")) },
- { json: "lastNonBreakingVersion", js: "lastNonBreakingVersion", typ: u(undefined, "") },
- { json: "migrations", js: "migrations", typ: u(undefined, a("")) },
- { json: "OCIImportedComponents", js: "OCIImportedComponents", typ: u(undefined, m("")) },
- { json: "registryOverrides", js: "registryOverrides", typ: u(undefined, m("")) },
- { json: "terminal", js: "terminal", typ: "" },
- { json: "timestamp", js: "timestamp", typ: "" },
- { json: "user", js: "user", typ: "" },
- { json: "version", js: "version", typ: "" },
- ], false),
- "ZarfComponent": o([
- { json: "actions", js: "actions", typ: u(undefined, r("ZarfComponentActions")) },
- { json: "charts", js: "charts", typ: u(undefined, a(r("ZarfChart"))) },
- { json: "cosignKeyPath", js: "cosignKeyPath", typ: u(undefined, "") },
- { json: "dataInjections", js: "dataInjections", typ: u(undefined, a(r("ZarfDataInjection"))) },
- { json: "default", js: "default", typ: u(undefined, true) },
- { json: "description", js: "description", typ: u(undefined, "") },
- { json: "extensions", js: "extensions", typ: u(undefined, r("ZarfComponentExtensions")) },
- { json: "files", js: "files", typ: u(undefined, a(r("ZarfFile"))) },
- { json: "group", js: "group", typ: u(undefined, "") },
- { json: "images", js: "images", typ: u(undefined, a("")) },
- { json: "import", js: "import", typ: u(undefined, r("ZarfComponentImport")) },
- { json: "manifests", js: "manifests", typ: u(undefined, a(r("ZarfManifest"))) },
- { json: "name", js: "name", typ: "" },
- { json: "only", js: "only", typ: u(undefined, r("ZarfComponentOnlyTarget")) },
- { json: "repos", js: "repos", typ: u(undefined, a("")) },
- { json: "required", js: "required", typ: u(undefined, true) },
- { json: "scripts", js: "scripts", typ: u(undefined, r("DeprecatedZarfComponentScripts")) },
- ], false),
- "ZarfComponentActions": o([
- { json: "onCreate", js: "onCreate", typ: u(undefined, r("ZarfComponentActionSet")) },
- { json: "onDeploy", js: "onDeploy", typ: u(undefined, r("ZarfComponentActionSet")) },
- { json: "onRemove", js: "onRemove", typ: u(undefined, r("ZarfComponentActionSet")) },
- ], false),
- "ZarfComponentActionSet": o([
- { json: "after", js: "after", typ: u(undefined, a(r("ZarfComponentAction"))) },
- { json: "before", js: "before", typ: u(undefined, a(r("ZarfComponentAction"))) },
- { json: "defaults", js: "defaults", typ: u(undefined, r("ZarfComponentActionDefaults")) },
- { json: "onFailure", js: "onFailure", typ: u(undefined, a(r("ZarfComponentAction"))) },
- { json: "onSuccess", js: "onSuccess", typ: u(undefined, a(r("ZarfComponentAction"))) },
- ], false),
- "ZarfComponentAction": o([
- { json: "cmd", js: "cmd", typ: u(undefined, "") },
- { json: "description", js: "description", typ: u(undefined, "") },
- { json: "dir", js: "dir", typ: u(undefined, "") },
- { json: "env", js: "env", typ: u(undefined, a("")) },
- { json: "maxRetries", js: "maxRetries", typ: u(undefined, 0) },
- { json: "maxTotalSeconds", js: "maxTotalSeconds", typ: u(undefined, 0) },
- { json: "mute", js: "mute", typ: u(undefined, true) },
- { json: "setVariable", js: "setVariable", typ: u(undefined, "") },
- { json: "setVariables", js: "setVariables", typ: u(undefined, a(r("ZarfComponentActionSetVariable"))) },
- { json: "shell", js: "shell", typ: u(undefined, r("ZarfComponentActionShell")) },
- { json: "wait", js: "wait", typ: u(undefined, r("ZarfComponentActionWait")) },
- ], false),
- "ZarfComponentActionSetVariable": o([
- { json: "autoIndent", js: "autoIndent", typ: u(undefined, true) },
- { json: "name", js: "name", typ: "" },
- { json: "pattern", js: "pattern", typ: u(undefined, "") },
- { json: "sensitive", js: "sensitive", typ: u(undefined, true) },
- { json: "type", js: "type", typ: u(undefined, r("Type")) },
- ], false),
- "ZarfComponentActionShell": o([
- { json: "darwin", js: "darwin", typ: u(undefined, "") },
- { json: "linux", js: "linux", typ: u(undefined, "") },
- { json: "windows", js: "windows", typ: u(undefined, "") },
- ], false),
- "ZarfComponentActionWait": o([
- { json: "cluster", js: "cluster", typ: u(undefined, r("ZarfComponentActionWaitCluster")) },
- { json: "network", js: "network", typ: u(undefined, r("ZarfComponentActionWaitNetwork")) },
- ], false),
- "ZarfComponentActionWaitCluster": o([
- { json: "condition", js: "condition", typ: u(undefined, "") },
- { json: "kind", js: "kind", typ: "" },
- { json: "name", js: "name", typ: "" },
- { json: "namespace", js: "namespace", typ: u(undefined, "") },
- ], false),
- "ZarfComponentActionWaitNetwork": o([
- { json: "address", js: "address", typ: "" },
- { json: "code", js: "code", typ: u(undefined, 0) },
- { json: "protocol", js: "protocol", typ: r("Protocol") },
- ], false),
- "ZarfComponentActionDefaults": o([
- { json: "dir", js: "dir", typ: u(undefined, "") },
- { json: "env", js: "env", typ: u(undefined, a("")) },
- { json: "maxRetries", js: "maxRetries", typ: u(undefined, 0) },
- { json: "maxTotalSeconds", js: "maxTotalSeconds", typ: u(undefined, 0) },
- { json: "mute", js: "mute", typ: u(undefined, true) },
- { json: "shell", js: "shell", typ: u(undefined, r("ZarfComponentActionShell")) },
- ], false),
- "ZarfChart": o([
- { json: "gitPath", js: "gitPath", typ: u(undefined, "") },
- { json: "localPath", js: "localPath", typ: u(undefined, "") },
- { json: "name", js: "name", typ: "" },
- { json: "namespace", js: "namespace", typ: "" },
- { json: "noWait", js: "noWait", typ: u(undefined, true) },
- { json: "releaseName", js: "releaseName", typ: u(undefined, "") },
- { json: "url", js: "url", typ: u(undefined, "") },
- { json: "valuesFiles", js: "valuesFiles", typ: u(undefined, a("")) },
- { json: "version", js: "version", typ: u(undefined, "") },
- ], false),
- "ZarfDataInjection": o([
- { json: "compress", js: "compress", typ: u(undefined, true) },
- { json: "source", js: "source", typ: "" },
- { json: "target", js: "target", typ: r("ZarfContainerTarget") },
- ], false),
- "ZarfContainerTarget": o([
- { json: "container", js: "container", typ: "" },
- { json: "namespace", js: "namespace", typ: "" },
- { json: "path", js: "path", typ: "" },
- { json: "selector", js: "selector", typ: "" },
- ], false),
- "ZarfComponentExtensions": o([
- { json: "bigbang", js: "bigbang", typ: u(undefined, r("BigBang")) },
- ], false),
- "BigBang": o([
- { json: "fluxPatchFiles", js: "fluxPatchFiles", typ: u(undefined, a("")) },
- { json: "repo", js: "repo", typ: u(undefined, "") },
- { json: "skipFlux", js: "skipFlux", typ: u(undefined, true) },
- { json: "valuesFiles", js: "valuesFiles", typ: u(undefined, a("")) },
- { json: "version", js: "version", typ: "" },
- ], false),
- "ZarfFile": o([
- { 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("")) },
- { json: "target", js: "target", typ: "" },
- ], false),
- "ZarfComponentImport": o([
- { json: "name", js: "name", typ: u(undefined, "") },
- { json: "path", js: "path", typ: u(undefined, "") },
- { json: "url", js: "url", typ: u(undefined, "") },
- ], false),
- "ZarfManifest": o([
- { json: "files", js: "files", typ: u(undefined, a("")) },
- { json: "kustomizations", js: "kustomizations", typ: u(undefined, a("")) },
- { json: "kustomizeAllowAnyDirectory", js: "kustomizeAllowAnyDirectory", typ: u(undefined, true) },
- { json: "name", js: "name", typ: "" },
- { json: "namespace", js: "namespace", typ: u(undefined, "") },
- { json: "noWait", js: "noWait", typ: u(undefined, true) },
- ], false),
- "ZarfComponentOnlyTarget": o([
- { json: "cluster", js: "cluster", typ: u(undefined, r("ZarfComponentOnlyCluster")) },
- { json: "localOS", js: "localOS", typ: u(undefined, r("LocalOS")) },
- ], false),
- "ZarfComponentOnlyCluster": o([
- { json: "architecture", js: "architecture", typ: u(undefined, r("Architecture")) },
- { json: "distros", js: "distros", typ: u(undefined, a("")) },
- ], false),
- "DeprecatedZarfComponentScripts": o([
- { json: "after", js: "after", typ: u(undefined, a("")) },
- { json: "before", js: "before", typ: u(undefined, a("")) },
- { json: "prepare", js: "prepare", typ: u(undefined, a("")) },
- { json: "retry", js: "retry", typ: u(undefined, true) },
- { json: "showOutput", js: "showOutput", typ: u(undefined, true) },
- { json: "timeoutSeconds", js: "timeoutSeconds", typ: u(undefined, 0) },
- ], false),
- "ZarfPackageConstant": o([
- { json: "autoIndent", js: "autoIndent", typ: u(undefined, true) },
- { json: "description", js: "description", typ: u(undefined, "") },
- { json: "name", js: "name", typ: "" },
- { json: "pattern", js: "pattern", typ: u(undefined, "") },
- { json: "value", js: "value", typ: "" },
- ], false),
- "ZarfMetadata": o([
- { json: "aggregateChecksum", js: "aggregateChecksum", typ: u(undefined, "") },
- { json: "architecture", js: "architecture", typ: u(undefined, "") },
- { json: "authors", js: "authors", typ: u(undefined, "") },
- { json: "description", js: "description", typ: u(undefined, "") },
- { json: "documentation", js: "documentation", typ: u(undefined, "") },
- { json: "image", js: "image", typ: u(undefined, "") },
- { json: "name", js: "name", typ: "" },
- { json: "source", js: "source", typ: u(undefined, "") },
- { json: "uncompressed", js: "uncompressed", typ: u(undefined, true) },
- { json: "url", js: "url", typ: u(undefined, "") },
- { json: "vendor", js: "vendor", typ: u(undefined, "") },
- { json: "version", js: "version", typ: u(undefined, "") },
- { json: "yolo", js: "yolo", typ: u(undefined, true) },
- ], false),
- "ZarfPackageVariable": o([
- { json: "autoIndent", js: "autoIndent", typ: u(undefined, true) },
- { json: "default", js: "default", typ: u(undefined, "") },
- { json: "description", js: "description", typ: u(undefined, "") },
- { json: "name", js: "name", typ: "" },
- { json: "pattern", js: "pattern", typ: u(undefined, "") },
- { json: "prompt", js: "prompt", typ: u(undefined, true) },
- { json: "sensitive", js: "sensitive", typ: u(undefined, true) },
- { json: "type", js: "type", typ: u(undefined, r("Type")) },
- ], false),
- "ClusterSummary": o([
- { json: "distro", js: "distro", typ: "" },
- { json: "hasZarf", js: "hasZarf", typ: true },
- { json: "k8sRevision", js: "k8sRevision", typ: "" },
- { json: "rawConfig", js: "rawConfig", typ: r("Config") },
- { json: "reachable", js: "reachable", typ: true },
- { json: "zarfState", js: "zarfState", typ: r("ZarfState") },
- ], false),
- "Config": o([
- { json: "apiVersion", js: "apiVersion", typ: u(undefined, "") },
- { json: "clusters", js: "clusters", typ: m(r("Cluster")) },
- { json: "contexts", js: "contexts", typ: m(r("Context")) },
- { json: "current-context", js: "current-context", typ: "" },
- { json: "extensions", js: "extensions", typ: u(undefined, m(u(a("any"), true, 3.14, 0, m("any"), null, ""))) },
- { json: "kind", js: "kind", typ: u(undefined, "") },
- { json: "preferences", js: "preferences", typ: r("Preferences") },
- { json: "users", js: "users", typ: m(r("AuthInfo")) },
- ], false),
- "Cluster": o([
- { json: "certificate-authority", js: "certificate-authority", typ: u(undefined, "") },
- { json: "certificate-authority-data", js: "certificate-authority-data", typ: u(undefined, "") },
- { json: "disable-compression", js: "disable-compression", typ: u(undefined, true) },
- { json: "extensions", js: "extensions", typ: u(undefined, m(u(a("any"), true, 3.14, 0, m("any"), null, ""))) },
- { json: "insecure-skip-tls-verify", js: "insecure-skip-tls-verify", typ: u(undefined, true) },
- { json: "proxy-url", js: "proxy-url", typ: u(undefined, "") },
- { json: "server", js: "server", typ: "" },
- { json: "tls-server-name", js: "tls-server-name", typ: u(undefined, "") },
- ], false),
- "Context": o([
- { json: "cluster", js: "cluster", typ: "" },
- { json: "extensions", js: "extensions", typ: u(undefined, m(u(a("any"), true, 3.14, 0, m("any"), null, ""))) },
- { json: "namespace", js: "namespace", typ: u(undefined, "") },
- { json: "user", js: "user", typ: "" },
- ], false),
- "Preferences": o([
- { json: "colors", js: "colors", typ: u(undefined, true) },
- { json: "extensions", js: "extensions", typ: u(undefined, m(u(a("any"), true, 3.14, 0, m("any"), null, ""))) },
- ], false),
- "AuthInfo": o([
- { json: "act-as", js: "act-as", typ: u(undefined, "") },
- { json: "act-as-groups", js: "act-as-groups", typ: u(undefined, a("")) },
- { json: "act-as-uid", js: "act-as-uid", typ: u(undefined, "") },
- { json: "act-as-user-extra", js: "act-as-user-extra", typ: u(undefined, m(a(""))) },
- { json: "auth-provider", js: "auth-provider", typ: u(undefined, r("AuthProviderConfig")) },
- { json: "client-certificate", js: "client-certificate", typ: u(undefined, "") },
- { json: "client-certificate-data", js: "client-certificate-data", typ: u(undefined, "") },
- { json: "client-key", js: "client-key", typ: u(undefined, "") },
- { json: "client-key-data", js: "client-key-data", typ: u(undefined, "") },
- { json: "exec", js: "exec", typ: u(undefined, r("ExecConfig")) },
- { json: "extensions", js: "extensions", typ: u(undefined, m(u(a("any"), true, 3.14, 0, m("any"), null, ""))) },
- { json: "password", js: "password", typ: u(undefined, "") },
- { json: "token", js: "token", typ: u(undefined, "") },
- { json: "tokenFile", js: "tokenFile", typ: u(undefined, "") },
- { json: "username", js: "username", typ: u(undefined, "") },
- ], false),
- "AuthProviderConfig": o([
- { json: "config", js: "config", typ: u(undefined, m("")) },
- { json: "name", js: "name", typ: "" },
- ], false),
- "ExecConfig": o([
- { json: "apiVersion", js: "apiVersion", typ: u(undefined, "") },
- { json: "args", js: "args", typ: a("") },
- { json: "command", js: "command", typ: "" },
- { json: "env", js: "env", typ: a(r("ExecEnvVar")) },
- { json: "installHint", js: "installHint", typ: u(undefined, "") },
- { json: "interactiveMode", js: "interactiveMode", typ: u(undefined, "") },
- { json: "provideClusterInfo", js: "provideClusterInfo", typ: true },
- ], false),
- "ExecEnvVar": o([
- { json: "name", js: "name", typ: "" },
- { json: "value", js: "value", typ: "" },
- ], false),
- "ZarfState": o([
- { json: "agentTLS", js: "agentTLS", typ: r("GeneratedPKI") },
- { json: "architecture", js: "architecture", typ: "" },
- { json: "artifactServer", js: "artifactServer", typ: r("ArtifactServerInfo") },
- { json: "distro", js: "distro", typ: "" },
- { json: "gitServer", js: "gitServer", typ: r("GitServerInfo") },
- { json: "loggingSecret", js: "loggingSecret", typ: "" },
- { json: "registryInfo", js: "registryInfo", typ: r("RegistryInfo") },
- { json: "storageClass", js: "storageClass", typ: "" },
- { json: "zarfAppliance", js: "zarfAppliance", typ: true },
- ], false),
- "GeneratedPKI": o([
- { json: "ca", js: "ca", typ: "" },
- { json: "cert", js: "cert", typ: "" },
- { json: "key", js: "key", typ: "" },
- ], false),
- "ConnectString": o([
- { json: "description", js: "description", typ: "" },
- { json: "url", js: "url", typ: "" },
- ], false),
- "DeployedPackage": o([
- { json: "cliVersion", js: "cliVersion", typ: "" },
- { json: "componentWebhooks", js: "componentWebhooks", typ: u(undefined, m(m(r("Webhook")))) },
- { json: "connectStrings", js: "connectStrings", typ: u(undefined, m(r("ConnectString"))) },
- { json: "data", js: "data", typ: r("ZarfPackage") },
- { json: "deployedComponents", js: "deployedComponents", typ: a(r("DeployedComponent")) },
- { json: "generation", js: "generation", typ: 0 },
- { json: "name", js: "name", typ: "" },
- ], false),
- "Webhook": o([
- { json: "name", js: "name", typ: "" },
- { json: "observedGeneration", js: "observedGeneration", typ: 0 },
- { json: "status", js: "status", typ: "" },
- { json: "waitDurationSeconds", js: "waitDurationSeconds", typ: u(undefined, 0) },
- ], false),
- "DeployedComponent": o([
- { json: "installedCharts", js: "installedCharts", typ: a(r("InstalledChart")) },
- { json: "name", js: "name", typ: "" },
- { json: "observedGeneration", js: "observedGeneration", typ: 0 },
- { json: "status", js: "status", typ: "" },
- ], false),
- "InstalledChart": o([
- { json: "chartName", js: "chartName", typ: "" },
- { json: "namespace", js: "namespace", typ: "" },
- ], false),
- "ZarfCommonOptions": o([
- { json: "cachePath", js: "cachePath", typ: "" },
- { json: "confirm", js: "confirm", typ: true },
- { json: "insecure", js: "insecure", typ: true },
- { json: "OCIConcurrency", js: "OCIConcurrency", typ: 0 },
- { json: "tempDirectory", js: "tempDirectory", typ: "" },
- ], false),
- "ZarfCreateOptions": o([
- { json: "baseDir", js: "baseDir", typ: "" },
- { json: "differential", js: "differential", typ: r("DifferentialData") },
- { json: "maxPackageSizeMB", js: "maxPackageSizeMB", typ: 0 },
- { json: "output", js: "output", typ: "" },
- { json: "registryOverrides", js: "registryOverrides", typ: m("") },
- { json: "sbom", js: "sbom", typ: true },
- { json: "sbomOutput", js: "sbomOutput", typ: "" },
- { json: "setVariables", js: "setVariables", typ: m("") },
- { json: "signingKeyPassword", js: "signingKeyPassword", typ: "" },
- { json: "signingKeyPath", js: "signingKeyPath", typ: "" },
- { json: "skipSBOM", js: "skipSBOM", typ: true },
- ], false),
- "DifferentialData": o([
- { json: "DifferentialImages", js: "DifferentialImages", typ: m(true) },
- { json: "DifferentialOCIComponents", js: "DifferentialOCIComponents", typ: m("") },
- { json: "DifferentialPackagePath", js: "DifferentialPackagePath", typ: "" },
- { json: "DifferentialPackageVersion", js: "DifferentialPackageVersion", typ: "" },
- { json: "DifferentialRepos", js: "DifferentialRepos", typ: m(true) },
- ], false),
- "Type": [
- "file",
- "raw",
- ],
- "Protocol": [
- "http",
- "https",
- "tcp",
- ],
- "Architecture": [
- "amd64",
- "arm64",
- ],
- "LocalOS": [
- "darwin",
- "linux",
- "windows",
- ],
- "Kind": [
- "ZarfInitConfig",
- "ZarfPackageConfig",
- ],
-};
diff --git a/src/ui/lib/api.ts b/src/ui/lib/api.ts
deleted file mode 100644
index 406259e266..0000000000
--- a/src/ui/lib/api.ts
+++ /dev/null
@@ -1,70 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// SPDX-FileCopyrightText: 2021-Present The Zarf Authors
-
-import type {
- APIDeployedPackageConnection,
- APIPackageSBOM,
- APIZarfDeployPayload,
- APIZarfPackage,
- ClusterSummary,
- DeployedComponent,
- DeployedPackage,
- ZarfState,
-} from './api-types';
-import { HTTP, type EventParams } from './http';
-import type { PackageTunnels } from './store';
-
-const http = new HTTP();
-
-const Auth = {
- connect: async (token: string) => {
- if (!token) {
- return false;
- }
-
- http.updateToken(token);
- return await http.head('/');
- },
-};
-
-const Cluster = {
- summary: () => http.get('/cluster'),
- state: {
- read: () => http.get('/state'),
- update: (body: ZarfState) => http.patch('/state', body),
- },
-};
-
-const Packages = {
- read: (name: string) => http.get(`/packages/read/${encodeURIComponent(name)}`),
- getDeployedPackages: () => http.get('/packages/list'),
- deploy: (options: APIZarfDeployPayload) => http.put(`/packages/deploy`, options),
- deployStream: (eventParams: EventParams) =>
- http.eventStream('/packages/deploy-stream', eventParams),
- deployingComponents: {
- list: (pkgName: string) =>
- http.get(`/packages/${encodeURIComponent(pkgName)}/components/deployed`),
- },
- remove: (name: string) => http.del(`/packages/remove/${encodeURIComponent(name)}`),
- listPkgConnections: (name: string) =>
- http.get(`/packages/${encodeURIComponent(name)}/connections`),
- listConnections: () => http.get('/packages/connections'),
- connect: (pkgName: string, connectionName: string) =>
- http.put(
- `/packages/${encodeURIComponent(pkgName)}/connect/${encodeURIComponent(connectionName)}`,
- {}
- ),
- disconnect: (pkgName: string, connectionName: string) =>
- http.del(
- `/packages/${encodeURIComponent(pkgName)}/disconnect/${encodeURIComponent(connectionName)}`
- ),
- sbom: (path: string) => http.get(`/packages/sbom/${encodeURIComponent(path)}`),
- cleanSBOM: () => http.del('/packages/sbom'),
- find: (eventParams: EventParams) => http.eventStream('/packages/find/stream', eventParams),
- findInit: (eventParams: EventParams) =>
- http.eventStream('/packages/find/stream/init', eventParams),
- findHome: (eventParams: EventParams, init: boolean) =>
- http.eventStream(`/packages/find/stream/home?init=${init}`, eventParams),
-};
-
-export { Auth, Cluster, Packages };
diff --git a/src/ui/lib/components/DeployedPackageMenu/connect-deployed-package-dialog.svelte b/src/ui/lib/components/DeployedPackageMenu/connect-deployed-package-dialog.svelte
deleted file mode 100644
index e17467b621..0000000000
--- a/src/ui/lib/components/DeployedPackageMenu/connect-deployed-package-dialog.svelte
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
-
-
-
- {#if !failedToConnect}
- {#if connections.length === 0}
-
- No connections available for this package
-
- {:else}
-
- Select which resource you would like Zarf to connect to. Zarf will create a tunnel and
- open the connection in a new tab
-
-
- {#each connections as connection}
- (selectedConnection = connection)}
- >
-
- Zarf Connect {connection}
-
- {/each}
-
- {/if}
- {:else}
-
- {errMessage}
-
- {/if}
-
-
-
- Cancel
-
- {#if !failedToConnect}
-
- Connect
-
- {/if}
-
-
diff --git a/src/ui/lib/components/DeployedPackageMenu/deployed-package-menu.svelte b/src/ui/lib/components/DeployedPackageMenu/deployed-package-menu.svelte
deleted file mode 100644
index 7b2213ff5b..0000000000
--- a/src/ui/lib/components/DeployedPackageMenu/deployed-package-menu.svelte
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
- (toggled = !toggled)}
- iconClass="material-symbols-outlined"
- iconContent="more_vert"
-/>
-
-
-
-
-
diff --git a/src/ui/lib/components/DeployedPackageMenu/disconnect-deployed-package-dialog.svelte b/src/ui/lib/components/DeployedPackageMenu/disconnect-deployed-package-dialog.svelte
deleted file mode 100644
index 6cfdc91695..0000000000
--- a/src/ui/lib/components/DeployedPackageMenu/disconnect-deployed-package-dialog.svelte
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
-
-
- {#if !failedToDisconnect}
-
- Select which resource you would like Zarf to disconnect from. Zarf will close and remove the
- tunnel.
-
- {#if connections.length > 0}
-
- {#each connections as connection}
- (selectedConnection = connection.name)}
- >
-
- Zarf Disconnect {connection.name}
-
- {/each}
-
- {:else}
-
- No resources to disconnect
-
- {/if}
- {:else}
-
- {errMessage}
-
- {/if}
-
-
-
- Cancel
-
- {#if !failedToDisconnect}
-
- Disconnect
-
- {/if}
-
-
diff --git a/src/ui/lib/components/DeployedPackageMenu/remove-deployed-package-dialog.svelte b/src/ui/lib/components/DeployedPackageMenu/remove-deployed-package-dialog.svelte
deleted file mode 100644
index daf54fb6c6..0000000000
--- a/src/ui/lib/components/DeployedPackageMenu/remove-deployed-package-dialog.svelte
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-
- {#if !errorMessage}
- {#if removing}
-
-
-
- {:else}
-
- Type the name of the package and click remove to delete the package and all of it’s
- resources from the cluster. This action step cannot be undone.
-
- {pkg.name}
-
- {/if}
- {:else}
-
- {errorMessage}
-
- {/if}
-
- {#if !errorMessage}
-
- Cancel
-
-
- Remove Package
-
- {:else}
-
- Close
-
- {/if}
-
-
diff --git a/src/ui/lib/components/ansi-display.svelte b/src/ui/lib/components/ansi-display.svelte
deleted file mode 100644
index 5a8e34c7c2..0000000000
--- a/src/ui/lib/components/ansi-display.svelte
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
-
-
-
diff --git a/src/ui/lib/components/build-providence.svelte b/src/ui/lib/components/build-providence.svelte
deleted file mode 100644
index 52413372ab..0000000000
--- a/src/ui/lib/components/build-providence.svelte
+++ /dev/null
@@ -1,131 +0,0 @@
-
-
-
-
- Supply Chain
-
- Supply chain information is used to help determine if a package can be trusted. It includes
- declarative data regarding how this package was built. Build providence includes metadata about
- the build and where the package was created. SBOM includes information on all of the code,
- images, and resources contained in this package.
-
-
- {#if sbomUrl}
-
- view sbom
-
- {/if}
-
-
-
- Build Providence
-