diff --git a/docs/guides-references/hauler-manifests.md b/docs/guides-references/hauler-manifests.md index 8b6493a10..10c4f59c6 100644 --- a/docs/guides-references/hauler-manifests.md +++ b/docs/guides-references/hauler-manifests.md @@ -42,6 +42,11 @@ spec: - name: docker.io/longhornio/longhorn-manager:v1.6.0 key: cosign-public-key.pub platform: linux/amd64 + # fetch image with full image reference, specific version, specific platform, signature verification, and rewrite + - name: docker.io/longhornio/longhorn-manager:v1.6.0 + key: cosign-public-key.pub + platform: linux/amd64 + rewrite: rancher.io/longhornio/longhorn-manager:v1.6.0 ``` ## Example Manifest for Charts @@ -66,6 +71,12 @@ spec: - name: rancher-cluster-templates repoURL: oci://ghcr.io/rancherfederal/charts version: 0.6.1 + # fetch helm chart with specific version and dependent helm charts and images + - name: rancher-cluster-templates + repoURL: oci://ghcr.io/rancherfederal/charts + version: 0.6.1 + add-images: true + add-dependencies: true ``` ## Example Manifest for Files diff --git a/docs/hauler-usage/completion.md b/docs/hauler-usage/completion.md index c990e89c9..7f5c2176b 100644 --- a/docs/hauler-usage/completion.md +++ b/docs/hauler-usage/completion.md @@ -31,7 +31,6 @@ Global Flags: Use "hauler completion [command] --help" for more information about a command. ``` - #### `hauler completion bash`: * Generate the autocompletion script for the bash shell. diff --git a/docs/hauler-usage/help.md b/docs/hauler-usage/help.md index 32f66a3b3..311dfb836 100644 --- a/docs/hauler-usage/help.md +++ b/docs/hauler-usage/help.md @@ -16,11 +16,13 @@ Usage: Examples: View the Docs: https://docs.hauler.dev Environment Variables: HAULER_DIR | HAULER_TEMP_DIR | HAULER_STORE_DIR | HAULER_IGNORE_ERRORS + Warnings: Hauler commands and flags marked with (EXPERIMENTAL) are not yet stable and may have bugs or change in the future. Available Commands: completion Generate auto-completion scripts for various shells help Help about any command login Log in to a registry + logout Log out of a registry store Interact with the content store version Print the current version diff --git a/docs/hauler-usage/login.md b/docs/hauler-usage/login.md index f2d7ef34a..c9d854a65 100644 --- a/docs/hauler-usage/login.md +++ b/docs/hauler-usage/login.md @@ -34,4 +34,5 @@ Global Flags: -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") +zackbradys@Zacks-MacBook-Pro hauler % ``` diff --git a/docs/hauler-usage/logout.md b/docs/hauler-usage/logout.md new file mode 100644 index 000000000..4fce254b9 --- /dev/null +++ b/docs/hauler-usage/logout.md @@ -0,0 +1,34 @@ +--- +title: Hauler Logout +description: Hauler Logout Usage Documentation +sidebar_label: Hauler Logout +--- + +### Overview + +`hauler logout` logs out of an OCI Compliant registry that is stored at `~/.docker/config.json`. + +**An example with available flags...** + +```bash +hauler logout +``` + +### Command Overview + +```yaml +Usage: + hauler logout [SERVER] [flags] + +Examples: + # Log out of reg.example.com + hauler logout reg.example.com + +Flags: + -h, --help help for logout + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") +``` diff --git a/docs/hauler-usage/store/add/chart.md b/docs/hauler-usage/store/add/chart.md index 03de4b0a1..c3d8a60ea 100644 --- a/docs/hauler-usage/store/add/chart.md +++ b/docs/hauler-usage/store/add/chart.md @@ -39,22 +39,27 @@ hauler store add chart rancher --repo https://releases.rancher.com/server-charts # fetch remote helm chart with specific version hauler store add chart rancher --repo https://releases.rancher.com/server-charts/latest --version 2.10.1 +# fetch remote helm chart and rewrite path +hauler store add chart hauler-helm --repo oci://ghcr.io/hauler-dev --rewrite custom-path/hauler-chart:latest + Flags: - --help, -h help for chart + --add-dependencies (EXPERIMENTAL & Optional) Fetch dependent helm charts + --add-images (EXPERIMENTAL & Optional) Fetch images referenced in helm charts --ca-file string (Optional) Location of CA Bundle to enable certification verification - --cert-file string (Optional) Location of the TLS Certificate to use for client authenication + --cert-file string (Optional) Location of the TLS Certificate to use for client authentication + -h, --help help for chart --insecure-skip-tls-verify (Optional) Skip TLS certificate verification - --key-file string (Optional) Location of the TLS Key to use for client authenication + --key-file string (Optional) Location of the TLS Key to use for client authentication + --kube-version string (EXPERIMENTAL & Optional) Override the kubernetes version for helm template rendering (default "v1.34.1") --password string (Optional) Password to use for authentication + -p, --platform string (Optional) Specify the platform of the image, e.g. linux/amd64 + -g, --registry string (Optional) Specify the registry of the image for images that do not alredy define one --repo string Location of the chart (https:// | http:// | oci://) + --rewrite string (EXPERIMENTAL & Optional) Rewrite artifact path to specified string --username string (Optional) Username to use for authentication + --values string (EXPERIMENTAL & Optional) Specify helm chart values when fetching images --verify (Optional) Verify the chart before fetching it - --version string (Optional) Specifiy the version of the chart (v1.0.0 | 2.0.0 | ^2.0.0) - -Flags for Keyless Verification: - --certificate-identity-regexp string (Optional) OIDC identity tied to certificate - --certificate-oidc-issuer string (Optional) OIDC issuer - --certificate-github-workflow-repository string (Optional) Repository claim from GH identity token for GitHub workflows + --version string (Optional) Specify the version of the chart (v1.0.0 | 2.0.0 | ^2.0.0) Global Flags: -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) @@ -62,6 +67,7 @@ Global Flags: -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") -r, --retries int Set the number of retries for operations (default 3) -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS ``` ### Example Commands for Charts @@ -84,6 +90,15 @@ hauler store add chart rancher --repo https://releases.rancher.com/server-charts # fetch remote helm chart with specific version hauler store add chart rancher --repo https://releases.rancher.com/server-charts/latest --version 2.10.1 + +# fetch remote helm chart and rewrite path +hauler store add chart hauler-helm --repo oci://ghcr.io/hauler-dev --rewrite custom-path/hauler-chart:latest + +# fetch remote helm chart and associated images +hauler store add chart gitea --repo https://dl.gitea.com/charts --add-images + +# fetch remote helm chart and dependent chart(s) +hauler store add chart gitea --repo https://dl.gitea.com/charts --add-dependencies ``` ### Hauler Manifest for Charts @@ -120,3 +135,60 @@ spec: repoURL: oci://ghcr.io/rancherfederal/charts version: 0.6.1 ``` + +### Example Manifest with Rewrite + +```yaml title="hauler-chart-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Charts +metadata: + name: hauler-content-charts-example +spec: + charts: + # fetch helm chart + - name: + # https:// or http:// or oci:// + repoURL: + # semver complaint + version: + # rewrite in store + rewrite: +``` + +### Example Manifest with Add Images + +```yaml title="hauler-chart-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Charts +metadata: + name: hauler-content-charts-example +spec: + charts: + # fetch helm chart + - name: + # https:// or http:// or oci:// + repoURL: + # semver complaint + version: + # add associated images + add-images: true +``` + +### Example Manifest with Dependent Charts + +```yaml title="hauler-chart-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Charts +metadata: + name: hauler-content-charts-example +spec: + charts: + # fetch helm chart + - name: + # https:// or http:// or oci:// + repoURL: + # semver complaint + version: + # add dependent charts + add-dependencies: true +``` \ No newline at end of file diff --git a/docs/hauler-usage/store/add/file.md b/docs/hauler-usage/store/add/file.md index d0916f0c6..9bafaab43 100644 --- a/docs/hauler-usage/store/add/file.md +++ b/docs/hauler-usage/store/add/file.md @@ -34,17 +34,13 @@ Flags: -h, --help help for file -n, --name string (Optional) Rewrite the name of the file -Flags for Keyless Verification: - --certificate-identity-regexp string (Optional) OIDC identity tied to certificate - --certificate-oidc-issuer string (Optional) OIDC issuer - --certificate-github-workflow-repository string (Optional) Repository claim from GH identity token for GitHub workflows - Global Flags: -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") -r, --retries int Set the number of retries for operations (default 3) -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS ``` ### Example Commands for Files diff --git a/docs/hauler-usage/store/add/image.md b/docs/hauler-usage/store/add/image.md index 82d89abde..fb55544af 100644 --- a/docs/hauler-usage/store/add/image.md +++ b/docs/hauler-usage/store/add/image.md @@ -37,16 +37,20 @@ hauler store add image gcr.io/distroless/base@sha256:7fa7445dfbebae4f4b7ab0e6ef9 curl -sfOL https://raw.githubusercontent.com/rancherfederal/carbide-releases/main/carbide-key.pub hauler store add image rgcrprod.azurecr.us/rancher/rke2-runtime:v1.31.5-rke2r1 --platform linux/amd64 --key carbide-key.pub -Flags: - -h, --help help for image - -k, --key string (Optional) Location of public key to use for signature verification - -p, --platform string (Optional) Specifiy the platform of the image... i.e. linux/amd64 (defaults to all) - --use-tlog-verify bool (Optional) Set transparency log verification (defaults false) +# fetch image and rewrite path +hauler store add image busybox --rewrite custom-path/busybox:latest -Flags for Keyless Verification: - --certificate-identity-regexp string (Optional) OIDC identity tied to certificate - --certificate-oidc-issuer string (Optional) OIDC issuer - --certificate-github-workflow-repository string (Optional) Repository claim from GH identity token for GitHub workflows +Flags: + --certificate-github-workflow-repository string (Optional) Cosign certificate-github-workflow-repository option + --certificate-identity string (Optional) Cosign certificate-identity (either --certificate-identity or --certificate-identity-regexp required for keyless verification) + --certificate-identity-regexp string (Optional) Cosign certificate-identity-regexp (either --certificate-identity or --certificate-identity-regexp required for keyless verification) + --certificate-oidc-issuer string (Optional) Cosign option to validate oidc issuer + --certificate-oidc-issuer-regexp string (Optional) Cosign option to validate oidc issuer with regex + -h, --help help for image + -k, --key string (Optional) Location of public key to use for signature verification + -p, --platform string (Optional) Specify the platform of the image... i.e. linux/amd64 (defaults to all) + --rewrite string (EXPERIMENTAL & Optional) Rewrite artifact path to specified string + --use-tlog-verify (Optional) Allow transparency log verification (defaults to false) Global Flags: -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) @@ -54,6 +58,7 @@ Global Flags: -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") -r, --retries int Set the number of retries for operations (default 3) -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS ``` ### Hauler Command Line for Images @@ -79,6 +84,9 @@ hauler store add image gcr.io/distroless/base@sha256:7fa7445dfbebae4f4b7ab0e6ef9 # fetch image with full image reference, specific platform, and signature verification hauler store add image rgcrprod.azurecr.us/hauler/rke2-manifest.yaml:v1.28.12-rke2r1 --platform linux/amd64 --key carbide-key.pub + +# fetch image and rewrite path +hauler store add image busybox --rewrite custom-path/busybox:latest ``` ### Hauler Manifest for Images @@ -136,3 +144,27 @@ spec: key: cosign-public-key.pub platform: linux/amd64 ``` + +### Example Manifest with Rewrite + +```yaml title="hauler-image-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Images +metadata: + name: hauler-content-images-example + annotations: + # global flags for all images in the manifest + # image flags override global flags + # example: key set globally, but not observed if set per image + # example: platform set globally, but not observed if set per image + # example: registry set globally, but not observed if set per image + hauler.dev/key: + hauler.dev/platform: + hauler.dev/registry: +spec: + images: + - name: + rewrite: + key: + platform: +``` diff --git a/docs/hauler-usage/store/copy.md b/docs/hauler-usage/store/copy.md index f30a3761d..1b710ce32 100644 --- a/docs/hauler-usage/store/copy.md +++ b/docs/hauler-usage/store/copy.md @@ -26,12 +26,10 @@ Usage: hauler store copy [flags] Flags: - -h, --help help for copy - --insecure (Optional) Allow insecure connections - -p, --password string (Optional) Password to use for authentication - --plain-http (Optional) Allow plain HTTP connections - -u, --username string (Optional) Username to use for authentication - -o, --only string (Optional) Copy only signature (sig) or attestation (att) for image + -h, --help help for copy + --insecure (Optional) Allow insecure connections + -o, --only string (Optional) Custom string array to only copy specific 'image' items + --plain-http (Optional) Allow plain HTTP connections Global Flags: -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) @@ -39,4 +37,5 @@ Global Flags: -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") -r, --retries int Set the number of retries for operations (default 3) -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS ``` diff --git a/docs/hauler-usage/store/extract.md b/docs/hauler-usage/store/extract.md index b405c5cc5..4d8ad2b88 100644 --- a/docs/hauler-usage/store/extract.md +++ b/docs/hauler-usage/store/extract.md @@ -33,4 +33,5 @@ Global Flags: -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") -r, --retries int Set the number of retries for operations (default 3) -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS ``` diff --git a/docs/hauler-usage/store/load.md b/docs/hauler-usage/store/load.md index b2aec0867..ca1cf807e 100644 --- a/docs/hauler-usage/store/load.md +++ b/docs/hauler-usage/store/load.md @@ -8,7 +8,7 @@ sidebar_label: Load `hauler store load` loads a content store from a store archive. -As of v1.3, Hauler now supports loading content from a Docker-saved tarball. +As of v1.3, Hauler now supports loading content from a Docker-saved tarball. > Note: Podman-saved tarballs are not currently supported. @@ -27,7 +27,6 @@ Usage: Flags: -f, --filename strings (Optional) Specify the name of inputted haul(s) (default [haul.tar.zst]) -h, --help help for load - -t, --tempdir string (Optional) Override the default temporary directiory determined by the OS Global Flags: -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) @@ -35,4 +34,5 @@ Global Flags: -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") -r, --retries int Set the number of retries for operations (default 3) -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS ``` diff --git a/docs/hauler-usage/store/remove.md b/docs/hauler-usage/store/remove.md new file mode 100644 index 000000000..05dcb1222 --- /dev/null +++ b/docs/hauler-usage/store/remove.md @@ -0,0 +1,58 @@ +--- +title: Hauler Store Remove +description: Hauler Store Remove Usage Documentation +sidebar_label: Remove +--- + +### Overview + +`hauler store remove` removes matching item(s) from the store using simple string matching. + +> Note: `remove` is an experimental feature as of Hauler v1.4.0. + +**An example with available flags...** + +```bash +hauler store remove +``` + +### Command Overview + +```yaml +Usage: + hauler store remove [flags] + +Examples: +# remove an image using full store reference +hauler store info +hauler store remove index.docker.io/library/busybox:stable + +# remove a chart using full store reference +hauler store info +hauler store remove hauler/rancher:2.8.4 + +# remove a file using full store reference +hauler store info +hauler store remove hauler/rke2-install.sh + +# remove any artifact with the latest tag +hauler store remove :latest + +# remove any artifact with 'busybox' in the reference +hauler store remove busybox + +# force remove without verification +hauler store remove busybox:latest --force + +Flags: + -f, --force (Optional) Remove artifact(s) without confirmation + -h, --help help for remove + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + -r, --retries int Set the number of retries for operations (default 3) + -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS +``` \ No newline at end of file diff --git a/docs/hauler-usage/store/save.md b/docs/hauler-usage/store/save.md index 0deba6dfb..6bede6ec6 100644 --- a/docs/hauler-usage/store/save.md +++ b/docs/hauler-usage/store/save.md @@ -31,4 +31,5 @@ Global Flags: -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") -r, --retries int Set the number of retries for operations (default 3) -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS ``` diff --git a/docs/hauler-usage/store/serve/fileserver.md b/docs/hauler-usage/store/serve/fileserver.md index a93cbfccd..0b734578a 100644 --- a/docs/hauler-usage/store/serve/fileserver.md +++ b/docs/hauler-usage/store/serve/fileserver.md @@ -24,7 +24,7 @@ Flags: --directory string (Optional) Directory to use for backend. Defaults to $PWD/fileserver (default "fileserver") -h, --help help for fileserver -p, --port int (Optional) Set the port to use for incoming connections (default 8080) - -t, --timeout int (Optional) Timeout duration for HTTP Requests in seconds for both reads/writes (default 60) + --timeout int (Optional) Timeout duration for HTTP Requests in seconds for both reads/writes (default 60) --tls-cert string (Optional) Location of the TLS Certificate to use for server authenication --tls-key string (Optional) Location of the TLS Key to use for server authenication @@ -34,6 +34,7 @@ Global Flags: -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") -r, --retries int Set the number of retries for operations (default 3) -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS ``` ## Example Commands for the Hauler Fileserver diff --git a/docs/hauler-usage/store/serve/registry.md b/docs/hauler-usage/store/serve/registry.md index 34532c286..ca9ee1ef9 100644 --- a/docs/hauler-usage/store/serve/registry.md +++ b/docs/hauler-usage/store/serve/registry.md @@ -11,7 +11,7 @@ sidebar_label: Registry **An example with available flags...** ```bash -hauler store serve fileserver --port --timeout --readonly --tls-cert --tls-key +hauler store serve registry --port --timeout --readonly --tls-cert --tls-key ``` ### Command Overview @@ -35,6 +35,7 @@ Global Flags: -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") -r, --retries int Set the number of retries for operations (default 3) -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS ``` ## Example Commands for the Hauler Registry diff --git a/docs/hauler-usage/store/sync.md b/docs/hauler-usage/store/sync.md index 269661a92..eaa0e5d89 100644 --- a/docs/hauler-usage/store/sync.md +++ b/docs/hauler-usage/store/sync.md @@ -21,15 +21,20 @@ Usage: hauler store sync [flags] Flags: - -f, --filename strings Specify the name of manifest(s) to sync (default [hauler-manifest.yaml]) - -h, --help help for sync - -k, --key string (Optional) Location of public key to use for signature verification - -p, --platform string (Optional) Specify the platform of the image... i.e linux/amd64 (defaults to all) - -c, --product-registry string (Optional) Specify the product registry. Defaults to RGS Carbide Registry (rgcrprod.azurecr.us) - --products strings (Optional) Specify the product name to fetch collections from the product registry i.e. rancher=v2.10.1,rke2=v1.31.5+rke2r1 - -g, --registry string (Optional) Specify the registry of the image for images that do not alredy define one - -t, --tempdir string (Optional) Override the default temporary directiory determined by the OS - --use-tlog-verify bool (Optional) Set transparency log verification (defaults false) + --certificate-github-workflow-repository string (Optional) Cosign certificate-github-workflow-repository option + --certificate-identity string (Optional) Cosign certificate-identity (either --certificate-identity or --certificate-identity-regexp required for keyless verification) + --certificate-identity-regexp string (Optional) Cosign certificate-identity-regexp (either --certificate-identity or --certificate-identity-regexp required for keyless verification) + --certificate-oidc-issuer string (Optional) Cosign option to validate oidc issuer + --certificate-oidc-issuer-regexp string (Optional) Cosign option to validate oidc issuer with regex + -f, --filename strings Specify the name of manifest(s) to sync (default [hauler-manifest.yaml]) + -h, --help help for sync + -k, --key string (Optional) Location of public key to use for signature verification + -p, --platform string (Optional) Specify the platform of the image... i.e linux/amd64 (defaults to all) + -c, --product-registry string (Optional) Specify the product registry. Defaults to RGS Carbide Registry (rgcrprod.azurecr.us) + --products strings (Optional) Specify the product name to fetch collections from the product registry i.e. rancher=v2.10.1,rke2=v1.31.5+rke2r1 + -g, --registry string (Optional) Specify the registry of the image for images that do not alredy define one + --rewrite string (Optional) Rewrite artifact path to specified string (EXPERIMENTAL) + --use-tlog-verify (Optional) Allow transparency log verification (defaults to false) Global Flags: -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) @@ -37,4 +42,5 @@ Global Flags: -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") -r, --retries int Set the number of retries for operations (default 3) -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS ``` diff --git a/docs/hauler-usage/version.md b/docs/hauler-usage/version.md index 1b35c3b40..0ae662642 100644 --- a/docs/hauler-usage/version.md +++ b/docs/hauler-usage/version.md @@ -38,22 +38,22 @@ Global Flags: |__| |__| /__/ \__\ \______/ |_______||_______|| _| `._____| hauler: Airgap Swiss Army Knife -GitVersion: 1.2.0 -GitCommit: 7d28df1 +GitVersion: v1.4.0-rc.1.0.20260112213839-e7082b6e2890 +GitCommit: e7082b6 GitTreeState: clean -BuildDate: 2025-02-05T18:34:07Z -GoVersion: go1.23.5 X:boringcrypto +BuildDate: 2026-01-13T06:33:44Z +GoVersion: go1.25.5 X:boringcrypto Compiler: gc Platform: darwin/arm64 ``` ```json { - "gitVersion": "1.2.0", - "gitCommit": "7d28df1", + "gitVersion": "v1.4.0-rc.1.0.20260112213839-e7082b6e2890", + "gitCommit": "e7082b6", "gitTreeState": "clean", - "buildDate": "2025-02-05T18:34:07Z", - "goVersion": "go1.23.5 X:boringcrypto", + "buildDate": "2026-01-13T06:33:44Z", + "goVersion": "go1.25.5 X:boringcrypto", "compiler": "gc", "platform": "darwin/arm64" } diff --git a/docs/known-limits.md b/docs/known-limits.md index 4deb3299e..ed21d4c9c 100644 --- a/docs/known-limits.md +++ b/docs/known-limits.md @@ -6,6 +6,17 @@ sidebar_label: Known Issues/Limits ## Issues +No known critical issues at this time. Please see our GitHub Issues for more information... +- `Hauler` - https://github.com/hauler-dev/hauler/issues +- `Hauler Helm` - https://github.com/hauler-dev/hauler-helm/issues +- `Hauler Docs` - https://github.com/hauler-dev/hauler-docs/issues + +## Limitations + +### Limitation for `Hauler Store Load` +- When loading a `podman` generated `tarball` with `hauler store load -f ` it may fail to load all of the images contained in `tarball`. Please note that at this time this is not supported, but may change in the future. + +### Limitation for `Hauler Store Copy` - When copying artifacts from your `store` to a specific path on an existing and authenicated registry using `hauler store copy`, you first must use `hauler login`, without the ``, only the ``. Please see the example below... - https://github.com/hauler-dev/hauler/issues/409 @@ -14,26 +25,30 @@ hauler login --username --password hauler store copy registry:/// ``` -## Limitations - +### Limitation for `Helm Chart Names` - `Hauler` may error when fetching a helm chart when using a `store` with the same name of the `helm chart`. - For example, if you tried to use a custom `store` name of `rancher` when fetching a `helm chart` named `rancher`, it will fail due to the fact that `helm` defaults to fetching charts from an exisiting local directory. - https://github.com/helm/helm/blob/main/pkg/action/install.go#L730-L831 ---- + +### Limitation for `Hauler Temp Directory` - `Hauler` will default to write temporary directories and files to `/tmp`. If you do not have the same (or more) amount of space available in your `/tmp` compared to the size of the `store` or `haul`, then `hauler` may error. - **Recommendation:** Ensure there is enough space availabe in `/tmp` or change the default temporary directory with `--tempdir`, before running the command `hauler store load --filename haul.tar.zst`. ---- -- `hauler store load` with a Podman-saved tarball is not currently supported. - ## Notices +### In Hauler v1.4.0... + +- Added a notice to `hauler store sync --products/--product-registry` to warn users the default registry will be updated in a future release. + - Users will see logging notices when using the `--products/--product-registry` such as... + - `!!! WARNING !!! [--products] will be updating its default registry in a future release...` + - `!!! WARNING !!! [--product-registry] will be updating its default registry in a future release...` + ### In Hauler v1.2.0... - Upgraded the `apiVersion` to `v1` from `v1alpha1` - Users are able to use `v1` and `v1alpha1`, but `v1alpha1` is now deprecated and will be removed in a future release. We will update the community when we fully deprecate and remove the functionality of `v1alpha1` - Users will see logging notices when using the old `apiVersion` such as... - - `!!! DEPRECATION WARNING !!! apiVersion [v1alpha1] will be removed in a future release !!! DEPRECATION WARNING !!!` + - `!!! DEPRECATION WARNING !!! apiVersion [v1alpha1] will be removed in a future release...` --- - Updated the behavior of `hauler store load` to default to loading a `haul` with the name of `haul.tar.zst` and requires the flag of `--filename/-f` to load a `haul` with a different name - Users can load multiple `hauls` by specifying multiple flags of `--filename/-f` diff --git a/package-lock.json b/package-lock.json index 9ed7edcb8..0342d8529 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "hauler-docs", - "version": "1.3.x", + "version": "1.4.x", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "hauler-docs", - "version": "1.3.x", + "version": "1.4.x", "dependencies": { "@docusaurus/core": "^3.9.2", "@docusaurus/preset-classic": "^3.9.2", @@ -26,13 +26,13 @@ } }, "node_modules/@ai-sdk/gateway": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-2.0.18.tgz", - "integrity": "sha512-sDQcW+6ck2m0pTIHW6BPHD7S125WD3qNkx/B8sEzJp/hurocmJ5Cni0ybExg6sQMGo+fr/GWOwpHF1cmCdg5rQ==", + "version": "2.0.24", + "resolved": "https://registry.npmjs.org/@ai-sdk/gateway/-/gateway-2.0.24.tgz", + "integrity": "sha512-mflk80YF8hj8vrF9e1IHhovGKC1ubX+sY88pesSk3pUiXfH5VPO8dgzNnxjwsqsCZrnkHcztxS5cSl4TzSiEuA==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "2.0.0", - "@ai-sdk/provider-utils": "3.0.18", + "@ai-sdk/provider": "2.0.1", + "@ai-sdk/provider-utils": "3.0.20", "@vercel/oidc": "3.0.5" }, "engines": { @@ -43,9 +43,9 @@ } }, "node_modules/@ai-sdk/provider": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-2.0.0.tgz", - "integrity": "sha512-6o7Y2SeO9vFKB8lArHXehNuusnpddKPk7xqL7T2/b+OvXMRIXUO1rR4wcv1hAFUAT9avGZshty3Wlua/XA7TvA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-2.0.1.tgz", + "integrity": "sha512-KCUwswvsC5VsW2PWFqF8eJgSCu5Ysj7m1TxiHTVA6g7k360bk0RNQENT8KTMAYEs+8fWPD3Uu4dEmzGHc+jGng==", "license": "Apache-2.0", "dependencies": { "json-schema": "^0.4.0" @@ -55,12 +55,12 @@ } }, "node_modules/@ai-sdk/provider-utils": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-3.0.18.tgz", - "integrity": "sha512-ypv1xXMsgGcNKUP+hglKqtdDuMg68nWHucPPAhIENrbFAI+xCHiqPVN8Zllxyv1TNZwGWUghPxJXU+Mqps0YRQ==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-3.0.20.tgz", + "integrity": "sha512-iXHVe0apM2zUEzauqJwqmpC37A5rihrStAih5Ks+JE32iTe4LZ58y17UGBjpQQTCRw9YxMeo2UFLxLpBluyvLQ==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider": "2.0.0", + "@ai-sdk/provider": "2.0.1", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.6" }, @@ -72,13 +72,13 @@ } }, "node_modules/@ai-sdk/react": { - "version": "2.0.106", - "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-2.0.106.tgz", - "integrity": "sha512-TU8ONNhm64GI7O60UDCcOz9CdyCp3emQwSYrSnq+QWBNgS8vDlRQ3ZwXyPNAJQdXyBTafVS2iyS0kvV+KXaPAQ==", + "version": "2.0.120", + "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-2.0.120.tgz", + "integrity": "sha512-x7Oa2LDRURc8uRnAdcEfydbHLSXGYjNaFlQrGuxZAMfqhLJQ+7x4K8Z6O5vnLt414mrPaVvgirfRqsP/nsxtnw==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/provider-utils": "3.0.18", - "ai": "5.0.106", + "@ai-sdk/provider-utils": "3.0.20", + "ai": "5.0.118", "swr": "^2.2.5", "throttleit": "2.1.0" }, @@ -86,7 +86,7 @@ "node": ">=18" }, "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", + "react": "^18 || ~19.0.1 || ~19.1.2 || ^19.2.1", "zod": "^3.25.76 || ^4.1.8" }, "peerDependenciesMeta": { @@ -96,15 +96,15 @@ } }, "node_modules/@algolia/abtesting": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.11.0.tgz", - "integrity": "sha512-a7oQ8dwiyoyVmzLY0FcuBqyqcNSq78qlcOtHmNBumRlHCSnXDcuoYGBGPN1F6n8JoGhviDDsIaF/oQrzTzs6Lg==", + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.12.2.tgz", + "integrity": "sha512-oWknd6wpfNrmRcH0vzed3UPX0i17o4kYLM5OMITyMVM2xLgaRbIafoxL0e8mcrNNb0iORCJA0evnNDKRYth5WQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" @@ -143,100 +143,99 @@ } }, "node_modules/@algolia/client-abtesting": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.45.0.tgz", - "integrity": "sha512-WTW0VZA8xHMbzuQD5b3f41ovKZ0MNTIXkWfm0F2PU+XGcLxmxX15UqODzF2sWab0vSbi3URM1xLhJx+bXbd1eQ==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.46.2.tgz", + "integrity": "sha512-oRSUHbylGIuxrlzdPA8FPJuwrLLRavOhAmFGgdAvMcX47XsyM+IOGa9tc7/K5SPvBqn4nhppOCEz7BrzOPWc4A==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-analytics": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.45.0.tgz", - "integrity": "sha512-I3g7VtvG/QJOH3tQO7E7zWTwBfK/nIQXShFLR8RvPgWburZ626JNj332M3wHCYcaAMivN9WJG66S2JNXhm6+Xg==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.46.2.tgz", + "integrity": "sha512-EPBN2Oruw0maWOF4OgGPfioTvd+gmiNwx0HmD9IgmlS+l75DatcBkKOPNJN+0z3wBQWUO5oq602ATxIfmTQ8bA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-common": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.45.0.tgz", - "integrity": "sha512-/nTqm1tLiPtbUr+8kHKyFiCOfhRfgC+JxLvOCq471gFZZOlsh6VtFRiKI60/zGmHTojFC6B0mD80PB7KeK94og==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.46.2.tgz", + "integrity": "sha512-Hj8gswSJNKZ0oyd0wWissqyasm+wTz1oIsv5ZmLarzOZAp3vFEda8bpDQ8PUhO+DfkbiLyVnAxsPe4cGzWtqkg==", "license": "MIT", "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-insights": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.45.0.tgz", - "integrity": "sha512-suQTx/1bRL1g/K2hRtbK3ANmbzaZCi13487sxxmqok+alBDKKw0/TI73ZiHjjFXM2NV52inwwcmW4fUR45206Q==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.46.2.tgz", + "integrity": "sha512-6dBZko2jt8FmQcHCbmNLB0kCV079Mx/DJcySTL3wirgDBUH7xhY1pOuUTLMiGkqM5D8moVZTvTdRKZUJRkrwBA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-personalization": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.45.0.tgz", - "integrity": "sha512-CId/dbjpzI3eoUhPU6rt/z4GrRsDesqFISEMOwrqWNSrf4FJhiUIzN42Ac+Gzg69uC0RnzRYy60K1y4Na5VSMw==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.46.2.tgz", + "integrity": "sha512-1waE2Uqh/PHNeDXGn/PM/WrmYOBiUGSVxAWqiJIj73jqPqvfzZgzdakHscIVaDl6Cp+j5dwjsZ5LCgaUr6DtmA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.45.0.tgz", - "integrity": "sha512-tjbBKfA8fjAiFtvl9g/MpIPiD6pf3fj7rirVfh1eMIUi8ybHP4ovDzIaE216vHuRXoePQVCkMd2CokKvYq1CLw==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.46.2.tgz", + "integrity": "sha512-EgOzTZkyDcNL6DV0V/24+oBJ+hKo0wNgyrOX/mePBM9bc9huHxIY2352sXmoZ648JXXY2x//V1kropF/Spx83w==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.45.0.tgz", - "integrity": "sha512-nxuCid+Nszs4xqwIMDw11pRJPes2c+Th1yup/+LtpjFH8QWXkr3SirNYSD3OXAeM060HgWWPLA8/Fxk+vwxQOA==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.46.2.tgz", + "integrity": "sha512-ZsOJqu4HOG5BlvIFnMU0YKjQ9ZI6r3C31dg2jk5kMWPSdhJpYL9xa5hEe7aieE+707dXeMI4ej3diy6mXdZpgA==", "license": "MIT", - "peer": true, "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" @@ -249,81 +248,81 @@ "license": "MIT" }, "node_modules/@algolia/ingestion": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.45.0.tgz", - "integrity": "sha512-t+1doBzhkQTeOOjLHMlm4slmXBhvgtEGQhOmNpMPTnIgWOyZyESWdm+XD984qM4Ej1i9FRh8VttOGrdGnAjAng==", + "version": "1.46.2", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.46.2.tgz", + "integrity": "sha512-1Uw2OslTWiOFDtt83y0bGiErJYy5MizadV0nHnOoHFWMoDqWW0kQoMFI65pXqRSkVvit5zjXSLik2xMiyQJDWQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/monitoring": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.45.0.tgz", - "integrity": "sha512-IaX3ZX1A/0wlgWZue+1BNWlq5xtJgsRo7uUk/aSiYD7lPbJ7dFuZ+yTLFLKgbl4O0QcyHTj1/mSBj9ryF1Lizg==", + "version": "1.46.2", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.46.2.tgz", + "integrity": "sha512-xk9f+DPtNcddWN6E7n1hyNNsATBCHIqAvVGG2EAGHJc4AFYL18uM/kMTiOKXE/LKDPyy1JhIerrh9oYb7RBrgw==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/recommend": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.45.0.tgz", - "integrity": "sha512-1jeMLoOhkgezCCPsOqkScwYzAAc1Jr5T2hisZl0s32D94ZV7d1OHozBukgOjf8Dw+6Hgi6j52jlAdUWTtkX9Mg==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.46.2.tgz", + "integrity": "sha512-NApbTPj9LxGzNw4dYnZmj2BoXiAc8NmbbH6qBNzQgXklGklt/xldTvu+FACN6ltFsTzoNU6j2mWNlHQTKGC5+Q==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "@algolia/client-common": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.45.0.tgz", - "integrity": "sha512-46FIoUkQ9N7wq4/YkHS5/W9Yjm4Ab+q5kfbahdyMpkBPJ7IBlwuNEGnWUZIQ6JfUZuJVojRujPRHMihX4awUMg==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.46.2.tgz", + "integrity": "sha512-ekotpCwpSp033DIIrsTpYlGUCF6momkgupRV/FA3m62SreTSZUKjgK6VTNyG7TtYfq9YFm/pnh65bATP/ZWJEg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0" + "@algolia/client-common": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-fetch": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.45.0.tgz", - "integrity": "sha512-XFTSAtCwy4HdBhSReN2rhSyH/nZOM3q3qe5ERG2FLbYId62heIlJBGVyAPRbltRwNlotlydbvSJ+SQ0ruWC2cw==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.46.2.tgz", + "integrity": "sha512-gKE+ZFi/6y7saTr34wS0SqYFDcjHW4Wminv8PDZEi0/mE99+hSrbKgJWxo2ztb5eqGirQTgIh1AMVacGGWM1iw==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0" + "@algolia/client-common": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.45.0.tgz", - "integrity": "sha512-8mTg6lHx5i44raCU52APsu0EqMsdm4+7Hch/e4ZsYZw0hzwkuaMFh826ngnkYf9XOl58nHoou63aZ874m8AbpQ==", + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.46.2.tgz", + "integrity": "sha512-ciPihkletp7ttweJ8Zt+GukSVLp2ANJHU+9ttiSxsJZThXc4Y2yJ8HGVWesW5jN1zrsZsezN71KrMx/iZsOYpg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.45.0" + "@algolia/client-common": "5.46.2" }, "engines": { "node": ">= 14.0.0" @@ -357,7 +356,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -2147,7 +2145,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -2170,7 +2167,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -2280,7 +2276,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2702,7 +2697,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -2991,6 +2985,28 @@ "postcss": "^8.4" } }, + "node_modules/@csstools/postcss-position-area-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-position-area-property/-/postcss-position-area-property-1.0.0.tgz", + "integrity": "sha512-fUP6KR8qV2NuUZV3Cw8itx0Ep90aRjAZxAEzC3vrl6yjFv+pFsQbR18UuQctEKmA72K9O27CoYiKEgXxkqjg8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/@csstools/postcss-progressive-custom-properties": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.2.1.tgz", @@ -3016,6 +3032,32 @@ "postcss": "^8.4" } }, + "node_modules/@csstools/postcss-property-rule-prelude-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-property-rule-prelude-list/-/postcss-property-rule-prelude-list-1.0.0.tgz", + "integrity": "sha512-IxuQjUXq19fobgmSSvUDO7fVwijDJaZMvWQugxfEUxmjBeDCVaDuMpsZ31MsTm5xbnhA+ElDi0+rQ7sQQGisFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/@csstools/postcss-random-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz", @@ -3164,6 +3206,57 @@ "postcss": "^8.4" } }, + "node_modules/@csstools/postcss-syntax-descriptor-syntax-production": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-syntax-descriptor-syntax-production/-/postcss-syntax-descriptor-syntax-production-1.0.1.tgz", + "integrity": "sha512-GneqQWefjM//f4hJ/Kbox0C6f2T7+pi4/fqTqOFGTL3EjnvOReTqO1qUQ30CaUjkwjYq9qZ41hzarrAxCc4gow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-system-ui-font-family": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-system-ui-font-family/-/postcss-system-ui-font-family-1.0.0.tgz", + "integrity": "sha512-s3xdBvfWYfoPSBsikDXbuorcMG1nN1M6GdU0qBsGfcmNR0A/qhloQZpTxjA3Xsyrk1VJvwb2pOfiOT3at/DuIQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/@csstools/postcss-text-decoration-shorthand": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.3.tgz", @@ -3271,9 +3364,9 @@ } }, "node_modules/@docsearch/core": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.3.1.tgz", - "integrity": "sha512-ktVbkePE+2h9RwqCUMbWXOoebFyDOxHqImAqfs+lC8yOU+XwEW4jgvHGJK079deTeHtdhUNj0PXHSnhJINvHzQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.4.0.tgz", + "integrity": "sha512-kiwNo5KEndOnrf5Kq/e5+D9NBMCFgNsDoRpKQJ9o/xnSlheh6b8AXppMuuUVVdAUIhIfQFk/07VLjjk/fYyKmw==", "license": "MIT", "peerDependencies": { "@types/react": ">= 16.8.0 < 20.0.0", @@ -3293,21 +3386,21 @@ } }, "node_modules/@docsearch/css": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.3.2.tgz", - "integrity": "sha512-K3Yhay9MgkBjJJ0WEL5MxnACModX9xuNt3UlQQkDEDZJZ0+aeWKtOkxHNndMRkMBnHdYvQjxkm6mdlneOtU1IQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.4.0.tgz", + "integrity": "sha512-e9vPgtih6fkawakmYo0Y6V4BKBmDV7Ykudn7ADWXUs5b6pmtBRwDbpSG/WiaUG63G28OkJDEnsMvgIAnZgGwYw==", "license": "MIT" }, "node_modules/@docsearch/react": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.3.2.tgz", - "integrity": "sha512-74SFD6WluwvgsOPqifYOviEEVwDxslxfhakTlra+JviaNcs7KK/rjsPj89kVEoQc9FUxRkAofaJnHIR7pb4TSQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.4.0.tgz", + "integrity": "sha512-z12zeg1mV7WD4Ag4pKSuGukETJLaucVFwszDXL/qLaEgRqxEaVacO9SR1qqnCXvZztlvz2rt7cMqryi/7sKfjA==", "license": "MIT", "dependencies": { "@ai-sdk/react": "^2.0.30", "@algolia/autocomplete-core": "1.19.2", - "@docsearch/core": "4.3.1", - "@docsearch/css": "4.3.2", + "@docsearch/core": "4.4.0", + "@docsearch/css": "4.4.0", "ai": "^5.0.30", "algoliasearch": "^5.28.0", "marked": "^16.3.0", @@ -3408,7 +3501,6 @@ "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.9.2.tgz", "integrity": "sha512-HbjwKeC+pHUFBfLMNzuSjqFE/58+rLVKmOU3lxQrpsxLBOGosYco/Q0GduBb0/jEMRiyEqjNT/01rRdOMWq5pw==", "license": "MIT", - "peer": true, "dependencies": { "@docusaurus/babel": "3.9.2", "@docusaurus/bundler": "3.9.2", @@ -3590,7 +3682,6 @@ "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.9.2.tgz", "integrity": "sha512-C5wZsGuKTY8jEYsqdxhhFOe1ZDjH0uIYJ9T/jebHwkyxqnr4wW0jTkB72OMqNjsoQRcb0JN3PcSeTwFlVgzCZg==", "license": "MIT", - "peer": true, "dependencies": { "@docusaurus/core": "3.9.2", "@docusaurus/logger": "3.9.2", @@ -4287,7 +4378,6 @@ "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", "license": "MIT", - "peer": true, "dependencies": { "@types/mdx": "^2.0.0" }, @@ -4442,9 +4532,9 @@ } }, "node_modules/@standard-schema/spec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", - "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", "license": "MIT" }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { @@ -4606,7 +4696,6 @@ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -4938,9 +5027,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", + "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -4984,7 +5073,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -5341,7 +5429,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -5405,14 +5492,14 @@ } }, "node_modules/ai": { - "version": "5.0.106", - "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.106.tgz", - "integrity": "sha512-M5obwavxSJJ3tGlAFqI6eltYNJB0D20X6gIBCFx/KVorb/X1fxVVfiZZpZb+Gslu4340droSOjT0aKQFCarNVg==", + "version": "5.0.118", + "resolved": "https://registry.npmjs.org/ai/-/ai-5.0.118.tgz", + "integrity": "sha512-sKJHfhJkvAyq5NC3yJJ4R8Z3tn4pSHF760/jInKAtmLwPLWTHfGo293DSO4un8QUAgJOagHd09VSXOXv+STMNQ==", "license": "Apache-2.0", "dependencies": { - "@ai-sdk/gateway": "2.0.18", - "@ai-sdk/provider": "2.0.0", - "@ai-sdk/provider-utils": "3.0.18", + "@ai-sdk/gateway": "2.0.24", + "@ai-sdk/provider": "2.0.1", + "@ai-sdk/provider-utils": "3.0.20", "@opentelemetry/api": "1.9.0" }, "engines": { @@ -5427,7 +5514,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -5469,35 +5555,34 @@ } }, "node_modules/algoliasearch": { - "version": "5.45.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.45.0.tgz", - "integrity": "sha512-wrj4FGr14heLOYkBKV3Fbq5ZBGuIFeDJkTilYq/G+hH1CSlQBtYvG2X1j67flwv0fUeQJwnWxxRIunSemAZirA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@algolia/abtesting": "1.11.0", - "@algolia/client-abtesting": "5.45.0", - "@algolia/client-analytics": "5.45.0", - "@algolia/client-common": "5.45.0", - "@algolia/client-insights": "5.45.0", - "@algolia/client-personalization": "5.45.0", - "@algolia/client-query-suggestions": "5.45.0", - "@algolia/client-search": "5.45.0", - "@algolia/ingestion": "1.45.0", - "@algolia/monitoring": "1.45.0", - "@algolia/recommend": "5.45.0", - "@algolia/requester-browser-xhr": "5.45.0", - "@algolia/requester-fetch": "5.45.0", - "@algolia/requester-node-http": "5.45.0" + "version": "5.46.2", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.46.2.tgz", + "integrity": "sha512-qqAXW9QvKf2tTyhpDA4qXv1IfBwD2eduSW6tUEBFIfCeE9gn9HQ9I5+MaKoenRuHrzk5sQoNh1/iof8mY7uD6Q==", + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.12.2", + "@algolia/client-abtesting": "5.46.2", + "@algolia/client-analytics": "5.46.2", + "@algolia/client-common": "5.46.2", + "@algolia/client-insights": "5.46.2", + "@algolia/client-personalization": "5.46.2", + "@algolia/client-query-suggestions": "5.46.2", + "@algolia/client-search": "5.46.2", + "@algolia/ingestion": "1.46.2", + "@algolia/monitoring": "1.46.2", + "@algolia/recommend": "5.46.2", + "@algolia/requester-browser-xhr": "5.46.2", + "@algolia/requester-fetch": "5.46.2", + "@algolia/requester-node-http": "5.46.2" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/algoliasearch-helper": { - "version": "3.26.1", - "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.26.1.tgz", - "integrity": "sha512-CAlCxm4fYBXtvc5MamDzP6Svu8rW4z9me4DCBY1rQ2UDJ0u0flWmusQ8M3nOExZsLLRcUwUPoRAPMrhzOG3erw==", + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.27.0.tgz", + "integrity": "sha512-eNYchRerbsvk2doHOMfdS1/B6Tm70oGtu8mzQlrNzbCeQ8p1MjCW8t/BL6iZ5PD+cL5NNMgTMyMnmiXZ1sgmNw==", "license": "MIT", "dependencies": { "@algolia/events": "^4.0.1" @@ -5663,9 +5748,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.22", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", - "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", + "version": "10.4.23", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.23.tgz", + "integrity": "sha512-YYTXSFulfwytnjAPlw8QHncHJmlvFKtczb8InXaAx9Q0LbfDnfEYDE55omerIJKihhmU61Ft+cAOSzQVaBUmeA==", "funding": [ { "type": "opencollective", @@ -5682,10 +5767,9 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.27.0", - "caniuse-lite": "^1.0.30001754", + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001760", "fraction.js": "^5.3.4", - "normalize-range": "^0.1.2", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, @@ -5790,9 +5874,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.0.tgz", - "integrity": "sha512-Mh++g+2LPfzZToywfE1BUzvZbfOY52Nil0rn9H1CPC5DJ7fX+Vir7nToBeoiSbB1zTNeGYbELEvJESujgGrzXw==", + "version": "2.9.13", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.13.tgz", + "integrity": "sha512-WhtvB2NG2wjr04+h77sg3klAIwrgOqnjS49GGudnUPGFFgg7G17y7Qecqp+2Dr5kUDxNRBca0SK7cG8JwzkWDQ==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" @@ -5962,7 +6046,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -6125,9 +6208,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001759", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001759.tgz", - "integrity": "sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==", + "version": "1.0.30001763", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001763.tgz", + "integrity": "sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ==", "funding": [ { "type": "opencollective", @@ -6869,9 +6952,9 @@ } }, "node_modules/css-declaration-sorter": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.0.tgz", - "integrity": "sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.3.1.tgz", + "integrity": "sha512-gz6x+KkgNCjxq3Var03pRYLhyNfwhkKF1g/yoLgDNtFvVu0/fOLV9C8fFEZRjACp/XQLumjAYo7JVjzH3wLbxA==", "license": "ISC", "engines": { "node": "^14 || ^16 || >=18" @@ -6934,7 +7017,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -7092,9 +7174,9 @@ } }, "node_modules/cssdb": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.5.1.tgz", - "integrity": "sha512-nFf5vkr7tCF4PZOIqrTlP5Bp+3j+7ad3c0doFlbFIQk0vxcnTriDIF/+qYsZk9EbgX2p8bVJFoLmE3h5qe9jlg==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.6.0.tgz", + "integrity": "sha512-7ZrRi/Z3cRL1d5I8RuXEWAkRFP3J4GeQRiyVknI4KC70RAU8hT4LysUZDe0y+fYNOktCbxE8sOPUOhyR12UqGQ==", "funding": [ { "type": "opencollective", @@ -7774,9 +7856,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.263", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.263.tgz", - "integrity": "sha512-DrqJ11Knd+lo+dv+lltvfMDLU27g14LMdH2b0O3Pio4uk0x+z7OR+JrmyacTPN2M8w3BrZ7/RTwG3R9B7irPlg==", + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -7820,9 +7902,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", - "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "version": "5.18.4", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", + "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -7872,9 +7954,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "license": "MIT" }, "node_modules/es-object-atoms": { @@ -8359,9 +8441,9 @@ "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -8453,7 +8535,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -8653,9 +8734,9 @@ } }, "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -9494,15 +9575,15 @@ } }, "node_modules/hast-util-to-parse5": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", - "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "web-namespaces": "^2.0.0", "zwitch": "^2.0.0" @@ -9523,9 +9604,9 @@ } }, "node_modules/hast-util-to-parse5/node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", "license": "MIT", "funding": { "type": "github", @@ -13422,19 +13503,10 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/normalize-url": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.0.tgz", - "integrity": "sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz", + "integrity": "sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==", "license": "MIT", "engines": { "node": ">=14.16" @@ -13503,7 +13575,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -14019,7 +14090,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -14923,7 +14993,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -15163,9 +15232,9 @@ } }, "node_modules/postcss-preset-env": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.4.0.tgz", - "integrity": "sha512-2kqpOthQ6JhxqQq1FSAAZGe9COQv75Aw8WbsOvQVNJ2nSevc9Yx/IKZGuZ7XJ+iOTtVon7LfO7ELRzg8AZ+sdw==", + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.6.0.tgz", + "integrity": "sha512-+LzpUSLCGHUdlZ1YZP7lp7w1MjxInJRSG0uaLyk/V/BM17iU2B7xTO7I8x3uk0WQAcLLh/ffqKzOzfaBvG7Fdw==", "funding": [ { "type": "github", @@ -15205,21 +15274,25 @@ "@csstools/postcss-nested-calc": "^4.0.0", "@csstools/postcss-normalize-display-values": "^4.0.0", "@csstools/postcss-oklab-function": "^4.0.12", + "@csstools/postcss-position-area-property": "^1.0.0", "@csstools/postcss-progressive-custom-properties": "^4.2.1", + "@csstools/postcss-property-rule-prelude-list": "^1.0.0", "@csstools/postcss-random-function": "^2.0.1", "@csstools/postcss-relative-color-syntax": "^3.0.12", "@csstools/postcss-scope-pseudo-class": "^4.0.1", "@csstools/postcss-sign-functions": "^1.1.4", "@csstools/postcss-stepped-value-functions": "^4.0.9", + "@csstools/postcss-syntax-descriptor-syntax-production": "^1.0.1", + "@csstools/postcss-system-ui-font-family": "^1.0.0", "@csstools/postcss-text-decoration-shorthand": "^4.0.3", "@csstools/postcss-trigonometric-functions": "^4.0.9", "@csstools/postcss-unset-value": "^4.0.0", - "autoprefixer": "^10.4.21", - "browserslist": "^4.26.0", + "autoprefixer": "^10.4.23", + "browserslist": "^4.28.1", "css-blank-pseudo": "^7.0.1", "css-has-pseudo": "^7.0.3", "css-prefers-color-scheme": "^10.0.0", - "cssdb": "^8.4.2", + "cssdb": "^8.6.0", "postcss-attribute-case-insensitive": "^7.0.1", "postcss-clamp": "^4.1.0", "postcss-color-functional-notation": "^7.0.12", @@ -15721,7 +15794,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -15734,7 +15806,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -15791,7 +15862,6 @@ "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz", "integrity": "sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==", "license": "MIT", - "peer": true, "dependencies": { "@types/react": "*" }, @@ -15820,7 +15890,6 @@ "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", @@ -16620,9 +16689,9 @@ } }, "node_modules/send": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", - "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", "license": "MIT", "dependencies": { "debug": "2.6.9", @@ -16631,13 +16700,13 @@ "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "2.4.1", + "on-finished": "~2.4.1", "range-parser": "~1.2.1", - "statuses": "2.0.1" + "statuses": "~2.0.2" }, "engines": { "node": ">= 0.8.0" @@ -16658,22 +16727,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/send/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/send/node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -16683,15 +16736,6 @@ "node": ">= 0.6" } }, - "node_modules/send/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -16801,102 +16845,20 @@ } }, "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.19.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-static/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-static/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/serve-static/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serve-static/node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static/node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "send": "~0.19.1" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serve-static/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -17477,13 +17439,13 @@ } }, "node_modules/swr": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.7.tgz", - "integrity": "sha512-ZEquQ82QvalqTxhBVv/DlAg2mbmUjF4UgpPg9wwk4ufb9rQnZXh1iKyyKBqV6bQGu1Ie7L1QwSYO07qFIa1p+g==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.8.tgz", + "integrity": "sha512-gaCPRVoMq8WGDcWj9p4YWzCMPHzE0WNl6W8ADIx9c3JBEIdMkJGMzW+uzXvxHMltwcYACr9jP+32H8/hgwMR7w==", "license": "MIT", "dependencies": { "dequal": "^2.0.3", - "use-sync-external-store": "^1.4.0" + "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" @@ -17521,9 +17483,9 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", - "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "version": "5.3.16", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", + "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", @@ -17777,8 +17739,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/type-fest": { "version": "2.19.0", @@ -18060,9 +18021,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.0.tgz", - "integrity": "sha512-Dn+NlSF/7+0lVSEZ57SYQg6/E44arLzsVOGgrElBn/BlG1B8WKdbLppOocFrXwRNTkNlgdGNaBgH1o0lggDPiw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "funding": [ { "type": "opencollective", @@ -18204,7 +18165,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -18372,9 +18332,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", - "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.0.tgz", + "integrity": "sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==", "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", @@ -18404,11 +18364,10 @@ } }, "node_modules/webpack": { - "version": "5.103.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.103.0.tgz", - "integrity": "sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==", + "version": "5.104.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", + "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -18418,10 +18377,10 @@ "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", - "browserslist": "^4.26.3", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.3", - "es-module-lexer": "^1.2.1", + "enhanced-resolve": "^5.17.4", + "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -18432,7 +18391,7 @@ "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.11", + "terser-webpack-plugin": "^5.3.16", "watchpack": "^2.4.4", "webpack-sources": "^3.3.3" }, @@ -18638,9 +18597,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -19033,11 +18992,10 @@ } }, "node_modules/zod": { - "version": "4.1.13", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz", - "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.5.tgz", + "integrity": "sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 41b207b8d..b38160bff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hauler-docs", - "version": "1.3.x", + "version": "1.4.x", "private": true, "scripts": { "docusaurus": "docusaurus", diff --git a/sidebars.js b/sidebars.js index c90214e2f..07b4ae1c4 100644 --- a/sidebars.js +++ b/sidebars.js @@ -59,6 +59,7 @@ const sidebars = { ], }, 'hauler-usage/store/sync', + 'hauler-usage/store/remove', ], }, 'hauler-usage/completion', diff --git a/versioned_docs/version-1.2.x/known-limits.md b/versioned_docs/version-1.2.x/known-limits.md index d89afbd11..bc1658122 100644 --- a/versioned_docs/version-1.2.x/known-limits.md +++ b/versioned_docs/version-1.2.x/known-limits.md @@ -31,7 +31,7 @@ hauler store copy registry:/// - Upgraded the `apiVersion` to `v1` from `v1alpha1` - Users are able to use `v1` and `v1alpha1`, but `v1alpha1` is now deprecated and will be removed in a future release. We will update the community when we fully deprecate and remove the functionality of `v1alpha1` - Users will see logging notices when using the old `apiVersion` such as... - - `!!! DEPRECATION WARNING !!! apiVersion [v1alpha1] will be removed in a future release !!! DEPRECATION WARNING !!!` + - `!!! DEPRECATION WARNING !!! apiVersion [v1alpha1] will be removed in a future release...` --- - Updated the behavior of `hauler store load` to default to loading a `haul` with the name of `haul.tar.zst` and requires the flag of `--filename/-f` to load a `haul` with a different name - Users can load multiple `hauls` by specifying multiple flags of `--filename/-f` diff --git a/versioned_docs/version-1.3.x/known-limits.md b/versioned_docs/version-1.3.x/known-limits.md index 41179c92a..ed4f07a7d 100644 --- a/versioned_docs/version-1.3.x/known-limits.md +++ b/versioned_docs/version-1.3.x/known-limits.md @@ -32,7 +32,7 @@ hauler store copy registry:/// - Upgraded the `apiVersion` to `v1` from `v1alpha1` - Users are able to use `v1` and `v1alpha1`, but `v1alpha1` is now deprecated and will be removed in a future release. We will update the community when we fully deprecate and remove the functionality of `v1alpha1` - Users will see logging notices when using the old `apiVersion` such as... - - `!!! DEPRECATION WARNING !!! apiVersion [v1alpha1] will be removed in a future release !!! DEPRECATION WARNING !!!` + - `!!! DEPRECATION WARNING !!! apiVersion [v1alpha1] will be removed in a future release...` --- - Updated the behavior of `hauler store load` to default to loading a `haul` with the name of `haul.tar.zst` and requires the flag of `--filename/-f` to load a `haul` with a different name - Users can load multiple `hauls` by specifying multiple flags of `--filename/-f` diff --git a/versioned_docs/version-1.4.x/airgap-workflow.md b/versioned_docs/version-1.4.x/airgap-workflow.md new file mode 100644 index 000000000..cdeeb4e13 --- /dev/null +++ b/versioned_docs/version-1.4.x/airgap-workflow.md @@ -0,0 +1,27 @@ +--- +title: Airgap Workflow +description: Airgap Workflow Documentation for Hauler +sidebar_label: Airgap Workflow +--- + +## Workflow Diagram + +![hauler-workflow-diagram](/img/hauler-workflow-diagram.png) + +## What's an Airgap? + +An airgap is a highly secure environment that is physically isolated from external connectivity (usually the internet), ensuring complete isolation from other environments by preventing unauthorized access or data transfers. + +### Example Use Cases + +- **Government and Military:** These airgaps protect sensitive government and military information and critical defense infrastructure, ensuring that classified data remains secure and inaccessible to unauthorized entities. +- **Critical Infrastructure:** These airgaps secure power grids, water supply systems, and transportation networks from cyber threats, shielding them from potential disruptions and ensuring their continuous operation. +- **Financial Institutions:** These airgaps safeguard financial transactions and customer data from cyberattacks, maintaining the trust and integrity of financial systems. +- **Research Facilities:** These airgaps protect valuable research data, intellectual property, and proprietary information, preserving the integrity and confidentiality of research efforts. + +## Challenges of an Airgap + +- **Data Transfers:** Transferring data in and out of an airgapped system is complex due to the lack of network connectivity, often necessitating the use of physical media, trusted intermediaries, and meticulous approval processes to ensure data security. +- **Usability vs. Security Balance:** Balancing security with usability in airgapped environments can be intricate, as the limited convenience poses challenges for user interactions and system operations. +- **Maintenance Complexity:** Regular system updates, package and dependency updates, and overall maintenance can be challenging in airgapped systems, as the limited network connectivity complicates the process, requiring meticulous planning and execution. +- **Costly Implementation:** Implementing and maintaining airgapped systems can be costly, demanding specialized workflows, protocols, and security measures to uphold the system's integrity and security. diff --git a/versioned_docs/version-1.4.x/core-concepts.md b/versioned_docs/version-1.4.x/core-concepts.md new file mode 100644 index 000000000..9a71ddd3d --- /dev/null +++ b/versioned_docs/version-1.4.x/core-concepts.md @@ -0,0 +1,70 @@ +--- +title: Core Concepts +description: Core Concepts Documentation for Hauler +sidebar_label: Core Concepts +--- + +![hauler-diagram](/img/hauler-diagram.png) + +## Haul + +:::tip SUMMARY: + +`Hauls` are Compressed Archive (Tarball) of Hauler Collections and Content. + +::: + +At the heart of Hauler lies the concept of a `Haul`. A `Haul` is a compressed archive, often in the form of a tarball, containing Hauler collections and content. It serves as a container for grouping and transporting various data types, making it a fundamental element in the Hauler ecosystem. + +## Collections + +:::tip SUMMARY: + +`Collections` are Grouping of one or more Hauler Contents. + +::: + +`Collections` are the building blocks of Hauler. These are groupings of one or more Hauler `contents`. Think of `collections` as organized sets of data that collectively represent something desirable. + +### Community Collections + +While `collections` (and `contents`) are built into Hauler, our goal is to empower operators to define their own `collections`. This way, you can tailor Hauler to your unique requirements and take full control of your artifacts. + +### RGS Carbide Collections + +`Hauler` provides the ability to import `collections` for the Rancher products, making it seamless for RGS Supported Customers to airgap any of the Rancher products or projects. If you haven't heard of Rancher Government Carbide, check it out [here](https://ranchergovernment.com/carbide)! + +## Content + +:::tip SUMMARY: + +`Contents` are Artifacts such as Images, Charts, or Files. + +::: + +In Hauler's terminology, `content` refers to artifacts such as **container images, helm charts, or files.** These are the fundamental types of artifacts for `Hauler`. To understand it a little bit better, let's break it down: + +- `Content`: The fundamental type of artifacts that Hauler recognizes (images, charts, and files). +- `Artifact`: Anything that can be represented as an OCI (Open Container Initiative) Compliant Artifact. + - OCI Compliant Artifacts provide a standardized way to store arbitrary files, making it easier to manage content efficiently. + +### Declarative Content + +While manually adding content to `Hauler` is an easy way to get started, there is a more sustainable approach... `Hauler` provides a declarative and programmatic approach by allowing operators to define `content` within a configuration file, known as a manifest. This approach ensures a more reproducable workflow for managing the lifecycle of your `hauls`. Check it out [here](guides-references/hauler-manifests.md)! + + +## Signature Verification + +:::tip SUMMARY: + +As part of a secure supply chain, you can set Hauler to verify artifact signatures on both sides of the airgap, when adding to store and seeding registry. + +::: + +### Public Key + +The cosign public key can be set via the command line flag `--key` (`-k`) or as an annotation in the Hauler Manifest. + +### Keyless Verification + +New to Hauler v1.2.3+, keyless verification can also be performed. The flags `--certificate-identity-regexp`, `--certificate-oidc-issuer`, and `--certificate-github-workflow-repository` can be set or annotations added in the Hauler Manifest. Check out some examples [here](https://docs.hauler.dev/docs/guides-references/hauler-manifests)! \ No newline at end of file diff --git a/versioned_docs/version-1.4.x/feedback.md b/versioned_docs/version-1.4.x/feedback.md new file mode 100644 index 000000000..a1959927e --- /dev/null +++ b/versioned_docs/version-1.4.x/feedback.md @@ -0,0 +1,9 @@ +--- +title: Feedback +description: Feedback for Hauler +sidebar_label: Feedback +--- + +Feedback is **critical** to us to continue to improve `Hauler` and accelerate your mission. + +For any issues, concerns, or questions, please open an issue: https://github.com/hauler-dev/hauler/issues diff --git a/versioned_docs/version-1.4.x/guides-references/bootstraping-utilities.md b/versioned_docs/version-1.4.x/guides-references/bootstraping-utilities.md new file mode 100644 index 000000000..e4d9fde32 --- /dev/null +++ b/versioned_docs/version-1.4.x/guides-references/bootstraping-utilities.md @@ -0,0 +1,7 @@ +--- +title: Bootstrapping Utilities +description: Bootstrapping Utilities Documentation +sidebar_label: Bootstrapping Utilities +--- + +Bootstrapping Utilities documentation are pending a future release! diff --git a/versioned_docs/version-1.4.x/guides-references/carbide-customers.md b/versioned_docs/version-1.4.x/guides-references/carbide-customers.md new file mode 100644 index 000000000..e8a8f5800 --- /dev/null +++ b/versioned_docs/version-1.4.x/guides-references/carbide-customers.md @@ -0,0 +1,16 @@ +--- +title: RGS Carbide Customers +description: RGS Carbide Customers Documentation +sidebar_label: RGS Carbide Customers +--- + +For all supported customers of Rancher Government, under the umbrella of Rancher Government Carbide, there is included addon functionality within `Hauler`. + +`Hauler` has the the ability to reference `Collections` from various registeries, including the `Carbide Secured Registry (CSR)`. + +To better understand this workflow, `Hauler` is built to allow operators to fetch, store, package, and distribute various artifacts, but most operators may be unsure of what to fetch, store, package, and distribute, and that is where our supported customers are able to leverage predefined manifests, known as `Collections`, via the `--products` flag, through the `Carbide Secured Registry (CSR)`, for all of Rancher Government products and solutions. + +Please see the **[Carbide Documentation](http://docs.ranchercarbide.dev)** for easily fetching, packing, and distributing Carbide with the `hauler store sync --products =`. Please know that we are actively working to improve this workflow and your feedback is appreciated! + +- Carbide Docs for [Connected Environments](https://rancherfederal.github.io/carbide-docs/docs/registry-docs/copying-images) +- Carbide Docs for [Disconnected Environments](https://rancherfederal.github.io/carbide-docs/docs/registry-docs/downloading-images) diff --git a/versioned_docs/version-1.4.x/guides-references/cluster-images.md b/versioned_docs/version-1.4.x/guides-references/cluster-images.md new file mode 100644 index 000000000..fa9445bb5 --- /dev/null +++ b/versioned_docs/version-1.4.x/guides-references/cluster-images.md @@ -0,0 +1,70 @@ +--- +title: Fetching Cluster Images +description: Fetching Images on a Cluster Documentation +sidebar_label: Fetch Cluster Images +--- + +It may be difficult to understand exactly what `content` is actively within your environment. Below is a simple way to generate a list of all images running in your environment, store it as an environment variable, and show the list by echoing the environment variable. + +## Fetch Cluster Images + +```bash +# fetch all images in the cluster, remove duplicates, alphabetize, and put on a newline +export IMAGE_LIST=$(kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" | sed 's/ /\n/g' | sort | uniq) +``` + +## Example Output + +```bash +# view the list of images from the cluster +echo $IMAGE_LIST +index.docker.io/rancher/hardened-etcd:v3.5.1-k3s1-build20220112 +index.docker.io/rancher/hardened-kubernetes:v1.23.5-rke2r1-build20220316 +index.docker.io/rancher/rke2-cloud-provider:v0.0.3-build20211118 +rancher/hardened-calico:v3.21.4-build20220228 +rancher/hardened-cluster-autoscaler:v1.8.5-build20211119 +rancher/hardened-coredns:v1.9.1-build20220318 +rancher/hardened-flannel:v0.17.0-build20220317 +rancher/hardened-k8s-metrics-server:v0.5.0-build20211119 +rancher/klipper-helm:v0.7.0-build20220315 +rancher/nginx-ingress-controller:nginx-1.0.2-hardened4 +``` + +## Generate Hauler Manifest + +```bash +# add the required formatting for the image list +export IMAGE_LIST_MODIFIED=$(echo "${IMAGE_LIST}" | sed 's/^/ - name: /') + +# create the hauler manifest with the updated image list +cat << EOF >> hauler-manifest.yaml +apiVersion: content.hauler.cattle.io/v1 +kind: Images +metadata: + name: hauler-cluster-images +spec: + images: +$IMAGE_LIST_MODIFIED +EOF +``` + +## Resulting Hauler Manifest + +```yaml title="hauler-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Images +metadata: + name: hauler-cluster-images +spec: + images: + - name: index.docker.io/rancher/hardened-etcd:v3.5.1-k3s1-build20220112 + - name: index.docker.io/rancher/hardened-kubernetes:v1.23.5-rke2r1-build20220316 + - name: index.docker.io/rancher/rke2-cloud-provider:v0.0.3-build20211118 + - name: rancher/hardened-calico:v3.21.4-build20220228 + - name: rancher/hardened-cluster-autoscaler:v1.8.5-build20211119 + - name: rancher/hardened-coredns:v1.9.1-build20220318 + - name: rancher/hardened-flannel:v0.17.0-build20220317 + - name: rancher/hardened-k8s-metrics-server:v0.5.0-build20211119 + - name: rancher/klipper-helm:v0.7.0-build20220315 + - name: rancher/nginx-ingress-controller:nginx-1.0.2-hardened4 +``` diff --git a/versioned_docs/version-1.4.x/guides-references/container-runtimes.md b/versioned_docs/version-1.4.x/guides-references/container-runtimes.md new file mode 100644 index 000000000..f30505049 --- /dev/null +++ b/versioned_docs/version-1.4.x/guides-references/container-runtimes.md @@ -0,0 +1,7 @@ +--- +title: Container Runtimes Integrations +description: Container Runtimes Integrations Documentation +sidebar_label: Container Runtimes Integrations +--- + +Container Runtimes Integrations documentation are pending a future release! diff --git a/versioned_docs/version-1.4.x/guides-references/hauler-collections.md b/versioned_docs/version-1.4.x/guides-references/hauler-collections.md new file mode 100644 index 000000000..d4cc5af84 --- /dev/null +++ b/versioned_docs/version-1.4.x/guides-references/hauler-collections.md @@ -0,0 +1,7 @@ +--- +title: Hauler Collections +description: Hauler Collections Documentation +sidebar_label: Hauler Collections +--- + +Hauler Collections and Community Collections documentation are pending a future release! diff --git a/versioned_docs/version-1.4.x/guides-references/hauler-content.md b/versioned_docs/version-1.4.x/guides-references/hauler-content.md new file mode 100644 index 000000000..352293724 --- /dev/null +++ b/versioned_docs/version-1.4.x/guides-references/hauler-content.md @@ -0,0 +1,7 @@ +--- +title: Hauler Content +description: Hauler Content Documentation +sidebar_label: Hauler Content +--- + +Hauler Content documentation are pending a future release! diff --git a/versioned_docs/version-1.4.x/guides-references/hauler-manifests.md b/versioned_docs/version-1.4.x/guides-references/hauler-manifests.md new file mode 100644 index 000000000..10c4f59c6 --- /dev/null +++ b/versioned_docs/version-1.4.x/guides-references/hauler-manifests.md @@ -0,0 +1,103 @@ +--- +title: Hauler Manifests +description: Hauler Manifests Documentation +sidebar_label: Hauler Manifests +--- + +## Example Manifest for Images + +Please review the Hauler Content Pages for [Images](../hauler-usage/store/add/image.md) for more detailed information. + +```yaml title="hauler-image-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Images +metadata: + name: hauler-content-images-example + annotations: + # global flags for all images in the manifest + # image flags override global flags + # example: platform set globally, but not observed if set per image + # example: registry set globally, but not observed if set per image + hauler.dev/platform: + hauler.dev/registry: + # example: keyless signature validation set globally, but not observed if set per image + hauler.dev/certificate-identity-regexp: + hauler.dev/certificate-oidc-issuer: + # repository claim from GH identity token for GitHub workflows + hauler.dev/certificate-github-workflow-repository: + # example: set transparency log verificaton to true (not compatible with airgap) + hauler.dev/use-tlog-verify: true +spec: + images: + # fetch image + - name: neuvector/scanner + # fetch image with full image reference + - name: docker.io/neuvector/updater:latest + # fetch image with full image reference with digest + - name: docker.io/neuvector/updater@sha256:0076b356368c9988eec5f3cead771d29a377074b982f22800f4d9c8c3b215a56 + # fetch image with full image reference, specific version, specific platform + - name: docker.io/longhornio/longhorn-ui:v1.6.0 + platform: linux/amd64 + # fetch image with full image reference, specific version, specific platform, and signature verification + - name: docker.io/longhornio/longhorn-manager:v1.6.0 + key: cosign-public-key.pub + platform: linux/amd64 + # fetch image with full image reference, specific version, specific platform, signature verification, and rewrite + - name: docker.io/longhornio/longhorn-manager:v1.6.0 + key: cosign-public-key.pub + platform: linux/amd64 + rewrite: rancher.io/longhornio/longhorn-manager:v1.6.0 +``` + +## Example Manifest for Charts + +Please review the Hauler Content Pages for [Charts](../hauler-usage/store/add/chart.md) for more detailed information. + +```yaml title="hauler-chart-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Charts +metadata: + name: hauler-content-charts-example + annotations: + # example: key set globally, but not observed if set per image + hauler.dev/key: + hauler.dev/registry: +spec: + charts: + # fetch helm chart + - name: rancher + repoURL: https://releases.rancher.com/server-charts/stable + # fetch helm chart with specific version + - name: rancher-cluster-templates + repoURL: oci://ghcr.io/rancherfederal/charts + version: 0.6.1 + # fetch helm chart with specific version and dependent helm charts and images + - name: rancher-cluster-templates + repoURL: oci://ghcr.io/rancherfederal/charts + version: 0.6.1 + add-images: true + add-dependencies: true +``` + +## Example Manifest for Files + +Please review the Hauler Content Pages for [Files](../hauler-usage/store/add/file.md) for more detailed information. + +```yaml title="hauler-file-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Files +metadata: + name: hauler-content-files-example +spec: + files: + # fetch remote file + - path: https://get.rke2.io + # fetch remote file and assign new name + - path: https://get.rke2.io + name: install.sh + # fetch local file + - path: path/to/local/file.txt + # fetch local file and assign new name + - path: path/to/local/file.txt + name: local-file.txt +``` diff --git a/versioned_docs/version-1.4.x/guides-references/overview.md b/versioned_docs/version-1.4.x/guides-references/overview.md new file mode 100644 index 000000000..6ecd163e9 --- /dev/null +++ b/versioned_docs/version-1.4.x/guides-references/overview.md @@ -0,0 +1,9 @@ +--- +title: Overview +sidebar_label: Overview +description: Reference Guides Overview Documentation for Hauler +--- + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-1.4.x/hauler-usage/completion.md b/versioned_docs/version-1.4.x/hauler-usage/completion.md new file mode 100644 index 000000000..7f5c2176b --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/completion.md @@ -0,0 +1,154 @@ +--- +title: Hauler Completion +description: Hauler Completion Usage Documentation +sidebar_label: Hauler Completion +--- + +### Overview + +`hauler completion` generate auto-completion scripts for various shells. + +### Command Overview + +```yaml +Usage: + hauler completion [command] + +Available Commands: + bash Generates auto-completion scripts for bash + fish Generates auto-completion scripts for fish + powershell Generates auto-completion scripts for powershell + zsh Generates auto-completion scripts for zsh + +Flags: + -h, --help help for completion + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + +Use "hauler completion [command] --help" for more information about a command. +``` + +#### `hauler completion bash`: + +* Generate the autocompletion script for the bash shell. + * **Note:** This script depends on the 'bash-completion' package. + +```yaml +Usage: + hauler completion bash [flags] + +Examples: +To load completion run + + . <(hauler completion bash) + + To configure your bash shell to load completions for each session add to your bashrc + + # ~/.bashrc or ~/.profile + command -v hauler >/dev/null && . <(hauler completion bash) + +Flags: + -h, --help help for bash + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") +``` + +#### `hauler completion fish`: + +* Generate the autocompletion script for the fish shell. + +```yaml +Usage: + hauler completion fish [flags] + +Examples: +To configure your fish shell to load completions for each session write this script to your completions dir: + + hauler completion fish > ~/.config/fish/completions/hauler.fish + + See http://fishshell.com/docs/current/index.html#completion-own for more details + +Flags: + -h, --help help for fish + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") +``` + +#### `hauler completion zsh`: + +* Generate the autocompletion script for the zsh shell. + * **Note:** If shell completion is not already enabled in your environment you will need to enable it. + +```yaml +Usage: + hauler completion zsh [flags] + +Examples: +To load completion run + + . <(hauler completion zsh) + + To configure your zsh shell to load completions for each session add to your zshrc + + # ~/.zshrc or ~/.profile + command -v hauler >/dev/null && . <(hauler completion zsh) + + or write a cached file in one of the completion directories in your ${fpath}: + + echo "${fpath// /\n}" | grep -i completion + hauler completion zsh > _hauler + + mv _hauler ~/.oh-my-zsh/completions # oh-my-zsh + mv _hauler ~/.zprezto/modules/completion/external/src/ # zprezto + +Flags: + -h, --help help for zsh + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") +``` + +#### `hauler completion powershell`: + +* Generate the autocompletion script for powershell. + +```yaml +Usage: + hauler completion powershell [flags] + +Examples: +To load completion run + + . <(hauler completion powershell) + + To configure your powershell shell to load completions for each session add to your powershell profile + + Windows: + + cd "$env:USERPROFILE\Documents\WindowsPowerShell\Modules" + hauler completion powershell >> hauler-completion.ps1 + + Linux: + + cd "${XDG_CONFIG_HOME:-"$HOME/.config/"}/powershell/modules" + hauler completion powershell >> hauler-completions.ps1 + +Flags: + -h, --help help for powershell + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") +``` diff --git a/versioned_docs/version-1.4.x/hauler-usage/help.md b/versioned_docs/version-1.4.x/hauler-usage/help.md new file mode 100644 index 000000000..311dfb836 --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/help.md @@ -0,0 +1,36 @@ +--- +title: Hauler Help +description: Hauler Usage Documentation +sidebar_label: Hauler Help +--- + +`hauler` is the airgap swiss army knife. + +### Command Overview + +```yaml +Usage: + hauler [flags] + hauler [command] + +Examples: + View the Docs: https://docs.hauler.dev + Environment Variables: HAULER_DIR | HAULER_TEMP_DIR | HAULER_STORE_DIR | HAULER_IGNORE_ERRORS + Warnings: Hauler commands and flags marked with (EXPERIMENTAL) are not yet stable and may have bugs or change in the future. + +Available Commands: + completion Generate auto-completion scripts for various shells + help Help about any command + login Log in to a registry + logout Log out of a registry + store Interact with the content store + version Print the current version + +Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + -h, --help help for hauler + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + +Use "hauler [command] --help" for more information about a command. +``` diff --git a/versioned_docs/version-1.4.x/hauler-usage/login.md b/versioned_docs/version-1.4.x/hauler-usage/login.md new file mode 100644 index 000000000..c9d854a65 --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/login.md @@ -0,0 +1,38 @@ +--- +title: Hauler Login +description: Hauler Login Usage Documentation +sidebar_label: Hauler Login +--- + +### Overview + +`hauler login` logs into an OCI Compliant registry that is stored at `~/.docker/config.json`. + +**An example with available flags...** + +```bash +hauler login --username --password +``` + +### Command Overview + +```yaml +Usage: + hauler login [OPTIONS] [SERVER] [flags] + +Examples: + # Log in to reg.example.com + hauler login reg.example.com -u AzureDiamond -p hunter2 + +Flags: + -h, --help help for login + -p, --password string Password + --password-stdin Take the password from stdin + -u, --username string Username + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") +zackbradys@Zacks-MacBook-Pro hauler % +``` diff --git a/versioned_docs/version-1.4.x/hauler-usage/logout.md b/versioned_docs/version-1.4.x/hauler-usage/logout.md new file mode 100644 index 000000000..4fce254b9 --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/logout.md @@ -0,0 +1,34 @@ +--- +title: Hauler Logout +description: Hauler Logout Usage Documentation +sidebar_label: Hauler Logout +--- + +### Overview + +`hauler logout` logs out of an OCI Compliant registry that is stored at `~/.docker/config.json`. + +**An example with available flags...** + +```bash +hauler logout +``` + +### Command Overview + +```yaml +Usage: + hauler logout [SERVER] [flags] + +Examples: + # Log out of reg.example.com + hauler logout reg.example.com + +Flags: + -h, --help help for logout + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") +``` diff --git a/versioned_docs/version-1.4.x/hauler-usage/overview.md b/versioned_docs/version-1.4.x/hauler-usage/overview.md new file mode 100644 index 000000000..577ce6a30 --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/overview.md @@ -0,0 +1,9 @@ +--- +title: Overview +sidebar_label: Overview +description: Usage Documentation for Hauler +--- + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-1.4.x/hauler-usage/store/add/chart.md b/versioned_docs/version-1.4.x/hauler-usage/store/add/chart.md new file mode 100644 index 000000000..c3d8a60ea --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/store/add/chart.md @@ -0,0 +1,194 @@ +--- +title: Hauler Store Add Chart +description: Hauler Store Add Chart Usage Documentation +sidebar_label: Chart +--- + +### Overview + +`hauler store add chart` adds a helm chart to the store. + +**An example with available flags...** + +```bash +hauler store add chart --repo --version +``` + +### Command Overview + +```yaml +Usage: + hauler store add chart [flags] + +Examples: +# fetch local helm chart +hauler store add chart path/to/chart/directory --repo . + +# fetch local compressed helm chart +hauler store add chart path/to/chart.tar.gz --repo . + +# fetch remote oci helm chart +hauler store add chart hauler-helm --repo oci://ghcr.io/hauler-dev + +# fetch remote oci helm chart with version +hauler store add chart hauler-helm --repo oci://ghcr.io/hauler-dev --version 1.2.0 + +# fetch remote helm chart +hauler store add chart rancher --repo https://releases.rancher.com/server-charts/stable + +# fetch remote helm chart with specific version +hauler store add chart rancher --repo https://releases.rancher.com/server-charts/latest --version 2.10.1 + +# fetch remote helm chart and rewrite path +hauler store add chart hauler-helm --repo oci://ghcr.io/hauler-dev --rewrite custom-path/hauler-chart:latest + +Flags: + --add-dependencies (EXPERIMENTAL & Optional) Fetch dependent helm charts + --add-images (EXPERIMENTAL & Optional) Fetch images referenced in helm charts + --ca-file string (Optional) Location of CA Bundle to enable certification verification + --cert-file string (Optional) Location of the TLS Certificate to use for client authentication + -h, --help help for chart + --insecure-skip-tls-verify (Optional) Skip TLS certificate verification + --key-file string (Optional) Location of the TLS Key to use for client authentication + --kube-version string (EXPERIMENTAL & Optional) Override the kubernetes version for helm template rendering (default "v1.34.1") + --password string (Optional) Password to use for authentication + -p, --platform string (Optional) Specify the platform of the image, e.g. linux/amd64 + -g, --registry string (Optional) Specify the registry of the image for images that do not alredy define one + --repo string Location of the chart (https:// | http:// | oci://) + --rewrite string (EXPERIMENTAL & Optional) Rewrite artifact path to specified string + --username string (Optional) Username to use for authentication + --values string (EXPERIMENTAL & Optional) Specify helm chart values when fetching images + --verify (Optional) Verify the chart before fetching it + --version string (Optional) Specify the version of the chart (v1.0.0 | 2.0.0 | ^2.0.0) + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + -r, --retries int Set the number of retries for operations (default 3) + -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS +``` + +### Example Commands for Charts + +```bash +# fetch local helm chart +hauler store add chart path/to/chart/directory --repo . + +# fetch local compressed helm chart +hauler store add chart path/to/chart.tar.gz --repo . + +# fetch remote oci helm chart +hauler store add chart hauler-helm --repo oci://ghcr.io/hauler-dev + +# fetch remote oci helm chart with version +hauler store add chart hauler-helm --repo oci://ghcr.io/hauler-dev --version 1.1.1 + +# fetch remote helm chart +hauler store add chart rancher --repo https://releases.rancher.com/server-charts/stable + +# fetch remote helm chart with specific version +hauler store add chart rancher --repo https://releases.rancher.com/server-charts/latest --version 2.10.1 + +# fetch remote helm chart and rewrite path +hauler store add chart hauler-helm --repo oci://ghcr.io/hauler-dev --rewrite custom-path/hauler-chart:latest + +# fetch remote helm chart and associated images +hauler store add chart gitea --repo https://dl.gitea.com/charts --add-images + +# fetch remote helm chart and dependent chart(s) +hauler store add chart gitea --repo https://dl.gitea.com/charts --add-dependencies +``` + +### Hauler Manifest for Charts + +```yaml title="hauler-chart-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Charts +metadata: + name: hauler-content-charts-example +spec: + charts: + # fetch helm chart + - name: + # https:// or http:// or oci:// + repoURL: + # semver complaint + version: +``` + +### Example Manifest for Charts + +```yaml title="hauler-chart-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Charts +metadata: + name: hauler-content-charts-example +spec: + charts: + # fetch helm chart + - name: rancher + repoURL: https://releases.rancher.com/server-charts/stable + # fetch helm chart with specific version + - name: rancher-cluster-templates + repoURL: oci://ghcr.io/rancherfederal/charts + version: 0.6.1 +``` + +### Example Manifest with Rewrite + +```yaml title="hauler-chart-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Charts +metadata: + name: hauler-content-charts-example +spec: + charts: + # fetch helm chart + - name: + # https:// or http:// or oci:// + repoURL: + # semver complaint + version: + # rewrite in store + rewrite: +``` + +### Example Manifest with Add Images + +```yaml title="hauler-chart-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Charts +metadata: + name: hauler-content-charts-example +spec: + charts: + # fetch helm chart + - name: + # https:// or http:// or oci:// + repoURL: + # semver complaint + version: + # add associated images + add-images: true +``` + +### Example Manifest with Dependent Charts + +```yaml title="hauler-chart-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Charts +metadata: + name: hauler-content-charts-example +spec: + charts: + # fetch helm chart + - name: + # https:// or http:// or oci:// + repoURL: + # semver complaint + version: + # add dependent charts + add-dependencies: true +``` \ No newline at end of file diff --git a/versioned_docs/version-1.4.x/hauler-usage/store/add/file.md b/versioned_docs/version-1.4.x/hauler-usage/store/add/file.md new file mode 100644 index 000000000..9bafaab43 --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/store/add/file.md @@ -0,0 +1,91 @@ +--- +title: Hauler Store Add File +description: Hauler Store Add File Usage Documentation +sidebar_label: File +--- + +### Overview + +`hauler store add file` adds a file to the store. + +**An example with available flags...** + +```bash +hauler store add file --name +``` + +### Command Overview + +```yaml +Usage: + hauler store add file [flags] + +Examples: +# fetch local file +hauler store add file file.txt + +# fetch remote file +hauler store add file https://get.rke2.io/install.sh + +# fetch remote file and assign new name +hauler store add file https://get.hauler.dev --name hauler-install.sh + +Flags: + -h, --help help for file + -n, --name string (Optional) Rewrite the name of the file + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + -r, --retries int Set the number of retries for operations (default 3) + -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS +``` + +### Example Commands for Files + +```bash +# fetch local file +hauler store add file file.txt + +# fetch remote file +hauler store add file https://get.rke2.io/install.sh + +# fetch remote file and assign new name +hauler store add file https://get.hauler.dev --name hauler-install.sh +``` + +### Hauler Manifest for Files + +```yaml title="hauler-file-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Files +metadata: + name: hauler-content-files-example +spec: + files: + - path: + name: +``` + +### Example Manifest for Files + +```yaml title="hauler-file-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Files +metadata: + name: hauler-content-files-example +spec: + files: + # fetch remote file + - path: https://get.rke2.io + # fetch remote file and assign new name + - path: https://get.rke2.io + name: install.sh + # fetch local file + - path: path/to/local/file.txt + # fetch local file and assign new name + - path: path/to/local/file.txt + name: local-file.txt +``` diff --git a/versioned_docs/version-1.4.x/hauler-usage/store/add/image.md b/versioned_docs/version-1.4.x/hauler-usage/store/add/image.md index 68e97765f..fb55544af 100644 --- a/versioned_docs/version-1.4.x/hauler-usage/store/add/image.md +++ b/versioned_docs/version-1.4.x/hauler-usage/store/add/image.md @@ -41,16 +41,16 @@ hauler store add image rgcrprod.azurecr.us/rancher/rke2-runtime:v1.31.5-rke2r1 - hauler store add image busybox --rewrite custom-path/busybox:latest Flags: - -h, --help help for image - -k, --key string (Optional) Location of public key to use for signature verification - -p, --platform string (Optional) Specifiy the platform of the image... i.e. linux/amd64 (defaults to all) - --use-tlog-verify bool (Optional) Set transparency log verification (defaults false) - --rewrite (Optional) Rewrite the chart reference in the store (experimental) - -Flags for Keyless Verification: - --certificate-identity-regexp string (Optional) OIDC identity tied to certificate - --certificate-oidc-issuer string (Optional) OIDC issuer - --certificate-github-workflow-repository string (Optional) Repository claim from GH identity token for GitHub workflows + --certificate-github-workflow-repository string (Optional) Cosign certificate-github-workflow-repository option + --certificate-identity string (Optional) Cosign certificate-identity (either --certificate-identity or --certificate-identity-regexp required for keyless verification) + --certificate-identity-regexp string (Optional) Cosign certificate-identity-regexp (either --certificate-identity or --certificate-identity-regexp required for keyless verification) + --certificate-oidc-issuer string (Optional) Cosign option to validate oidc issuer + --certificate-oidc-issuer-regexp string (Optional) Cosign option to validate oidc issuer with regex + -h, --help help for image + -k, --key string (Optional) Location of public key to use for signature verification + -p, --platform string (Optional) Specify the platform of the image... i.e. linux/amd64 (defaults to all) + --rewrite string (EXPERIMENTAL & Optional) Rewrite artifact path to specified string + --use-tlog-verify (Optional) Allow transparency log verification (defaults to false) Global Flags: -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) @@ -58,6 +58,7 @@ Global Flags: -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") -r, --retries int Set the number of retries for operations (default 3) -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS ``` ### Hauler Command Line for Images diff --git a/versioned_docs/version-1.4.x/hauler-usage/store/copy.md b/versioned_docs/version-1.4.x/hauler-usage/store/copy.md new file mode 100644 index 000000000..1b710ce32 --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/store/copy.md @@ -0,0 +1,41 @@ +--- +title: Hauler Store Copy +description: Hauler Store Copy Usage Documentation +sidebar_label: Copy +--- + +### Overview + +`hauler store copy` copies all store content to another location. + +**An example with available flags...** + +```bash +hauler store copy registry:// + +hauler store copy dir:// + +# copies only image signatures and attestations +hauler store copy registry:// --only sig, att +``` + +### Command Overview + +```yaml +Usage: + hauler store copy [flags] + +Flags: + -h, --help help for copy + --insecure (Optional) Allow insecure connections + -o, --only string (Optional) Custom string array to only copy specific 'image' items + --plain-http (Optional) Allow plain HTTP connections + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + -r, --retries int Set the number of retries for operations (default 3) + -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS +``` diff --git a/versioned_docs/version-1.4.x/hauler-usage/store/extract.md b/versioned_docs/version-1.4.x/hauler-usage/store/extract.md new file mode 100644 index 000000000..4d8ad2b88 --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/store/extract.md @@ -0,0 +1,37 @@ +--- +title: Hauler Store Extract +description: Hauler Store Extract Usage Documentation +sidebar_label: Extract +--- + +### Overview + +`hauler store extract` extracts artifacts from the store to disk. + +**An example with available flags...** + +```bash +hauler store extract +``` + +### Command Overview + +```yaml +Usage: + hauler store extract [flags] + +Aliases: + extract, x + +Flags: + -h, --help help for extract + -o, --output string (Optional) Set the directory to output (defaults to current directory) + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + -r, --retries int Set the number of retries for operations (default 3) + -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS +``` diff --git a/versioned_docs/version-1.4.x/hauler-usage/store/load.md b/versioned_docs/version-1.4.x/hauler-usage/store/load.md new file mode 100644 index 000000000..ca1cf807e --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/store/load.md @@ -0,0 +1,38 @@ +--- +title: Hauler Store Load +description: Hauler Store Load Usage Documentation +sidebar_label: Load +--- + +### Overview + +`hauler store load` loads a content store from a store archive. + +As of v1.3, Hauler now supports loading content from a Docker-saved tarball. + +> Note: Podman-saved tarballs are not currently supported. + +**An example with available flags...** + +```bash +hauler store load --filename +``` + +### Command Overview + +```yaml +Usage: + hauler store load [flags] + +Flags: + -f, --filename strings (Optional) Specify the name of inputted haul(s) (default [haul.tar.zst]) + -h, --help help for load + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + -r, --retries int Set the number of retries for operations (default 3) + -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS +``` diff --git a/versioned_docs/version-1.4.x/hauler-usage/store/overview.md b/versioned_docs/version-1.4.x/hauler-usage/store/overview.md new file mode 100644 index 000000000..1bc74841d --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/store/overview.md @@ -0,0 +1,9 @@ +--- +title: Overview +sidebar_label: Overview +description: Usage Documentation for Hauler Store +--- + +import DocCardList from '@theme/DocCardList'; + + diff --git a/versioned_docs/version-1.4.x/hauler-usage/store/remove.md b/versioned_docs/version-1.4.x/hauler-usage/store/remove.md new file mode 100644 index 000000000..05dcb1222 --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/store/remove.md @@ -0,0 +1,58 @@ +--- +title: Hauler Store Remove +description: Hauler Store Remove Usage Documentation +sidebar_label: Remove +--- + +### Overview + +`hauler store remove` removes matching item(s) from the store using simple string matching. + +> Note: `remove` is an experimental feature as of Hauler v1.4.0. + +**An example with available flags...** + +```bash +hauler store remove +``` + +### Command Overview + +```yaml +Usage: + hauler store remove [flags] + +Examples: +# remove an image using full store reference +hauler store info +hauler store remove index.docker.io/library/busybox:stable + +# remove a chart using full store reference +hauler store info +hauler store remove hauler/rancher:2.8.4 + +# remove a file using full store reference +hauler store info +hauler store remove hauler/rke2-install.sh + +# remove any artifact with the latest tag +hauler store remove :latest + +# remove any artifact with 'busybox' in the reference +hauler store remove busybox + +# force remove without verification +hauler store remove busybox:latest --force + +Flags: + -f, --force (Optional) Remove artifact(s) without confirmation + -h, --help help for remove + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + -r, --retries int Set the number of retries for operations (default 3) + -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS +``` \ No newline at end of file diff --git a/versioned_docs/version-1.4.x/hauler-usage/store/save.md b/versioned_docs/version-1.4.x/hauler-usage/store/save.md new file mode 100644 index 000000000..6bede6ec6 --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/store/save.md @@ -0,0 +1,35 @@ +--- +title: Hauler Store Save +description: Hauler Store Save Usage Documentation +sidebar_label: Save +--- + +### Overview + +`hauler store save` saves a content store to a store archive. + +**An example with available flags...** + +```bash +hauler store save --filename +``` + +### Command Overview + +```yaml +Usage: + hauler store save [flags] + +Flags: + -f, --filename string (Optional) Specify the name of outputted haul (default "haul.tar.zst") + -h, --help help for save + -p, --platform string (Optional) Specify the platform for runtime imports... i.e. linux/amd64 (unspecified implies all) + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + -r, --retries int Set the number of retries for operations (default 3) + -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS +``` diff --git a/versioned_docs/version-1.4.x/hauler-usage/store/serve/fileserver.md b/versioned_docs/version-1.4.x/hauler-usage/store/serve/fileserver.md new file mode 100644 index 000000000..0b734578a --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/store/serve/fileserver.md @@ -0,0 +1,48 @@ +--- +title: Hauler Store Serve Fileserver +description: Hauler Store Serve Fileserver Usage Documentation +sidebar_label: Fileserver +--- + +### Overview + +`hauler store serve fileserver` serves the fileserver. + +**An example with available flags...** + +```bash +hauler store serve fileserver --port --timeout --tls-cert --tls-key +``` + +### Command Overview + +```yaml +Usage: + hauler store serve fileserver [flags] + +Flags: + --directory string (Optional) Directory to use for backend. Defaults to $PWD/fileserver (default "fileserver") + -h, --help help for fileserver + -p, --port int (Optional) Set the port to use for incoming connections (default 8080) + --timeout int (Optional) Timeout duration for HTTP Requests in seconds for both reads/writes (default 60) + --tls-cert string (Optional) Location of the TLS Certificate to use for server authenication + --tls-key string (Optional) Location of the TLS Key to use for server authenication + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + -r, --retries int Set the number of retries for operations (default 3) + -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS +``` + +## Example Commands for the Hauler Fileserver + +```bash +# serve fileserver +hauler store serve fileserver + +# serve fileserver on specific port +hauler store serve fileserver --port +``` diff --git a/versioned_docs/version-1.4.x/hauler-usage/store/serve/registry.md b/versioned_docs/version-1.4.x/hauler-usage/store/serve/registry.md new file mode 100644 index 000000000..ca9ee1ef9 --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/store/serve/registry.md @@ -0,0 +1,287 @@ +--- +title: Hauler Store Serve Registry +description: Hauler Store Serve Registry Usage Documentation +sidebar_label: Registry +--- + +### Overview + +`hauler store serve registry` serves the OCI Compliant registry. + +**An example with available flags...** + +```bash +hauler store serve registry --port --timeout --readonly --tls-cert --tls-key +``` + +### Command Overview + +```yaml +Usage: + hauler store serve registry [flags] + +Flags: + -c, --config string (Optional) Location of config file (overrides all flags) + --directory string (Optional) Directory to use for backend. Defaults to $PWD/registry (default "registry") + -h, --help help for registry + -p, --port int (Optional) Set the port to use for incoming connections (default 5000) + --readonly (Optional) Run the registry as readonly (default true) + --tls-cert string (Optional) Location of the TLS Certificate to use for server authenication + --tls-key string (Optional) Location of the TLS Key to use for server authenication + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + -r, --retries int Set the number of retries for operations (default 3) + -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS +``` + +## Example Commands for the Hauler Registry + +```bash +# serve registry +hauler store serve registry + +# serve registry on specific port +hauler store serve registry --port + +# serve registry on specific port with custom config +hauler store serve registry --port --config + +# serve registry in writeable mode +hauler store serve registry --readonly=false +``` + +## Example Config for the Hauler Registry + +These are all configuration options for the registry. Some options in the list are mutually exclusive. Read the detailed reference information about each option before finalizing your configuration. + +You can learn more here --> https://distribution.github.io/distribution/about/configuration + +```bash +version: 0.1 +log: + accesslog: + disabled: true + level: debug + formatter: text + fields: + service: registry + environment: staging + hooks: + - type: mail + disabled: true + levels: + - panic + options: + smtp: + addr: mail.example.com:25 + username: mailuser + password: password + insecure: true + from: sender@example.com + to: + - errors@example.com +loglevel: debug # deprecated: use "log" +storage: + filesystem: + rootdirectory: /var/lib/registry + maxthreads: 100 + azure: + accountname: accountname + accountkey: base64encodedaccountkey + container: containername + rootdirectory: /az/object/name/prefix + credentials: + type: client_secret + clientid: client_id_string + tenantid: tenant_id_string + secret: secret_string + copy_status_poll_max_retry: 10 + copy_status_poll_delay: 100ms + gcs: + bucket: bucketname + keyfile: /path/to/keyfile + credentials: + type: service_account + project_id: project_id_string + private_key_id: private_key_id_string + private_key: private_key_string + client_email: client@example.com + client_id: client_id_string + auth_uri: http://example.com/auth_uri + token_uri: http://example.com/token_uri + auth_provider_x509_cert_url: http://example.com/provider_cert_url + client_x509_cert_url: http://example.com/client_cert_url + rootdirectory: /gcs/object/name/prefix + chunksize: 5242880 + s3: + accesskey: awsaccesskey + secretkey: awssecretkey + region: us-west-1 + regionendpoint: http://myobjects.local + forcepathstyle: true + accelerate: false + bucket: bucketname + encrypt: true + keyid: mykeyid + secure: true + v4auth: true + chunksize: 5242880 + multipartcopychunksize: 33554432 + multipartcopymaxconcurrency: 100 + multipartcopythresholdsize: 33554432 + rootdirectory: /s3/object/name/prefix + usedualstack: false + loglevel: debug + inmemory: # This driver takes no parameters + tag: + concurrencylimit: 8 + delete: + enabled: false + redirect: + disable: false + cache: + blobdescriptor: redis + blobdescriptorsize: 10000 + maintenance: + uploadpurging: + enabled: true + age: 168h + interval: 24h + dryrun: false + readonly: + enabled: false +auth: + silly: + realm: silly-realm + service: silly-service + token: + autoredirect: true + realm: token-realm + service: token-service + issuer: registry-token-issuer + rootcertbundle: /root/certs/bundle + htpasswd: + realm: basic-realm + path: /path/to/htpasswd +middleware: + registry: + - name: ARegistryMiddleware + options: + foo: bar + repository: + - name: ARepositoryMiddleware + options: + foo: bar + storage: + - name: cloudfront + options: + baseurl: https://my.cloudfronted.domain.com/ + privatekey: /path/to/pem + keypairid: cloudfrontkeypairid + duration: 3000s + ipfilteredby: awsregion + awsregion: us-east-1, use-east-2 + updatefrequency: 12h + iprangesurl: https://ip-ranges.amazonaws.com/ip-ranges.json + storage: + - name: redirect + options: + baseurl: https://example.com/ +http: + addr: localhost:5000 + prefix: /my/nested/registry/ + host: https://myregistryaddress.org:5000 + secret: asecretforlocaldevelopment + relativeurls: false + draintimeout: 60s + tls: + certificate: /path/to/x509/public + key: /path/to/x509/private + clientcas: + - /path/to/ca.pem + - /path/to/another/ca.pem + letsencrypt: + cachefile: /path/to/cache-file + email: emailused@letsencrypt.com + hosts: [myregistryaddress.org] + directoryurl: https://acme-v02.api.letsencrypt.org/directory + debug: + addr: localhost:5001 + prometheus: + enabled: true + path: /metrics + headers: + X-Content-Type-Options: [nosniff] + http2: + disabled: false + h2c: + enabled: false +notifications: + events: + includereferences: true + endpoints: + - name: alistener + disabled: false + url: https://my.listener.com/event + headers: + timeout: 1s + threshold: 10 + backoff: 1s + ignoredmediatypes: + - application/octet-stream + ignore: + mediatypes: + - application/octet-stream + actions: + - pull +redis: + addr: localhost:6379 + password: asecret + db: 0 + dialtimeout: 10ms + readtimeout: 10ms + writetimeout: 10ms + pool: + maxidle: 16 + maxactive: 64 + idletimeout: 300s + tls: + enabled: false +health: + storagedriver: + enabled: true + interval: 10s + threshold: 3 + file: + - file: /path/to/checked/file + interval: 10s + http: + - uri: http://server.to.check/must/return/200 + headers: + Authorization: [Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==] + statuscode: 200 + timeout: 3s + interval: 10s + threshold: 3 + tcp: + - addr: redis-server.domain.com:6379 + timeout: 3s + interval: 10s + threshold: 3 +proxy: + remoteurl: https://registry-1.docker.io + username: [username] + password: [password] + ttl: 168h +validation: + manifests: + urls: + allow: + - ^https?://([^/]+\.)*example\.com/ + deny: + - ^https?://www\.example\.com/ +``` diff --git a/versioned_docs/version-1.4.x/hauler-usage/store/sync.md b/versioned_docs/version-1.4.x/hauler-usage/store/sync.md new file mode 100644 index 000000000..eaa0e5d89 --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/store/sync.md @@ -0,0 +1,46 @@ +--- +title: Hauler Store Sync +description: Hauler Store Sync Usage Documentation +sidebar_label: Sync +--- + +### Overview + +`hauler store sync` syncs content to the content store. + +**An example with available flags...** + +```bash +hauler store sync --filename --platform --key --registry +``` + +### Command Overview + +```yaml +Usage: + hauler store sync [flags] + +Flags: + --certificate-github-workflow-repository string (Optional) Cosign certificate-github-workflow-repository option + --certificate-identity string (Optional) Cosign certificate-identity (either --certificate-identity or --certificate-identity-regexp required for keyless verification) + --certificate-identity-regexp string (Optional) Cosign certificate-identity-regexp (either --certificate-identity or --certificate-identity-regexp required for keyless verification) + --certificate-oidc-issuer string (Optional) Cosign option to validate oidc issuer + --certificate-oidc-issuer-regexp string (Optional) Cosign option to validate oidc issuer with regex + -f, --filename strings Specify the name of manifest(s) to sync (default [hauler-manifest.yaml]) + -h, --help help for sync + -k, --key string (Optional) Location of public key to use for signature verification + -p, --platform string (Optional) Specify the platform of the image... i.e linux/amd64 (defaults to all) + -c, --product-registry string (Optional) Specify the product registry. Defaults to RGS Carbide Registry (rgcrprod.azurecr.us) + --products strings (Optional) Specify the product name to fetch collections from the product registry i.e. rancher=v2.10.1,rke2=v1.31.5+rke2r1 + -g, --registry string (Optional) Specify the registry of the image for images that do not alredy define one + --rewrite string (Optional) Rewrite artifact path to specified string (EXPERIMENTAL) + --use-tlog-verify (Optional) Allow transparency log verification (defaults to false) + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") + -r, --retries int Set the number of retries for operations (default 3) + -s, --store string Set the directory to use for the content store + -t, --tempdir string (Optional) Override the default temporary directory determined by the OS +``` diff --git a/versioned_docs/version-1.4.x/hauler-usage/version.md b/versioned_docs/version-1.4.x/hauler-usage/version.md new file mode 100644 index 000000000..0ae662642 --- /dev/null +++ b/versioned_docs/version-1.4.x/hauler-usage/version.md @@ -0,0 +1,60 @@ +--- +title: Hauler Version +description: Hauler Version Usage Documentation +sidebar_label: Hauler Version +--- + +### Overview + +`hauler version` prints the current version of `hauler`. + +### Command Overview + +```yaml +Usage: + hauler version [flags] + +Aliases: + version, v + +Flags: + -h, --help help for version + --json Set the output format to JSON + +Global Flags: + -d, --haulerdir string Set the location of the hauler directory (default $HOME/.hauler) + --ignore-errors Ignore/Bypass errors (i.e. warn on error) (defaults false) + -l, --log-level string Set the logging level (i.e. info, debug, warn) (default "info") +``` + +### Example Outputs + +```bash + __ __ ___ __ __ __ _______ .______ +| | | | / \ | | | | | | | ____|| _ \ +| |__| | / ^ \ | | | | | | | |__ | |_) | +| __ | / /_\ \ | | | | | | | __| | / +| | | | / _____ \ | `--' | | `----.| |____ | |\ \----. +|__| |__| /__/ \__\ \______/ |_______||_______|| _| `._____| +hauler: Airgap Swiss Army Knife + +GitVersion: v1.4.0-rc.1.0.20260112213839-e7082b6e2890 +GitCommit: e7082b6 +GitTreeState: clean +BuildDate: 2026-01-13T06:33:44Z +GoVersion: go1.25.5 X:boringcrypto +Compiler: gc +Platform: darwin/arm64 +``` + +```json +{ + "gitVersion": "v1.4.0-rc.1.0.20260112213839-e7082b6e2890", + "gitCommit": "e7082b6", + "gitTreeState": "clean", + "buildDate": "2026-01-13T06:33:44Z", + "goVersion": "go1.25.5 X:boringcrypto", + "compiler": "gc", + "platform": "darwin/arm64" +} +``` diff --git a/versioned_docs/version-1.4.x/intro.md b/versioned_docs/version-1.4.x/intro.md new file mode 100644 index 000000000..e8f47f285 --- /dev/null +++ b/versioned_docs/version-1.4.x/intro.md @@ -0,0 +1,25 @@ +--- +title: Introduction +description: Docs for Hauler, An Airgap Swiss-Army Knife provided by Rancher Government +sidebar_label: Introduction +--- + +# Hauler + +# Airgap Swiss Army Knife + +![hauler-logo](/img/rgs-hauler-logo.png) + +## What's Hauler? + +`Hauler` simplifies the airgap experience without requiring operators to adopt a specific workflow. `Hauler` simplifies the airgapping process, by representing assets (images, charts, files, etc...) as content and collections to allow operators to easily fetch, store, package, and distribute these assets with declarative manifests or through the command line. + +`Hauler` does this by storing contents and collections as OCI Artifacts and allows operators to serve contents and collections with an embedded registry and fileserver. Additionally, `Hauler` has the ability to store and inspect various non-image OCI Artifacts. + +## Acknowledgements + +`Hauler` wouldn't be possible without the open-source community, but there are a few projects that stand out: + +- [oras cli](https://github.com/oras-project/oras) +- [cosign](https://github.com/sigstore/cosign) +- [go-containerregistry](https://github.com/google/go-containerregistry) diff --git a/versioned_docs/version-1.4.x/introduction/install.md b/versioned_docs/version-1.4.x/introduction/install.md new file mode 100644 index 000000000..e7c6eca79 --- /dev/null +++ b/versioned_docs/version-1.4.x/introduction/install.md @@ -0,0 +1,87 @@ +--- +title: Installation +description: Installation Documentation for Hauler +sidebar_label: Installation +--- + +## Overview + +Hauler is a purpose built to be a single binary with no prerequistes, depedencies, or runtime environment. It's installation is very simple and easy to follow. To view the latest release, please view our [GitHub Release](https://github.com/hauler-dev/hauler/releases) page. + +## Supported Architectures + +| Base Platform | Architecture | Latest Release | +| :-----------: | :-----------------: | :-----------------------------------------------: | +| Linux | `amd64` and `arm64` | https://github.com/hauler-dev/hauler/releases | +| Darwin | `amd64` and `arm64` | https://github.com/hauler-dev/hauler/releases | +| Windows | `amd64` and `arm64` | https://github.com/hauler-dev/hauler/releases | + +## Installation Steps + +### Linux/Darwin + +```bash +# install latest release +curl -sfL https://get.hauler.dev | bash + +# install with debug mode +curl -sfL https://get.hauler.dev | HAULER_DEBUG=true bash + +# install specific release +curl -sfL https://get.hauler.dev | HAULER_VERSION=1.2.0 bash + +# install at different directory +curl -sfL https://get.hauler.dev | HAULER_INSTALL_DIR=/usr/bin bash + +# install with different hauler directory +curl -sfL https://get.hauler.dev | HAULER_DIR=$HOME/.hauler bash +``` + +### Homebrew + +```bash +# install latest release +brew tap hauler-dev/homebrew-tap +brew install hauler + +# install specific release +brew tap hauler-dev/homebrew-tap +brew install hauler@1.2.0 +``` + +### Windows + +```bash +# coming soon +``` + +## Manual Installation Steps + +### Linux/Darwin + +```bash +# set the hauler version (i.e. HAULER_VERSION=1.2.0) +export vHauler=HAULER_VERSION + +# set the specific platform (i.e. PLATFORM=linux) +export platform=PLATFORM + +# set the specific arch (i.e. ARCH=amd64) +export arch=ARCH + +curl -sOL https://github.com/hauler-dev/hauler/releases/download/v${vHauler}/hauler_${vHauler}_${platform}_${arch}.tar.gz +tar -xf hauler_${vHauler}_${platform}_${arch}.tar.gz +sudo mv hauler /usr/bin/hauler +``` + +### Homebrew + +```bash +# not applicable +``` + +### Windows + +```bash +# coming soon +``` diff --git a/versioned_docs/version-1.4.x/introduction/quickstart.md b/versioned_docs/version-1.4.x/introduction/quickstart.md new file mode 100644 index 000000000..94a25f1ae --- /dev/null +++ b/versioned_docs/version-1.4.x/introduction/quickstart.md @@ -0,0 +1,152 @@ +--- +title: Quickstart +description: Quickstart Documentation for Hauler +sidebar_label: Quickstart +--- + +Skipping past most of the documentation? Here's an easy to follow Quick Start Guide: + +## Quick Installation + +```bash +# install latest release +curl -sfL https://get.hauler.dev | bash +``` + +## Getting Started with Hauler + +### Add Artifacts to the Hauler Store + +
+Using the Command Line: + +```bash +# add a image... defaults to docker.io +hauler store add image neuvector/scanner:latest + +# add a image with a specific platform and with supply chain artifacts +# may not work for all users due to the specified registry +hauler store add image rgcrprod.azurecr.us/longhornio/longhorn-ui:v1.7.1 --platform linux/amd64 --key carbide-key.pub + +# add a helm chart with a specific version +hauler store add chart rancher --repo https://releases.rancher.com/server-charts/stable --version 2.20.1 + +# add a file and assign it a new name +hauler store add file https://get.rke2.io --name install.sh +``` + +
+ +
+Using a Hauler Manifest: + +```bash +# fetch the content via a declarative manifest +hauler store sync --filename hauler-manifest.yaml +``` +--- +```yaml title="hauler-manifest.yaml" +apiVersion: content.hauler.cattle.io/v1 +kind: Images +metadata: + name: hauler-content-images-example +spec: + images: + - name: busybox + - name: busybox:stable + platform: linux/amd64 + - name: gcr.io/distroless/base@sha256:7fa7445dfbebae4f4b7ab0e6ef99276e96075ae42584af6286ba080750d6dfe5 +--- +apiVersion: content.hauler.cattle.io/v1 +kind: Charts +metadata: + name: hauler-content-charts-example +spec: + charts: + - name: rancher + repoURL: https://releases.rancher.com/server-charts/stable + version: 2.10.1 + - name: hauler-helm + repoURL: oci://ghcr.io/hauler-dev +--- +apiVersion: content.hauler.cattle.io/v1 +kind: Files +metadata: + name: hauler-content-files-example +spec: + files: + - path: https://get.rke2.io + name: install.sh + - path: hauler-manifest.yaml +``` + +
+ +### View the Hauler Store + +```bash +# view and verify the content in the local hauler store +hauler store info +``` + +### Save the Hauler Store + +```bash +# save and export the content in the local hauler store +hauler store save --filename haul.tar.zst +``` + +--- +--- +--- + +### Airgap the `haul.tar.zst` (aka the "haul") + +For this quickstart and example use of `hauler`, we can simulate airgapping to the disconnected environment by deleting the "store" directory with the following command: `rm -rf store` + +--- +--- +--- + +### Load the Airgapped Hauler Store + +```bash +# load and import the airgapped content to the new local hauler store +hauler store load --filename haul.tar.zst +``` + +### Serve the Hauler Store + +```bash +# serve the content as a readonly registry from the hauler store +# if you have an existing registry, please see the next step +# defaults to :5000 +hauler store serve registry + +# serve the file content as a fileserver from the hauler store +# if you have an existing fileserver, please see the next step +# defaults to :8080 +hauler store serve fileserver +``` + +### Copy the Hauler Store + +```bash +# optional step to authenicate into your registry +hauler login --username --password + +# copy the content to a registry from the hauler store +# copies oci compliant artifacts +hauler store copy registry:// + +# copy the content to a directory from the hauler store +# copies non oci compliant artifacts +hauler store copy dir:// +``` + +### Extract Content from the Hauler Store + +```bash +# extracts artifacts from the hauler store to disk +hauler store extract hauler/rancher:2.10.1 +``` diff --git a/versioned_docs/version-1.4.x/introduction/uninstall.md b/versioned_docs/version-1.4.x/introduction/uninstall.md new file mode 100644 index 000000000..e8be790b0 --- /dev/null +++ b/versioned_docs/version-1.4.x/introduction/uninstall.md @@ -0,0 +1,51 @@ +--- +title: Uninstall +description: Uninstall Documentation for Hauler +sidebar_label: Uninstall +--- + +## Uninstallation Steps + +### Linux/Darwin + +```bash +# uninstall hauler +curl -sfL https://get.hauler.dev | HAULER_UNINSTALL=true bash +``` + +### Homebrew + +```bash +# installs latest release +brew uninstall hauler +``` + +### Windows + +```bash +# coming soon +``` + +## Manual Uninstallation Steps + +### Linux/Darwin + +```bash +# remove the hauler binary +sudo rm -f /usr/local/bin/hauler + +# remove the working/installation directory +rm -rf "$HOME/.hauler" +``` + +### Homebrew + +```bash +# not applicable +``` + +### Windows + +```bash +# coming soon +``` diff --git a/versioned_docs/version-1.4.x/known-limits.md b/versioned_docs/version-1.4.x/known-limits.md new file mode 100644 index 000000000..ed21d4c9c --- /dev/null +++ b/versioned_docs/version-1.4.x/known-limits.md @@ -0,0 +1,61 @@ +--- +title: Known Issues and Limits +description: Known Issues and Limitations for Hauler +sidebar_label: Known Issues/Limits +--- + +## Issues + +No known critical issues at this time. Please see our GitHub Issues for more information... +- `Hauler` - https://github.com/hauler-dev/hauler/issues +- `Hauler Helm` - https://github.com/hauler-dev/hauler-helm/issues +- `Hauler Docs` - https://github.com/hauler-dev/hauler-docs/issues + +## Limitations + +### Limitation for `Hauler Store Load` +- When loading a `podman` generated `tarball` with `hauler store load -f ` it may fail to load all of the images contained in `tarball`. Please note that at this time this is not supported, but may change in the future. + +### Limitation for `Hauler Store Copy` +- When copying artifacts from your `store` to a specific path on an existing and authenicated registry using `hauler store copy`, you first must use `hauler login`, without the ``, only the ``. Please see the example below... + - https://github.com/hauler-dev/hauler/issues/409 + +```bash +hauler login --username --password +hauler store copy registry:/// +``` + +### Limitation for `Helm Chart Names` +- `Hauler` may error when fetching a helm chart when using a `store` with the same name of the `helm chart`. + - For example, if you tried to use a custom `store` name of `rancher` when fetching a `helm chart` named `rancher`, it will fail due to the fact that `helm` defaults to fetching charts from an exisiting local directory. + - https://github.com/helm/helm/blob/main/pkg/action/install.go#L730-L831 + +### Limitation for `Hauler Temp Directory` +- `Hauler` will default to write temporary directories and files to `/tmp`. If you do not have the same (or more) amount of space available in your `/tmp` compared to the size of the `store` or `haul`, then `hauler` may error. + - **Recommendation:** Ensure there is enough space availabe in `/tmp` or change the default temporary directory with `--tempdir`, before running the command `hauler store load --filename haul.tar.zst`. + +## Notices + +### In Hauler v1.4.0... + +- Added a notice to `hauler store sync --products/--product-registry` to warn users the default registry will be updated in a future release. + - Users will see logging notices when using the `--products/--product-registry` such as... + - `!!! WARNING !!! [--products] will be updating its default registry in a future release...` + - `!!! WARNING !!! [--product-registry] will be updating its default registry in a future release...` + +### In Hauler v1.2.0... + +- Upgraded the `apiVersion` to `v1` from `v1alpha1` + - Users are able to use `v1` and `v1alpha1`, but `v1alpha1` is now deprecated and will be removed in a future release. We will update the community when we fully deprecate and remove the functionality of `v1alpha1` + - Users will see logging notices when using the old `apiVersion` such as... + - `!!! DEPRECATION WARNING !!! apiVersion [v1alpha1] will be removed in a future release...` +--- +- Updated the behavior of `hauler store load` to default to loading a `haul` with the name of `haul.tar.zst` and requires the flag of `--filename/-f` to load a `haul` with a different name +- Users can load multiple `hauls` by specifying multiple flags of `--filename/-f` + - updated command usage: `hauler store load --filename hauling-hauls.tar.zst` + - previous command usage (do not use): `hauler store load hauling-hauls.tar.zst` +--- +- Updated the behavior of `hauler store sync` to default to syncing a `manifest` with the name of `hauler-manifest.yaml` and requires the flag of `--filename/-f` to sync a `manifest` with a different name +- Users can sync multiple `manifests` by specifying multiple flags of `--filename/-f` + - updated command usage: `hauler store sync --filename hauling-hauls-manifest.yaml` + - previous command usage (do not use): `hauler store sync --files hauling-hauls-manifest.yaml` diff --git a/versioned_sidebars/version-1.4.x-sidebars.json b/versioned_sidebars/version-1.4.x-sidebars.json new file mode 100644 index 000000000..3dddf3052 --- /dev/null +++ b/versioned_sidebars/version-1.4.x-sidebars.json @@ -0,0 +1,85 @@ +{ + "haulerSidebar": [ + "intro", + "core-concepts", + "airgap-workflow", + { + "type": "category", + "label": "Introduction", + "description": "Docs for Hauler, An Airgap Swiss-Army Knife provided by Rancher Government", + "collapsed": false, + "items": [ + "introduction/quickstart", + "introduction/install", + "introduction/uninstall" + ] + }, + { + "type": "category", + "label": "Hauler Usage", + "description": "Usage Documentation for Hauler", + "collapsed": false, + "items": [ + "hauler-usage/overview", + "hauler-usage/help", + "hauler-usage/login", + { + "type": "category", + "label": "Hauler Store", + "description": "Usage Documentation for Hauler Store", + "collapsed": true, + "items": [ + "hauler-usage/store/overview", + { + "type": "category", + "label": "Add", + "description": "Usage Documentation for Hauler Store Add", + "collapsed": true, + "items": [ + "hauler-usage/store/add/image", + "hauler-usage/store/add/chart", + "hauler-usage/store/add/file" + ] + }, + "hauler-usage/store/copy", + "hauler-usage/store/extract", + "hauler-usage/store/load", + "hauler-usage/store/save", + { + "type": "category", + "label": "Serve", + "description": "Usage Documentation for Hauler Store Serve", + "collapsed": true, + "items": [ + "hauler-usage/store/serve/registry", + "hauler-usage/store/serve/fileserver" + ] + }, + "hauler-usage/store/sync", + "hauler-usage/store/remove" + ] + }, + "hauler-usage/completion", + "hauler-usage/version" + ] + }, + { + "type": "category", + "label": "Guides & References", + "description": "Reference Guides Documentation for Hauler", + "collapsed": false, + "items": [ + "guides-references/overview", + "guides-references/cluster-images", + "guides-references/carbide-customers", + "guides-references/container-runtimes", + "guides-references/bootstraping-utilities", + "guides-references/hauler-manifests", + "guides-references/hauler-content", + "guides-references/hauler-collections" + ] + }, + "known-limits", + "feedback" + ] +} diff --git a/versions.json b/versions.json index d691f7df4..8eda35d35 100644 --- a/versions.json +++ b/versions.json @@ -1,4 +1,5 @@ [ + "1.4.x", "1.3.x", "1.2.x", "1.1.x",