diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 575dd302c..ef4ba7c10 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -18,7 +18,7 @@ jobs: actions: read steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Docker meta id: meta uses: docker/metadata-action@v4 @@ -164,7 +164,7 @@ jobs: actions: read steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Docker meta id: meta uses: docker/metadata-action@v4 @@ -229,7 +229,7 @@ jobs: actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Run Trivy vulnerability scanner in fs mode uses: aquasecurity/trivy-action@master with: @@ -248,7 +248,7 @@ jobs: name: Unit test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: go.mod @@ -264,17 +264,18 @@ jobs: - name: golangci-lint uses: golangci/golangci-lint-action@v4 with: - version: v1.59.1 + version: v1.62.2 + skip-cache: true build: name: GoReleaser build runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup Go - uses: actions/setup-go@v4.1.0 + uses: actions/setup-go@v5 with: go-version-file: go.mod - name: GoReleaser (Build) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 4ca582528..d610b163d 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -27,33 +27,11 @@ builds: - -X "github.com/pluralsh/plural-cli/pkg/common.Date={{.Date}}" - -X "github.com/pluralsh/plural-cli/pkg/scm.GitlabClientSecret={{.Env.GITLAB_CLIENT_SECRET}}" binary: plural - - id: plrlctl - main: ./cmd/plrlctl - targets: - - linux_amd64 - - linux_arm64 - - windows_amd64 - - windows_arm64 - - darwin_amd64 - - darwin_arm64 - env: - - CGO_ENABLED=0 - ldflags: - - -s - - -w - - -X "github.com/pluralsh/plural-cli/pkg/common.Version={{.Version}}" - - -X "github.com/pluralsh/plural-cli/pkg/common.Commit={{.Commit}}" - - -X "github.com/pluralsh/plural-cli/pkg/common.Date={{.Date}}" - - -X "github.com/pluralsh/plural-cli/pkg/scm.GitlabClientSecret={{.Env.GITLAB_CLIENT_SECRET}}" - binary: pluralctl archives: - id: plural-cli builds: [plural-cli] name_template: '{{ .ProjectName }}_{{ .Version }}_{{- title .Os -}}_{{- if eq .Arch "386" -}}i386{{- else -}}{{ .Arch }}{{- end -}}' - - id: plrlctl - builds: [plrlctl] - name_template: '{{ .Binary }}_{{ .Version }}_{{- title .Os -}}_{{- if eq .Arch "386" -}}i386{{- else -}}{{ .Arch }}{{- end -}}' checksum: name_template: 'checksums.txt' @@ -160,70 +138,3 @@ brews: test: | system "#{bin}/plural", "--help" - - - name: plrlctl - ids: [plrlctl] - repository: - owner: pluralsh - name: homebrew-plural - - # Optionally a branch can be provided. - # Defaults to the default repository branch. - branch: main - - # Optionally a token can be provided, if it differs from the token provided to GoReleaser - token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}" - - # Template for the url which is determined by the given Token (github, gitlab or gitea) - # - # Default depends on the client. - url_template: "https://github.com/pluralsh/plural-cli/releases/download/{{ .Tag }}/{{ .ArtifactName }}" - - # Allows you to set a custom download strategy. Note that you'll need - # to implement the strategy and add it to your tap repository. - # Example: https://docs.brew.sh/Formula-Cookbook#specifying-the-download-strategy-explicitly - # Default is empty. - download_strategy: CurlDownloadStrategy - - # Git author used to commit to the repository. - # Defaults are shown. - commit_author: - name: plural-bot - email: gh-bot@plural.sh - - # The project name and current git tag are used in the format string. - commit_msg_template: "Brew formula update for {{ .ProjectName }} version {{ .Tag }}" - - # Folder inside the repository to put the formula. - # Default is the root folder. - directory: Formula - - # Your app's homepage. - # Default is empty. - homepage: "https://docs.plural.sh" - - # Template of your app's description. - # Default is empty. - description: "CLI to manage and operate a fleet of clusters" - - # SPDX identifier of your app's license. - # Default is empty. - license: "MIT" - - # Setting this will prevent goreleaser to actually try to commit the updated - # formula - instead, the formula file will be stored on the dist folder only, - # leaving the responsibility of publishing it to the user. - # If set to auto, the release will not be uploaded to the homebrew tap - # in case there is an indicator for prerelease in the tag e.g. v1.0.0-rc1 - # Default is false. - skip_upload: "auto" - - # Custom block for brew. - # Can be used to specify alternate downloads for devel or head releases. - # Default is empty. - custom_block: | - head "https://github.com/pluralsh/plural-cli.git" - - test: | - system "#{bin}/plrlctl", "--help" - diff --git a/Makefile b/Makefile index 680418326..21389767e 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,6 @@ include $(ROOT_DIRECTORY)/hack/include/build.mk GCP_PROJECT ?= pluralsh APP_NAME ?= plural-cli -APP_CTL_NAME ?= plrlctl APP_VSN ?= $(shell git describe --tags --always --dirty) APP_DATE ?= $(shell date -u +"%Y-%m-%dT%H:%M:%S%z") BUILD ?= $(shell git rev-parse --short HEAD) @@ -22,12 +21,7 @@ LDFLAGS ?= $(BASE_LDFLAGS) $\ -X "$(PACKAGE)/pkg/common.Date=$(APP_DATE)" $\ -X "$(PACKAGE)/pkg/scm.GitlabClientSecret=${GITLAB_CLIENT_SECRET}" $\ -X "$(PACKAGE)/pkg/scm.BitbucketClientSecret=${BITBUCKET_CLIENT_SECRET}" -WAILS_TAGS ?= desktop,production,ui,debug -WAILS_BINDINGS_TAGS ?= bindings,generate -WAILS_BINDINGS_BINARY_NAME ?= wailsbindings -TAGS ?= $(WAILS_TAGS) OUTFILE ?= plural.o -OUTCTLFILE ?= plrlctl.o GOBIN ?= go env GOBIN # Targets to run before other targets @@ -42,43 +36,14 @@ git-push: .PHONY: install install: go build -ldflags '$(LDFLAGS)' -o $(GOBIN)/plural ./cmd/plural - go build -ldflags '$(LDFLAGS)' -o $(GOBIN)/plrlctl ./cmd/plrlctl .PHONY: build-cli build-cli: ## Build a CLI binary for the host architecture without embedded UI go build -ldflags='$(LDFLAGS)' -o $(OUTFILE) ./cmd/plural -.PHONY: build-ctl -build-ctl: ## Build a CLI binary for the fleet management - go build -ldflags='$(LDFLAGS)' -o $(OUTCTLFILE) ./cmd/plrlctl - -.PHONY: build-cli-ui -build-cli-ui: $(PRE) generate-bindings ## Build a CLI binary for the host architecture with embedded UI - CGO_LDFLAGS=$(CGO_LDFLAGS) go build -tags $(WAILS_TAGS) -ldflags='$(LDFLAGS)' -o $(OUTFILE) ./cmd/plural - -.PHONY: build-web -build-web: ## Build just the embedded UI - cd pkg/ui/web && yarn --immutable && yarn build - -.PHONY: run-web -run-web: $(PRE) ## Run the UI for development - @CGO_LDFLAGS=$(CGO_LDFLAGS) wails dev -tags ui -browser -skipbindings - -# This is somewhat an equivalent of wails `GenerateBindings` method. -# Ref: https://github.com/wailsapp/wails/blob/master/v2/pkg/commands/bindings/bindings.go#L28 -.PHONY: generate-bindings -generate-bindings: build-web ## Generate backend bindings for the embedded UI - @echo Building bindings binary - @CGO_LDFLAGS=$(CGO_LDFLAGS) go build -tags $(WAILS_BINDINGS_TAGS) -ldflags='$(LDFLAGS)' -o $(WAILS_BINDINGS_BINARY_NAME) . - @echo Generating bindings - @./$(WAILS_BINDINGS_BINARY_NAME) > /dev/null 2>&1 - @echo Cleaning up - @rm $(WAILS_BINDINGS_BINARY_NAME) - .PHONY: release release: GOOS=$(GOOS) GOARCH=$(GOARCH) go build -ldflags='$(LDFLAGS)' -o $(OUTFILE) ./cmd/plural - GOOS=$(GOOS) GOARCH=$(GOARCH) go build -ldflags='$(LDFLAGS)' -o $(OUTCTLFILE) ./cmd/plrlctl .PHONY: goreleaser goreleaser: @@ -103,17 +68,6 @@ build: ## Build the Docker image -t gcr.io/$(GCP_PROJECT)/$(APP_NAME):$(APP_VSN) \ -t $(DKR_HOST)/plural/$(APP_NAME):$(APP_VSN) . -.PHONY: build-ctl -build-ctl: ## Build the plrctl Docker image - docker build --build-arg APP_NAME=$(APP_CTL_NAME) \ - --build-arg APP_VSN=$(APP_VSN) \ - --build-arg APP_DATE=$(APP_DATE) \ - --build-arg APP_COMMIT=$(BUILD) \ - -t $(APP_CTL_NAME):$(APP_VSN) \ - -t $(APP_CTL_NAME):latest \ - -t gcr.io/$(GCP_PROJECT)/$(APP_CTL_NAME):$(APP_VSN) \ - -t $(DKR_HOST)/plural/$(APP_CTL_NAME):$(APP_VSN) -f dockerfiles/plrlctl/Dockerfile . - .PHONY: build-cloud build-cloud: ## build the cloud docker image docker build --build-arg APP_NAME=$(APP_NAME) \ @@ -186,7 +140,7 @@ test: setup-tests .PHONY: format format: ## formats all go code to prep for linting - docker run --rm -v $(PWD):/app -w /app golangci/golangci-lint:v1.59.1 golangci-lint run --fix + docker run --rm -v $(PWD):/app -w /app golangci/golangci-lint:v1.62.2 golangci-lint run --fix .PHONY: genmock genmock: ## generates mocks before running tests @@ -194,7 +148,7 @@ genmock: ## generates mocks before running tests .PHONY: lint lint: - docker run --rm -v $(PWD):/app -w /app golangci/golangci-lint:v1.59.1 golangci-lint run + docker run --rm -v $(PWD):/app -w /app golangci/golangci-lint:v1.62.2 golangci-lint run .PHONY: delete-tag delete-tag: diff --git a/README.md b/README.md index 8e3d3095f..85669b1be 100644 --- a/README.md +++ b/README.md @@ -1,82 +1,29 @@ # Plural CLI -The plural cli automates all gitops operations for your deployments of plural applications. The core workflow should mostly be as simple as: - -```bash -plural build -plural deploy -``` - -And if you want to teardown your infrastructure, you can simply run: - -```bash -plural destroy -``` - -To add, update or reconfigure any applications deployed by plural. But it goes even deeper and solves things like: - -* Secret management (via a similar mechanism as git-crypt) -* Application Health checking - `plural watch APP` -* Log tailing - `plural logs list APP` and `plural logs tail APP LOGSTREAM` -* Setting up secure proxies into databases, private web UIs - `plural proxy list APP` and `plural proxy connect APP NAME` +Deploying your services using the Plural CLI. ## Installation -There are a number of means to install plural, the simplest is to use our homebrew tap if you're using mac: +The Plural CLI is available on homebrew, a single line install can be done with: ```bash brew install pluralsh/plural/plural ``` -More detailed instructions for other platforms can be found at https://docs.plural.sh/getting-started#1.-install-plural-cli-and-dependencies - -Plural does require a few other cli's to be installed, namely: -* helm -* terraform -* kubectl -* cloud provider cli for the infrastructure you're deploying to, like `awscli`, `gcloud`, etc -* [kind](https://kind.sigs.k8s.io/) if using kind to deploy a local cluster for testing - -## Setup - -The core workflow is all git based, so you should create a git repository on github or wherever you're using SCM, clone it locally, then run: +If you are using a machine that is not compatible with homebrew, +we recommend simply downloading a pre-built release on github and installing it onto your machines path. The releases can be found here: https://github.com/pluralsh/plural-cli/releases. -```bash -plural init -``` +## Requirements -You'll want to then install a bundle for whatever application you'd like, we'll use https://github.com/airbytehq/airbyte as an example. You can search for the bundles using: +Plural does require a few other CLI's to be installed, namely: +* `helm` +* `terraform` +* `kubectl` +* cloud provider CLI for the infrastructure you're deploying to, like `aws`, `az`, `gcloud` etc. +## Quickstart -```bash -plural bundle list airbyte -``` - -And chose one (using aws as an example cloud provider target) like: - -```bash -plural bundle install airbyte airbyte-aws -``` - -This will set the basic configuration parameters for all the infrastructure needed to install airbyte. Then just run: - -```bash -plural build -plural deploy --commit "deploying my first plural app!" -``` - -To install it. - - -## Installing the Plural Console - -We highly recommend installing the [plural console](https://github.com/pluralsh/console) alongside your plural applications. That can be done easily with: - -```bash -plural bundle install console console-aws -plural build -plural deploy --commit "deploying the plural console" -``` +Detailed instructions can be found at https://docs.plural.sh/deployments/cli-quickstart. ## Reaching Out diff --git a/cmd/command/ai/help.go b/cmd/command/ai/ai.go similarity index 100% rename from cmd/command/ai/help.go rename to cmd/command/ai/ai.go diff --git a/cmd/command/api/api.go b/cmd/command/api/api.go index 004c6d11c..f0946c416 100644 --- a/cmd/command/api/api.go +++ b/cmd/command/api/api.go @@ -4,8 +4,6 @@ import ( "github.com/pluralsh/plural-cli/pkg/api" "github.com/pluralsh/plural-cli/pkg/client" "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/polly/algorithms" "github.com/urfave/cli" ) @@ -27,55 +25,6 @@ func Command(clients client.Plural) cli.Command { func (p *Plural) apiCommands() []cli.Command { return []cli.Command{ - { - Name: "list", - Usage: "lists plural resources", - Subcommands: []cli.Command{ - { - Name: "installations", - Usage: "lists your installations", - Action: common.LatestVersion(p.handleInstallations), - }, - { - Name: "charts", - Usage: "lists charts for a repository", - ArgsUsage: "{repository-id}", - Action: common.LatestVersion(common.RequireArgs(p.handleCharts, []string{"{repository-id}"})), - }, - { - Name: "terraform", - Usage: "lists terraform modules for a repository", - ArgsUsage: "{repository-id}", - Action: common.LatestVersion(common.RequireArgs(p.handleTerraforma, []string{"{repository-id}"})), - }, - { - Name: "versions", - Usage: "lists versions of a chart", - ArgsUsage: "{chart-id}", - Action: common.LatestVersion(common.RequireArgs(p.handleVersions, []string{"{chart-id}"})), - }, - { - Name: "chartinstallations", - Aliases: []string{"ci"}, - Usage: "lists chart installations for a repository", - ArgsUsage: "{repository-id}", - Action: common.LatestVersion(common.RequireArgs(p.handleChartInstallations, []string{"{repository-id}"})), - }, - { - Name: "terraforminstallations", - Aliases: []string{"ti"}, - Usage: "lists terraform installations for a repository", - ArgsUsage: "{repository-id}", - Action: common.LatestVersion(common.RequireArgs(p.handleTerraformInstallations, []string{"{repository-id}"})), - }, - { - Name: "artifacts", - Usage: "Lists artifacts for a repository", - ArgsUsage: "{repository-id}", - Action: common.LatestVersion(common.RequireArgs(p.handleArtifacts, []string{"{repository-id}"})), - }, - }, - }, { Name: "create", Usage: "creates plural resources", @@ -91,116 +40,6 @@ func (p *Plural) apiCommands() []cli.Command { } } -func (p *Plural) handleInstallations(c *cli.Context) error { - p.InitPluralClient() - installations, err := p.GetInstallations() - if err != nil { - return api.GetErrorResponse(err, "GetInstallations") - } - - installations = algorithms.Filter(installations, func(v *api.Installation) bool { - return v.Repository != nil - }) - - headers := []string{"Repository", "Repository Id", "Publisher"} - return utils.PrintTable(installations, headers, func(inst *api.Installation) ([]string, error) { - repo := inst.Repository - publisherName := "" - if repo.Publisher != nil { - publisherName = repo.Publisher.Name - } - return []string{repo.Name, repo.Id, publisherName}, nil - }) -} - -func (p *Plural) handleCharts(c *cli.Context) error { - p.InitPluralClient() - charts, err := p.GetCharts(c.Args().First()) - if err != nil { - return api.GetErrorResponse(err, "GetCharts") - } - - headers := []string{"Id", "Name", "Description", "Latest Version"} - return utils.PrintTable(charts, headers, func(c *api.Chart) ([]string, error) { - return []string{c.Id, c.Name, c.Description, c.LatestVersion}, nil - }) -} - -func (p *Plural) handleTerraforma(c *cli.Context) error { - p.InitPluralClient() - tfs, err := p.GetTerraform(c.Args().First()) - if err != nil { - return api.GetErrorResponse(err, "GetTerraforma") - } - - headers := []string{"Id", "Name", "Description"} - return utils.PrintTable(tfs, headers, func(tf *api.Terraform) ([]string, error) { - return []string{tf.Id, tf.Name, tf.Description}, nil - }) -} - -func (p *Plural) handleVersions(c *cli.Context) error { - p.InitPluralClient() - versions, err := p.GetVersions(c.Args().First()) - if err != nil { - return api.GetErrorResponse(err, "GetVersions") - } - - headers := []string{"Id", "Version"} - return utils.PrintTable(versions, headers, func(v *api.Version) ([]string, error) { - return []string{v.Id, v.Version}, nil - }) -} - -func (p *Plural) handleChartInstallations(c *cli.Context) error { - p.InitPluralClient() - chartInstallations, err := p.GetChartInstallations(c.Args().First()) - if err != nil { - return api.GetErrorResponse(err, "GetChartInstallations") - } - - cis := algorithms.Filter(chartInstallations, func(ci *api.ChartInstallation) bool { - return ci.Chart != nil && ci.Version != nil - }) - - row := func(ci *api.ChartInstallation) ([]string, error) { - return []string{ci.Id, ci.Chart.Id, ci.Chart.Name, ci.Version.Version}, nil - } - headers := []string{"Id", "Chart Id", "Chart Name", "Version"} - return utils.PrintTable(cis, headers, row) -} - -func (p *Plural) handleTerraformInstallations(c *cli.Context) error { - p.InitPluralClient() - terraformInstallations, err := p.GetTerraformInstallations(c.Args().First()) - if err != nil { - return api.GetErrorResponse(err, "GetTerraformInstallations") - } - - tis := algorithms.Filter(terraformInstallations, func(ti *api.TerraformInstallation) bool { - return ti != nil - }) - - headers := []string{"Id", "Terraform Id", "Name"} - return utils.PrintTable(tis, headers, func(ti *api.TerraformInstallation) ([]string, error) { - tf := ti.Terraform - return []string{ti.Id, tf.Id, tf.Name}, nil - }) -} - -func (p *Plural) handleArtifacts(c *cli.Context) error { - p.InitPluralClient() - artifacts, err := p.ListArtifacts(c.Args().First()) - if err != nil { - return api.GetErrorResponse(err, "ListArtifacts") - } - - headers := []string{"Id", "Name", "Platform", "Blob", "Sha"} - return utils.PrintTable(artifacts, headers, func(art api.Artifact) ([]string, error) { - return []string{art.Id, art.Name, art.Platform, art.Blob, art.Sha}, nil - }) -} - func (p *Plural) handleCreateDomain(c *cli.Context) error { p.InitPluralClient() err := p.CreateDomain(c.Args().First()) diff --git a/cmd/command/api/api_test.go b/cmd/command/api/api_test.go deleted file mode 100644 index e940e3d6a..000000000 --- a/cmd/command/api/api_test.go +++ /dev/null @@ -1,436 +0,0 @@ -package api_test - -import ( - "os" - "testing" - - "github.com/pluralsh/plural-cli/cmd/command/plural" - "github.com/pluralsh/plural-cli/pkg/api" - pluralclient "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/test/mocks" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" -) - -func TestListArtifacts(t *testing.T) { - tests := []struct { - name string - args []string - artifacts []api.Artifact - expectedResponse string - expectedError string - }{ - { - name: `test "api list artifacts" with single response`, - args: []string{plural.ApplicationName, "api", "list", "artifacts", "test"}, - artifacts: []api.Artifact{{ - Id: "abc", - Name: "test", - Blob: "test", - Sha: "xyz", - Platform: "aws", - }}, - expectedResponse: `+-----+------+----------+------+-----+ -| ID | NAME | PLATFORM | BLOB | SHA | -+-----+------+----------+------+-----+ -| abc | test | aws | test | xyz | -+-----+------+----------+------+-----+ -`, - }, - { - name: `test "api list artifacts" without {repository-id} parameter`, - args: []string{plural.ApplicationName, "api", "list", "artifacts"}, - expectedError: "Not enough arguments provided: needs {repository-id}. Try running --help to see usage.", - artifacts: []api.Artifact{}, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - if test.expectedError == "" { - client.On("ListArtifacts", mock.AnythingOfType("string")).Return(test.artifacts, nil) - } - app := plural.CreateNewApp(&plural.Plural{Plural: pluralclient.Plural{ - Client: client, - }}) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - if test.expectedError != "" { - assert.Equal(t, err.Error(), test.expectedError) - } else { - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, res) - } - - }) - } -} - -func TestGetInstallations(t *testing.T) { - tests := []struct { - name string - args []string - installations []*api.Installation - expectedResponse string - }{ - { - name: `test "api list installations"`, - args: []string{plural.ApplicationName, "api", "list", "installations"}, - installations: []*api.Installation{ - {Id: "123", Repository: &api.Repository{Id: "abc", Name: "test-1", Publisher: &api.Publisher{Name: "Plural"}}}, - {Id: "456", Repository: &api.Repository{Id: "def", Name: "test-2", Publisher: &api.Publisher{Name: "Plural"}}}, - }, - expectedResponse: `+------------+---------------+-----------+ -| REPOSITORY | REPOSITORY ID | PUBLISHER | -+------------+---------------+-----------+ -| test-1 | abc | Plural | -| test-2 | def | Plural | -+------------+---------------+-----------+ -`, - }, - { - name: `test "api list installations" when Repository is nil`, - args: []string{plural.ApplicationName, "api", "list", "installations"}, - installations: []*api.Installation{{Id: "abc"}}, - expectedResponse: `+------------+---------------+-----------+ -| REPOSITORY | REPOSITORY ID | PUBLISHER | -+------------+---------------+-----------+ -+------------+---------------+-----------+ -`, - }, - { - name: `test "api list installations" when Publisher is nil`, - args: []string{plural.ApplicationName, "api", "list", "installations"}, - installations: []*api.Installation{{Id: "abc", Repository: &api.Repository{Id: "abc", Name: "test"}}}, - expectedResponse: `+------------+---------------+-----------+ -| REPOSITORY | REPOSITORY ID | PUBLISHER | -+------------+---------------+-----------+ -| test | abc | | -+------------+---------------+-----------+ -`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - client.On("GetInstallations").Return(test.installations, nil) - app := plural.CreateNewApp(&plural.Plural{Plural: pluralclient.Plural{ - Client: client, - }}) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - assert.NoError(t, err) - - assert.Equal(t, test.expectedResponse, res) - }) - } -} - -func TestGetCharts(t *testing.T) { - tests := []struct { - name string - args []string - charts []*api.Chart - expectedResponse string - expectedError string - }{ - { - name: `test "api list charts" with single response`, - args: []string{plural.ApplicationName, "api", "list", "charts", "test"}, - charts: []*api.Chart{{ - Id: "123", - Name: "test", - Description: "test chart", - LatestVersion: "0.1.0", - }}, - expectedResponse: `+-----+------+-------------+----------------+ -| ID | NAME | DESCRIPTION | LATEST VERSION | -+-----+------+-------------+----------------+ -| 123 | test | test chart | 0.1.0 | -+-----+------+-------------+----------------+ -`, - }, - { - name: `test "api list charts" without {repository-id} parameter`, - args: []string{plural.ApplicationName, "api", "list", "charts"}, - charts: []*api.Chart{}, - expectedError: "Not enough arguments provided: needs {repository-id}. Try running --help to see usage.", - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - if test.expectedError == "" { - client.On("GetCharts", mock.AnythingOfType("string")).Return(test.charts, nil) - } - app := plural.CreateNewApp(&plural.Plural{Plural: pluralclient.Plural{ - Client: client, - }}) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - if test.expectedError != "" { - assert.Equal(t, err.Error(), test.expectedError) - } else { - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, res) - } - }) - } -} - -func TestGetTerraform(t *testing.T) { - tests := []struct { - name string - args []string - terraform []*api.Terraform - expectedResponse string - expectedError string - }{ - { - name: `test "api list terraform"`, - args: []string{plural.ApplicationName, "api", "list", "terraform", "test"}, - terraform: []*api.Terraform{ - { - Id: "123", - Name: "test-1", - Description: "test terraform", - }, - { - Id: "456", - Name: "test-2", - Description: "test terraform", - }, - }, - expectedResponse: `+-----+--------+----------------+ -| ID | NAME | DESCRIPTION | -+-----+--------+----------------+ -| 123 | test-1 | test terraform | -| 456 | test-2 | test terraform | -+-----+--------+----------------+ -`, - }, - { - name: `test "api list terraform" without {repository-id} parameter`, - args: []string{plural.ApplicationName, "api", "list", "terraform"}, - terraform: []*api.Terraform{}, - expectedError: "Not enough arguments provided: needs {repository-id}. Try running --help to see usage.", - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - if test.expectedError == "" { - client.On("GetTerraform", mock.AnythingOfType("string")).Return(test.terraform, nil) - } - - app := plural.CreateNewApp(&plural.Plural{Plural: pluralclient.Plural{ - Client: client, - }}) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - if test.expectedError != "" { - assert.Equal(t, err.Error(), test.expectedError) - } else { - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, res) - } - }) - } -} - -func TestGetVersons(t *testing.T) { - tests := []struct { - name string - args []string - versions []*api.Version - expectedResponse string - expectedError string - }{ - { - name: `test "api list versions"`, - args: []string{plural.ApplicationName, "api", "list", "versions", "abc"}, - versions: []*api.Version{ - { - Id: "abc", - Version: "1", - }, - { - Id: "abc", - Version: "2", - }, - }, - expectedResponse: `+-----+---------+ -| ID | VERSION | -+-----+---------+ -| abc | 1 | -| abc | 2 | -+-----+---------+ -`, - }, - { - name: `test "api list versions" without {chart-id} parameter`, - args: []string{plural.ApplicationName, "api", "list", "versions"}, - versions: []*api.Version{}, - expectedError: "Not enough arguments provided: needs {chart-id}. Try running --help to see usage.", - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - if test.expectedError == "" { - client.On("GetVersions", mock.AnythingOfType("string")).Return(test.versions, nil) - } - app := plural.CreateNewApp(&plural.Plural{Plural: pluralclient.Plural{ - Client: client, - }}) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - if test.expectedError != "" { - assert.Equal(t, err.Error(), test.expectedError) - } else { - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, res) - } - }) - } -} - -func TestGetChartInstallations(t *testing.T) { - tests := []struct { - name string - args []string - chartInstallations []*api.ChartInstallation - expectedResponse string - expectedError string - }{ - { - name: `test "api list chartinstallations"`, - args: []string{plural.ApplicationName, "api", "list", "chartinstallations", "abc"}, - chartInstallations: []*api.ChartInstallation{ - { - Id: "abc", - Chart: &api.Chart{ - Id: "abc", - Name: "test-1", - }, - Version: &api.Version{ - Version: "1", - }, - }, - { - Id: "abc", - Chart: &api.Chart{ - Id: "abc", - Name: "test-2", - }, - Version: &api.Version{ - Version: "2", - }, - }, - }, - expectedResponse: `+-----+----------+------------+---------+ -| ID | CHART ID | CHART NAME | VERSION | -+-----+----------+------------+---------+ -| abc | abc | test-1 | 1 | -| abc | abc | test-2 | 2 | -+-----+----------+------------+---------+ -`, - }, - { - name: `test "api list chartinstallations" without {repository-id} parameter`, - args: []string{plural.ApplicationName, "api", "list", "chartinstallations"}, - chartInstallations: []*api.ChartInstallation{}, - expectedError: "Not enough arguments provided: needs {repository-id}. Try running --help to see usage.", - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - if test.expectedError == "" { - client.On("GetChartInstallations", mock.AnythingOfType("string")).Return(test.chartInstallations, nil) - } - app := plural.CreateNewApp(&plural.Plural{Plural: pluralclient.Plural{ - Client: client, - }}) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - if test.expectedError != "" { - assert.Equal(t, err.Error(), test.expectedError) - } else { - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, res) - } - }) - } -} - -func TestGetTerraformInstallations(t *testing.T) { - tests := []struct { - name string - args []string - terraformInstallations []*api.TerraformInstallation - expectedResponse string - expectedError string - }{ - { - name: `test "api list terraforminstallations"`, - args: []string{plural.ApplicationName, "api", "list", "terraforminstallations", "abc"}, - terraformInstallations: []*api.TerraformInstallation{ - { - Id: "abc", - Terraform: &api.Terraform{ - Id: "cde", - Name: "tf-1", - }, - }, - { - Id: "abc", - Terraform: &api.Terraform{ - Id: "fgh", - Name: "tf-2", - }, - }, - }, - expectedResponse: `+-----+--------------+------+ -| ID | TERRAFORM ID | NAME | -+-----+--------------+------+ -| abc | cde | tf-1 | -| abc | fgh | tf-2 | -+-----+--------------+------+ -`, - }, - { - name: `test "api list terraforminstallations" without {repository-id} parameter`, - args: []string{plural.ApplicationName, "api", "list", "terraforminstallations"}, - terraformInstallations: []*api.TerraformInstallation{}, - expectedError: "Not enough arguments provided: needs {repository-id}. Try running --help to see usage.", - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - if test.expectedError == "" { - client.On("GetTerraformInstallations", mock.AnythingOfType("string")).Return(test.terraformInstallations, nil) - } - app := plural.CreateNewApp(&plural.Plural{Plural: pluralclient.Plural{ - Client: client, - }}) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - if test.expectedError != "" { - assert.Equal(t, err.Error(), test.expectedError) - } else { - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, res) - } - }) - } -} diff --git a/cmd/command/auth/auth.go b/cmd/command/auth/auth.go index 2310253d7..2edb7d939 100644 --- a/cmd/command/auth/auth.go +++ b/cmd/command/auth/auth.go @@ -22,7 +22,7 @@ func Command(clients client.Plural) cli.Command { } return cli.Command{ Name: "auth", - Usage: "Handles authentication to the plural api", + Usage: "handles authentication to the plural api", Subcommands: p.authCommands(), } } diff --git a/cmd/command/bounce/bounce.go b/cmd/command/bounce/bounce.go deleted file mode 100644 index 84ca08c72..000000000 --- a/cmd/command/bounce/bounce.go +++ /dev/null @@ -1,77 +0,0 @@ -package bounce - -import ( - "os" - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/plural-cli/pkg/wkspace" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/urfave/cli" -) - -type Plural struct { - Plural client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "bounce", - Aliases: []string{"b"}, - Usage: "redeploys the charts in a workspace", - ArgsUsage: "{app}", - Action: common.LatestVersion(common.RequireArgs(common.InitKubeconfig(common.Owned(p.bounce)), []string{"{app}"})), - } -} - -func (p *Plural) bounce(c *cli.Context) error { - p.Plural.InitPluralClient() - repoRoot, err := git.Root() - if err != nil { - return err - } - repoName := c.Args().Get(0) - - if repoName != "" { - installation, err := p.Plural.GetInstallation(repoName) - if err != nil { - return api.GetErrorResponse(err, "GetInstallation") - } - return p.doBounce(repoRoot, installation) - } - - installations, err := client.GetSortedInstallations(p.Plural, repoName) - if err != nil { - return err - } - - for _, installation := range installations { - if err := p.doBounce(repoRoot, installation); err != nil { - return err - } - } - return nil -} - -func (p *Plural) doBounce(repoRoot string, installation *api.Installation) error { - p.Plural.InitPluralClient() - repoName := installation.Repository.Name - utils.Warn("bouncing deployments in %s\n", repoName) - workspace, err := wkspace.New(p.Plural.Client, installation) - if err != nil { - return err - } - - if err := os.Chdir(pathing.SanitizeFilepath(filepath.Join(repoRoot, repoName))); err != nil { - return err - } - return workspace.Bounce() -} diff --git a/cmd/command/buildcmd/build.go b/cmd/command/buildcmd/build.go deleted file mode 100644 index 72e1c29d5..000000000 --- a/cmd/command/buildcmd/build.go +++ /dev/null @@ -1,70 +0,0 @@ -package buildcmd - -import ( - "fmt" - - "github.com/pluralsh/plural-cli/cmd/command/crypto" - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/errors" - "github.com/urfave/cli" -) - -type Plural struct { - Plural client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "build", - Aliases: []string{"bld"}, - Usage: "builds your workspace", - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "only", - Usage: "repository to (re)build", - }, - cli.BoolFlag{ - Name: "force", - Usage: "force workspace to build even if remote is out of sync", - }, - }, - Action: common.Tracked(common.Rooted(common.LatestVersion(common.Owned(common.UpstreamSynced(p.build)))), "cli.build"), - } -} - -func (p *Plural) build(c *cli.Context) error { - p.Plural.InitPluralClient() - force := c.Bool("force") - if err := crypto.CheckGitCrypt(c); err != nil { - return errors.ErrorWrap(common.ErrNoGit, "Failed to scan your repo for secrets to encrypt them") - } - - if c.IsSet("only") { - installation, err := p.Plural.GetInstallation(c.String("only")) - if err != nil { - return api.GetErrorResponse(err, "GetInstallation") - } else if installation == nil { - return utils.HighlightError(fmt.Errorf("%s is not installed. Please install it with `plural bundle install`", c.String("only"))) - } - - return common.DoBuild(p.Plural.Client, installation, force) - } - - installations, err := client.GetSortedInstallations(p.Plural, "") - if err != nil { - return err - } - - for _, installation := range installations { - if err := common.DoBuild(p.Plural.Client, installation, force); err != nil { - return err - } - } - return nil -} diff --git a/cmd/command/bundle/bundle.go b/cmd/command/bundle/bundle.go deleted file mode 100644 index df0d1737a..000000000 --- a/cmd/command/bundle/bundle.go +++ /dev/null @@ -1,106 +0,0 @@ -package bundle - -import ( - "fmt" - - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/urfave/cli" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/bundle" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "bundle", - Usage: "Commands for installing and discovering installation bundles", - Subcommands: p.bundleCommands(), - } -} - -func (p *Plural) bundleCommands() []cli.Command { - return []cli.Command{ - { - Name: "list", - Usage: "lists bundles for a repository", - ArgsUsage: "{repo}", - Action: common.LatestVersion(common.Rooted(common.RequireArgs(p.bundleList, []string{"{repo}"}))), - }, - { - Name: "install", - Usage: "installs a bundle and writes the configuration to this installation's context", - ArgsUsage: "{repo} {bundle}", - Flags: []cli.Flag{ - cli.BoolFlag{ - Name: "refresh", - Usage: "re-enter the configuration for this bundle", - }, - }, - Action: common.Tracked(common.LatestVersion(common.Rooted(p.bundleInstall)), "bundle.install"), - }, - } -} - -func (p *Plural) bundleList(c *cli.Context) error { - repo := c.Args().Get(0) - p.InitPluralClient() - recipes, err := p.listRecipes(repo) - if err != nil { - return api.GetErrorResponse(err, "ListRecipes") - } - - headers := []string{"Name", "Description", "Provider", "Install Command"} - return utils.PrintTable(recipes, headers, func(recipe *api.Recipe) ([]string, error) { - return []string{recipe.Name, recipe.Description, recipe.Provider, fmt.Sprintf("plural bundle install %s %s", repo, recipe.Name)}, nil - }) -} - -func (p *Plural) bundleInstall(c *cli.Context) (err error) { - args := c.Args() - p.InitPluralClient() - repo := args.Get(0) - if repo == "" { - return fmt.Errorf("REPO argument required, try running `plural bundle install REPO` for the app you want to install") - } - - bdl := args.Get(1) - if bdl == "" { - recipes, err := p.listRecipes(args.Get(0)) - if err != nil { - return err - } - for _, recipe := range recipes { - if recipe.Primary { - bdl = recipe.Name - break - } - } - - if bdl == "" { - return fmt.Errorf("you need to specify a bundle name, run `plural bundle list %s` to find eligible bundles then `plural bundle install %s ` to install", repo, repo) - } - } - - err = bundle.Install(p.Client, repo, bdl, c.Bool("refresh")) - utils.Note("To edit the configuration you've just entered, edit the context.yaml file at the root of your repo, or run with the --refresh flag\n") - return -} - -func (p *Plural) listRecipes(repo string) (res []*api.Recipe, err error) { - man, err := manifest.FetchProject() - if err != nil { - return - } - res, err = p.ListRecipes(repo, man.Provider) - return -} diff --git a/cmd/command/bundle/bundle_test.go b/cmd/command/bundle/bundle_test.go deleted file mode 100644 index 3984f7bff..000000000 --- a/cmd/command/bundle/bundle_test.go +++ /dev/null @@ -1,171 +0,0 @@ -package bundle_test - -import ( - "os" - "testing" - - "github.com/pluralsh/plural-cli/pkg/manifest" - - pluralclient "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - - "github.com/pluralsh/plural-cli/cmd/command/plural" - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/test/mocks" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" - "gopkg.in/yaml.v2" -) - -func TestBundleList(t *testing.T) { - tests := []struct { - name string - args []string - recipe []*api.Recipe - expectedResponse string - }{ - { - name: `test "bundle list"`, - args: []string{plural.ApplicationName, "bundle", "list", "test"}, - recipe: []*api.Recipe{ - { - Id: "123", - Name: "test", - Provider: "aws", - Description: "test application", - }, - }, - expectedResponse: `+------+------------------+----------+--------------------------------+ -| NAME | DESCRIPTION | PROVIDER | INSTALL COMMAND | -+------+------------------+----------+--------------------------------+ -| test | test application | aws | plural bundle install test | -| | | | test | -+------+------------------+----------+--------------------------------+ -`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - currentDir, err := os.Getwd() - assert.NoError(t, err) - dir, err := os.MkdirTemp("", "config") - assert.NoError(t, err) - defer func(path, currentDir string) { - _ = os.RemoveAll(path) - _ = os.Chdir(currentDir) - }(dir, currentDir) - err = os.Chdir(dir) - assert.NoError(t, err) - _, err = git.Init() - assert.NoError(t, err) - - data, err := yaml.Marshal(manifest.ProjectManifest{ - Cluster: "test", - Bucket: "test", - Project: "test", - Provider: "test", - Region: "test", - }) - assert.NoError(t, err) - err = os.WriteFile("workspace.yaml", data, os.FileMode(0755)) - assert.NoError(t, err) - - client := mocks.NewClient(t) - client.On("ListRecipes", mock.AnythingOfType("string"), mock.AnythingOfType("string")).Return(test.recipe, nil) - app := plural.CreateNewApp(&plural.Plural{Plural: pluralclient.Plural{Client: client}}) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - assert.NoError(t, err) - - assert.Equal(t, test.expectedResponse, res) - }) - } -} - -func TestBundleInstallNoGitRootDirectory(t *testing.T) { - tests := []struct { - name string - args []string - expectedResponse string - }{ - { - name: `test "bundle install" when no root directory`, - args: []string{plural.ApplicationName, "bundle", "install", "repo-test", "bundle-test"}, - expectedResponse: `You must run this command at the root of your git repository`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - app := plural.CreateNewApp(&plural.Plural{Plural: pluralclient.Plural{Client: client}}) - app.HelpName = plural.ApplicationName - os.Args = test.args - _, err := common.CaptureStdout(app, os.Args) - - assert.Error(t, err) - assert.Equal(t, test.expectedResponse, err.Error()) - }) - } -} - -func TestBundleInstall(t *testing.T) { - tests := []struct { - name string - args []string - recipe *api.Recipe - expectedResponse string - }{ - { - name: `test "bundle install"`, - args: []string{plural.ApplicationName, "bundle", "install", "repo-test", "bundle-test"}, - recipe: &api.Recipe{ - Id: "123", - Name: "test", - Provider: "aws", - Description: "test application", - RecipeSections: []*api.RecipeSection{ - { - Id: "456", - Repository: &api.Repository{ - Id: "", - Name: "bootstrap", - Description: "test bootstrap repo", - }, - RecipeItems: nil, - Configuration: nil, - }, - }, - }, - expectedResponse: "\x1b[2J\x1b[H test bootstrap repo\n", - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - // create temp environment - currentDir, err := os.Getwd() - assert.NoError(t, err) - dir, err := os.MkdirTemp("", "config") - assert.NoError(t, err) - defer func(path, currentDir string) { - _ = os.RemoveAll(path) - _ = os.Chdir(currentDir) - }(dir, currentDir) - err = os.Chdir(dir) - assert.NoError(t, err) - _, err = git.Init() - assert.NoError(t, err) - - client := mocks.NewClient(t) - client.On("GetRecipe", mock.AnythingOfType("string"), mock.AnythingOfType("string")).Return(test.recipe, nil) - client.On("InstallRecipe", mock.AnythingOfType("string")).Return(nil) - app := plural.CreateNewApp(&plural.Plural{Plural: pluralclient.Plural{Client: client}}) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, res) - }) - } -} diff --git a/cmd/command/cd/cd.go b/cmd/command/cd/cd.go index 2e36a6b74..b3edbbbb4 100644 --- a/cmd/command/cd/cd.go +++ b/cmd/command/cd/cd.go @@ -74,7 +74,6 @@ func Commands(clients client.Plural, helmConfiguration *action.Configuration) [] p.cdPipelines(), p.cdNotifications(), p.cdSettings(), - p.cdStacks(), { Name: "install", Action: p.handleInstallDeploymentsOperator, diff --git a/cmd/command/clusters/clusters.go b/cmd/command/clusters/clusters.go deleted file mode 100644 index 7c3623d08..000000000 --- a/cmd/command/clusters/clusters.go +++ /dev/null @@ -1,207 +0,0 @@ -package clusters - -import ( - "fmt" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/urfave/cli" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "clusters", - Usage: "commands related to managing plural clusters", - Subcommands: p.clusterCommands(), - } -} - -func (p *Plural) clusterCommands() []cli.Command { - return []cli.Command{ - { - Name: "list", - Usage: "lists clusters accessible to your user", - Action: common.LatestVersion(p.listClusters), - }, - { - Name: "transfer", - Usage: "transfers ownership of the current cluster to another", - Action: common.LatestVersion(common.Rooted(p.transferOwnership)), - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "email", - Usage: "the email of the new owner", - }, - }, - }, - { - Name: "view", - Usage: "shows info for a cluster", - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "id", - Usage: "the id of the source cluster", - }, - }, - Action: common.LatestVersion(p.showCluster), - }, - { - Name: "depend", - Usage: "have a cluster wait for promotion on another cluster", - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "source-id", - Usage: "the id of the source cluster", - }, - cli.StringFlag{ - Name: "dest-id", - Usage: "the id of the cluster waiting for promotion", - }, - }, - Action: common.LatestVersion(p.dependCluster), - }, - { - Name: "promote", - Usage: "promote pending upgrades to your cluster", - Action: common.LatestVersion(p.promoteCluster), - }, - } -} - -func (p *Plural) listClusters(c *cli.Context) error { - p.InitPluralClient() - clusters, err := p.Client.Clusters() - if err != nil { - return err - } - - headers := []string{"ID", "Name", "Provider", "Git Url", "Owner"} - return utils.PrintTable(clusters, headers, func(c *api.Cluster) ([]string, error) { - return []string{c.Id, c.Name, c.Provider, c.GitUrl, c.Owner.Email}, nil - }) -} - -func (p *Plural) transferOwnership(c *cli.Context) error { - p.InitPluralClient() - email := c.String("email") - man, err := manifest.FetchProject() - if err != nil { - return err - } - - if err := p.TransferOwnership(man.Cluster, email); err != nil { - return api.GetErrorResponse(err, "TransferOwnership") - } - - man.Owner.Email = email - if err := man.Flush(); err != nil { - return err - } - - if err := p.AssumeServiceAccount(config.Read(), man); err != nil { - return err - } - - utils.Highlight("rebuilding bootstrap and console to sync your cluster with the new owner:\n") - - for _, app := range []string{"bootstrap", "console"} { - installation, err := p.GetInstallation(app) - if err != nil { - return api.GetErrorResponse(err, "GetInstallation") - } else if installation == nil { - continue - } - - if err := common.DoBuild(p.Client, installation, false); err != nil { - return err - } - } - - utils.Highlight("deploying rebuilt applications\n") - if err := p.Deploy(c); err != nil { - return err - } - - utils.Success("Ownership successfully transferred to %s", email) - return nil -} - -func (p *Plural) showCluster(c *cli.Context) error { - p.InitPluralClient() - id := c.String("id") - if id == "" { - clusters, err := p.Client.Clusters() - if err != nil { - return err - } - - project, err := manifest.FetchProject() - if err != nil { - return err - } - for _, cluster := range clusters { - if cluster.Name == project.Cluster && cluster.Owner.Email == project.Owner.Email { - id = cluster.Id - break - } - } - } - cluster, err := p.Client.Cluster(id) - if err != nil { - return err - } - - fmt.Printf("Cluster %s:\n\n", cluster.Id) - - utils.PrintAttributes(map[string]string{ - "Id": cluster.Id, - "Name": cluster.Name, - "Provider": cluster.Provider, - "Git Url": cluster.GitUrl, - "Owner": cluster.Owner.Email, - }) - - fmt.Println("") - if len(cluster.UpgradeInfo) > 0 { - fmt.Printf("Pending Upgrades:\n\n") - headers := []string{"Repository", "Count"} - return utils.PrintTable(cluster.UpgradeInfo, headers, func(c *api.UpgradeInfo) ([]string, error) { - return []string{c.Installation.Repository.Name, fmt.Sprintf("%d", c.Count)}, nil - }) - } - - fmt.Println("No pending upgrades") - return nil -} - -func (p *Plural) dependCluster(c *cli.Context) error { - p.InitPluralClient() - source, dest := c.String("source-id"), c.String("dest-id") - if err := p.Client.CreateDependency(source, dest); err != nil { - return err - } - - utils.Highlight("Cluster %s will now delegate upgrades to %s", dest, source) - return nil -} - -func (p *Plural) promoteCluster(c *cli.Context) error { - p.InitPluralClient() - if err := p.Client.PromoteCluster(); err != nil { - return err - } - - utils.Success("Upgrades promoted!") - return nil -} diff --git a/cmd/command/deploy/deploy.go b/cmd/command/deploy/deploy.go deleted file mode 100644 index 964a366a3..000000000 --- a/cmd/command/deploy/deploy.go +++ /dev/null @@ -1,53 +0,0 @@ -package deploy - -import ( - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/urfave/cli" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "deploy", - Aliases: []string{"d"}, - Usage: "Deploys the current workspace. This command will first sniff out git diffs in workspaces, topsort them, then apply all changes.", - Flags: []cli.Flag{ - cli.BoolFlag{ - Name: "silence", - Usage: "don't display notes for deployed apps", - }, - cli.BoolFlag{ - Name: "verbose", - Usage: "show all command output during execution", - }, - cli.BoolFlag{ - Name: "ignore-console", - Usage: "don't deploy the plural console", - }, - cli.BoolFlag{ - Name: "all", - Usage: "deploy all repos irregardless of changes", - }, - cli.StringFlag{ - Name: "commit", - Usage: "commits your changes with this message", - }, - cli.StringSliceFlag{ - Name: "from", - Usage: "deploys only this application and its dependencies", - }, - cli.BoolFlag{ - Name: "force", - Usage: "use force push when pushing to git", - }, - }, - Action: common.Tracked(common.LatestVersion(common.Owned(common.Rooted(p.Deploy))), "cli.deploy"), - } -} diff --git a/cmd/command/destroy/destroy.go b/cmd/command/destroy/destroy.go deleted file mode 100644 index 35ea9962d..000000000 --- a/cmd/command/destroy/destroy.go +++ /dev/null @@ -1,163 +0,0 @@ -package destroy - -import ( - "fmt" - "os" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/wkspace" - "github.com/urfave/cli" -) - -type Plural struct { - Plural client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "destroy", - Aliases: []string{"d"}, - Usage: "iterates through all installations in reverse topological order, deleting helm installations and terraform", - ArgsUsage: "{app}", - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "from", - Usage: "where to start your deploy command (useful when restarting interrupted destroys)", - }, - cli.StringFlag{ - Name: "commit", - Usage: "commits your changes with this message", - }, - cli.BoolFlag{ - Name: "force", - Usage: "use force push when pushing to git", - }, - cli.BoolFlag{ - Name: "all", - Usage: "tear down the entire cluster gracefully in one go", - }, - }, - Action: common.Tracked(common.LatestVersion(common.Owned(common.UpstreamSynced(p.destroy))), "cli.destroy"), - } -} - -func (p *Plural) destroy(c *cli.Context) error { - p.Plural.InitPluralClient() - repoName := c.Args().Get(0) - repoRoot, err := git.Root() - if err != nil { - return err - } - force := c.Bool("force") - all := c.Bool("all") - - infix := "this workspace" - if repoName != "" { - infix = repoName - } else if !all { - return fmt.Errorf("you must either specify an individual application or `--all` to destroy the entire workspace") - } - - if !force && !common.Confirm(fmt.Sprintf("Are you sure you want to destroy %s?", infix), "PLURAL_DESTROY_CONFIRM") { - return nil - } - - delete := force || common.Affirm("Do you want to uninstall your applications from the plural api as well?", "PLURAL_DESTROY_AFFIRM_UNINSTALL_APPS") - - if repoName != "" { - installation, err := p.Plural.GetInstallation(repoName) - if err != nil { - return api.GetErrorResponse(err, "GetInstallation") - } - - if installation == nil { - return fmt.Errorf("No installation for app %s to destroy, if the app is still in your repo, you can always run cd %s/terraform && terraform destroy", repoName, repoName) - } - - return p.doDestroy(repoRoot, installation, delete) - } - - installations, err := client.GetSortedInstallations(p.Plural, repoName) - if err != nil { - return err - } - - from := c.String("from") - started := from == "" - for i := len(installations) - 1; i >= 0; i-- { - installation := installations[i] - if installation.Repository.Name == from { - started = true - } - - if !started { - continue - } - - if err := p.doDestroy(repoRoot, installation, delete); err != nil { - return err - } - } - - man, _ := manifest.FetchProject() - if err := p.Plural.DeleteEabCredential(man.Cluster, man.Provider); err != nil { - fmt.Printf("no eab key to delete %s\n", err) - } - - if repoName == "" { - utils.Success("Finished destroying workspace\n") - utils.Note("if you want to recreate this workspace, be sure to rename the cluster to ensure a clean redeploy") - man, err := manifest.FetchProject() - if err != nil { - return err - } - if err := p.Plural.DestroyCluster(man.Network.Subdomain, man.Cluster, man.Provider); err != nil { - return api.GetErrorResponse(err, "DestroyCluster") - } - } - - utils.Highlight("\n==> Commit and push your changes to record your workspace changes\n\n") - - if commit := common.CommitMsg(c); commit != "" { - utils.Highlight("Pushing upstream...\n") - return git.Sync(repoRoot, commit, force) - } - - return nil -} - -func (p *Plural) doDestroy(repoRoot string, installation *api.Installation, delete bool) error { - p.Plural.InitPluralClient() - if err := os.Chdir(repoRoot); err != nil { - return err - } - repo := installation.Repository.Name - if ctx, err := manifest.FetchContext(); err == nil && ctx.Protected(repo) { - return fmt.Errorf("This app is protected, you cannot plural destroy without updating context.yaml") - } - - utils.Error("\nDestroying application %s\n", repo) - workspace, err := wkspace.New(p.Plural.Client, installation) - if err != nil { - return err - } - - if err := workspace.Destroy(); err != nil { - return err - } - - if delete { - utils.Highlight("Uninstalling %s from the plural api as well...\n", repo) - return p.Plural.Client.DeleteInstallation(installation.Id) - } - - return nil -} diff --git a/cmd/command/info/info.go b/cmd/command/info/info.go deleted file mode 100644 index f3b30926b..000000000 --- a/cmd/command/info/info.go +++ /dev/null @@ -1,40 +0,0 @@ -package info - -import ( - "fmt" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/scaffold" - "github.com/urfave/cli" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "info", - Usage: "Get information for your installation of APP", - ArgsUsage: "{app}", - Action: common.LatestVersion(common.RequireArgs(common.Owned(common.Rooted(p.info)), []string{"{app}"})), - } -} -func (p *Plural) info(c *cli.Context) error { - p.InitPluralClient() - repo := c.Args().Get(0) - installation, err := p.GetInstallation(repo) - if err != nil { - return api.GetErrorResponse(err, "GetInstallation") - } - if installation == nil { - return fmt.Errorf("You have not installed %s", repo) - } - - return scaffold.Notes(installation) -} diff --git a/cmd/command/link/link.go b/cmd/command/link/link.go deleted file mode 100644 index 09688848a..000000000 --- a/cmd/command/link/link.go +++ /dev/null @@ -1,80 +0,0 @@ -package link - -import ( - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/urfave/cli" -) - -func Commands() []cli.Command { - return []cli.Command{ - { - Name: "link", - Usage: "links a local package into an installation repo", - ArgsUsage: "{tool} {repo}", - Action: handleLink, - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "name, n", - Usage: "the name of the artifact to link", - }, - cli.StringFlag{ - Name: "path, f", - Usage: "local path to that artifact (can be relative)", - }, - }, - }, - { - Name: "unlink", - Usage: "unlinks a linked package", - ArgsUsage: "{repo} {tool} {name}", - Action: handleUnlink, - }, - } -} - -func handleLink(c *cli.Context) error { - tool, repo := c.Args().Get(0), c.Args().Get(1) - name, path := c.String("name"), c.String("path") - - if name == "" { - name = filepath.Base(path) - } - - manPath, err := manifest.ManifestPath(repo) - if err != nil { - return err - } - - man, err := manifest.Read(manPath) - if err != nil { - return err - } - - man.AddLink(tool, name, path) - - return man.Write(manPath) -} - -func handleUnlink(c *cli.Context) error { - repo, tool := c.Args().Get(0), c.Args().Get(1) - - manPath, err := manifest.ManifestPath(repo) - if err != nil { - return err - } - - man, err := manifest.Read(manPath) - if err != nil { - return err - } - - if tool == "all" { - man.UnlinkAll() - } else { - man.Unlink(tool, c.Args().Get(2)) - } - - return man.Write(manPath) -} diff --git a/cmd/command/log/logs.go b/cmd/command/log/logs.go deleted file mode 100644 index 03f12bdd6..000000000 --- a/cmd/command/log/logs.go +++ /dev/null @@ -1,66 +0,0 @@ -package log - -import ( - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/logs" - "github.com/urfave/cli" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "logs", - Usage: "Commands for tailing logs for specific apps", - Subcommands: p.logsCommands(), - Category: "Debugging", - } -} - -func (p *Plural) logsCommands() []cli.Command { - return []cli.Command{ - { - Name: "list", - Usage: "lists log tails for a repo", - ArgsUsage: "{repo}", - Action: common.LatestVersion(common.InitKubeconfig(common.RequireArgs(p.handleLogsList, []string{"{repo}"}))), - }, - { - Name: "tail", - Usage: "execs the specific logtail", - ArgsUsage: "{repo} {name}", - Action: common.LatestVersion(common.InitKubeconfig(common.RequireArgs(p.handleLogTail, []string{"{repo}", "{name}"}))), - }, - } -} - -func (p *Plural) handleLogsList(c *cli.Context) error { - repo := c.Args().Get(0) - conf := config.Read() - if err := p.InitKube(); err != nil { - return err - } - tails, err := logs.List(p.Kube, conf.Namespace(repo)) - if err != nil { - return err - } - - return logs.Print(tails) -} - -func (p *Plural) handleLogTail(c *cli.Context) error { - repo := c.Args().Get(0) - name := c.Args().Get(1) - conf := config.Read() - if err := p.InitKube(); err != nil { - return err - } - return logs.Tail(p.Kube, conf.Namespace(repo), name) -} diff --git a/cmd/command/log/logs_test.go b/cmd/command/log/logs_test.go deleted file mode 100644 index 4ef6cde22..000000000 --- a/cmd/command/log/logs_test.go +++ /dev/null @@ -1,58 +0,0 @@ -package log_test - -import ( - "os" - "testing" - - pluralclient "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - - "github.com/pluralsh/plural-cli/cmd/command/plural" - "github.com/pluralsh/plural-cli/pkg/test/mocks" - "github.com/pluralsh/plural-operator/apis/platform/v1alpha1" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" -) - -func TestLogsList(t *testing.T) { - tests := []struct { - name string - args []string - expectedError string - }{ - { - name: `test "logs list" without repo name`, - args: []string{plural.ApplicationName, "logs", "list"}, - expectedError: "Not enough arguments provided: needs {repo}. Try running --help to see usage.", - }, - { - name: `test "logs list" with repo name`, - args: []string{plural.ApplicationName, "logs", "list", "test"}, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - kube := mocks.NewKube(t) - if test.expectedError == "" { - kube.On("LogTailList", mock.AnythingOfType("string")).Return(&v1alpha1.LogTailList{Items: []v1alpha1.LogTail{}}, nil) - } - app := plural.CreateNewApp(&plural.Plural{ - Plural: pluralclient.Plural{ - Client: client, - Kube: kube, - }, - }) - app.HelpName = plural.ApplicationName - os.Args = test.args - _, err := common.CaptureStdout(app, os.Args) - if test.expectedError != "" { - assert.Equal(t, test.expectedError, err.Error()) - } else { - assert.NoError(t, err) - kube.AssertCalled(t, "LogTailList", mock.AnythingOfType("string")) - } - - }) - } -} diff --git a/cmd/command/mgmt/managment.go b/cmd/command/mgmt/managment.go index 4b799decd..94a1af7c9 100644 --- a/cmd/command/mgmt/managment.go +++ b/cmd/command/mgmt/managment.go @@ -17,7 +17,7 @@ func Command(clients client.Plural) cli.Command { return cli.Command{ Name: "management", Aliases: []string{"mgmt"}, - Usage: "Commands for managing installations in your workspace", + Usage: "manages installations in your workspace", Subcommands: p.managementCommands(), Category: "Workspace", } diff --git a/cmd/command/ops/ops.go b/cmd/command/ops/ops.go deleted file mode 100644 index c6fdc6860..000000000 --- a/cmd/command/ops/ops.go +++ /dev/null @@ -1,80 +0,0 @@ -package ops - -import ( - "fmt" - - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/provider" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/urfave/cli" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "ops", - Usage: "Commands for simplifying cluster operations", - Subcommands: p.opsCommands(), - Category: "Debugging", - } -} - -func (p *Plural) opsCommands() []cli.Command { - return []cli.Command{ - { - Name: "terminate", - Usage: "terminates a worker node in your cluster", - ArgsUsage: "{name}", - Action: common.LatestVersion(common.RequireArgs(common.InitKubeconfig(p.handleTerminateNode), []string{"{name}"})), - }, - { - Name: "cluster", - Usage: "list the nodes in your cluster", - Action: common.LatestVersion(common.InitKubeconfig(p.handleListNodes)), - }, - } -} - -func (p *Plural) handleListNodes(c *cli.Context) error { - if err := p.InitKube(); err != nil { - return err - } - nodes, err := p.Nodes() - if err != nil { - return err - } - return common.PrintListNodes(nodes) -} - -func (p *Plural) handleTerminateNode(c *cli.Context) error { - name := c.Args().Get(0) - provider, err := getProvider() - if err != nil { - return err - } - if err := p.InitKube(); err != nil { - return err - } - node, err := p.Node(name) - if err != nil { - return err - } - - return provider.Decommision(node) -} - -func getProvider() (provider.Provider, error) { - _, found := utils.ProjectRoot() - if !found { - return nil, fmt.Errorf("project not initialized, run `plural init` to set up a workspace") - } - - return provider.GetProvider() -} diff --git a/cmd/command/ops/ops_test.go b/cmd/command/ops/ops_test.go deleted file mode 100644 index 22e8642d3..000000000 --- a/cmd/command/ops/ops_test.go +++ /dev/null @@ -1,140 +0,0 @@ -package ops_test - -import ( - "os" - "testing" - - "github.com/pluralsh/plural-cli/pkg/common" - - "github.com/pluralsh/plural-cli/cmd/command/plural" - clientcmd "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/test/mocks" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" - "gopkg.in/yaml.v2" - - v1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -func TestListNodes(t *testing.T) { - tests := []struct { - name string - args []string - nodes *v1.NodeList - expectedResponse string - }{ - { - name: `test "ops cluster"`, - args: []string{plural.ApplicationName, "ops", "cluster"}, - nodes: &v1.NodeList{ - Items: []v1.Node{ - { - ObjectMeta: metav1.ObjectMeta{Name: "cluster-1"}, - Spec: v1.NodeSpec{}, - Status: v1.NodeStatus{}, - }, - { - ObjectMeta: metav1.ObjectMeta{Name: "cluster-2"}, - Spec: v1.NodeSpec{}, - Status: v1.NodeStatus{}, - }, - }, - }, - expectedResponse: `+-----------+-----+--------+--------+------+ -| NAME | CPU | MEMORY | REGION | ZONE | -+-----------+-----+--------+--------+------+ -| cluster-1 | 0 | 0 | | | -| cluster-2 | 0 | 0 | | | -+-----------+-----+--------+--------+------+ -`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - kube := mocks.NewKube(t) - kube.On("Nodes").Return(test.nodes, nil) - app := plural.CreateNewApp(&plural.Plural{ - Plural: clientcmd.Plural{ - Client: client, - Kube: kube, - }, - }) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - assert.NoError(t, err) - - assert.Equal(t, test.expectedResponse, res) - }) - } -} - -func TestTerminate(t *testing.T) { - tests := []struct { - name string - args []string - node *v1.Node - pm manifest.ProjectManifest - expectedResponse string - }{ - { - name: `test "ops terminate"`, - args: []string{plural.ApplicationName, "ops", "terminate", "cluster-1"}, - node: &v1.Node{ - - ObjectMeta: metav1.ObjectMeta{Name: "cluster-1"}, - Spec: v1.NodeSpec{}, - Status: v1.NodeStatus{}, - }, - pm: manifest.ProjectManifest{ - Cluster: "test", - Bucket: "test", - Project: "test", - Provider: "test", - Region: "test", - }, - expectedResponse: ``, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - // create temp environment - currentDir, err := os.Getwd() - assert.NoError(t, err) - dir, err := os.MkdirTemp("", "config") - assert.NoError(t, err) - defer func(path, currentDir string) { - _ = os.RemoveAll(path) - _ = os.Chdir(currentDir) - }(dir, currentDir) - err = os.Chdir(dir) - assert.NoError(t, err) - _, err = git.Init() - assert.NoError(t, err) - data, err := yaml.Marshal(test.pm) - assert.NoError(t, err) - err = os.WriteFile("workspace.yaml", data, os.FileMode(0755)) - assert.NoError(t, err) - - client := mocks.NewClient(t) - kube := mocks.NewKube(t) - kube.On("Node", mock.AnythingOfType("string")).Return(test.node, nil) - app := plural.CreateNewApp(&plural.Plural{ - Plural: clientcmd.Plural{ - Client: client, - Kube: kube, - }, - }) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - assert.NoError(t, err) - - assert.Equal(t, test.expectedResponse, res) - }) - } -} diff --git a/cmd/command/output/output.go b/cmd/command/output/output.go deleted file mode 100644 index 3b6c543b9..000000000 --- a/cmd/command/output/output.go +++ /dev/null @@ -1,55 +0,0 @@ -package output - -import ( - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/common" - - "github.com/pluralsh/plural-cli/pkg/output" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/urfave/cli" -) - -func Command() cli.Command { - return cli.Command{ - Name: "output", - Usage: "Commands for generating outputs from supported tools", - Subcommands: outputCommands(), - Category: "Workspace", - } -} - -func outputCommands() []cli.Command { - return []cli.Command{ - { - Name: "terraform", - Usage: "generates terraform output", - ArgsUsage: "{repo}", - Action: common.LatestVersion(common.RequireArgs(handleTerraformOutput, []string{"{repo}"})), - }, - } -} - -func outputPath(root, app string) string { - return pathing.SanitizeFilepath(filepath.Join(root, app, "output.yaml")) -} - -func handleTerraformOutput(c *cli.Context) (err error) { - root, _ := utils.ProjectRoot() - app := c.Args().Get(0) - path := outputPath(root, app) - out, err := output.Read(path) - if err != nil { - out = output.New() - } - - tfOut, err := output.TerraformOutput(pathing.SanitizeFilepath(filepath.Join(root, app, "terraform"))) - if err != nil { - return - } - - out.Terraform = tfOut - err = out.Save(app, path) - return -} diff --git a/cmd/command/packages/packages.go b/cmd/command/packages/packages.go deleted file mode 100644 index e39a13f64..000000000 --- a/cmd/command/packages/packages.go +++ /dev/null @@ -1,200 +0,0 @@ -package packages - -import ( - "fmt" - "os" - - "github.com/pluralsh/plural-cli/pkg/client" - - "github.com/pluralsh/plural-cli/pkg/common" - - "github.com/pluralsh/plural-cli/pkg/api" - - "github.com/olekukonko/tablewriter" - "github.com/urfave/cli" - - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/wkspace" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "packages", - Usage: "Commands for managing your installed packages", - Subcommands: p.packagesCommands(), - } -} - -func (p *Plural) packagesCommands() []cli.Command { - return []cli.Command{ - { - Name: "install", - Usage: "installs a package at a specific version", - ArgsUsage: "{helm|terraform} {repo} {name} {version}", - Action: common.Affirmed(common.RequireArgs(p.installPackage, []string{"{type}", "{repo}", "{name}", "{version}"}), "Are you sure you want to install this package?", "PLURAL_PACKAGES_INSTALL"), - }, - { - Name: "uninstall", - Usage: "uninstall a helm or terraform package", - ArgsUsage: "{helm|terraform} {repo} {name}", - Action: common.LatestVersion(common.Affirmed(common.RequireArgs(common.Rooted(p.uninstallPackage), []string{"{type}", "{repo}", "{name}"}), "Are you sure you want to uninstall this package?", "PLURAL_PACKAGES_UNINSTALL")), - }, - { - Name: "list", - Usage: "lists the packages installed for a given repo", - ArgsUsage: "{repo}", - Action: common.LatestVersion(common.RequireArgs(common.Rooted(p.listPackages), []string{"{repo}"})), - }, - { - Name: "show", - Usage: "shows version information for packages within a plural repo", - Subcommands: p.showCommands(), - }, - } -} - -func (p *Plural) showCommands() []cli.Command { - return []cli.Command{ - { - Name: "helm", - Usage: "list versions for a helm chart", - ArgsUsage: "{repo} {name}", - Action: common.RequireArgs(p.showHelm, []string{"{repo}", "{name}"}), - }, - { - Name: "terraform", - Usage: "list versions for a terraform module", - ArgsUsage: "{repo} {name}", - Action: common.RequireArgs(p.showTerraform, []string{"{repo}", "{name}"}), - }, - } -} - -func (p *Plural) installPackage(c *cli.Context) error { - p.InitPluralClient() - tp, repo, name, vsn := c.Args().Get(0), c.Args().Get(1), c.Args().Get(2), c.Args().Get(3) - if err := p.Client.InstallVersion(tp, repo, name, vsn); err != nil { - return err - } - - utils.Success("Successfully installed %s %s version %s in %s\n", tp, name, vsn, repo) - utils.Highlight("To apply the module in your cluster, you'll need to run `plural build --only %s && plural deploy", repo) - return nil -} - -func (p *Plural) showHelm(c *cli.Context) error { - p.InitPluralClient() - repo, name := c.Args().Get(0), c.Args().Get(1) - chart, err := api.FindChart(p.Client, repo, name) - if err != nil { - return err - } - - vsns, err := p.Client.GetVersions(chart.Id) - if err != nil { - return err - } - - header := []string{"Name", "Version", "App Version", "Created"} - return utils.PrintTable(vsns, header, func(vsn *api.Version) ([]string, error) { - appVsn := "" - if app, ok := vsn.Helm["appVersion"]; ok { - if v, ok := app.(string); ok { - appVsn = v - } - } - return []string{chart.Name, vsn.Version, appVsn, vsn.InsertedAt}, nil - }) -} - -func (p *Plural) showTerraform(c *cli.Context) error { - p.InitPluralClient() - repo, name := c.Args().Get(0), c.Args().Get(1) - chart, err := api.FindTerraform(p.Client, repo, name) - if err != nil { - return err - } - - vsns, err := p.Client.GetTerraformVersions(chart.Id) - if err != nil { - return err - } - - header := []string{"Name", "Version", "Created"} - return utils.PrintTable(vsns, header, func(vsn *api.Version) ([]string, error) { - return []string{chart.Name, vsn.Version, vsn.InsertedAt}, nil - }) -} - -func (p *Plural) listPackages(c *cli.Context) error { - p.InitPluralClient() - repo := c.Args().Get(0) - space, err := p.getWorkspace(repo) - if err != nil { - return err - } - - table := tablewriter.NewWriter(os.Stdout) - table.SetHeader([]string{"Type", "Name", "Version"}) - for _, inst := range space.Terraform { - table.Append([]string{"terraform", inst.Terraform.Name, inst.Version.Version}) - } - - for _, inst := range space.Charts { - table.Append([]string{"helm", inst.Chart.Name, inst.Version.Version}) - } - - table.Render() - return nil -} - -func (p *Plural) uninstallPackage(c *cli.Context) error { - p.InitPluralClient() - args := c.Args() - t, repo, name := args.Get(0), args.Get(1), args.Get(2) - - space, err := p.getWorkspace(repo) - if err != nil { - return err - } - - if t == "terraform" { - for _, inst := range space.Terraform { - if inst.Terraform.Name == name { - return api.GetErrorResponse(p.Client.UninstallTerraform(inst.Id), "UninstallTerraform") - } - } - } - - if t == "helm" { - for _, inst := range space.Charts { - if inst.Chart.Name == name { - return api.GetErrorResponse(p.Client.UninstallChart(inst.Id), "UninstallChart") - } - } - } - - utils.Warn("Could not find %s package %s in %s", t, name, repo) - return nil -} - -func (p *Plural) getWorkspace(repo string) (*wkspace.Workspace, error) { - p.InitPluralClient() - inst, err := p.Client.GetInstallation(repo) - if err != nil { - return nil, api.GetErrorResponse(err, "GetInstallation") - } - - if inst == nil { - return nil, fmt.Errorf("no installation found for package: %s", repo) - } - - return wkspace.New(p.Client, inst) -} diff --git a/cmd/command/plural/plural.go b/cmd/command/plural/plural.go index 948814fce..69962cb3d 100644 --- a/cmd/command/plural/plural.go +++ b/cmd/command/plural/plural.go @@ -1,42 +1,24 @@ package plural import ( - "github.com/pluralsh/plural-cli/cmd/command/ai" "github.com/pluralsh/plural-cli/cmd/command/api" "github.com/pluralsh/plural-cli/cmd/command/auth" - "github.com/pluralsh/plural-cli/cmd/command/bounce" - "github.com/pluralsh/plural-cli/cmd/command/buildcmd" - "github.com/pluralsh/plural-cli/cmd/command/bundle" "github.com/pluralsh/plural-cli/cmd/command/cd" "github.com/pluralsh/plural-cli/cmd/command/clone" - "github.com/pluralsh/plural-cli/cmd/command/clusters" "github.com/pluralsh/plural-cli/cmd/command/config" cryptocmd "github.com/pluralsh/plural-cli/cmd/command/crypto" - "github.com/pluralsh/plural-cli/cmd/command/deploy" - "github.com/pluralsh/plural-cli/cmd/command/destroy" "github.com/pluralsh/plural-cli/cmd/command/down" - "github.com/pluralsh/plural-cli/cmd/command/info" cmdinit "github.com/pluralsh/plural-cli/cmd/command/init" - "github.com/pluralsh/plural-cli/cmd/command/link" - "github.com/pluralsh/plural-cli/cmd/command/log" - "github.com/pluralsh/plural-cli/cmd/command/ops" - "github.com/pluralsh/plural-cli/cmd/command/output" + "github.com/pluralsh/plural-cli/cmd/command/mgmt" "github.com/pluralsh/plural-cli/cmd/command/pr" "github.com/pluralsh/plural-cli/cmd/command/profile" - "github.com/pluralsh/plural-cli/cmd/command/proxy" - "github.com/pluralsh/plural-cli/cmd/command/push" - "github.com/pluralsh/plural-cli/cmd/command/repo" - "github.com/pluralsh/plural-cli/cmd/command/stack" + "github.com/pluralsh/plural-cli/cmd/command/stacks" "github.com/pluralsh/plural-cli/cmd/command/up" - "github.com/pluralsh/plural-cli/cmd/command/upgrade" "github.com/pluralsh/plural-cli/cmd/command/version" - "github.com/pluralsh/plural-cli/cmd/command/vpn" - "github.com/pluralsh/plural-cli/cmd/command/workspace" "github.com/pluralsh/plural-cli/pkg/client" "github.com/pluralsh/plural-cli/pkg/common" conf "github.com/pluralsh/plural-cli/pkg/config" "github.com/pluralsh/plural-cli/pkg/crypto" - "github.com/pluralsh/plural-cli/pkg/exp" "github.com/pluralsh/plural-cli/pkg/utils" "github.com/urfave/cli" "helm.sh/helm/v3/pkg/action" @@ -55,60 +37,6 @@ type Plural struct { func (p *Plural) getCommands() []cli.Command { return []cli.Command{ - { - Name: "diff", - Aliases: []string{"df"}, - Usage: "diffs the state of the current workspace with the deployed version and dumps results to diffs/", - ArgsUsage: "APP", - Action: common.LatestVersion(common.HandleDiff), - }, - { - Name: "create", - Usage: "scaffolds the resources needed to create a new plural repository", - Action: common.LatestVersion(common.HandleScaffold), - Category: "Workspace", - }, - { - Name: "watch", - Usage: "watches applications until they become ready", - ArgsUsage: "REPO", - Action: common.LatestVersion(common.InitKubeconfig(common.RequireArgs(common.HandleWatch, []string{"REPO"}))), - Category: "Debugging", - }, - { - Name: "wait", - Usage: "waits on applications until they become ready", - ArgsUsage: "REPO", - Action: common.LatestVersion(common.RequireArgs(common.HandleWait, []string{"REPO"})), - Category: "Debugging", - }, - { - Name: "info", - Usage: "generates a console dashboard for the namespace of this repo", - ArgsUsage: "REPO", - Action: common.LatestVersion(common.RequireArgs(common.HandleInfo, []string{"REPO"})), - Category: "Debugging", - }, - { - Name: "apply", - Usage: "applys the current pluralfile", - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "file, f", - Usage: "pluralfile to use", - }, - }, - Action: common.LatestVersion(common.Apply), - Category: "Publishing", - }, - - { - Name: "readme", - Aliases: []string{"b"}, - Usage: "generates the readme for your installation repo", - Category: "Workspace", - Action: common.LatestVersion(common.DownloadReadme), - }, { Name: "preflights", Usage: "runs provider preflight checks", @@ -137,49 +65,6 @@ func (p *Plural) getCommands() []cli.Command { Action: common.LatestVersion(common.HandleImport), Category: "User Profile", }, - { - Name: "repair", - Usage: "commits any new encrypted changes in your local workspace automatically", - Action: common.LatestVersion(common.HandleRepair), - Category: "Workspace", - }, - { - Name: "serve", - Usage: "launch the server", - Action: common.LatestVersion(common.HandleServe), - Category: "Workspace", - }, - { - Name: "test", - Usage: "validate a values templace", - Action: common.LatestVersion(common.TestTemplate), - Category: "Publishing", - Flags: []cli.Flag{ - cli.BoolFlag{ - Name: "templateType", - Usage: "Determines the template type. Go template by default", - }, - }, - }, - { - Name: "template", - Aliases: []string{"tpl"}, - Usage: "templates a helm chart to be uploaded to plural", - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "values", - Usage: "the values file", - }, - }, - Action: common.LatestVersion(common.HandleHelmTemplate), - Category: "Publishing", - }, - { - Name: "changed", - Usage: "shows repos with pending changes", - Action: common.LatestVersion(common.Diffed), - Category: "Workspace", - }, } } @@ -203,12 +88,6 @@ func globalFlags() []cli.Flag { EnvVar: "PLURAL_DEBUG_ENABLE", Destination: &utils.EnableDebug, }, - cli.BoolFlag{ - Name: "bootstrap", - Usage: "enable bootstrap mode", - Destination: &common.BootstrapMode, - Hidden: !exp.IsFeatureEnabled(exp.EXP_PLURAL_CAPI), - }, } } @@ -224,40 +103,21 @@ func CreateNewApp(plural *Plural) *cli.App { commands := []cli.Command{ api.Command(plural.Plural), auth.Command(plural.Plural), - ai.Command(plural.Plural), - bounce.Command(plural.Plural), - bundle.Command(plural.Plural), - buildcmd.Command(plural.Plural), cd.Command(plural.Plural, plural.HelmConfiguration), config.Command(), cryptocmd.Command(plural.Plural), - clusters.Command(plural.Plural), clone.Command(), - deploy.Command(plural.Plural), - destroy.Command(plural.Plural), down.Command(), - output.Command(), - ops.Command(plural.Plural), + mgmt.Command(plural.Plural), profile.Command(), + stacks.Command(plural.Plural), pr.Command(plural.Plural), - proxy.Command(plural.Plural), - push.Command(plural.Plural), - repo.Command(plural.Plural), - repo.APICommand(plural.Plural), - stack.Command(plural.Plural), - log.Command(plural.Plural), - info.Command(plural.Plural), cmdinit.Command(plural.Plural), up.Command(plural.Plural), - upgrade.Command(plural.Plural), - workspace.Command(plural.Plural, plural.HelmConfiguration), - vpn.Command(plural.Plural), version.Command(), } commands = append(commands, plural.getCommands()...) app.Commands = commands - links := link.Commands() - app.Commands = append(app.Commands, links...) return app } diff --git a/cmd/command/pr/pr.go b/cmd/command/pr/pr.go index 47a7ad573..76c95d560 100644 --- a/cmd/command/pr/pr.go +++ b/cmd/command/pr/pr.go @@ -33,7 +33,7 @@ func Command(clients client.Plural) cli.Command { return cli.Command{ Name: "pull-requests", Aliases: []string{"pr"}, - Usage: "Generate and manage pull requests", + Usage: "generates and manages pull requests", Subcommands: p.prCommands(), Category: "CD", Flags: []cli.Flag{ diff --git a/cmd/command/profile/profile.go b/cmd/command/profile/profile.go index e5aa4bd75..dc65e168d 100644 --- a/cmd/command/profile/profile.go +++ b/cmd/command/profile/profile.go @@ -12,7 +12,7 @@ import ( func Command() cli.Command { return cli.Command{ Name: "profile", - Usage: "Commands for managing config profiles for plural", + Usage: "manages config profiles for plural", Subcommands: profileCommands(), Category: "User Profile", } diff --git a/cmd/command/proxy/proxy.go b/cmd/command/proxy/proxy.go deleted file mode 100644 index 9b03c7804..000000000 --- a/cmd/command/proxy/proxy.go +++ /dev/null @@ -1,66 +0,0 @@ -package proxy - -import ( - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/proxy" - "github.com/urfave/cli" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "proxy", - Usage: "proxies into running processes in your cluster", - Subcommands: p.proxyCommands(), - Category: "Debugging", - } -} - -func (p *Plural) proxyCommands() []cli.Command { - return []cli.Command{ - { - Name: "list", - Usage: "lists proxy plugins for a repo", - ArgsUsage: "{repo}", - Action: common.LatestVersion(common.InitKubeconfig(common.RequireArgs(p.handleProxyList, []string{"{repo}"}))), - }, - { - Name: "connect", - Usage: "connects to a named proxy for a repo", - ArgsUsage: "{repo} {name}", - Action: common.LatestVersion(common.InitKubeconfig(common.RequireArgs(p.handleProxyConnect, []string{"{repo}", "{name}"}))), - }, - } -} - -func (p *Plural) handleProxyList(c *cli.Context) error { - repo := c.Args().Get(0) - conf := config.Read() - if err := p.InitKube(); err != nil { - return err - } - proxies, err := proxy.List(p.Kube, conf.Namespace(repo)) - if err != nil { - return err - } - - return proxy.Print(proxies) -} - -func (p *Plural) handleProxyConnect(c *cli.Context) error { - repo := c.Args().Get(0) - name := c.Args().Get(1) - conf := config.Read() - if err := p.InitKube(); err != nil { - return err - } - return proxy.Exec(p.Kube, conf.Namespace(repo), name) -} diff --git a/cmd/command/proxy/proxy_test.go b/cmd/command/proxy/proxy_test.go deleted file mode 100644 index 1a10d7853..000000000 --- a/cmd/command/proxy/proxy_test.go +++ /dev/null @@ -1,72 +0,0 @@ -package proxy_test - -import ( - "os" - "testing" - - clientcmd "github.com/pluralsh/plural-cli/pkg/client" - - "github.com/pluralsh/plural-cli/pkg/common" - - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - - "github.com/pluralsh/plural-operator/apis/platform/v1alpha1" - "github.com/stretchr/testify/mock" - - "github.com/pluralsh/plural-cli/cmd/command/plural" - "github.com/pluralsh/plural-cli/pkg/test/mocks" - "github.com/stretchr/testify/assert" -) - -func TestProxyList(t *testing.T) { - tests := []struct { - name string - args []string - proxyList *v1alpha1.ProxyList - expectedResponse string - }{ - { - name: `test "proxy list"`, - args: []string{plural.ApplicationName, "proxy", "list", "test"}, - proxyList: &v1alpha1.ProxyList{ - TypeMeta: metav1.TypeMeta{}, - Items: []v1alpha1.Proxy{ - { - ObjectMeta: metav1.ObjectMeta{Name: "proxy-1"}, - Spec: v1alpha1.ProxySpec{Type: v1alpha1.Sh, Target: "test-1"}, - }, - { - ObjectMeta: metav1.ObjectMeta{Name: "proxy-1"}, - Spec: v1alpha1.ProxySpec{Type: v1alpha1.Web, Target: "test-2"}, - }, - }, - }, - expectedResponse: `+---------+------+--------+ -| NAME | TYPE | TARGET | -+---------+------+--------+ -| proxy-1 | sh | test-1 | -| proxy-1 | web | test-2 | -+---------+------+--------+ -`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - kube := mocks.NewKube(t) - kube.On("ProxyList", mock.AnythingOfType("string"), mock.AnythingOfType("string")).Return(test.proxyList, nil) - app := plural.CreateNewApp(&plural.Plural{ - Plural: clientcmd.Plural{ - Client: client, - Kube: kube, - }, - }) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - assert.NoError(t, err) - - assert.Equal(t, test.expectedResponse, res) - }) - } -} diff --git a/cmd/command/push/push.go b/cmd/command/push/push.go deleted file mode 100644 index 7533a880b..000000000 --- a/cmd/command/push/push.go +++ /dev/null @@ -1,186 +0,0 @@ -package push - -import ( - "fmt" - "os" - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/client" - - "github.com/pluralsh/plural-cli/pkg/common" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/helm" - scftmpl "github.com/pluralsh/plural-cli/pkg/scaffold/template" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/urfave/cli" - "sigs.k8s.io/yaml" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "push", - Usage: "utilities for pushing tf or helm packages", - Subcommands: p.pushCommands(), - Category: "Publishing", - } -} - -func (p *Plural) pushCommands() []cli.Command { - return []cli.Command{ - { - Name: "terraform", - Usage: "pushes a terraform module", - ArgsUsage: "{path-to-module} {repo}", - Action: common.LatestVersion(p.handleTerraformUpload), - }, - { - Name: "helm", - Usage: "pushes a helm chart", - ArgsUsage: "{path-to-chart} {repo}", - Action: common.LatestVersion(handleHelmUpload), - }, - { - Name: "recipe", - Usage: "pushes a recipe", - ArgsUsage: "{path-to-recipe} {repo}", - Action: common.LatestVersion(p.handleRecipeUpload), - }, - { - Name: "artifact", - Usage: "creates an artifact for the repo", - ArgsUsage: "{path-to-def} {repo}", - Action: common.LatestVersion(p.handleArtifact), - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "platform", - Value: "mac", - Usage: "name of the OS this binary is built for", - }, - cli.StringFlag{ - Name: "arch", - Value: "amd64", - Usage: "machine architecture the binary is compatible with", - }, - }, - }, - { - Name: "crd", - Usage: "registers a new crd for a chart", - ArgsUsage: "{path-to-def} {repo} {chart}", - Action: common.LatestVersion(p.createCrd), - }, - } -} - -func (p *Plural) handleTerraformUpload(c *cli.Context) error { - p.InitPluralClient() - _, err := p.UploadTerraform(c.Args().Get(0), c.Args().Get(1)) - return api.GetErrorResponse(err, "UploadTerraform") -} - -func handleHelmUpload(c *cli.Context) error { - conf := config.Read() - pth, repo := c.Args().Get(0), c.Args().Get(1) - - f, err := buildValuesFromTemplate(pth) - if err != nil { - return err - } - defer func(name string) { - _ = os.Remove(name) - - }(f.Name()) - - utils.Highlight("linting helm: ") - values, err := getValues(f.Name()) - if err != nil { - return err - } - if err := helm.Lint(pth, "default", values); err != nil { - return err - } - - cmUrl := fmt.Sprintf("%s/cm/%s", conf.BaseUrl(), repo) - return helm.Push(pth, cmUrl) -} - -func buildValuesFromTemplate(pth string) (f *os.File, err error) { - templatePath := pathing.SanitizeFilepath(filepath.Join(pth, "values.yaml.tpl")) - _, err = utils.ReadFile(templatePath) - if os.IsNotExist(err) { - templatePath = pathing.SanitizeFilepath(filepath.Join(pth, "values.yaml.lua")) - _, err := utils.ReadFile(templatePath) - if err != nil { - return nil, err - } - - } - - return scftmpl.TmpValuesFile(templatePath) -} - -func (p *Plural) handleRecipeUpload(c *cli.Context) error { - p.InitPluralClient() - fullPath, _ := filepath.Abs(c.Args().Get(0)) - contents, err := os.ReadFile(fullPath) - if err != nil { - return err - } - - recipeInput, err := api.ConstructRecipe(contents) - if err != nil { - return err - } - - _, err = p.CreateRecipe(c.Args().Get(1), recipeInput) - return api.GetErrorResponse(err, "CreateRecipe") -} - -func (p *Plural) handleArtifact(c *cli.Context) error { - p.InitPluralClient() - fullPath, _ := filepath.Abs(c.Args().Get(0)) - contents, err := os.ReadFile(fullPath) - if err != nil { - return err - } - - input, err := api.ConstructArtifactAttributes(contents) - if err != nil { - return err - } - input.Platform = c.String("platform") - input.Arch = c.String("arch") - _, err = p.CreateArtifact(c.Args().Get(1), input) - return api.GetErrorResponse(err, "CreateArtifact") -} - -func (p *Plural) createCrd(c *cli.Context) error { - p.InitPluralClient() - fullPath, _ := filepath.Abs(c.Args().Get(0)) - repo := c.Args().Get(1) - chart := c.Args().Get(2) - err := p.CreateCrd(repo, chart, fullPath) - return api.GetErrorResponse(err, "CreateCrd") -} - -func getValues(path string) (map[string]interface{}, error) { - values := make(map[string]interface{}) - valsContent, err := os.ReadFile(path) - if err != nil { - return nil, err - } - if err := yaml.Unmarshal(valsContent, &values); err != nil { - return nil, err - } - return values, nil -} diff --git a/cmd/command/repo/repos.go b/cmd/command/repo/repos.go deleted file mode 100644 index b34b52b77..000000000 --- a/cmd/command/repo/repos.go +++ /dev/null @@ -1,222 +0,0 @@ -package repo - -import ( - "fmt" - "strings" - - "github.com/pluralsh/plural-cli/pkg/client" - - "github.com/pluralsh/plural-cli/pkg/common" - - "github.com/urfave/cli" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/bundle" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/format" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "repos", - Usage: "view and manage plural repositories", - Subcommands: p.reposCommands(), - Category: "API", - } -} - -func APICommand(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "apps", - Usage: "view and manage plural repositories", - Subcommands: p.reposCommands(), - Category: "API", - } -} - -func (p *Plural) reposCommands() []cli.Command { - return []cli.Command{ - { - Name: "unlock", - Usage: "unlocks installations in a repo that have breaking changes", - ArgsUsage: "{app}", - Action: common.LatestVersion(common.RequireArgs(p.handleUnlockRepo, []string{"{app}"})), - }, - { - Name: "release", - Usage: "tags the installations in the current cluster with the given release channels", - ArgsUsage: "{app}", - Flags: []cli.Flag{ - cli.StringSliceFlag{ - Name: "tag", - Usage: "tag name for a given release channel, eg stable, warm, dev, prod", - }, - }, - Action: common.LatestVersion(common.RequireArgs(p.handleRelease, []string{"{app}"})), - }, - { - Name: "reinstall", - Usage: "reinstalls all bundles from a previous installation", - Flags: []cli.Flag{ - cli.BoolFlag{ - Name: "refresh", - Usage: "re-enter the configuration for all bundles", - }, - }, - Action: p.handleReinstall, - }, - { - Name: "reset", - Usage: "eliminates your current plural installation set, to change cloud provider or eject from plural", - Action: common.LatestVersion(p.handleResetInstallations), - }, - { - Name: "synced", - Usage: "marks installations in this repo as being synced", - Action: p.handleMarkSynced, - }, - { - Name: "uninstall", - Usage: "uninstall an app from the plural api", - ArgsUsage: "{app}", - Action: common.LatestVersion(common.RequireArgs(p.handleUninstall, []string{"{app}"})), - }, - { - Name: "list", - Usage: "list available repositories to install", - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "query", - Usage: "string to search by", - }, - cli.StringFlag{ - Name: "format", - Usage: "format to print the repositories out, eg csv or default is table", - }, - }, - Action: common.LatestVersion(p.handleListRepositories), - }, - } -} - -func (p *Plural) handleRelease(c *cli.Context) error { - p.InitPluralClient() - app := c.Args().First() - tags := c.StringSlice("tag") - err := p.Release(c.Args().First(), c.StringSlice("tag")) - if err != nil { - return api.GetErrorResponse(err, "Release") - } - - utils.Success("Published release for %s to channels [%s]\n", app, strings.Join(tags, ", ")) - return nil -} - -func (p *Plural) handleUnlockRepo(c *cli.Context) error { - p.InitPluralClient() - err := p.UnlockRepository(c.Args().First()) - return api.GetErrorResponse(err, "UnlockRepository") -} - -func (p *Plural) handleUninstall(c *cli.Context) error { - p.InitPluralClient() - inst, err := p.GetInstallation(c.Args().First()) - if err != nil { - return api.GetErrorResponse(err, "GetInstallation") - } - - if inst == nil { - return fmt.Errorf("%s already uninstalled", c.Args().First()) - } - err = p.DeleteInstallation(inst.Id) - return api.GetErrorResponse(err, "DeleteInstallation") -} - -func (p *Plural) handleListRepositories(c *cli.Context) error { - p.InitPluralClient() - repos, err := p.ListRepositories(c.String("query")) - if err != nil { - return api.GetErrorResponse(err, "ListRepositories") - } - - addIcon := c.String("format") == "csv" - - formatter := format.New(format.FormatType(c.String("format"))) - header := []string{"Repo", "Description", "Publisher", "Bundles"} - if addIcon { - header = append(header, "Icon") - } - - formatter.Header(header) - for _, repo := range repos { - recipeNames := utils.Map(repo.Recipes, func(recipe *api.Recipe) string { - return recipe.Name - }) - - line := []string{repo.Name, repo.Description, repo.Publisher.Name, strings.Join(recipeNames, ", ")} - if addIcon { - line = append(line, repo.Icon) - } - if err := formatter.Write(line); err != nil { - return err - } - } - - if err := formatter.Flush(); err != nil { - return err - } - return nil -} - -func (p *Plural) handleReinstall(c *cli.Context) error { - p.InitPluralClient() - ctx, err := manifest.FetchContext() - if err != nil { - return err - } - - for _, b := range ctx.Bundles { - if err := bundle.Install(p.Client, b.Repository, b.Name, c.Bool("refresh")); err != nil { - return err - } - - fmt.Println("Moving to the next bundle....") - } - - return nil -} - -func (p *Plural) handleMarkSynced(c *cli.Context) error { - p.InitPluralClient() - return p.MarkSynced(c.Args().Get(0)) -} - -func (p *Plural) handleResetInstallations(c *cli.Context) error { - p.InitPluralClient() - conf := config.Read() - if !common.Confirm(fmt.Sprintf("Are you sure you want to reset installations for %s? This will also wipe all oidc providers and any other associated state in the plural api", conf.Email), "PLURAL_REPOS_RESET_CONFIRM") { - return nil - } - - count, err := p.ResetInstallations() - if err != nil { - return api.GetErrorResponse(err, "ResetInstallations") - } - - fmt.Printf("Deleted %d installations in app.plural.sh\n", count) - fmt.Println("(you can recreate these at any time and any running infrastructure is not affected, plural will simply no longer deliver upgrades)") - utils.Note("Now run `plural bundle install ` to install a new app \n") - return nil -} diff --git a/cmd/command/repo/repos_test.go b/cmd/command/repo/repos_test.go deleted file mode 100644 index c2dfa965e..000000000 --- a/cmd/command/repo/repos_test.go +++ /dev/null @@ -1,102 +0,0 @@ -package repo_test - -import ( - "os" - "testing" - - clientcmd "github.com/pluralsh/plural-cli/pkg/client" - - "github.com/pluralsh/plural-cli/pkg/common" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" - - "github.com/pluralsh/plural-cli/cmd/command/plural" - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/test/mocks" -) - -func TestListRepositories(t *testing.T) { - tests := []struct { - name string - args []string - repos []*api.Repository - expectedResponse string - }{ - { - name: `test "repos list"`, - args: []string{plural.ApplicationName, "repos", "list"}, - repos: []*api.Repository{ - { - Id: "123", - Name: "test", - Description: "test application", - Publisher: &api.Publisher{ - Id: "456", - Name: "test", - }, - Recipes: []*api.Recipe{ - { - Id: "789", - Name: "r1", - }, - { - Id: "101", - Name: "r2", - }, - }, - }, - }, - expectedResponse: `+------+------------------+-----------+---------+ -| REPO | DESCRIPTION | PUBLISHER | BUNDLES | -+------+------------------+-----------+---------+ -| test | test application | test | r1, r2 | -+------+------------------+-----------+---------+ -`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - client.On("ListRepositories", mock.AnythingOfType("string")).Return(test.repos, nil) - app := plural.CreateNewApp(&plural.Plural{Plural: clientcmd.Plural{ - Client: client, - }}) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, res) - }) - } -} - -// func TestResetRepositories(t *testing.T) { -// tests := []struct { -// name string -// args []string -// count int -// expectedResponse string -// }{ -// { -// name: `test "repos reset"`, -// args: []string{plural.ApplicationName, "repos", "reset"}, -// count: 5, -// expectedResponse: `Deleted 5 installations in app.plural.sh -// (you can recreate these at any time and any running infrastructure is not affected, plural will simply no longer deliver upgrades) -// `, -// }, -// } -// for _, test := range tests { -// t.Run(test.name, func(t *testing.T) { -// client := mocks.NewClient(t) -// client.On("ResetInstallations").Return(test.count, nil) -// app := plural.CreateNewApp(&plural.Plural{Client: client}) -// app.HelpName = plural.ApplicationName -// os.Args = test.args -// res, err := captureStdout(app, os.Args) -// assert.NoError(t, err) -// assert.Equal(t, test.expectedResponse, res) -// }) -// } -// } diff --git a/cmd/command/shell/shell.go b/cmd/command/shell/shell.go deleted file mode 100644 index 162f1fe9e..000000000 --- a/cmd/command/shell/shell.go +++ /dev/null @@ -1,92 +0,0 @@ -package shell - -import ( - "os" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/config" - pkgcrypto "github.com/pluralsh/plural-cli/pkg/crypto" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/urfave/cli" -) - -func Command() cli.Command { - return cli.Command{ - Name: "shell", - Usage: "manages your cloud shell", - Subcommands: shellCommands(), - Category: "Workspace", - } -} - -func shellCommands() []cli.Command { - return []cli.Command{ - { - Name: "sync", - Usage: "syncs the setup in your cloud shell locally", - Action: common.LatestVersion(handleShellSync), - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "endpoint", - Usage: "the endpoint for the plural installation you're working with", - }, - cli.StringFlag{ - Name: "service-account", - Usage: "email for the service account you'd like to use for this workspace", - }, - }, - }, - { - Name: "purge", - Usage: "deletes your cloud shell", - Action: common.LatestVersion(handleShellPurge), - }, - } -} - -func handleShellSync(c *cli.Context) error { - if !config.Exists() { - if err := common.HandleLogin(c); err != nil { - return err - } - } - client := api.NewClient() - - shell, err := client.GetShell() - if err != nil { - return api.GetErrorResponse(err, "GetShell") - } - - if err := pkgcrypto.Setup(shell.AesKey); err != nil { - return err - } - - utils.Highlight("Cloning your workspace repo locally:\n") - if err := utils.Exec("git", "clone", shell.GitUrl); err != nil { - return err - } - - dir := git.RepoName(shell.GitUrl) - if err := os.Chdir(dir); err != nil { - return err - } - if err := common.CryptoInit(c); err != nil { - return err - } - - return common.HandleUnlock(c) -} - -var destoryShellConfirm = "Are you sure you want to destroy your cloud shell (you should either `plural destroy` anything deployed or `plural shell sync` to sync the contents locally)?" - -func handleShellPurge(c *cli.Context) error { - if ok := common.Confirm(destoryShellConfirm, "PLURAL_SHELL_PURGE_CONFIRM"); !ok { - return nil - } - - client := api.NewClient() - err := client.DeleteShell() - return api.GetErrorResponse(err, "DeleteShell") -} diff --git a/cmd/command/stack/stacks.go b/cmd/command/stack/stacks.go deleted file mode 100644 index 99c80727d..000000000 --- a/cmd/command/stack/stacks.go +++ /dev/null @@ -1,84 +0,0 @@ -package stack - -import ( - "fmt" - - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - - "github.com/urfave/cli" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/bundle" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "stack", - Usage: "Commands for installing and discovering plural stacks", - Subcommands: p.stackCommands(), - } -} - -func (p *Plural) stackCommands() []cli.Command { - return []cli.Command{ - { - Name: "install", - Usage: "installs a plural stack for your current provider", - ArgsUsage: "{stack-name}", - Flags: []cli.Flag{ - cli.BoolFlag{ - Name: "refresh", - Usage: "re-enter the configuration for all bundles", - }, - }, - Action: common.Tracked(common.LatestVersion(common.Rooted(common.RequireArgs(p.stackInstall, []string{"{stack-name}"}))), "stack.install"), - }, - { - Name: "list", - Usage: "lists stacks to potentially install", - Flags: []cli.Flag{ - cli.BoolTFlag{ - Name: "account", - Usage: "only list stacks within your account", - }, - }, - Action: common.LatestVersion(common.Rooted(p.stackList)), - }, - } -} - -func (p *Plural) stackInstall(c *cli.Context) (err error) { - name := c.Args().Get(0) - man, err := manifest.FetchProject() - if err != nil { - return - } - - p.InitPluralClient() - err = bundle.Stack(p.Client, name, man.Provider, c.Bool("refresh")) - utils.Note("To edit the configuration you've just entered, edit the context.yaml file at the root of your repo, or run with the --refresh flag\n") - return -} - -func (p *Plural) stackList(c *cli.Context) (err error) { - p.InitPluralClient() - stacks, err := p.ListStacks(c.Bool("account")) - if err != nil { - return api.GetErrorResponse(err, "ListStacks") - } - - headers := []string{"Name", "Description", "Featured"} - return utils.PrintTable(stacks, headers, func(s *api.Stack) ([]string, error) { - return []string{s.Name, s.Description, fmt.Sprintf("%v", s.Featured)}, nil - }) -} diff --git a/cmd/command/cd/cd_stacks.go b/cmd/command/stacks/stacks.go similarity index 73% rename from cmd/command/cd/cd_stacks.go rename to cmd/command/stacks/stacks.go index 228755a33..04ad54dc2 100644 --- a/cmd/command/cd/cd_stacks.go +++ b/cmd/command/stacks/stacks.go @@ -1,28 +1,58 @@ -package cd +package stacks import ( "fmt" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/AlecAivazis/survey/v2" - "github.com/samber/lo" - "github.com/urfave/cli" - + "github.com/pluralsh/plural-cli/pkg/client" + "github.com/pluralsh/plural-cli/pkg/common" "github.com/pluralsh/plural-cli/pkg/config" "github.com/pluralsh/plural-cli/pkg/stacks" "github.com/pluralsh/plural-cli/pkg/utils/git" + "github.com/samber/lo" + "github.com/urfave/cli" ) -func (p *Plural) cdStacks() cli.Command { +func init() { + consoleToken = "" + consoleURL = "" +} + +var consoleToken string +var consoleURL string + +type Plural struct { + client.Plural +} + +func Command(clients client.Plural) cli.Command { + p := Plural{ + Plural: clients, + } return cli.Command{ Name: "stacks", - Subcommands: p.cdStacksCommands(), - Usage: "manage CD stacks", + Aliases: []string{"s"}, + Usage: "manage infrastructure stacks", + Subcommands: p.stacksCommands(), + Category: "CD", + Flags: []cli.Flag{ + cli.StringFlag{ + Name: "token", + Usage: "console token", + EnvVar: "PLURAL_CONSOLE_TOKEN", + Destination: &consoleToken, + }, + cli.StringFlag{ + Name: "url", + Usage: "console url address", + EnvVar: "PLURAL_CONSOLE_URL", + Destination: &consoleURL, + }, + }, } } -func (p *Plural) cdStacksCommands() []cli.Command { +func (p *Plural) stacksCommands() []cli.Command { return []cli.Command{ { Name: "gen-backend", diff --git a/cmd/command/up/backfill.go b/cmd/command/up/backfill.go index f56a297f4..954ea7048 100644 --- a/cmd/command/up/backfill.go +++ b/cmd/command/up/backfill.go @@ -1,11 +1,10 @@ package up import ( + "encoding/base64" "fmt" "strings" - "encoding/base64" - "github.com/pluralsh/gqlclient" "github.com/pluralsh/plural-cli/pkg/console" "github.com/pluralsh/plural-cli/pkg/crypto" diff --git a/cmd/command/upgrade/upgrade.go b/cmd/command/upgrade/upgrade.go deleted file mode 100644 index 5ea5c7d5e..000000000 --- a/cmd/command/upgrade/upgrade.go +++ /dev/null @@ -1,61 +0,0 @@ -package upgrade - -import ( - "io" - "os" - - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/urfave/cli" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "upgrade", - Usage: "creates an upgrade in the upgrade queue QUEUE for application REPO", - ArgsUsage: "{queue} {repo}", - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "f", - Usage: "file containing upgrade contents, use - for stdin", - }, - }, - Action: common.LatestVersion(common.RequireArgs(p.handleUpgrade, []string{"{queue}", "{repo}"})), - } -} - -func (p *Plural) handleUpgrade(c *cli.Context) (err error) { - p.InitPluralClient() - queue, repo := c.Args().Get(0), c.Args().Get(1) - f := os.Stdin - fname := c.String("f") - if fname != "-" && fname != "" { - f, err = os.Open(fname) - if err != nil { - return - } - defer f.Close() - } - - contents, err := io.ReadAll(f) - if err != nil { - return - } - - attrs, err := api.ConstructUpgradeAttributes(contents) - if err != nil { - return - } - - err = p.CreateUpgrade(queue, repo, attrs) - return api.GetErrorResponse(err, "CreateUpgrade") -} diff --git a/cmd/command/version/version.go b/cmd/command/version/version.go index 852803c20..cfb00d9f2 100644 --- a/cmd/command/version/version.go +++ b/cmd/command/version/version.go @@ -9,7 +9,7 @@ func Command() cli.Command { return cli.Command{ Name: "version", Aliases: []string{"v", "vsn"}, - Usage: "Gets cli version info", + Usage: "gets plural cli version info", Action: common.VersionInfo, } } diff --git a/cmd/command/vpn/vpn.go b/cmd/command/vpn/vpn.go deleted file mode 100644 index b7599593f..000000000 --- a/cmd/command/vpn/vpn.go +++ /dev/null @@ -1,295 +0,0 @@ -package vpn - -import ( - "fmt" - "os" - "path/filepath" - "strconv" - - "github.com/pluralsh/plural-cli/pkg/client" - - "github.com/pluralsh/plural-cli/pkg/common" - - "github.com/olekukonko/tablewriter" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/plural-cli/pkg/vpn" - "github.com/pluralsh/plural-operator/apis/vpn/v1alpha1" - "github.com/pluralsh/polly/algorithms" - "github.com/urfave/cli" - - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -const ( - wireguardAppName = "wireguard" - wireguardNamespace = "wireguard" - wireguardServerName = "wireguard" - wireguardNotInstalledError = "wireguard is not installed. run `plural bundle list wireguard` to find the bundle to install" -) - -type Plural struct { - client.Plural -} - -func Command(clients client.Plural) cli.Command { - p := Plural{ - Plural: clients, - } - return cli.Command{ - Name: "vpn", - Usage: "interacting with the plural vpn", - Subcommands: p.vpnCommands(), - Category: "Workspace", - } -} - -func (p *Plural) vpnCommands() []cli.Command { - return []cli.Command{ - { - Name: "list", - Usage: "list vpn resources", - Subcommands: p.vpnListCommands(), - }, - { - Name: "create", - Usage: "commands for creating vpn resources", - Subcommands: p.vpnCreateCommands(), - }, - { - Name: "delete", - Usage: "commands for deleting vpn resources", - Subcommands: p.vpnDeleteCommands(), - }, - { - Name: "client-config", - ArgsUsage: "NAME", - Usage: "get the config for a vpn client for a server", - Action: common.LatestVersion(common.RequireArgs(common.Highlighted(p.vpnInstalled(common.InitKubeconfig(p.handleWireguardPeerConfig))), []string{"NAME"})), - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "server", - Usage: "the vpn server to get the client config from", - }, - cli.StringFlag{ - Name: "path", - Usage: "output path for the config wireguard client config. the filename will be NAME.conf", - }, - }, - }, - } -} - -func (p *Plural) vpnListCommands() []cli.Command { - return []cli.Command{ - { - Name: "servers", - Usage: "lists vpn servers", - Action: common.LatestVersion(common.Highlighted(p.vpnInstalled(common.InitKubeconfig(p.handleWireguardServerList)))), - }, - { - Name: "clients", - Usage: "lists vpn clients for a server", - Action: common.LatestVersion(common.Highlighted(p.vpnInstalled(common.InitKubeconfig(p.handleWireguardPeerList)))), - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "server", - Usage: "the vpn server to list clients for", - }, - }, - }, - } -} - -func (p *Plural) vpnCreateCommands() []cli.Command { - return []cli.Command{ - { - Name: "client", - ArgsUsage: "{name}", - Usage: "create a new vpn client for a server", - Action: common.LatestVersion(common.RequireArgs(common.Highlighted(p.vpnInstalled(common.InitKubeconfig(p.handleWireguardPeerCreate))), []string{"{name}"})), - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "server", - Usage: "the vpn server to create the client for", - }, - }, - }, - } -} - -func (p *Plural) vpnDeleteCommands() []cli.Command { - return []cli.Command{ - { - Name: "client", - ArgsUsage: "{name}", - Usage: "delete a vpn client for a server", - Action: common.LatestVersion(common.RequireArgs(common.Highlighted(p.vpnInstalled(common.InitKubeconfig(p.handleWireguardPeerDelete))), []string{"{name}"})), - Flags: []cli.Flag{ - cli.StringFlag{ - Name: "server", - Usage: "the vpn server to delete the clients from", - }, - }, - }, - } -} - -func (p *Plural) handleWireguardServerList(c *cli.Context) error { - conf := config.Read() - servers, err := vpn.ListServers(p.Kube, conf.Namespace(wireguardNamespace)) - if err != nil { - return err - } - - headers := []string{"Name", "Hostname", "Port", "Ready"} - return utils.PrintTable(servers.Items, headers, func(s v1alpha1.WireguardServer) ([]string, error) { - return []string{s.Name, s.Status.Hostname, s.Status.Port, strconv.FormatBool(s.Status.Ready)}, nil - }) -} - -func (p *Plural) handleWireguardPeerList(c *cli.Context) error { - var server string - server = wireguardServerName - if c.String("server") != "" { - server = c.String("server") - } - - conf := config.Read() - peerlist, err := vpn.ListPeers(p.Kube, conf.Namespace(wireguardNamespace)) - if err != nil { - return err - } - - peers := algorithms.Filter(peerlist.Items, func(p v1alpha1.WireguardPeer) bool { return p.Spec.WireguardRef == server }) - headers := []string{"Name", "Address", "Config Secret", "Public Key", "Ready"} - return utils.PrintTable(peers, headers, func(p v1alpha1.WireguardPeer) (res []string, err error) { - res = []string{p.Name, p.Spec.Address, p.Status.ConfigRef.Name, p.Spec.PublicKey, strconv.FormatBool(p.Status.Ready)} - return - }) -} - -func (p *Plural) handleWireguardPeerCreate(c *cli.Context) error { - var serverName string - serverName = wireguardServerName - if c.String("server") != "" { - serverName = c.String("server") - } - - name := c.Args().Get(0) - conf := config.Read() - server, err := vpn.GetServer(p.Kube, conf.Namespace(wireguardNamespace), serverName) - if err != nil { - return err - } - peer, err := vpn.CreatePeer(p.Kube, server.Namespace, - &v1alpha1.WireguardPeer{ - ObjectMeta: metav1.ObjectMeta{ - Name: name, - }, - Spec: v1alpha1.WireguardPeerSpec{ - WireguardRef: server.Name, - }, - }) - if err != nil { - return err - } - - table := tablewriter.NewWriter(os.Stdout) - table.SetHeader([]string{"Name", "Address", "Server", "Config Secret", "Public Key", "Ready"}) - table.Append([]string{ - peer.Name, - peer.Spec.Address, - peer.Spec.WireguardRef, - peer.Status.ConfigRef.Name, - peer.Spec.PublicKey, - strconv.FormatBool(peer.Status.Ready), - }) - table.Render() - return nil -} - -func (p *Plural) handleWireguardPeerConfig(c *cli.Context) error { - var serverName string - serverName = wireguardServerName - if c.String("server") != "" { - serverName = c.String("server") - } - - name := c.Args().Get(0) - conf := config.Read() - - server, err := vpn.GetServer(p.Kube, conf.Namespace(wireguardNamespace), serverName) - if err != nil { - return err - } - - peer, err := vpn.GetPeer(p.Kube, server.Namespace, name) - if err != nil { - return err - } - - if !peer.Status.Ready || peer.Status.ConfigRef.Name == "" || peer.Status.ConfigRef.Key == "" { - return fmt.Errorf("peer config not ready yet") - } - - secret, err := vpn.GetPeerConfigSecret(p.Kube, peer.Namespace, peer.Status.ConfigRef.Name) - if err != nil { - return err - } - - peerConfig, ok := secret.Data[peer.Status.ConfigRef.Key] - if !ok { - return fmt.Errorf("peer config not ready yet") - } - - if c.String("path") != "" { - path := pathing.SanitizeFilepath(filepath.Join(c.String("path"), peer.Name+".conf")) - return utils.WriteFile(path, peerConfig) - } - fmt.Println(string(peerConfig)) - return nil -} - -func (p *Plural) handleWireguardPeerDelete(c *cli.Context) error { - var serverName string - serverName = wireguardServerName - if c.String("server") != "" { - serverName = c.String("server") - } - - name := c.Args().Get(0) - conf := config.Read() - server, err := vpn.GetServer(p.Kube, conf.Namespace(wireguardNamespace), serverName) - if err != nil { - return err - } - - peer, err := vpn.GetPeer(p.Kube, server.Namespace, name) - if err != nil { - return err - } - - if err := vpn.DeletePeer(p.Kube, peer.Namespace, peer.Name); err != nil { - return err - } - - utils.Highlight(fmt.Sprintf("Deleted peer %s successfully\n", peer.Name)) - return nil -} - -func (p *Plural) vpnInstalled(fn func(*cli.Context) error) func(*cli.Context) error { - return func(c *cli.Context) error { - p.InitPluralClient() - if err := p.InitKube(); err != nil { - return err - } - - if _, err := p.GetInstallation(wireguardAppName); err != nil { - return err - } - - return fn(c) - } -} diff --git a/cmd/command/vpn/vpn_test.go b/cmd/command/vpn/vpn_test.go deleted file mode 100644 index ee745ba74..000000000 --- a/cmd/command/vpn/vpn_test.go +++ /dev/null @@ -1,359 +0,0 @@ -package vpn_test - -import ( - "os" - "testing" - - "github.com/pluralsh/plural-cli/cmd/command/plural" - "github.com/pluralsh/plural-cli/pkg/api" - pluralclient "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/test/mocks" - vpnv1alpha1 "github.com/pluralsh/plural-operator/apis/vpn/v1alpha1" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/mock" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" -) - -func TestServerList(t *testing.T) { - tests := []struct { - name string - args []string - servers *vpnv1alpha1.WireguardServerList - expectedResponse string - installation *api.Installation - }{ - { - name: `test "vpn list servers"`, - args: []string{plural.ApplicationName, "vpn", "list", "servers"}, - servers: &vpnv1alpha1.WireguardServerList{ - Items: []vpnv1alpha1.WireguardServer{ - { - ObjectMeta: metav1.ObjectMeta{ - Name: "wireguard", - Namespace: "wireguard", - }, - Spec: vpnv1alpha1.WireguardServerSpec{ - WireguardImage: "dkr.plural.sh/bootstrap/wireguard-server:0.1.2", - }, - Status: vpnv1alpha1.WireguardServerStatus{ - Port: "51820", - Hostname: "k8s-wireguar-wireguar-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.us-east-1.amazonaws.com", - Ready: true, - }, - }, - }, - }, - installation: &api.Installation{ - Id: "123", Repository: &api.Repository{Id: "abc", Name: "wireguard", Publisher: &api.Publisher{Name: "Plural"}}, - }, - expectedResponse: `+-----------+-------------------------------------------------------------------------------+-------+-------+ -| NAME | HOSTNAME | PORT | READY | -+-----------+-------------------------------------------------------------------------------+-------+-------+ -| wireguard | k8s-wireguar-wireguar-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.us-east-1.amazonaws.com | 51820 | true | -+-----------+-------------------------------------------------------------------------------+-------+-------+ -`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - kube := mocks.NewKube(t) - client.On("GetInstallation", "wireguard").Return(test.installation, nil) - kube.On("WireguardServerList", "wireguard").Return(test.servers, nil) - app := plural.CreateNewApp(&plural.Plural{ - Plural: pluralclient.Plural{ - Client: client, - Kube: kube, - }, - }) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, res) - - }) - } -} - -func TestClientList(t *testing.T) { - tests := []struct { - name string - args []string - peers *vpnv1alpha1.WireguardPeerList - expectedResponse string - installation *api.Installation - }{ - { - name: `test "vpn list clients" without server flag`, - args: []string{plural.ApplicationName, "vpn", "list", "clients"}, - peers: &vpnv1alpha1.WireguardPeerList{ - Items: []vpnv1alpha1.WireguardPeer{ - { - ObjectMeta: metav1.ObjectMeta{ - Name: "test-client-1", - Namespace: "wireguard", - }, - Spec: vpnv1alpha1.WireguardPeerSpec{ - WireguardRef: "wireguard", - Address: "10.8.0.2", - PublicKey: "test-public-key", - }, - Status: vpnv1alpha1.WireguardPeerStatus{ - ConfigRef: corev1.SecretKeySelector{ - LocalObjectReference: corev1.LocalObjectReference{ - Name: "test-client-1-config", - }, - Key: "wg0.conf", - }, - Ready: true, - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - Name: "test-client-2", - Namespace: "wireguard", - }, - Spec: vpnv1alpha1.WireguardPeerSpec{ - WireguardRef: "wireguard2", - Address: "10.8.0.3", - PublicKey: "test-public-key", - }, - Status: vpnv1alpha1.WireguardPeerStatus{ - ConfigRef: corev1.SecretKeySelector{ - LocalObjectReference: corev1.LocalObjectReference{ - Name: "test-client-2-config", - }, - Key: "wg0.conf", - }, - Ready: false, - }, - }, - }, - }, - installation: &api.Installation{ - Id: "123", Repository: &api.Repository{Id: "abc", Name: "wireguard", Publisher: &api.Publisher{Name: "Plural"}}, - }, - expectedResponse: `+---------------+----------+----------------------+-----------------+-------+ -| NAME | ADDRESS | CONFIG SECRET | PUBLIC KEY | READY | -+---------------+----------+----------------------+-----------------+-------+ -| test-client-1 | 10.8.0.2 | test-client-1-config | test-public-key | true | -+---------------+----------+----------------------+-----------------+-------+ -`, - }, - { - name: `test "vpn list clients" with server flag`, - args: []string{plural.ApplicationName, "vpn", "list", "clients", "--server", "wireguard2"}, - peers: &vpnv1alpha1.WireguardPeerList{ - Items: []vpnv1alpha1.WireguardPeer{ - { - ObjectMeta: metav1.ObjectMeta{ - Name: "test-client-1", - Namespace: "wireguard", - }, - Spec: vpnv1alpha1.WireguardPeerSpec{ - WireguardRef: "wireguard", - Address: "10.8.0.2", - PublicKey: "test-public-key", - }, - Status: vpnv1alpha1.WireguardPeerStatus{ - ConfigRef: corev1.SecretKeySelector{ - LocalObjectReference: corev1.LocalObjectReference{ - Name: "test-client-1-config", - }, - Key: "wg0.conf", - }, - Ready: true, - }, - }, - { - ObjectMeta: metav1.ObjectMeta{ - Name: "test-client-2", - Namespace: "wireguard", - }, - Spec: vpnv1alpha1.WireguardPeerSpec{ - WireguardRef: "wireguard2", - Address: "10.8.0.3", - PublicKey: "test-public-key", - }, - Status: vpnv1alpha1.WireguardPeerStatus{ - ConfigRef: corev1.SecretKeySelector{ - LocalObjectReference: corev1.LocalObjectReference{ - Name: "test-client-2-config", - }, - Key: "wg0.conf", - }, - Ready: false, - }, - }, - }, - }, - installation: &api.Installation{ - Id: "123", Repository: &api.Repository{Id: "abc", Name: "wireguard", Publisher: &api.Publisher{Name: "Plural"}}, - }, - expectedResponse: `+---------------+----------+----------------------+-----------------+-------+ -| NAME | ADDRESS | CONFIG SECRET | PUBLIC KEY | READY | -+---------------+----------+----------------------+-----------------+-------+ -| test-client-2 | 10.8.0.3 | test-client-2-config | test-public-key | false | -+---------------+----------+----------------------+-----------------+-------+ -`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - kube := mocks.NewKube(t) - client.On("GetInstallation", "wireguard").Return(test.installation, nil) - kube.On("WireguardPeerList", "wireguard").Return(test.peers, nil) - app := plural.CreateNewApp(&plural.Plural{ - Plural: pluralclient.Plural{ - Client: client, - Kube: kube, - }, - }) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, res) - - }) - } -} - -func TestClientCreate(t *testing.T) { - tests := []struct { - name string - args []string - peer *vpnv1alpha1.WireguardPeer - expectedResponse string - installation *api.Installation - server *vpnv1alpha1.WireguardServer - expectedError string - }{ - { - name: `test "vpn create client" without specifying server`, - args: []string{plural.ApplicationName, "vpn", "create", "client", "test-client"}, - peer: &vpnv1alpha1.WireguardPeer{ - - ObjectMeta: metav1.ObjectMeta{ - Name: "test-client", - Namespace: "wireguard", - }, - Spec: vpnv1alpha1.WireguardPeerSpec{ - WireguardRef: "wireguard", - Address: "10.8.0.2", - PublicKey: "test-public-key", - }, - Status: vpnv1alpha1.WireguardPeerStatus{ - ConfigRef: corev1.SecretKeySelector{ - LocalObjectReference: corev1.LocalObjectReference{ - Name: "test-client-config", - }, - Key: "wg0.conf", - }, - Ready: true, - }, - }, - installation: &api.Installation{ - Id: "123", Repository: &api.Repository{Id: "abc", Name: "wireguard", Publisher: &api.Publisher{Name: "Plural"}}, - }, - server: &vpnv1alpha1.WireguardServer{ - ObjectMeta: metav1.ObjectMeta{ - Name: "wireguard", - Namespace: "wireguard", - }, - Spec: vpnv1alpha1.WireguardServerSpec{ - WireguardImage: "dkr.plural.sh/bootstrap/wireguard-server:0.1.2", - }, - Status: vpnv1alpha1.WireguardServerStatus{ - Port: "51820", - Hostname: "k8s-wireguar-wireguar-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.us-east-1.amazonaws.com", - Ready: true, - }, - }, - expectedResponse: `+-------------+----------+-----------+--------------------+-----------------+-------+ -| NAME | ADDRESS | SERVER | CONFIG SECRET | PUBLIC KEY | READY | -+-------------+----------+-----------+--------------------+-----------------+-------+ -| test-client | 10.8.0.2 | wireguard | test-client-config | test-public-key | true | -+-------------+----------+-----------+--------------------+-----------------+-------+ -`, - }, - { - name: `test "vpn create client" with specifying server flag`, - args: []string{plural.ApplicationName, "vpn", "create", "client", "test-client", "--server", "wireguard2"}, - peer: &vpnv1alpha1.WireguardPeer{ - - ObjectMeta: metav1.ObjectMeta{ - Name: "test-client", - Namespace: "wireguard", - }, - Spec: vpnv1alpha1.WireguardPeerSpec{ - WireguardRef: "wireguard2", - Address: "10.8.0.2", - PublicKey: "test-public-key", - }, - Status: vpnv1alpha1.WireguardPeerStatus{ - ConfigRef: corev1.SecretKeySelector{ - LocalObjectReference: corev1.LocalObjectReference{ - Name: "test-client-config", - }, - Key: "wg0.conf", - }, - Ready: true, - }, - }, - installation: &api.Installation{ - Id: "123", Repository: &api.Repository{Id: "abc", Name: "wireguard", Publisher: &api.Publisher{Name: "Plural"}}, - }, - server: &vpnv1alpha1.WireguardServer{ - ObjectMeta: metav1.ObjectMeta{ - Name: "wireguard2", - Namespace: "wireguard", - }, - Spec: vpnv1alpha1.WireguardServerSpec{ - WireguardImage: "dkr.plural.sh/bootstrap/wireguard-server:0.1.2", - }, - Status: vpnv1alpha1.WireguardServerStatus{ - Port: "51820", - Hostname: "k8s-wireguar-wireguar-xxxxxxxxxx-xxxxxxxxxxxxxxxx.elb.us-east-1.amazonaws.com", - Ready: true, - }, - }, - expectedResponse: `+-------------+----------+------------+--------------------+-----------------+-------+ -| NAME | ADDRESS | SERVER | CONFIG SECRET | PUBLIC KEY | READY | -+-------------+----------+------------+--------------------+-----------------+-------+ -| test-client | 10.8.0.2 | wireguard2 | test-client-config | test-public-key | true | -+-------------+----------+------------+--------------------+-----------------+-------+ -`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - client := mocks.NewClient(t) - kube := mocks.NewKube(t) - client.On("GetInstallation", "wireguard").Return(test.installation, nil) - if test.expectedError == "" { - kube.On("WireguardServer", "wireguard", mock.AnythingOfType("string")).Return(test.server, nil) - kube.On("WireguardPeerCreate", "wireguard", mock.AnythingOfType("*v1alpha1.WireguardPeer")).Return(test.peer, nil) - } - app := plural.CreateNewApp(&plural.Plural{ - Plural: pluralclient.Plural{ - Client: client, - Kube: kube, - }, - }) - app.HelpName = plural.ApplicationName - os.Args = test.args - res, err := common.CaptureStdout(app, os.Args) - if test.expectedError != "" { - assert.Equal(t, err.Error(), test.expectedError) - } else { - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, res) - } - }) - } -} diff --git a/cmd/command/workspace/workspace.go b/cmd/command/workspace/workspace.go deleted file mode 100644 index d54fbb0ff..000000000 --- a/cmd/command/workspace/workspace.go +++ /dev/null @@ -1,239 +0,0 @@ -package workspace - -import ( - "fmt" - "os" - "path/filepath" - "strings" - - "github.com/pluralsh/plural-cli/pkg/client" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/helm" - "github.com/pluralsh/plural-cli/pkg/provider" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/wkspace" - "github.com/urfave/cli" - "helm.sh/helm/v3/pkg/action" -) - -type Plural struct { - client.Plural - HelmConfiguration *action.Configuration -} - -func Command(clients client.Plural, helmConfiguration *action.Configuration) cli.Command { - p := Plural{ - Plural: clients, - HelmConfiguration: helmConfiguration, - } - return cli.Command{ - Name: "workspace", - Aliases: []string{"wkspace"}, - Usage: "Commands for managing installations in your workspace", - Subcommands: p.workspaceCommands(), - Category: "Workspace", - } -} - -func (p *Plural) workspaceCommands() []cli.Command { - return []cli.Command{ - { - Name: "kube-init", - Usage: "generates kubernetes credentials for this subworkspace", - Action: common.LatestVersion(kubeInit), - }, - { - Name: "readme", - Usage: "generate chart readme for an app", - ArgsUsage: "{app}", - Flags: []cli.Flag{ - cli.BoolFlag{ - Name: "dry-run", - Usage: "output to stdout instead of to a file", - }, - }, - Action: common.LatestVersion(func(c *cli.Context) error { return common.AppReadme(c.Args().Get(0), c.Bool("dry-run")) }), - }, - { - Name: "helm", - Usage: "upgrade/installs the helm chart for this subworkspace", - ArgsUsage: "{name}", - Flags: []cli.Flag{ - cli.StringSliceFlag{ - Name: "skip", - Usage: "helm sub-chart to skip. can be passed multiple times", - }, - cli.StringSliceFlag{ - Name: "set", - Usage: "helm value to set. can be passed multiple times", - }, - cli.StringSliceFlag{ - Name: "setJSON", - Usage: "JSON helm value to set. can be passed multiple times", - }, - cli.BoolFlag{ - Name: "wait", - Usage: "have helm wait until all pods are in ready state", - }, - }, - Action: common.LatestVersion(common.InitKubeconfig(p.bounceHelm)), - }, - { - Name: "helm-diff", - Usage: "diffs the helm release for this subworkspace", - ArgsUsage: "{name}", - Action: common.LatestVersion(p.diffHelm), - }, - { - Name: "helm-deps", - Usage: "updates the helm dependencies for this workspace", - ArgsUsage: "{path}", - Action: common.LatestVersion(updateDeps), - }, - { - Name: "terraform-diff", - Usage: "diffs the helm release for this subworkspace", - ArgsUsage: "{name}", - Action: common.LatestVersion(p.diffTerraform), - }, - { - Name: "crds", - Usage: "installs the crds for this repo", - ArgsUsage: "{name}", - Action: common.LatestVersion(common.InitKubeconfig(p.createCrds)), - }, - { - Name: "helm-template", - Usage: "templates the helm values to stdout", - ArgsUsage: "{name}", - Action: common.LatestVersion(common.RequireArgs(p.templateHelm, []string{"{name}"})), - }, - { - Name: "helm-mapkubeapis", - Usage: "updates in-place Helm release metadata that contains deprecated or removed Kubernetes APIs to a new instance with supported Kubernetes APIs", - ArgsUsage: "{name}", - Action: common.LatestVersion(common.RequireArgs(p.mapkubeapis, []string{"{name}"})), - }, - } -} - -func kubeInit(_ *cli.Context) error { - _, found := utils.ProjectRoot() - if !found { - return fmt.Errorf("Project not initialized, run `plural init` to set up a workspace") - } - - prov, err := provider.GetProvider() - if err != nil { - return err - } - - return prov.KubeConfig() -} - -func (p *Plural) bounceHelm(c *cli.Context) error { - name := c.Args().Get(0) - minimal, err := wkspace.Minimal(name, p.HelmConfiguration) - if err != nil { - return err - } - - var skipArgs []string - if c.IsSet("skip") { - for _, skipChart := range c.StringSlice("skip") { - skipString := fmt.Sprintf("%s.enabled=false", skipChart) - skipArgs = append(skipArgs, skipString) - } - } - var setArgs []string - if c.IsSet("set") { - setArgs = append(setArgs, c.StringSlice("set")...) - } - - var setJSONArgs []string - if c.IsSet("setJSON") { - setJSONArgs = append(setJSONArgs, c.StringSlice("setJSON")...) - } - - return minimal.BounceHelm(c.IsSet("wait"), skipArgs, setArgs, setJSONArgs) -} - -func (p *Plural) diffHelm(c *cli.Context) error { - name := c.Args().Get(0) - minimal, err := wkspace.Minimal(name, p.HelmConfiguration) - if err != nil { - return err - } - - return minimal.DiffHelm() -} - -func (p *Plural) diffTerraform(c *cli.Context) error { - name := c.Args().Get(0) - minimal, err := wkspace.Minimal(name, p.HelmConfiguration) - if err != nil { - return err - } - - return minimal.DiffTerraform() -} - -func (p *Plural) createCrds(_ *cli.Context) error { - err := p.InitKube() - if err != nil { - return err - } - if empty, err := utils.IsEmpty("crds"); err != nil || empty { - return nil - } - - return filepath.Walk("crds", func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - - if info.IsDir() { - return nil - } - - err = p.Kube.Apply(path, true) - if err != nil { - errStr := fmt.Sprint(err) - if strings.Contains(errStr, "invalid apiVersion \"client.authentication.k8s.io/v1alpha1\"") { - return fmt.Errorf("failed with %s, this is usually due to your aws cli version being out of date", errStr) - } - return err - } - - return nil - }) -} - -func updateDeps(c *cli.Context) error { - path := c.Args().Get(0) - if path == "" { - path = "." - } - - return helm.UpdateDependencies(path) -} - -func (p *Plural) templateHelm(c *cli.Context) error { - name := c.Args().Get(0) - minimal, err := wkspace.Minimal(name, p.HelmConfiguration) - if err != nil { - return err - } - - return minimal.TemplateHelm() -} - -func (p *Plural) mapkubeapis(c *cli.Context) error { - name := c.Args().Get(0) - minimal, err := wkspace.Minimal(name, p.HelmConfiguration) - if err != nil { - return err - } - - return minimal.MapKubeApis() -} diff --git a/cmd/command/workspace/workspace_test.go b/cmd/command/workspace/workspace_test.go deleted file mode 100644 index 316deb844..000000000 --- a/cmd/command/workspace/workspace_test.go +++ /dev/null @@ -1,141 +0,0 @@ -package workspace_test - -import ( - "io" - "os" - "path/filepath" - "testing" - - "github.com/pluralsh/plural-cli/pkg/common" - - "github.com/pluralsh/plural-cli/cmd/command/plural" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/stretchr/testify/assert" - "gopkg.in/yaml.v2" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage" - "helm.sh/helm/v3/pkg/storage/driver" -) - -const subchart = "subchart" - -func TestHelmCommands(t *testing.T) { - // create temp environment - currentDir, err := os.Getwd() - assert.NoError(t, err) - dir, err := os.MkdirTemp("", "config") - assert.NoError(t, err) - defer func(path, currentDir string) { - _ = os.RemoveAll(path) - _ = os.Chdir(currentDir) - }(dir, currentDir) - tFiles, err := filepath.Abs("../../../pkg/test/helm") - assert.NoError(t, err) - err = utils.CopyDir(tFiles, filepath.Join(dir, subchart)) - assert.NoError(t, err) - err = os.Chdir(dir) - assert.NoError(t, err) - _, err = git.Init() - assert.NoError(t, err) - data, err := yaml.Marshal(manifest.ProjectManifest{ - Cluster: "test", - Bucket: "test", - Project: "test", - Provider: "test", - Region: "test", - }) - assert.NoError(t, err) - err = os.WriteFile("workspace.yaml", data, os.FileMode(0755)) - assert.NoError(t, err) - - tests := []struct { - name string - args []string - expectedOutput string - store *storage.Storage - directory string - }{ - { - name: `test helm-template`, - args: []string{plural.ApplicationName, "workspace", "helm-template", subchart}, - expectedOutput: "subchart/helm/output/template.txt", - store: storageFixture(), - directory: dir, - }, - { - name: `test helm install`, - args: []string{plural.ApplicationName, "workspace", "helm", subchart}, - store: storageFixture(), - directory: filepath.Join(dir, subchart), - }, - { - name: `test helm upgrade`, - args: []string{plural.ApplicationName, "workspace", "helm", subchart}, - store: storageReleaseDeployed(t), - directory: filepath.Join(dir, subchart), - }, - { - name: `test helm-diff`, - args: []string{plural.ApplicationName, "workspace", "helm-diff", subchart}, - expectedOutput: "subchart/helm/output/diff.txt", - store: storageReleaseDeployed(t), - directory: dir, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - actionConfig := &action.Configuration{ - Releases: test.store, - KubeClient: &kubefake.PrintingKubeClient{Out: io.Discard}, - Capabilities: chartutil.DefaultCapabilities, - Log: func(format string, v ...interface{}) {}, - } - err = os.Chdir(test.directory) - assert.NoError(t, err) - defer func() { - err := os.Chdir(dir) - assert.NoError(t, err) - }() - - app := plural.CreateNewApp(&plural.Plural{HelmConfiguration: actionConfig}) - app.HelpName = plural.ApplicationName - os.Args = test.args - output, err := common.CaptureStdout(app, os.Args) - assert.NoError(t, err) - if test.expectedOutput != "" { - expected, err := utils.ReadFile(test.expectedOutput) - assert.NoError(t, err) - assert.Equal(t, expected, output) - } - }) - } -} - -func storageFixture() *storage.Storage { - return storage.Init(driver.NewMemory()) -} - -func storageReleaseDeployed(t *testing.T) *storage.Storage { - fixture := storageFixture() - err := fixture.Create(&release.Release{ - Name: "subchart", - Info: &release.Info{Status: release.StatusDeployed}, - Chart: &chart.Chart{ - Metadata: &chart.Metadata{ - Name: "Myrelease-Chart", - Version: "1.2.3", - }, - }, - Version: 1, - }) - if err != nil { - t.Fatal("can't create storage") - } - return fixture -} diff --git a/cmd/plrlctl/main.go b/cmd/plrlctl/main.go deleted file mode 100644 index f2ef09363..000000000 --- a/cmd/plrlctl/main.go +++ /dev/null @@ -1,87 +0,0 @@ -package main - -import ( - "log" - "os" - - "github.com/pluralsh/plural-cli/cmd/command/cd" - - "github.com/fatih/color" - "github.com/urfave/cli" - "helm.sh/helm/v3/pkg/action" - - "github.com/pluralsh/plural-cli/cmd/command/clone" - cryptocmd "github.com/pluralsh/plural-cli/cmd/command/crypto" - "github.com/pluralsh/plural-cli/cmd/command/down" - cmdinit "github.com/pluralsh/plural-cli/cmd/command/init" - "github.com/pluralsh/plural-cli/cmd/command/mgmt" - "github.com/pluralsh/plural-cli/cmd/command/pr" - "github.com/pluralsh/plural-cli/cmd/command/profile" - "github.com/pluralsh/plural-cli/cmd/command/up" - "github.com/pluralsh/plural-cli/cmd/command/version" - "github.com/pluralsh/plural-cli/pkg/client" - conf "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/crypto" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -const ApplicationName = "plrlctl" - -type Plural struct { - client.Plural - HelmConfiguration *action.Configuration -} - -func globalFlags() []cli.Flag { - return []cli.Flag{ - cli.StringFlag{ - Name: "profile-file", - Usage: "configure your config.yml profile `FILE`", - EnvVar: "PLURAL_PROFILE_FILE", - Destination: &conf.ProfileFile, - }, - cli.StringFlag{ - Name: "encryption-key-file", - Usage: "configure your encryption key `FILE`", - EnvVar: "PLURAL_ENCRYPTION_KEY_FILE", - Destination: &crypto.EncryptionKeyFile, - }, - cli.BoolFlag{ - Name: "debug", - Usage: "enable debug mode", - EnvVar: "PLURAL_DEBUG_ENABLE", - Destination: &utils.EnableDebug, - }, - } -} - -func main() { - - plural := &Plural{} - - app := cli.NewApp() - app.Name = ApplicationName - app.Usage = "Tooling to manage and operate a fleet of clusters" - app.EnableBashCompletion = true - app.Flags = globalFlags() - commands := []cli.Command{ - cryptocmd.Command(plural.Plural), - clone.Command(), - cd.Command(plural.Plural, plural.HelmConfiguration), - up.Command(plural.Plural), - down.Command(), - pr.Command(plural.Plural), - cmdinit.Command(plural.Plural), - mgmt.Command(plural.Plural), - profile.Command(), - version.Command(), - } - app.Commands = commands - if os.Getenv("ENABLE_COLOR") != "" { - color.NoColor = false - } - err := app.Run(os.Args) - if err != nil { - log.Fatal(err) - } -} diff --git a/dockerfiles/plrlctl/Dockerfile b/dockerfiles/plrlctl/Dockerfile deleted file mode 100644 index 7fe58ad8e..000000000 --- a/dockerfiles/plrlctl/Dockerfile +++ /dev/null @@ -1,47 +0,0 @@ -FROM ubuntu:22.10 AS user - -# Create a nonroot user for final image -RUN useradd -u 10001 nonroot - -FROM golang:1.22-alpine3.19 AS builder - -WORKDIR /workspace - -# Copy the Go Modules manifests -COPY go.mod go.mod -COPY go.sum go.sum -# cache deps before building and copying source so that we don't need to re-download as much -# and so that source changes don't invalidate our downloaded layer -RUN go mod download - -# Copy the go source -COPY cmd/ cmd/ -COPY pkg/ pkg/ - -# Build -ARG APP_VSN -ARG APP_COMMIT -ARG APP_DATE -ARG TARGETARCH - -RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} \ - go build -ldflags '-s -w \ - -X "github.com/pluralsh/plural-cli/pkg/common.Version=${APP_VSN}" \ - -X "github.com/pluralsh/plural-cli/pkg/common.Commit=${APP_COMMIT}" \ - -X "github.com/pluralsh/plural-cli/pkg/common.Date=${APP_DATE}"' \ - -o plrlctl ./cmd/plrlctl - -FROM golang:1.22-alpine3.19 AS final - -WORKDIR / - -RUN apk update && apk add --no-cache git build-base - -# Copy nonroot user and switch to it -COPY --from=user /etc/passwd /etc/passwd -USER nonroot - -COPY --chown=nonroot --from=builder /workspace/plrlctl /go/bin/ -RUN chmod a+x /go/bin/plrlctl - -ENTRYPOINT ["/go/bin/plrlctl"] diff --git a/go.mod b/go.mod index d06c92e3c..f1f076aa9 100644 --- a/go.mod +++ b/go.mod @@ -22,21 +22,14 @@ require ( github.com/aws/aws-sdk-go-v2/service/iam v1.32.0 github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 github.com/briandowns/spinner v1.23.0 - github.com/buger/goterm v1.0.4 github.com/chartmuseum/helm-push v0.10.3 - github.com/databus23/helm-diff/v3 v3.6.0 github.com/fatih/color v1.16.0 - github.com/gin-gonic/gin v1.9.1 github.com/go-git/go-git/v5 v5.11.0 github.com/gofrs/flock v0.8.1 github.com/google/go-github/v45 v45.2.0 - github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 github.com/hashicorp/go-retryablehttp v0.7.7 - github.com/hashicorp/hcl v1.0.0 github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1 - github.com/helm/helm-mapkubeapis v0.4.1 github.com/imdario/mergo v0.3.16 - github.com/inancgumus/screen v0.0.0-20190314163918-06e984b86ed3 github.com/joho/godotenv v1.3.0 github.com/ktrysmt/go-bitbucket v0.9.55 github.com/likexian/doh v0.7.1 @@ -44,7 +37,6 @@ require ( github.com/mikesmitty/edkey v0.0.0-20170222072505-3356ea4e686a github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/mapstructure v1.5.0 - github.com/norwoodj/helm-docs v1.11.2 github.com/olekukonko/tablewriter v0.0.5 github.com/packethost/packngo v0.29.0 github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c @@ -54,17 +46,11 @@ require ( github.com/pluralsh/plural-operator v0.5.5 github.com/pluralsh/polly v0.1.10 github.com/posthog/posthog-go v0.0.0-20230801140217-d607812dee69 - github.com/rodaine/hclencoder v0.0.1 github.com/samber/lo v1.46.0 - github.com/spf13/viper v1.18.2 github.com/urfave/cli v1.22.14 - github.com/wailsapp/wails/v2 v2.4.1 github.com/xanzy/go-gitlab v0.73.1 github.com/yuin/gopher-lua v0.0.0-20220504180219-658193537a64 - go.mercari.io/hcledit v0.0.8 golang.org/x/crypto v0.25.0 - golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc - golang.org/x/mod v0.18.0 golang.org/x/oauth2 v0.19.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 @@ -73,8 +59,6 @@ require ( k8s.io/api v0.30.1 k8s.io/apimachinery v0.31.0-beta.0 k8s.io/client-go v0.30.1 - layeh.com/gopher-luar v1.0.10 - sigs.k8s.io/application v0.8.3 sigs.k8s.io/controller-runtime v0.18.2 sigs.k8s.io/yaml v1.4.0 ) @@ -87,9 +71,6 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork v1.1.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect - github.com/agext/levenshtein v1.2.2 // indirect - github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect - github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.11 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 // indirect @@ -104,12 +85,9 @@ require ( github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect github.com/aws/smithy-go v1.20.2 // indirect - github.com/bep/debounce v1.2.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect - github.com/bytedance/sonic v1.9.1 // indirect github.com/cenkalti/backoff v2.2.1+incompatible // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect - github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/containerd/errdefs v0.1.0 // indirect github.com/containerd/log v0.1.0 // indirect @@ -123,67 +101,40 @@ require ( github.com/docker/go-metrics v0.0.1 // indirect github.com/emicklei/go-restful/v3 v3.12.0 // indirect github.com/evanphx/json-patch/v5 v5.9.0 // indirect - github.com/fatih/camelcase v1.0.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect - github.com/gabriel-vasile/mimetype v1.4.2 // indirect github.com/go-gorp/gorp/v3 v3.1.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-resty/resty/v2 v2.9.1 // indirect - github.com/goccy/go-json v0.10.2 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/s2a-go v0.1.7 // indirect + github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect - github.com/hashicorp/hcl/v2 v2.15.0 // indirect - github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kylelemons/godebug v1.1.0 // indirect - github.com/labstack/echo/v4 v4.9.0 // indirect - github.com/labstack/gommon v0.3.1 // indirect - github.com/leaanthony/go-ansi-parser v1.0.1 // indirect - github.com/leaanthony/gosod v1.0.3 // indirect - github.com/leaanthony/slicer v1.5.0 // indirect github.com/likexian/gokit v0.25.15 // indirect - github.com/magiconair/properties v1.8.7 // indirect github.com/miekg/dns v1.1.50 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/osteele/liquid v1.4.0 // indirect github.com/osteele/tuesday v1.0.3 // indirect - github.com/pelletier/go-toml/v2 v2.2.0 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pluralsh/controller-reconcile-helper v0.0.4 // indirect - github.com/sagikazarmark/locafero v0.4.0 // indirect - github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/skeema/knownhosts v1.2.1 // indirect github.com/sosodev/duration v1.3.1 // indirect - github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.11.0 // indirect github.com/stretchr/objx v0.5.2 // indirect - github.com/subosito/gotenv v1.6.0 // indirect - github.com/tkrajina/go-reflector v0.5.5 // indirect - github.com/twitchyliquid64/golang-asm v0.15.1 // indirect - github.com/valyala/bytebufferpool v1.0.0 // indirect - github.com/valyala/fasttemplate v1.2.1 // indirect github.com/vektah/gqlparser/v2 v2.5.16 // indirect - github.com/wailsapp/mimetype v1.4.1 // indirect github.com/x448/float16 v0.8.4 // indirect - github.com/zclconf/go-cty v1.13.2 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect go.opentelemetry.io/otel v1.22.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0 // indirect go.opentelemetry.io/otel/metric v1.22.0 // indirect go.opentelemetry.io/otel/sdk v1.22.0 // indirect go.opentelemetry.io/otel/trace v1.22.0 // indirect - go.uber.org/multierr v1.11.0 // indirect - golang.org/x/arch v0.3.0 // indirect google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect @@ -222,7 +173,6 @@ require ( github.com/evanphx/json-patch v5.7.0+incompatible github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect github.com/ghodss/yaml v1.0.0 // indirect - github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-errors/errors v1.5.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect @@ -230,15 +180,12 @@ require ( github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/swag v0.22.4 // indirect - github.com/go-playground/locales v0.14.1 // indirect - github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/go-playground/validator/v10 v10.14.0 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.2 // indirect - github.com/google/go-cmp v0.6.0 + github.com/google/go-cmp v0.6.0 // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.6.0 // indirect @@ -262,7 +209,6 @@ require ( github.com/klauspost/compress v1.17.4 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect - github.com/leodido/go-urn v1.2.4 // indirect github.com/lib/pq v1.10.9 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect github.com/mailru/easyjson v0.7.7 // indirect @@ -299,12 +245,11 @@ require ( github.com/schollz/progressbar/v3 v3.14.1 // indirect github.com/sergi/go-diff v1.3.1 // indirect github.com/shopspring/decimal v1.3.1 // indirect - github.com/sirupsen/logrus v1.9.3 + github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/cobra v1.8.1 // indirect github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace // indirect github.com/stretchr/testify v1.9.0 - github.com/ugorji/go/codec v1.2.11 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect diff --git a/go.sum b/go.sum index 686db7cac..f5138c410 100644 --- a/go.sum +++ b/go.sum @@ -1,622 +1,24 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= -cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= -cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= -cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= -cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= -cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= -cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= -cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= -cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= -cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= -cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= -cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= -cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= -cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= -cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= -cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= -cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= -cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= -cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= -cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= -cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= -cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= -cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= -cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= -cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= -cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= -cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= -cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= -cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= -cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= -cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= -cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= -cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= -cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= -cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= -cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= -cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= -cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= -cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= -cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= -cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= -cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= -cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= -cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= -cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= -cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= -cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= -cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= -cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= -cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= -cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= -cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= -cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= -cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= -cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= -cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= -cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= -cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= -cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= -cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= -cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= -cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= -cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= -cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= -cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= -cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= -cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= -cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= -cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= -cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= -cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= -cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= -cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= -cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= -cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= -cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= -cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= -cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= -cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= -cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= -cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= -cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= -cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= -cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= -cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= -cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= -cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= -cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= -cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= -cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= -cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= -cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= -cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= -cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= -cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= -cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= -cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= -cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= -cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= -cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= -cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= -cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= -cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= -cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= -cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= -cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= -cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= -cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= -cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= -cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= -cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= -cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= -cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= -cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= -cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= -cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= -cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= -cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= -cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= -cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= -cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= -cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= -cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= -cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= -cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= -cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= -cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= -cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= -cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= -cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= -cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= -cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= -cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= -cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= -cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= -cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= -cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= -cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= -cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= -cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= -cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= -cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= -cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= -cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= -cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= -cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= -cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= -cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= -cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= -cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= -cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= -cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= -cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= -cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= -cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= -cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= -cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= -cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= -cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= -cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= -cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= -cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= -cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= -cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= -cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= -cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= -cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= -cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= -cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= -cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= -cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= -cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= -cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= -cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= -cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= -cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= -cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= -cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= -cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= -cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= -cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= -cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= -cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= -cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= -cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= -cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= -cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= -cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= -cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= -cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= -cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= -cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= -cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= -cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= -cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= -cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= cloud.google.com/go/longrunning v0.5.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg= cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= -cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= -cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= -cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= -cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= -cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= -cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= -cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= -cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= -cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= -cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= -cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= -cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= -cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= -cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= -cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= -cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= -cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= -cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= -cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= -cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= -cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= -cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= -cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= -cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= -cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= -cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= -cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= -cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= -cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= -cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= -cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= -cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= -cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= -cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= -cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= -cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= -cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= -cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= -cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= -cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= -cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= -cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= -cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= -cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= -cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= -cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= -cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= -cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= -cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= -cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= -cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= -cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= -cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= -cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= -cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= -cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= -cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= -cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= -cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= -cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= cloud.google.com/go/resourcemanager v1.9.4 h1:JwZ7Ggle54XQ/FVYSBrMLOQIKoIT/uer8mmNvNLK51k= cloud.google.com/go/resourcemanager v1.9.4/go.mod h1:N1dhP9RFvo3lUfwtfLWVxfUWq8+KUQ+XLlHLH3BoFJ0= -cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= -cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= -cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= -cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= -cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= -cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= -cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= -cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= -cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= -cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= -cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= -cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= -cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= -cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= -cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= -cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= -cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= -cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= -cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= -cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= -cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= -cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= -cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= -cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= -cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= -cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= -cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= -cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= -cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= -cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= -cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= -cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= -cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= -cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= -cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= cloud.google.com/go/serviceusage v1.6.0 h1:rXyq+0+RSIm3HFypctp7WoXxIA563rn206CfMWdqXX4= cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= -cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= -cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= -cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= -cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= -cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= -cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= -cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= -cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= -cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= -cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= cloud.google.com/go/storage v1.35.1 h1:B59ahL//eDfx2IIKFBeT5Atm9wnNmj3+8xG/W4WB//w= cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= -cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= -cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= -cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= -cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= -cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= -cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= -cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= -cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= -cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= -cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= -cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= -cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= -cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= -cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= -cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= -cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= -cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= -cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= -cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= -cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= -cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= -cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= -cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= -cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= -cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= -cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= -cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= -cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= -cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= -cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= -cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= -cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= -cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= -cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= -cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= -cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= -cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= -cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= -cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= -cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= -cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= -cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= -cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= -cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= -cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= -cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= -cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= -cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= -cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/age v1.1.1 h1:pIpO7l151hCnQ4BdyBujnGP2YlUo0uj6sAVNHGBvXHg= filippo.io/age v1.1.1/go.mod h1:l03SrzDUrBkdBx8+IILdnn2KZysqQdbEBUQ4p3sqEQE= -gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= -git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= github.com/99designs/gqlgen v0.17.49 h1:b3hNGexHd33fBSAd4NDT/c3NCcQzcAVkknhN9ym36YQ= github.com/99designs/gqlgen v0.17.49/go.mod h1:tC8YFVZMed81x7UJ7ORUwXF4Kn6SXuucFqQBhN8+BU0= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= @@ -643,13 +45,11 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.3.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.3.0/go.mod h1:+OgGVo0Httq7N5oayfvaLQ/Jq+2gJdqfp++Hyyl7Tws= github.com/Azure/azure-storage-blob-go v0.15.0 h1:rXtgp8tN1p29GvpGgfJetavIG0V7OgcSXPpwp3tx6qk= github.com/Azure/azure-storage-blob-go v0.15.0/go.mod h1:vbjsVbX0dlxnRc4FFMPsS9BsJWPcne7GB7onqlPvz58= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.24 h1:1fIGgHKqVm54KIPT+q8Zmd1QlVsmHqeUGso5qm2BqqE= +github.com/Azure/go-autorest/autorest v0.11.18 h1:90Y4srNYrwOtAgVo3ndrQkTYn6kf1Eg/AjTFJ8Is2aM= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.23 h1:Yepx8CvFxwNKpH6ja7RZ+sKX+DWYNldbLiALMC3BTz8= github.com/Azure/go-autorest/autorest/adal v0.9.23/go.mod h1:5pcMqFkdPhviJdlEy3kC/v1ZLnQl0MH6XA5YCcMhy4c= @@ -665,21 +65,15 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= -github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= github.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8afzqM= @@ -689,59 +83,20 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Microsoft/hcsshim v0.11.7 h1:vl/nj3Bar/CvJSYo7gIQPyRWc9f3c6IeSNavBTSZNZQ= github.com/Microsoft/hcsshim v0.11.7/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Yamashou/gqlgenc v0.23.2 h1:WPxYPrwc6W4Z1eY4qKxoH3nb5PC4jAMWqQA0G8toQMI= github.com/Yamashou/gqlgenc v0.23.2/go.mod h1:oMc4EQBQeDwLIODvgcvpaSp6rO+KMf47FuOhplv5D3A= -github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= -github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= -github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= -github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= -github.com/alecthomas/kingpin/v2 v2.3.1/go.mod h1:oYL5vtsvEHZGHxU7DMp32Dvx+qL+ptGn6lWaot2vCNE= -github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883 h1:bvNMNQO63//z+xNgfBlViaCIJKLlCJ6/fmUseuG0wVQ= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= -github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= -github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= -github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= -github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= -github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= -github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= -github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= -github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= -github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go-v2 v1.27.1 h1:xypCL2owhog46iFxBKKpBcw+bPTX/RJzwNj8uSilENw= @@ -784,54 +139,28 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 h1:cwIxeBttqPN3qkaAjcEcsh8NYr8n github.com/aws/aws-sdk-go-v2/service/sts v1.28.6/go.mod h1:FZf1/nKNEkHdGGJP/cI2MoIMquumuRK6ol3QQJNDxmw= github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY= -github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A= github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE= github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70= github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= -github.com/buger/goterm v1.0.4 h1:Z9YvGmOih81P0FbVtEYTFF6YsSgxSUKEhf/f9bTMXbY= -github.com/buger/goterm v1.0.4/go.mod h1:HiFWV3xnkolgrBV3mY8m0X0Pumt4zg4QhbdOzQtB8tE= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= -github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= -github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= github.com/chartmuseum/helm-push v0.10.3 h1:0NQq4FJvy7gXm7nlUg2aucv7LTI5wszyI71oYm1zkzk= github.com/chartmuseum/helm-push v0.10.3/go.mod h1:zVskBtjr1r6F3yx6TGrNeqvs2lWcvKeJqUcDMEzle6k= -github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= -github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= -github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -844,21 +173,6 @@ github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUK github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= github.com/containerd/containerd v1.7.20 h1:Sl6jQYk3TRavaU83h66QMbI2Nqg9Jm6qzwX57Vsn1SQ= @@ -871,49 +185,24 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= -github.com/coreos/go-oidc v2.2.1+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/databus23/helm-diff/v3 v3.6.0 h1:ivkIa5ciGaEXzz/JvQVN+CwZjZn4Kvbw7xb1CE5KmrM= -github.com/databus23/helm-diff/v3 v3.6.0/go.mod h1:4uMSSmex9P76xAOzVuQeNs7ZRfJBDe97oFE5iTzWkFk= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/distribution/distribution/v3 v3.0.0-beta.1 h1:X+ELTxPuZ1Xe5MsD3kp2wfGUhc8I+MPfRis8dZ818Ic= github.com/distribution/distribution/v3 v3.0.0-beta.1/go.mod h1:O9O8uamhHzWWQVTjuQpyYUVm/ShPHPUDgvQMpHGVBDs= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= @@ -935,22 +224,10 @@ github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arXfYcAtECDFgAgHklGI8CxgjHnXKJ4= github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emicklei/go-restful/v3 v3.12.0 h1:y2DdzBAURM29NFF94q6RaY4vjIH1rtwDapwQtU84iWk= github.com/emicklei/go-restful/v3 v3.12.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= @@ -958,73 +235,33 @@ github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FM github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= -github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= -github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= -github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= -github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= -github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= -github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= -github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= -github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/foxcpp/go-mockdns v1.0.0 h1:7jBqxd3WDWwi/6WhDvacvH1XsN3rOLXyHM1uhvIx6FI= github.com/foxcpp/go-mockdns v1.0.0/go.mod h1:lgRN6+KxQBawyIghpnl5CezHFGS9VLzvtVlwxvzXTQ4= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= -github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= -github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= -github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= -github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= -github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk= github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= -github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= -github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= -github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= @@ -1033,109 +270,33 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs= github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= -github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= -github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= -github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= -github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= -github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= -github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= -github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= -github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= -github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= -github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= -github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= -github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= -github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= -github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= -github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= -github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= -github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= -github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= -github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= -github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= github.com/go-resty/resty/v2 v2.9.1 h1:PIgGx4VrHvag0juCJ4dDv3MiFRlDmP0vicBucwf+gLM= github.com/go-resty/resty/v2 v2.9.1/go.mod h1:4/GYJVjh9nhkhGR6AUNW3XhpDYNUr+Uvy9gV/VGZIy4= github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= -github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gobuffalo/logger v1.0.6 h1:nnZNpxYo0zx+Aj9RfMPBm+x9zAU2OayFh/xrAWi34HU= github.com/gobuffalo/logger v1.0.6/go.mod h1:J31TBEHR1QLV2683OXTAItYIg8pv2JMHnF/quuAbMjs= github.com/gobuffalo/packd v1.0.1 h1:U2wXfRr4E9DH8IdsDLlRFwTZTK7hLfq9qT/QHXGVe/0= @@ -1144,91 +305,48 @@ github.com/gobuffalo/packr/v2 v2.8.3 h1:xE1yzvnO56cUC0sTpKR3DIbxZgB54AftTFMhB2XE github.com/gobuffalo/packr/v2 v2.8.3/go.mod h1:0SahksCVcx4IMnigTjiFuyldmTrdTctXsOdiU5KwbKc= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= -github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.0.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/cel-go v0.16.1/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= -github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -1237,174 +355,75 @@ github.com/google/go-github/v45 v45.2.0/go.mod h1:FObaZJEDSTa/WGCzZ2Z3eoCDXWJKMe github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af h1:kmjWCqn2qkEml422C2Rrd27c3VGxi6a/6HNq8QmHRKM= github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= -github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= -github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= -github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= -github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU= github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru/arc/v2 v2.0.5 h1:l2zaLDubNhW4XO3LnliVj0GXO3+/CGNJAg1dcN2Fpfw= github.com/hashicorp/golang-lru/arc/v2 v2.0.5/go.mod h1:ny6zBSQZi2JxIeYcv7kt2sH2PXJtirBN7RDhRpxPkxU= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.8.2/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY= -github.com/hashicorp/hcl/v2 v2.15.0 h1:CPDXO6+uORPjKflkWCCwoWc9uRp+zSIPcCQ+BrxV7m8= -github.com/hashicorp/hcl/v2 v2.15.0/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/terraform-plugin-log v0.7.0 h1:SDxJUyT8TwN4l5b5/VkiTIaQgY6R+Y2BQ0sRZftGKQs= github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4= github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1 h1:zHcMbxY0+rFO9gY99elV/XC/UnQVg7FhRCbj1i5b7vM= github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1/go.mod h1:+tNlb0wkfdsDJ7JEiERLz4HzM19HyiuIoGzTsM7rPpw= -github.com/helm/helm-mapkubeapis v0.4.1 h1:Xu03dMzVv/zqp+Vw1+2ZHufnDQRqoGa8Ml4N/GBgqME= -github.com/helm/helm-mapkubeapis v0.4.1/go.mod h1:o2qnBCfz2cbUod9QlbPjjXtsQI/X7QQjwU/rk7m1T2M= github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog= github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU= github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= -github.com/inancgumus/screen v0.0.0-20190314163918-06e984b86ed3 h1:fO9A67/izFYFYky7l1pDP5Dr0BTCRkaQJUG6Jm5ehsk= -github.com/inancgumus/screen v0.0.0-20190314163918-06e984b86ed3/go.mod h1:Ey4uAp+LvIl+s5jRbOHLcZpUDnkjLBROl15fZLwPlTM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck= -github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= @@ -1413,25 +432,13 @@ github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g= github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/k0kubun/pp v3.0.1+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3tgzSScAn6HmfYukg= @@ -1441,55 +448,28 @@ github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNU github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4= github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/ktrysmt/go-bitbucket v0.9.55 h1:eOrF7wWmG4wz5iPr7ymgyWLoti2OfmrhU2tmT6yhAu8= github.com/ktrysmt/go-bitbucket v0.9.55/go.mod h1:y5wrrDHCGUFAtuC43GyLBeFigq7rwrh4HqeDOOyZT+A= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo/v4 v4.9.0 h1:wPOF1CE6gvt/kmbMR4dGzWvHMPT+sAEUJOwOTtvITVY= -github.com/labstack/echo/v4 v4.9.0/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks= -github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o= -github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw= github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk= github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw= -github.com/leaanthony/debme v1.2.1 h1:9Tgwf+kjcrbMQ4WnPcEIUcQuIZYqdWftzZkBr+i/oOc= -github.com/leaanthony/debme v1.2.1/go.mod h1:3V+sCm5tYAgQymvSOfYQ5Xx2JCr+OXiD9Jkw3otUjiA= -github.com/leaanthony/go-ansi-parser v1.0.1 h1:97v6c5kYppVsbScf4r/VZdXyQ21KQIfeQOk2DgKxGG4= -github.com/leaanthony/go-ansi-parser v1.0.1/go.mod h1:7arTzgVI47srICYhvgUV4CGd063sGEeoSlych5yeSPM= -github.com/leaanthony/gosod v1.0.3 h1:Fnt+/B6NjQOVuCWOKYRREZnjGyvg+mEhd1nkkA04aTQ= -github.com/leaanthony/gosod v1.0.3/go.mod h1:BJ2J+oHsQIyIQpnLPjnqFGTMnOZXDbvWtRCSG7jGxs4= -github.com/leaanthony/slicer v1.5.0 h1:aHYTN8xbCCLxJmkNKiLB6tgcMARl4eWmH9/F+S/0HtY= -github.com/leaanthony/slicer v1.5.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY= -github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= -github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= @@ -1501,18 +481,6 @@ github.com/likexian/gokit v0.25.15 h1:QjospM1eXhdMMHwZRpMKKAHY/Wig9wgcREmLtf9Nsl github.com/likexian/gokit v0.25.15/go.mod h1:S2QisdsxLEHWeD/XI0QMVeggp+jbxYqUxMvSBil7MRg= github.com/linode/linodego v1.26.0 h1:2tOZ3Wxn4YvGBRgZi3Vz6dab+L16XUntJ9sJxh3ZBio= github.com/linode/linodego v1.26.0/go.mod h1:kD7Bf1piWg/AXb9TA0ThAVwzR+GPf6r2PvbTbVk7PMA= -github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI= @@ -1521,65 +489,47 @@ github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY github.com/markbates/oncer v1.0.0/go.mod h1:Z59JA581E9GP6w96jai+TGqafHPW+cPfRxz2aSZ0mcI= github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= -github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-ieproxy v0.0.1 h1:qiyop7gCflfhwCzGyeT0gro3sF9AIg9HU98JORTkqfI= github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= -github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI= github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI= github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/mikesmitty/edkey v0.0.0-20170222072505-3356ea4e686a h1:eU8j/ClY2Ty3qdHnn0TyW3ivFoPC/0F1gQZz8yTxbbE= github.com/mikesmitty/edkey v0.0.0-20170222072505-3356ea4e686a/go.mod h1:v8eSC2SMp9/7FTKUncp7fH9IwPfw+ysMObcEz5FWheQ= -github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= -github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= @@ -1587,12 +537,10 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8= github.com/moby/spdystream v0.4.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -1604,100 +552,41 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/oleiade/reflections v1.0.1 h1:D1XO3LVEYroYskEsoSiGItp9RUxG6jWnCVvrqH0HHQM= github.com/oleiade/reflections v1.0.1/go.mod h1:rdFxbxq4QXVZWj0F+e9jqjDkc7dbp97vkRixKo2JR60= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= -github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= -github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= -github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= -github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw= -github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= -github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc= -github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk= -github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= -github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= -github.com/onsi/ginkgo/v2 v2.9.4/go.mod h1:gCQYp2Q+kSoIj7ykSVb9nskRSsR6PUj4AiLywzIhbKM= -github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= -github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0= -github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= -github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= -github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= -github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= -github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= -github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= -github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= -github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= -github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw= -github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= -github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= -github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4= -github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= -github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/osteele/liquid v1.4.0 h1:WS6lT3MFWUAxNbveF22tMLluOWNghGnKCZHLn7NbJGs= github.com/osteele/liquid v1.4.0/go.mod h1:VmzQQHa5v4E0GvGzqccfAfLgMwRk2V+s1QbxYx9dGak= github.com/osteele/tuesday v1.0.3 h1:SrCmo6sWwSgnvs1bivmXLvD7Ko9+aJvvkmDjB5G4FTU= github.com/osteele/tuesday v1.0.3/go.mod h1:pREKpE+L03UFuR+hiznj3q7j3qB1rUZ4XfKejwWFF2M= github.com/packethost/packngo v0.29.0 h1:gRIhciVZQ/zLNrIdIdbOUyB/Tw5IgoaXyhP4bvE+D2s= github.com/packethost/packngo v0.29.0/go.mod h1:/UHguFdPs6Lf6FOkkSEPnRY5tgS0fsVM+Zv/bvBrmt0= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml/v2 v2.2.0 h1:QLgLl2yMN7N+ruc31VynXs1vhMZa7CeHHejIeBAsoHo= -github.com/pelletier/go-toml/v2 v2.2.0/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI= github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= -github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= -github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= -github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= -github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pluralsh/console/go/client v1.23.0 h1:aS6CuC0o5ONSoRKFbm/rb6JVDD858KIs0t+HLLMMX/w= github.com/pluralsh/console/go/client v1.23.0/go.mod h1:lpoWASYsM9keNePS3dpFiEisUHEfObIVlSL3tzpKn8k= github.com/pluralsh/console/go/controller v0.0.0-20241106170618-0c255ee72c4c h1:1bSNjddgWG/C0Zgm0BoOOngTlv+sFPvBjxo18I7jEdw= @@ -1706,8 +595,6 @@ github.com/pluralsh/controller-reconcile-helper v0.0.4 h1:1o+7qYSyoeqKFjx+WgQTxD github.com/pluralsh/controller-reconcile-helper v0.0.4/go.mod h1:AfY0gtteD6veBjmB6jiRx/aR4yevEf6K0M13/pGan/s= github.com/pluralsh/gqlclient v1.12.2 h1:BrEFAASktf4quFw57CIaLAd+NZUTLhG08fe6tnhBQN4= github.com/pluralsh/gqlclient v1.12.2/go.mod h1:OEjN9L63x8m3A3eQBv5kVkFgiY9fp2aZ0cgOF0uII58= -github.com/pluralsh/helm-docs v1.11.3-0.20230914191425-6d14ebab8817 h1:J7SGxH6nJGdRoNtqdzhyr2VMpbl4asolul7xqqW++EA= -github.com/pluralsh/helm-docs v1.11.3-0.20230914191425-6d14ebab8817/go.mod h1:rLqec59NO7YF57Rq9VlubQHMp7wcRTJhzpkcgs4lOG4= github.com/pluralsh/oauth v0.9.2 h1:tM9hBK4tCnJUeCOgX0ctxBBCS3hiCDPoxkJLODtedmQ= github.com/pluralsh/oauth v0.9.2/go.mod h1:aTUw/75rzcsbvW+/TLvWtHVDXFIdtFrDtUncOq9vHyM= github.com/pluralsh/plural-operator v0.5.5 h1:57GxniNjUa3hpHgvFr9oDonFgvDUC8XDD5B0e7Xduzk= @@ -1717,100 +604,50 @@ github.com/pluralsh/polly v0.1.10/go.mod h1:W9IBX3e3xEjJuRjAQRfFJpH+UkNjddVY5YjM github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posthog/posthog-go v0.0.0-20230801140217-d607812dee69 h1:01dHVodha5BzrMtVmcpPeA4VYbZEsTXQ6m4123zQXJk= github.com/posthog/posthog-go v0.0.0-20230801140217-d607812dee69/go.mod h1:migYMxlAqcnQy+3eN8mcL0b2tpKy6R+8Zc0lxwk4dKM= github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY= github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg= -github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= -github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= -github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= -github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/common v0.52.2 h1:LW8Vk7BccEdONfrJBDffQGRtpSzi5CQaRZGtboOO2ck= github.com/prometheus/common v0.52.2/go.mod h1:lrWtQx+iDfn2mbH5GUzlH9TSHyfZpHkSiG1W7y3sF2Q= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= -github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/redis/go-redis/extra/rediscmd/v9 v9.0.5 h1:EaDatTxkdHG+U3Bk4EUr+DZ7fOGwTfezUiUJMaIcaho= github.com/redis/go-redis/extra/rediscmd/v9 v9.0.5/go.mod h1:fyalQWdtzDBECAQFBJuQe5bzQ02jGd5Qcbgb97Flm7U= github.com/redis/go-redis/extra/redisotel/v9 v9.0.5 h1:EfpWLLCyXw8PSM2/XNJLjI3Pb27yVE+gIAfeqp8LUCc= github.com/redis/go-redis/extra/redisotel/v9 v9.0.5/go.mod h1:WZjPDy7VNzn77AAfnAfVjZNvfJTYfPetfZk5yoSTLaQ= github.com/redis/go-redis/v9 v9.1.0 h1:137FnGdk+EQdCbye1FW+qOEcY5S+SpY9T0NiuqvtfMY= github.com/redis/go-redis/v9 v9.1.0/go.mod h1:urWj3He21Dj5k4TK1y59xH8Uj6ATueP8AH1cY3lZl4c= -github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rodaine/hclencoder v0.0.1 h1:1jK2rGFxSDT1eU9oVjK4ewrIhMWTcc0yCfZMiN6xRJM= -github.com/rodaine/hclencoder v0.0.1/go.mod h1:XKt85p0Ifyt0pr1KVeB3eL+dUFAKa+IA637lLahBcOQ= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rubenv/sql-migrate v1.5.2 h1:bMDqOnrJVV/6JQgQ/MxOpU+AdO8uzYYA/TxFUBzFtS0= github.com/rubenv/sql-migrate v1.5.2/go.mod h1:H38GW8Vqf8F0Su5XignRyaRcbXbJunSWxs+kmzlg0Is= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= -github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= -github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= -github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= -github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samber/lo v1.46.0 h1:w8G+oaCPgz1PoCJztqymCFaKwXt+5cCXn51uPxExFfQ= github.com/samber/lo v1.46.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU= github.com/schollz/progressbar/v3 v3.14.1 h1:VD+MJPCr4s3wdhTc7OEJ/Z3dAeBzJ7yKH/P4lC5yRTI= github.com/schollz/progressbar/v3 v3.14.1/go.mod h1:Zc9xXneTzWXF81TGoqL71u0sBPjULtEHYtj/WVgVy8E= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -1818,57 +655,23 @@ github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5g github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4= github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= -github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= -github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace h1:9PNP1jnUjRhfmGMlkXHjYPishpcw4jpSt/V/xYY3FMA= github.com/spf13/pflag v1.0.6-0.20210604193023-d5e0c0615ace/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= -github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= @@ -1884,44 +687,14 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= -github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tkrajina/go-reflector v0.5.5 h1:gwoQFNye30Kk7NrExj8zm3zFtrGPqOkzFMLuQZg1DtQ= -github.com/tkrajina/go-reflector v0.5.5/go.mod h1:ECbqLgccecY5kPmPmXg1MrHW585yMcDkVl6IvJe64T4= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= -github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= -github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= -github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.14 h1:ebbhrRiGK2i4naQJr+1Xj92HXZCrK7MsyTS/ob3HnAk= github.com/urfave/cli v1.22.14/go.mod h1:X0eDS6pD6Exaclxm99NJ3FiCDRED7vIHpx2mDOHLvkA= -github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vektah/gqlparser/v2 v2.5.16 h1:1gcmLTvs3JLKXckwCwlUagVn/IlV2bwqle0vJ0vy5p8= github.com/vektah/gqlparser/v2 v2.5.16/go.mod h1:1lz1OeCqgQbQepsGxPVywrjdBHW2T08PUS3pJqepRww= -github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= -github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs= -github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o= -github.com/wailsapp/wails/v2 v2.4.1 h1:Ns7MOKWQM6l0ttBxpd5VcgYrH+GNPOnoDfnsBpbDnzM= -github.com/wailsapp/wails/v2 v2.4.1/go.mod h1:jbOZbcr/zm79PxXxAjP8UoVlDd9wLW3uDs+isIthDfs= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xanzy/go-gitlab v0.73.1 h1:UMagqUZLJdjss1SovIC+kJCH4k2AZWXl58gJd38Y/hI= @@ -1935,77 +708,28 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xhit/go-str2duration v1.2.0/go.mod h1:3cPSlfZlUHVlneIVfePFWcJZsuwf+P1v2SRTV4cUmp4= -github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/gopher-lua v0.0.0-20190206043414-8bfc7677f583/go.mod h1:gqRgreBUhTSL0GeU64rtZ3Uq3wtjOa/TB2YfrtkCbVQ= github.com/yuin/gopher-lua v0.0.0-20220504180219-658193537a64 h1:5mLPGnFdSsevFRFc9q3yYbBkB6tsm4aCwwQV/j1JQAQ= github.com/yuin/gopher-lua v0.0.0-20220504180219-658193537a64/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= -github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty v1.7.1/go.mod h1:VDR4+I79ubFBGm1uJac1226K5yANQFHeauxPBoP54+o= -github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= -github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= -github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= -github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd/api/v3 v3.5.9/go.mod h1:uyAal843mC8uUVSLWz6eHa/d971iDGnCRpmKd2Z+X8k= -go.etcd.io/etcd/client/pkg/v3 v3.5.9/go.mod h1:y+CzeSmkMpWN2Jyu1npecjB9BBnABxGM4pN8cGuJeL4= -go.etcd.io/etcd/client/v2 v2.305.9/go.mod h1:0NBdNx9wbxtEQLwAQtrDHwx58m02vXpDcgSYI2seohQ= -go.etcd.io/etcd/client/v3 v3.5.9/go.mod h1:i/Eo5LrZ5IKqpbtpPDuaUnDOUv471oDg8cjQaUr2MbA= -go.etcd.io/etcd/pkg/v3 v3.5.0-alpha.0/go.mod h1:tV31atvwzcybuqejDoY3oaNRTtlD2l/Ot78Pc9w7DMY= -go.etcd.io/etcd/raft/v3 v3.5.9/go.mod h1:WnFkqzFdZua4LVlVXQEGhmooLeyS7mqzS4Pf4BCVqXg= -go.etcd.io/etcd/server/v3 v3.5.9/go.mod h1:GgI1fQClQCFIzuVjlvdbMxNbnISt90gdfYyqiAIt65g= -go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M= -go.mercari.io/hcledit v0.0.8 h1:ZYitdauqspPYXJKQepKDD7WFem6flYS47fK6cGcnmXg= -go.mercari.io/hcledit v0.0.8/go.mod h1:hxXqCyKJ6WA+Oeo7KZuMr9SZLq/GGFD627ovBcIUAq0= -go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/exporters/autoexport v0.46.1 h1:ysCfPZB9AjUlMa1UHYup3c9dAOCMQX/6sxSfPBUoxHw= go.opentelemetry.io/contrib/exporters/autoexport v0.46.1/go.mod h1:ha0aiYm+DOPsLHjh0zoQ8W8sLT+LJ58J3j47lGpSLrU= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.25.0/go.mod h1:E5NNboN0UqSAki0Atn9kVwaN7I+l25gGxDqBueo/74E= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.35.0/go.mod h1:h8TWwRAhQpOd0aM5nYsRD8+flnkj+526GEIVlarH7eY= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.35.1/go.mod h1:9NiG9I2aHTKkcxqCILhjtyNA1QEiCjdBACv4IvrFQ+c= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= -go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU= -go.opentelemetry.io/otel v1.8.0/go.mod h1:2pkj+iMj0o03Y+cW6/m8Y4WkRdYN3AvCXCnzRMp9yvM= -go.opentelemetry.io/otel v1.10.0/go.mod h1:NbvWjCthWHKBEUMpf0/v8ZRZlni86PpGFEMA9pnQSnQ= go.opentelemetry.io/otel v1.22.0 h1:xS7Ku+7yTFvDfDraDIJVpw7XPyuHlB9MCiqqX5mcJ6Y= go.opentelemetry.io/otel v1.22.0/go.mod h1:eoV4iAi3Ea8LkAEI9+GFT44O6T/D0GWAVFyZVCC6pMI= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0/go.mod h1:78XhIg8Ht9vR4tbLNUhXsiOnE2HOuSeKAiAcoVQEpOY= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0 h1:jd0+5t/YynESZqsSyPz+7PAFdEop0dlN0+PkyHYo8oI= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.44.0/go.mod h1:U707O40ee1FpQGyhvqnzmCJm1Wh6OX6GGBVn0E6Uyyk= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0 h1:bflGWrfYyuulcdxf14V6n9+CoQcu5SAAdHmDPAJnlps= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.44.0/go.mod h1:qcTO4xHAxZLaLxPd60TdE88rxtItPHgHWqOhOGRr0as= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1/go.mod h1:Kv8liBeVNFkkkbilbgWRpV+wWuu+H5xdOT6HAgd30iw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.10.0/go.mod h1:Krqnjl22jUJ0HgMzw5eveuCvFDXY4nSYb4F8t5gdrag= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0 h1:9M3+rhx7kZCIQQhQRYaZCdNu1V73tm4TvXs2ntl98C4= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.22.0/go.mod h1:noq80iT8rrHP1SfybmPiRGc9dc5M8RPmGvtwo7Oo7tc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1/go.mod h1:xOvWoTOrQjxjW61xtOmD/WKGRYb/P4NzRo3bs65U6Rk= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.10.0/go.mod h1:OfUCyyIiDvNXHWpcWgbF+MWvqPZiNa3YDEnivcnYsV0= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 h1:digkEZCJWobwBqMwC0cwCq8/wkkRy/OowZg5OArWZrM= @@ -2016,886 +740,203 @@ go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.44.0 h1:dEZWPjVN22urgY go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v0.44.0/go.mod h1:sTt30Evb7hJB/gEk27qLb1+l9n4Tb8HvHkR0Wx3S6CU= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.21.0 h1:VhlEQAPp9R1ktYfrPk5SOryw1e9LDDTZCbIPFrho0ec= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.21.0/go.mod h1:kB3ufRbfU+CQ4MlUcqtW8Z7YEOBeK2DJ6CmR5rYYF3E= -go.opentelemetry.io/otel/metric v0.31.0/go.mod h1:ohmwj9KTSIeBnDBm/ZwH2PSZxZzoOaG2xZeekTRzL5A= go.opentelemetry.io/otel/metric v1.22.0 h1:lypMQnGyJYeuYPhOM/bgjbFM6WE44W1/T45er4d8Hhg= go.opentelemetry.io/otel/metric v1.22.0/go.mod h1:evJGjVpZv0mQ5QBRJoBF64yMuOf4xCWdXjK8pzFvliY= -go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI= -go.opentelemetry.io/otel/sdk v1.10.0/go.mod h1:vO06iKzD5baltJz1zarxMCNHFpUlUiOy4s65ECtn6kE= go.opentelemetry.io/otel/sdk v1.22.0 h1:6coWHw9xw7EfClIC/+O31R8IY3/+EiRFHevmHafB2Gw= go.opentelemetry.io/otel/sdk v1.22.0/go.mod h1:iu7luyVGYovrRpe2fmj3CVKouQNdTOkxtLzPvPz1DOc= go.opentelemetry.io/otel/sdk/metric v1.21.0 h1:smhI5oD714d6jHE6Tie36fPx4WDFIg+Y6RfAY4ICcR0= go.opentelemetry.io/otel/sdk/metric v1.21.0/go.mod h1:FJ8RAsoPGv/wYMgBdUJXOm+6pzFY3YdljnXtv1SBE8Q= -go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk= -go.opentelemetry.io/otel/trace v1.8.0/go.mod h1:0Bt3PXY8w+3pheS3hQUt+wow8b1ojPaTBoTCh2zIFI4= -go.opentelemetry.io/otel/trace v1.10.0/go.mod h1:Sij3YYczqAdz+EhmGhE6TpTxUO5/F/AzrK+kxfGqySM= go.opentelemetry.io/otel/trace v1.22.0 h1:Hg6pPujv0XG9QaVbGOBVHunyuLcCC3jN7WEhPx83XD0= go.opentelemetry.io/otel/trace v1.22.0/go.mod h1:RbbHXVqKES9QhzZq/fE5UnOSILqRt40a21sPw2He1xo= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.9.0/go.mod h1:1vKfU9rv61e9EVGthD1zNvUbiwPcimSsOPU9brfSHJg= -go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= -go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= -golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= -golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200420201142-3c4aac89819a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= -golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM= golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180227000427-d7d64896b5ff/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= -golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= -golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= golang.org/x/oauth2 v0.19.0 h1:9+E/EZBCbTLNrbN35fHv/a/d/mOBatymz1zbtQrXpIg= golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180224232135-f6cff0780e54/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220330033206-e17cdc41300f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/telemetry v0.0.0-20240208230135-b75ee8823808/go.mod h1:KG1lNk5ZFNssSZLrpVb4sMXKMpGwGXOxSG3rnu2gZQQ= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= -golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= -golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= -golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= -golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= -golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= -golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= -golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= -gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= -gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= -google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= -google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= -google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= -google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E= -google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= -google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= -google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4= google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= google.golang.org/appengine v1.0.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= -google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= -google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= -google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= -google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= -google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= -google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 h1:1hfbdAfFbkmpg41000wDVqr7jUpK/Yo+LPnIxxGzmkg= google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= -google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= -google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 h1:/jFB8jK5R3Sq3i/lmeZO0cATSzFfZaJq1J2Euan3XKU= google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= -google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= -google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= -google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU= google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -2904,175 +945,63 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= helm.sh/helm/v3 v3.14.3 h1:HmvRJlwyyt9HjgmAuxHbHv3PhMz9ir/XNWHyXfmnOP4= helm.sh/helm/v3 v3.14.3/go.mod h1:v6myVbyseSBJTzhmeE39UcPLNv6cQK6qss3dvgAySaE= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= -k8s.io/api v0.28.9/go.mod h1:AnCsDYf3SHjfa8mPG5LGYf+iF4mie+3peLQR51MMCgw= -k8s.io/api v0.29.0/go.mod h1:sdVmXoz2Bo/cb77Pxi71IPTSErEW32xa4aXwKH7gfBA= k8s.io/api v0.30.1 h1:kCm/6mADMdbAxmIh0LBjS54nQBE+U4KmbCfIkF5CpJY= k8s.io/api v0.30.1/go.mod h1:ddbN2C0+0DIiPntan/bye3SW3PdwLa11/0yqwvuRrJM= -k8s.io/apiextensions-apiserver v0.17.0/go.mod h1:XiIFUakZywkUl54fVXa7QTEHcqQz9HG55nHd1DCoHj8= -k8s.io/apiextensions-apiserver v0.28.9/go.mod h1:Rjhvq5y3JESdZgV2UOByldyefCfRrUguVpBLYOAIbVs= k8s.io/apiextensions-apiserver v0.30.0 h1:jcZFKMqnICJfRxTgnC4E+Hpcq8UEhT8B2lhBcQ+6uAs= k8s.io/apiextensions-apiserver v0.30.0/go.mod h1:N9ogQFGcrbWqAY9p2mUAL5mGxsLqwgtUce127VtRX5Y= -k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.28.9/go.mod h1:zUG757HaKs6Dc3iGtKjzIpBfqTM4yiRsEe3/E7NX15o= -k8s.io/apimachinery v0.29.0/go.mod h1:eVBxQ/cwiJxH58eK/jd/vAk4mrxmVlnpBH5J2GbMeis= k8s.io/apimachinery v0.31.0-beta.0 h1:KoBE9f7sPz67HclZC/JgH1pIBvOlMZQAwoHQuriE/5E= k8s.io/apimachinery v0.31.0-beta.0/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= -k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= -k8s.io/apiserver v0.28.9/go.mod h1:D51I37WBZojJhmLcjNVE4GSVrjiUHP+yq+N5KvKn2wY= k8s.io/apiserver v0.30.0 h1:QCec+U72tMQ+9tR6A0sMBB5Vh6ImCEkoKkTDRABWq6M= k8s.io/apiserver v0.30.0/go.mod h1:smOIBq8t0MbKZi7O7SyIpjPsiKJ8qa+llcFCluKyqiY= k8s.io/cli-runtime v0.29.5 h1:gnDrFEA4Xr8lAdc5U4tVfU7RGAmM/yvVvW9f0ao7g2s= k8s.io/cli-runtime v0.29.5/go.mod h1:6KuWJyLIpbh2II874fA1SnmGHvZCitsHRR1XDowsMC0= k8s.io/client-go v0.29.0 h1:KmlDtFcrdUzOYrBhXHgKw5ycWzc3ryPX5mQe0SkG3y8= k8s.io/client-go v0.29.0/go.mod h1:yLkXH4HKMAywcrD82KMSmfYg2DlE8mepPR4JGSo5n38= -k8s.io/code-generator v0.17.0/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= -k8s.io/code-generator v0.28.9/go.mod h1:WiJgVNDFAlT90nq6IOxhZ1gxL2JexbcfAx9ZBsyQ3Do= -k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= -k8s.io/component-base v0.28.9/go.mod h1:QtWzscEhCKRfHV24/S+11BwWjVxhC6fd3RYoEgZcWFU= k8s.io/component-base v0.30.0 h1:cj6bp38g0ainlfYtaOQuRELh5KSYjhKxM+io7AUIk4o= k8s.io/component-base v0.30.0/go.mod h1:V9x/0ePFNaKeKYA3bOvIbrNoluTSG+fSJKjLdjOoeXQ= -k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20220902162205-c0856e24416d/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo/v2 v2.0.0-20240228010128-51d4e06bde70/go.mod h1:VH3AT8AaQOqiGjMF9p0/IM1Dj+82ZwjfxUP1IxaHE+8= -k8s.io/helm v2.14.3+incompatible/go.mod h1:LZzlS4LQBHfciFOurYBFkCMTaZ0D1l+p0teMg7TSULI= k8s.io/helm v2.17.0+incompatible h1:Bpn6o1wKLYqKM3+Osh8e+1/K2g/GsQJ4F4yNF2+deao= k8s.io/helm v2.17.0+incompatible/go.mod h1:LZzlS4LQBHfciFOurYBFkCMTaZ0D1l+p0teMg7TSULI= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= -k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kms v0.28.9/go.mod h1:VgyAIRMFqZX9lHyixecU/JTI0wnPD1wCIlquvlXRJ+Y= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= k8s.io/kubectl v0.29.3 h1:RuwyyIU42MAISRIePaa8Q7A3U74Q9P4MoJbDFz9o3us= k8s.io/kubectl v0.29.3/go.mod h1:yCxfY1dbwgVdEt2zkJ6d5NNLOhhWgTyrqACIoFhpdd4= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -layeh.com/gopher-luar v1.0.10 h1:55b0mpBhN9XSshEd2Nz6WsbYXctyBT35azk4POQNSXo= -layeh.com/gopher-luar v1.0.10/go.mod h1:TPnIVCZ2RJBndm7ohXyaqfhzjlZ+OA2SZR/YwL8tECk= -lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= -modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= -modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= -modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= -modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= -modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= -modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= -modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= -modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= -modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= -modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= -modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= -modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= -modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= -modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= -modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= -modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= -modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= -modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= -modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= oras.land/oras-go v1.2.6 h1:z8cmxQXBU8yZ4mkytWqXfo6tZcamPwjsuxYU81xJ8Lk= oras.land/oras-go v1.2.6/go.mod h1:OVPc1PegSEe/K8YiLfosrlqlqTN9PUyFvOw5Y9gwrT8= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2/go.mod h1:+qG7ISXqCDVVcyO8hLn12AKVYYUjM7ftlqsqmrhMZE0= -sigs.k8s.io/application v0.8.3 h1:5UETobiVhxTkKn3pIESImXiMNmSg3VkM5+JvmYGDPko= -sigs.k8s.io/application v0.8.3/go.mod h1:Mv+ht9RE/QNtITYCzRbt3XTIN6t6so6cInmiyg6wOIg= sigs.k8s.io/controller-runtime v0.16.6 h1:FiXwTuFF5ZJKmozfP2Z0j7dh6kmxP4Ou1KLfxgKKC3I= sigs.k8s.io/controller-runtime v0.16.6/go.mod h1:+dQzkZxnylD0u49e0a+7AR+vlibEBaThmPca7lTyUsI= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= @@ -3081,12 +1010,7 @@ sigs.k8s.io/kustomize/api v0.17.1 h1:MYJBOP/yQ3/5tp4/sf6HiiMfNNyO97LmtnirH9SLNr4 sigs.k8s.io/kustomize/api v0.17.1/go.mod h1:ffn5491s2EiNrJSmgqcWGzQUVhc/pB0OKNI0HsT/0tA= sigs.k8s.io/kustomize/kyaml v0.17.0 h1:G2bWs03V9Ur2PinHLzTUJ8Ded+30SzXZKiO92SRDs3c= sigs.k8s.io/kustomize/kyaml v0.17.0/go.mod h1:6lxkYF1Cv9Ic8g/N7I86cvxNc5iinUo/P2vKsHNmpyE= -sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= -sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/hack/include/tools.mk b/hack/include/tools.mk index df9a8a6a1..a875f070d 100644 --- a/hack/include/tools.mk +++ b/hack/include/tools.mk @@ -1,6 +1,3 @@ -WAILS_BINARY := $(shell which wails) -WAILS_VERSION := v2.4.1 - GO_BINARY := $(shell which go) GO_MAJOR_VERSION = $(shell go version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f1) GO_MINOR_VERSION = $(shell go version | cut -c 14- | cut -d' ' -f1 | cut -d'.' -f2) @@ -8,7 +5,7 @@ MIN_GO_MAJOR_VERSION = 1 MIN_GO_MINOR_VERSION = 19 .PHONY: install-tools -install-tools: --ensure-go --ensure-wails ## Install required dependencies to run make targets +install-tools: --ensure-go ## Install required dependencies to run make targets .PHONY: --ensure-go --ensure-go: @@ -22,12 +19,3 @@ endif elif [ $(GO_MINOR_VERSION) -lt $(MIN_GO_MINOR_VERSION) ] ; then \ exit 1; \ fi - -.PHONY: --ensure-wails ---ensure-wails: -ifndef WAILS_BINARY - @echo "[tools] downloading wails..." - @go install github.com/wailsapp/wails/v2/cmd/wails@$(WAILS_VERSION) -else - @echo "[tools] wails already exists" -endif \ No newline at end of file diff --git a/pkg/api/artifacts.go b/pkg/api/artifacts.go deleted file mode 100644 index 493b10895..000000000 --- a/pkg/api/artifacts.go +++ /dev/null @@ -1,93 +0,0 @@ -package api - -import ( - "context" - "os" - "path/filepath" - - "github.com/pluralsh/gqlclient" - - "github.com/pluralsh/gqlclient/pkg/utils" - file "github.com/pluralsh/plural-cli/pkg/utils" - "sigs.k8s.io/yaml" -) - -type ArtifactAttributes struct { - Name string - Readme string - Type string - Platform string - Blob string - Arch string -} - -func (client *client) ListArtifacts(repo string) ([]Artifact, error) { - - result := make([]Artifact, 0) - - resp, err := client.pluralClient.ListArtifacts(client.ctx, repo) - if err != nil { - return result, err - } - for _, artifact := range resp.Repository.Artifacts { - ar := Artifact{ - Id: utils.ConvertStringPointer(artifact.ID), - Name: utils.ConvertStringPointer(artifact.Name), - Readme: utils.ConvertStringPointer(artifact.Readme), - Blob: utils.ConvertStringPointer(artifact.Blob), - Sha: utils.ConvertStringPointer(artifact.Sha), - Arch: utils.ConvertStringPointer(artifact.Arch), - } - if artifact.Platform != nil { - ar.Platform = string(*artifact.Platform) - } - if artifact.Filesize != nil { - ar.Filesize = int(*artifact.Filesize) - } - result = append(result, ar) - } - return result, nil -} - -func (client *client) CreateArtifact(repo string, attrs ArtifactAttributes) (Artifact, error) { - var artifact Artifact - fullPath, _ := filepath.Abs(attrs.Blob) - rf, err := os.Open(fullPath) - if err != nil { - return artifact, err - } - defer rf.Close() - - readmePath, _ := filepath.Abs(attrs.Readme) - readme, err := file.ReadFile(readmePath) - if err != nil { - return artifact, err - } - - client.pluralClient.Client.CustomDo = gqlclient.WithFiles([]gqlclient.Upload{{ - Field: "blob", - Name: attrs.Blob, - R: rf, - }}, client.httpClient) - createArtifact, err := client.pluralClient.CreateArtifact(context.Background(), repo, attrs.Name, readme, attrs.Type, attrs.Platform, "blob", &attrs.Arch) - if err != nil { - return artifact, err - } - artifact.Id = utils.ConvertStringPointer(createArtifact.CreateArtifact.ID) - artifact.Name = utils.ConvertStringPointer(createArtifact.CreateArtifact.Name) - artifact.Readme = utils.ConvertStringPointer(createArtifact.CreateArtifact.Readme) - artifact.Arch = utils.ConvertStringPointer(createArtifact.CreateArtifact.Arch) - artifact.Sha = utils.ConvertStringPointer(createArtifact.CreateArtifact.Sha) - if createArtifact.CreateArtifact.Platform != nil { - platform := createArtifact.CreateArtifact.Platform - artifact.Platform = string(*platform) - } - - return artifact, err -} - -func ConstructArtifactAttributes(marshalled []byte) (ArtifactAttributes, error) { - var attrs ArtifactAttributes - err := yaml.Unmarshal(marshalled, &attrs) - return attrs, err -} diff --git a/pkg/api/charts.go b/pkg/api/charts.go deleted file mode 100644 index d61a4b6d2..000000000 --- a/pkg/api/charts.go +++ /dev/null @@ -1,246 +0,0 @@ -package api - -import ( - "context" - "os" - "path" - - "github.com/pluralsh/gqlclient" - "github.com/pluralsh/gqlclient/pkg/utils" -) - -type packageCacheEntry struct { - Charts []*ChartInstallation - Terraform []*TerraformInstallation -} - -var packageCache = make(map[string]*packageCacheEntry) - -func (client *client) GetCharts(repoId string) ([]*Chart, error) { - charts := make([]*Chart, 0) - resp, err := client.pluralClient.GetCharts(client.ctx, repoId) - if err != nil { - return nil, err - } - for _, edge := range resp.Charts.Edges { - charts = append(charts, &Chart{ - Id: utils.ConvertStringPointer(edge.Node.ID), - Name: edge.Node.Name, - Description: utils.ConvertStringPointer(edge.Node.Description), - LatestVersion: utils.ConvertStringPointer(edge.Node.LatestVersion), - }) - } - - return charts, err -} - -func (client *client) GetVersions(chartId string) ([]*Version, error) { - versions := make([]*Version, 0) - resp, err := client.pluralClient.GetVersions(client.ctx, chartId) - if err != nil { - return nil, err - } - for _, version := range resp.Versions.Edges { - versions = append(versions, convertVersion(version.Node)) - } - return versions, err -} - -func (client *client) GetChartInstallations(repoId string) ([]*ChartInstallation, error) { - insts := make([]*ChartInstallation, 0) - resp, err := client.pluralClient.GetChartInstallations(client.ctx, repoId) - if err != nil { - return nil, err - } - - for _, edge := range resp.ChartInstallations.Edges { - if edge.Node != nil { - insts = append(insts, convertChartInstallation(edge.Node)) - } - } - - return insts, err -} - -func ClearPackageCache() { - packageCache = make(map[string]*packageCacheEntry) -} - -func (client *client) GetPackageInstallations(repoId string) (charts []*ChartInstallation, tfs []*TerraformInstallation, err error) { - if entry, ok := packageCache[repoId]; ok { - return entry.Charts, entry.Terraform, nil - } - - resp, err := client.pluralClient.GetPackageInstallations(client.ctx, repoId) - if err != nil { - return - } - - charts = make([]*ChartInstallation, 0) - for _, edge := range resp.ChartInstallations.Edges { - if edge.Node != nil { - charts = append(charts, convertChartInstallation(edge.Node)) - } - } - - tfs = make([]*TerraformInstallation, 0) - for _, edge := range resp.TerraformInstallations.Edges { - node := edge.Node - if node != nil { - tfInstall := &TerraformInstallation{ - Id: utils.ConvertStringPointer(node.ID), - Terraform: convertTerraform(node.Terraform), - - Version: convertVersion(node.Version), - } - - tfs = append(tfs, tfInstall) - } - } - - if err == nil { - packageCache[repoId] = &packageCacheEntry{Charts: charts, Terraform: tfs} - } - - return -} - -func (client *client) CreateCrd(repo string, chart string, file string) error { - name := path.Base(file) - - rf, err := os.Open(file) - if err != nil { - return err - } - defer func(rf *os.File) { - _ = rf.Close() - }(rf) - - upload := gqlclient.Upload{ - R: rf, - Name: file, - Field: "blob", - } - client.pluralClient.Client.CustomDo = gqlclient.WithFiles([]gqlclient.Upload{upload}, client.httpClient) - _, err = client.pluralClient.CreateCrd(context.Background(), gqlclient.ChartName{ - Chart: &chart, - Repo: &repo, - }, name, "blob") - - return err -} - -func (client *client) UninstallChart(id string) (err error) { - _, err = client.pluralClient.UninstallChart(client.ctx, id) - return -} - -func convertVersion(version *gqlclient.VersionFragment) *Version { - if version == nil { - return nil - } - v := &Version{ - Id: version.ID, - Version: version.Version, - Helm: version.Helm, - } - if version.Readme != nil { - v.Readme = *version.Readme - } - if version.Package != nil { - v.Package = *version.Package - } - if version.ValuesTemplate != nil { - v.ValuesTemplate = *version.ValuesTemplate - } - v.TemplateType = gqlclient.TemplateTypeGotemplate - if version.TemplateType != nil { - v.TemplateType = *version.TemplateType - } - if version.InsertedAt != nil { - v.InsertedAt = *version.InsertedAt - } - - v.Crds = make([]Crd, 0) - for _, crd := range version.Crds { - v.Crds = append(v.Crds, convertCrd(crd)) - } - v.Dependencies = convertDependencies(version.Dependencies) - return v -} - -func convertCrd(crd *gqlclient.CrdFragment) Crd { - c := Crd{ - Id: crd.ID, - Name: crd.Name, - Blob: utils.ConvertStringPointer(crd.Blob), - } - - return c -} - -func convertDependencies(depFragment *gqlclient.DependenciesFragment) *Dependencies { - if depFragment == nil { - return nil - } - dep := &Dependencies{ - Outputs: depFragment.Outputs, - Secrets: utils.ConvertStringArrayPointer(depFragment.Secrets), - Providers: convertProviders(depFragment.Providers), - ProviderWirings: depFragment.ProviderWirings, - } - if depFragment.ProviderVsn != nil { - dep.ProviderVsn = *depFragment.ProviderVsn - } - if depFragment.CliVsn != nil { - dep.CliVsn = *depFragment.CliVsn - } - if depFragment.Application != nil { - dep.Application = *depFragment.Application - } - if depFragment.Wait != nil { - dep.Wait = *depFragment.Wait - } - dep.Dependencies = make([]*Dependency, 0) - for _, dependency := range depFragment.Dependencies { - dep.Dependencies = append(dep.Dependencies, &Dependency{ - Type: string(*dependency.Type), - Repo: utils.ConvertStringPointer(dependency.Repo), - Name: utils.ConvertStringPointer(dependency.Name), - }) - } - if depFragment.Wirings != nil { - dep.Wirings = &Wirings{ - Terraform: utils.ConvertMapInterfaceToString(depFragment.Wirings.Terraform), - Helm: utils.ConvertMapInterfaceToString(depFragment.Wirings.Helm), - } - } - - return dep -} - -func convertProviders(providers []*gqlclient.Provider) []string { - p := make([]string, 0) - for _, provider := range providers { - p = append(p, string(*provider)) - } - - return p -} - -func convertChartInstallation(fragment *gqlclient.ChartInstallationFragment) *ChartInstallation { - if fragment == nil { - return nil - } - return &ChartInstallation{ - Id: *fragment.ID, - Chart: &Chart{ - Id: utils.ConvertStringPointer(fragment.Chart.ID), - Name: fragment.Chart.Name, - Description: utils.ConvertStringPointer(fragment.Chart.Description), - LatestVersion: utils.ConvertStringPointer(fragment.Chart.LatestVersion), - Dependencies: convertDependencies(fragment.Chart.Dependencies), - }, - Version: convertVersion(fragment.Version), - } -} diff --git a/pkg/api/client.go b/pkg/api/client.go index 234e0417a..0e0823483 100644 --- a/pkg/api/client.go +++ b/pkg/api/client.go @@ -3,15 +3,12 @@ package api import ( "context" "encoding/json" - "fmt" "net/http" rawclient "github.com/Yamashou/gqlgenc/clientv2" "github.com/pkg/errors" "github.com/pluralsh/gqlclient" - "github.com/samber/lo" - "github.com/pluralsh/plural-cli/pkg/config" "github.com/pluralsh/plural-cli/pkg/utils" ) @@ -27,8 +24,6 @@ func (t *authedTransport) RoundTrip(req *http.Request) (*http.Response, error) { } type Client interface { - ListArtifacts(repo string) ([]Artifact, error) - CreateArtifact(repo string, attrs ArtifactAttributes) (Artifact, error) Me() (*Me, error) LoginMethod(email string) (*LoginMethod, error) PollLoginToken(token string) (string, error) @@ -43,62 +38,22 @@ type Client interface { DeleteEabCredential(cluster string, provider string) error CreateEvent(event *UserEventAttributes) error GetTfProviders() ([]string, error) - GetTfProviderScaffold(name string, version string) (string, error) GetRepository(repo string) (*Repository, error) - CreateRepository(name string, publisher string, input *gqlclient.RepositoryAttributes) error - AcquireLock(repo string) (*ApplyLock, error) - ReleaseLock(repo string, lock string) (*ApplyLock, error) - UnlockRepository(name string) error - ListRepositories(query string) ([]*Repository, error) - Scaffolds(in *ScaffoldInputs) ([]*ScaffoldFile, error) UpdateVersion(spec *VersionSpec, tags []string) error - GetCharts(repoId string) ([]*Chart, error) - GetVersions(chartId string) ([]*Version, error) - GetTerraformVersions(id string) ([]*Version, error) - GetChartInstallations(repoId string) ([]*ChartInstallation, error) - GetPackageInstallations(repoId string) (charts []*ChartInstallation, tfs []*TerraformInstallation, err error) - CreateCrd(repo string, chart string, file string) error CreateDomain(name string) error CreateInstallation(id string) (string, error) GetInstallation(name string) (*Installation, error) - GetInstallationById(id string) (*Installation, error) - GetInstallations() ([]*Installation, error) - DeleteInstallation(id string) error OIDCProvider(id string, attributes *OidcProviderAttributes) error - ResetInstallations() (int, error) - CreateRecipe(repoName string, attrs gqlclient.RecipeAttributes) (string, error) - GetRecipe(repo string, name string) (*Recipe, error) - GetRecipeByID(id string) (*Recipe, error) - ListRecipes(repo string, provider string) ([]*Recipe, error) - InstallRecipe(id string) error - GetShell() (CloudShell, error) - DeleteShell() error - GetTerraform(repoId string) ([]*Terraform, error) - GetTerraformInstallations(repoId string) ([]*TerraformInstallation, error) - UploadTerraform(dir string, repoName string) (Terraform, error) - GetStack(name, provider string) (*Stack, error) - CreateStack(attributes gqlclient.StackAttributes) (string, error) - ListStacks(featured bool) ([]*Stack, error) - UninstallChart(id string) error - UninstallTerraform(id string) error CreateKeyBackup(attrs KeyBackupAttributes) error GetKeyBackup(name string) (*KeyBackup, error) ListKeyBackups() ([]*KeyBackup, error) GetHelp(prompt string) (string, error) - DestroyCluster(domain, name, provider string) error - CreateDependency(source, dest string) error - PromoteCluster() error Clusters() ([]*Cluster, error) Cluster(id string) (*Cluster, error) - CreateUpgrade(queue, repository string, attrs gqlclient.UpgradeAttributes) error - TransferOwnership(name, email string) error - Release(name string, tags []string) error Chat(history []*ChatMessage) (*ChatMessage, error) - InstallVersion(tp, repo, pkg, vsn string) error CreateTrust(issuer, trust string) error DeleteTrust(id string) error OidcToken(provider gqlclient.ExternalOidcProvider, token, email string) (string, error) - MarkSynced(repo string) error GetConsoleInstances() ([]*gqlclient.ConsoleInstanceFragment, error) UpdateConsoleInstance(id string, attrs gqlclient.ConsoleInstanceUpdateAttributes) error } @@ -157,39 +112,3 @@ func GetErrorResponse(err error, methodName string) error { return errList } - -func FindChart(client Client, repo, name string) (*Chart, error) { - r, err := client.GetRepository(repo) - if err != nil { - return nil, err - } - - charts, err := client.GetCharts(r.Id) - if err != nil { - return nil, err - } - - chart, ok := lo.Find(charts, func(c *Chart) bool { return c.Name == name }) - if !ok { - return nil, fmt.Errorf("No chart found for repo %s and name %s", repo, name) - } - return chart, nil -} - -func FindTerraform(client Client, repo, name string) (*Terraform, error) { - r, err := client.GetRepository(repo) - if err != nil { - return nil, err - } - - tfs, err := client.GetTerraform(r.Id) - if err != nil { - return nil, err - } - - tf, ok := lo.Find(tfs, func(c *Terraform) bool { return c.Name == name }) - if !ok { - return nil, fmt.Errorf("No terraform module found for repo %s and name %s", repo, name) - } - return tf, nil -} diff --git a/pkg/api/cluster.go b/pkg/api/cluster.go index 5e560937f..244340846 100644 --- a/pkg/api/cluster.go +++ b/pkg/api/cluster.go @@ -1,34 +1,9 @@ package api import ( - "github.com/pluralsh/gqlclient" "github.com/samber/lo" ) -func (client *client) DestroyCluster(domain, name, provider string) error { - _, err := client.pluralClient.DestroyCluster(client.ctx, domain, name, gqlclient.Provider(ToGQLClientProvider(provider))) - if err != nil { - return err - } - - return nil -} - -func (client *client) CreateDependency(source, dest string) error { - _, err := client.pluralClient.CreateDependency(client.ctx, source, dest) - return err -} - -func (client *client) PromoteCluster() error { - _, err := client.pluralClient.PromoteCluster(client.ctx) - return err -} - -func (client *client) TransferOwnership(name, email string) error { - _, err := client.pluralClient.TransferOwnership(client.ctx, name, email) - return err -} - func (client *client) Clusters() ([]*Cluster, error) { resp, err := client.pluralClient.Clusters(client.ctx, nil) if err != nil { diff --git a/pkg/api/constants.go b/pkg/api/constants.go index 27bd4ead7..2a87266ce 100644 --- a/pkg/api/constants.go +++ b/pkg/api/constants.go @@ -6,6 +6,5 @@ const ( ProviderAWS = "aws" ProviderAzure = "azure" ProviderEquinix = "equinix" - ProviderKind = "kind" TEST = "test" ) diff --git a/pkg/api/installations.go b/pkg/api/installations.go index 96c8054c3..354143210 100644 --- a/pkg/api/installations.go +++ b/pkg/api/installations.go @@ -26,19 +26,6 @@ func (client *client) GetInstallation(name string) (*Installation, error) { } -func (client *client) GetInstallationById(id string) (*Installation, error) { - resp, err := client.pluralClient.GetInstallationByID(client.ctx, &id) - if err != nil { - return nil, err - } - return convertInstallation(resp.Installation), nil -} - -func (client *client) DeleteInstallation(id string) error { - _, err := client.pluralClient.DeleteInstallation(client.ctx, id) - return err -} - func (client *client) CreateInstallation(id string) (string, error) { resp, err := client.pluralClient.CreateInstallation(client.ctx, id) if err != nil { @@ -118,21 +105,6 @@ func convertInstallation(installation *gqlclient.InstallationFragment) *Installa return i } -func (client *client) GetInstallations() ([]*Installation, error) { - result := make([]*Installation, 0) - - resp, err := client.pluralClient.GetInstallations(client.ctx) - if err != nil { - return result, err - } - - for _, edge := range resp.Installations.Edges { - result = append(result, convertInstallation(edge.Node)) - } - - return result, err -} - func (client *client) OIDCProvider(id string, attributes *OidcProviderAttributes) error { bindings := make([]*gqlclient.BindingAttributes, 0) for _, bind := range attributes.Bindings { @@ -153,20 +125,6 @@ func (client *client) OIDCProvider(id string, attributes *OidcProviderAttributes return err } -func (client *client) ResetInstallations() (int, error) { - resp, err := client.pluralClient.ResetInstallations(client.ctx) - if err != nil { - return 0, err - } - - return int(*resp.ResetInstallations), err -} - -func (client *client) MarkSynced(repo string) error { - _, err := client.pluralClient.MarkSynced(client.ctx, repo) - return err -} - func convertRedirectUris(uris []string) []*string { res := make([]*string, len(uris)) for i := range uris { diff --git a/pkg/api/models.go b/pkg/api/models.go index ea3a6f95a..5bb6e590d 100644 --- a/pkg/api/models.go +++ b/pkg/api/models.go @@ -1,8 +1,6 @@ package api import ( - "fmt" - "github.com/pluralsh/gqlclient" ) @@ -92,13 +90,6 @@ type Wirings struct { Helm map[string]string } -type TerraformInstallation struct { - Id string - Installation *Installation - Terraform *Terraform - Version *Version -} - type OAuthConfiguration struct { Issuer string AuthorizationEndpoint string @@ -127,40 +118,6 @@ type Installation struct { AcmeSecret string } -type CloudShell struct { - Id string - AesKey string `json:"aesKey"` - GitUrl string `json:"gitUrl"` -} - -type RepositoryEdge struct { - Node *Repository -} - -type InstallationEdge struct { - Node *Installation -} - -type ChartEdge struct { - Node *Chart -} - -type TerraformEdge struct { - Node *Terraform -} - -type VersionEdge struct { - Node *Version -} - -type ChartInstallationEdge struct { - Node *ChartInstallation -} - -type TerraformInstallationEdge struct { - Node *TerraformInstallation -} - type Token struct { Token string } @@ -185,15 +142,6 @@ type Recipe struct { RecipeDependencies []*Recipe `yaml:"recipeDependencies" json:"recipeDependencies"` } -type Stack struct { - Id string - Name string - Provider string - Featured bool - Description string - Bundles []*Recipe -} - type RecipeTest struct { Name string Type string @@ -357,77 +305,3 @@ type ChatMessage struct { Content string Role string } - -const CrdFragment = ` - fragment CrdFragment on Crd { - id - name - blob - } -` - -const DependenciesFragment = ` - fragment DependenciesFragment on Dependencies { - dependencies { - type - name - repo - } - wait - application - providers - secrets - wirings { terraform helm } - providerWirings - outputs - providerVsn - } -` - -var VersionFragment = fmt.Sprintf(` - fragment VersionFragment on Version { - id - readme - version - valuesTemplate - package - crds { ...CrdFragment } - dependencies { ...DependenciesFragment } - } - %s -`, CrdFragment) - -var TerraformFragment = fmt.Sprintf(` - fragment TerraformFragment on Terraform { - id - name - package - description - dependencies { ...DependenciesFragment } - valuesTemplate - } - %s -`, DependenciesFragment) - -var TerraformInstallationFragment = fmt.Sprintf(` - fragment TerraformInstallationFragment on TerraformInstallation { - id - terraform { ...TerraformFragment } - version { ...VersionFragment } - } - %s - %s -`, TerraformFragment, VersionFragment) - -const ArtifactFragment = ` - fragment ArtifactFragment on Artifact { - id - name - readme - platform - arch - blob - sha - filesize - } -` diff --git a/pkg/api/recipes.go b/pkg/api/recipes.go deleted file mode 100644 index b90ca3e0c..000000000 --- a/pkg/api/recipes.go +++ /dev/null @@ -1,481 +0,0 @@ -package api - -import ( - "fmt" - - "github.com/pluralsh/gqlclient" - "github.com/pluralsh/gqlclient/pkg/utils" - - "sigs.k8s.io/yaml" -) - -type RecipeInput struct { - Name string - Description string - Provider string - Restricted bool - Primary bool - Tests []RecipeTestInput `yaml:"tests" json:"tests,omitempty"` - Sections []RecipeSectionInput - Dependencies []DependencyInput - OidcSettings *OIDCSettings `yaml:"oidcSettings,omitempty"` -} - -type DependencyInput struct { - Name string - Repo string -} - -type RecipeTestInput struct { - Name string - Message string - Type string - Args []*TestArgInput -} - -type TestArgInput struct { - Name string - Repo string - Key string -} - -type RecipeSectionInput struct { - Name string - Items []RecipeItemInput - Configuration []ConfigurationItemInput -} - -type RecipeItemInput struct { - Name string - Type string -} - -type ConditionInput struct { - Field string - Value string - Operation string -} - -type ValidationInput struct { - Type string - Regex string - Message string -} - -type ConfigurationItemInput struct { - Name string - Default string - Type string - Documentation string - Placeholder string - Longform string - Optional bool - FunctionName string `yaml:"functionName,omitempty" json:"functionName,omitempty"` - Condition *ConditionInput - Validation *ValidationInput -} - -type RecipeEdge struct { - Node *Recipe -} - -func (client *client) CreateRecipe(repoName string, attrs gqlclient.RecipeAttributes) (string, error) { - if len(attrs.Tests) == 0 { - attrs.Tests = make([]*gqlclient.RecipeTestAttributes, 0) - } - resp, err := client.pluralClient.CreateRecipe(client.ctx, repoName, attrs) - if err != nil { - return "", err - } - - return resp.CreateRecipe.ID, err -} - -func (client *client) GetRecipe(repo, name string) (*Recipe, error) { - resp, err := client.pluralClient.GetRecipe(client.ctx, &repo, &name) - if err != nil { - return nil, err - } - - r := &Recipe{ - Id: resp.Recipe.ID, - Name: resp.Recipe.Name, - Primary: resp.Recipe.Primary != nil && *resp.Recipe.Primary, - Restricted: resp.Recipe.Restricted != nil && *resp.Recipe.Restricted, - Provider: string(*resp.Recipe.Provider), - Description: utils.ConvertStringPointer(resp.Recipe.Description), - Tests: []*RecipeTest{}, - RecipeSections: []*RecipeSection{}, - RecipeDependencies: []*Recipe{}, - } - if resp.Recipe.OidcSettings != nil { - r.OidcSettings = &OIDCSettings{ - DomainKey: utils.ConvertStringPointer(resp.Recipe.OidcSettings.DomainKey), - UriFormat: utils.ConvertStringPointer(resp.Recipe.OidcSettings.URIFormat), - UriFormats: utils.ConvertStringArrayPointer(resp.Recipe.OidcSettings.URIFormats), - AuthMethod: string(resp.Recipe.OidcSettings.AuthMethod), - } - if resp.Recipe.OidcSettings.Subdomain != nil { - r.OidcSettings.Subdomain = *resp.Recipe.OidcSettings.Subdomain - } - } - if resp.Recipe.Repository != nil { - r.Repository = &Repository{ - Id: resp.Recipe.Repository.ID, - Name: resp.Recipe.Repository.Name, - } - } - - for _, dep := range resp.Recipe.RecipeDependencies { - r.RecipeDependencies = append(r.RecipeDependencies, convertRecipe(dep)) - } - - for _, section := range resp.Recipe.RecipeSections { - rs := &RecipeSection{ - Id: fmt.Sprint(section.Index), - Repository: &Repository{ - Id: section.Repository.ID, - Name: section.Repository.Name, - Description: utils.ConvertStringPointer(section.Repository.Description), - Icon: utils.ConvertStringPointer(section.Repository.Icon), - DarkIcon: utils.ConvertStringPointer(section.Repository.DarkIcon), - Notes: utils.ConvertStringPointer(section.Repository.Notes), - }, - RecipeItems: []*RecipeItem{}, - Configuration: []*ConfigurationItem{}, - } - for _, conf := range section.Configuration { - rs.Configuration = append(rs.Configuration, convertConfigurationItem(conf)) - } - for _, recipeItem := range section.RecipeItems { - rs.RecipeItems = append(rs.RecipeItems, convertRecipeItem(recipeItem)) - } - - r.RecipeSections = append(r.RecipeSections, rs) - - } - - for _, test := range resp.Recipe.Tests { - t := &RecipeTest{ - Name: test.Name, - Type: string(test.Type), - Message: utils.ConvertStringPointer(test.Message), - Args: []*TestArgument{}, - } - for _, arg := range test.Args { - t.Args = append(t.Args, &TestArgument{ - Name: arg.Name, - Repo: arg.Repo, - Key: arg.Key, - }) - } - - r.Tests = append(r.Tests, t) - } - - return r, nil -} - -func (client *client) GetRecipeByID(id string) (*Recipe, error) { - resp, err := client.pluralClient.GetRecipeByID(client.ctx, &id) - if err != nil { - return nil, err - } - - r := &Recipe{ - Id: resp.Recipe.ID, - Name: resp.Recipe.Name, - Provider: string(*resp.Recipe.Provider), - Description: utils.ConvertStringPointer(resp.Recipe.Description), - Tests: []*RecipeTest{}, - RecipeSections: []*RecipeSection{}, - RecipeDependencies: []*Recipe{}, - } - if resp.Recipe.OidcSettings != nil { - r.OidcSettings = &OIDCSettings{ - DomainKey: utils.ConvertStringPointer(resp.Recipe.OidcSettings.DomainKey), - UriFormat: utils.ConvertStringPointer(resp.Recipe.OidcSettings.URIFormat), - UriFormats: utils.ConvertStringArrayPointer(resp.Recipe.OidcSettings.URIFormats), - AuthMethod: string(resp.Recipe.OidcSettings.AuthMethod), - } - if resp.Recipe.OidcSettings.Subdomain != nil { - r.OidcSettings.Subdomain = *resp.Recipe.OidcSettings.Subdomain - } - } - if resp.Recipe.Repository != nil { - r.Repository = &Repository{ - Id: resp.Recipe.Repository.ID, - Name: resp.Recipe.Repository.Name, - } - } - if resp.Recipe.Restricted != nil { - r.Restricted = *resp.Recipe.Restricted - } - - for _, dep := range resp.Recipe.RecipeDependencies { - r.RecipeDependencies = append(r.RecipeDependencies, convertRecipe(dep)) - } - - for _, section := range resp.Recipe.RecipeSections { - rs := &RecipeSection{ - Id: fmt.Sprint(section.Index), - Repository: &Repository{ - Id: section.Repository.ID, - Name: section.Repository.Name, - Description: utils.ConvertStringPointer(section.Repository.Description), - Icon: utils.ConvertStringPointer(section.Repository.Icon), - DarkIcon: utils.ConvertStringPointer(section.Repository.DarkIcon), - Notes: utils.ConvertStringPointer(section.Repository.Notes), - }, - RecipeItems: []*RecipeItem{}, - Configuration: []*ConfigurationItem{}, - } - for _, conf := range section.Configuration { - rs.Configuration = append(rs.Configuration, convertConfigurationItem(conf)) - } - for _, recipeItem := range section.RecipeItems { - rs.RecipeItems = append(rs.RecipeItems, convertRecipeItem(recipeItem)) - } - - r.RecipeSections = append(r.RecipeSections, rs) - - } - - for _, test := range resp.Recipe.Tests { - t := &RecipeTest{ - Name: test.Name, - Type: string(test.Type), - Message: utils.ConvertStringPointer(test.Message), - Args: []*TestArgument{}, - } - for _, arg := range test.Args { - t.Args = append(t.Args, &TestArgument{ - Name: arg.Name, - Repo: arg.Repo, - Key: arg.Key, - }) - } - - r.Tests = append(r.Tests, t) - } - - return r, nil -} - -func convertRecipeItem(item *gqlclient.RecipeItemFragment) *RecipeItem { - ri := &RecipeItem{ - Id: utils.ConvertStringPointer(item.ID), - Terraform: convertTerraform(item.Terraform), - } - for _, conf := range item.Configuration { - ri.Configuration = append(ri.Configuration, convertConfigurationItem(conf)) - } - if item.Chart != nil { - ri.Chart = &Chart{ - Id: utils.ConvertStringPointer(item.Chart.ID), - Name: item.Chart.Name, - Description: utils.ConvertStringPointer(item.Chart.Description), - LatestVersion: utils.ConvertStringPointer(item.Chart.LatestVersion), - } - } - - return ri -} - -func convertConfigurationItem(conf *gqlclient.RecipeConfigurationFragment) *ConfigurationItem { - confItem := &ConfigurationItem{ - Name: utils.ConvertStringPointer(conf.Name), - Default: utils.ConvertStringPointer(conf.Default), - Documentation: utils.ConvertStringPointer(conf.Documentation), - Placeholder: utils.ConvertStringPointer(conf.Placeholder), - FunctionName: utils.ConvertStringPointer(conf.FunctionName), - } - if conf.Optional != nil { - confItem.Optional = *conf.Optional - } - if conf.Type != nil { - confItem.Type = string(*conf.Type) - } - if conf.Condition != nil { - confItem.Condition = &Condition{ - Field: conf.Condition.Field, - Value: utils.ConvertStringPointer(conf.Condition.Value), - Operation: string(conf.Condition.Operation), - } - } - if conf.Validation != nil { - confItem.Validation = &Validation{ - Type: string(conf.Validation.Type), - Regex: utils.ConvertStringPointer(conf.Validation.Regex), - Message: conf.Validation.Message, - } - } - - return confItem -} - -func convertRecipe(rcp *gqlclient.RecipeFragment) *Recipe { - r := &Recipe{ - Id: rcp.ID, - Name: rcp.Name, - Primary: rcp.Primary != nil && *rcp.Primary, - Restricted: rcp.Restricted != nil && *rcp.Restricted, - Description: utils.ConvertStringPointer(rcp.Description), - Tests: []*RecipeTest{}, - RecipeSections: []*RecipeSection{}, - RecipeDependencies: []*Recipe{}, - } - if rcp.Repository != nil { - r.Repository = &Repository{ - Id: rcp.Repository.ID, - Name: rcp.Repository.Name, - } - } - if rcp.OidcSettings != nil { - r.OidcSettings = &OIDCSettings{ - DomainKey: utils.ConvertStringPointer(rcp.OidcSettings.DomainKey), - UriFormat: utils.ConvertStringPointer(rcp.OidcSettings.URIFormat), - UriFormats: utils.ConvertStringArrayPointer(rcp.OidcSettings.URIFormats), - AuthMethod: string(rcp.OidcSettings.AuthMethod), - } - } - - if rcp.Provider != nil { - provider := *rcp.Provider - r.Provider = string(provider) - } - - for _, test := range rcp.Tests { - t := &RecipeTest{ - Name: test.Name, - Type: string(test.Type), - Message: utils.ConvertStringPointer(test.Message), - Args: []*TestArgument{}, - } - for _, arg := range test.Args { - t.Args = append(t.Args, &TestArgument{ - Name: arg.Name, - Repo: arg.Repo, - Key: arg.Key, - }) - } - r.Tests = append(r.Tests, t) - } - - for _, section := range rcp.RecipeSections { - rs := &RecipeSection{ - Id: fmt.Sprint(section.Index), - Repository: &Repository{ - Id: section.Repository.ID, - Name: section.Repository.Name, - Description: utils.ConvertStringPointer(section.Repository.Description), - Icon: utils.ConvertStringPointer(section.Repository.Icon), - DarkIcon: utils.ConvertStringPointer(section.Repository.DarkIcon), - Notes: utils.ConvertStringPointer(section.Repository.Notes), - }, - RecipeItems: []*RecipeItem{}, - Configuration: []*ConfigurationItem{}, - } - for _, conf := range section.Configuration { - rs.Configuration = append(rs.Configuration, convertConfigurationItem(conf)) - } - for _, recipeItem := range section.RecipeItems { - rs.RecipeItems = append(rs.RecipeItems, convertRecipeItem(recipeItem)) - } - - r.RecipeSections = append(r.RecipeSections, rs) - - } - - return r -} - -func convertStack(st *gqlclient.StackFragment) *Stack { - return &Stack{ - Name: st.Name, - Description: utils.ConvertStringPointer(st.Description), - Featured: *st.Featured, - } -} - -func (client *client) ListRecipes(repo, provider string) ([]*Recipe, error) { - recipes := make([]*Recipe, 0) - - if provider != "" { - p := gqlclient.Provider(ToGQLClientProvider(provider)) - resp, err := client.pluralClient.ListRecipes(client.ctx, &repo, &p) - if err != nil { - return nil, err - } - for _, edge := range resp.Recipes.Edges { - recipes = append(recipes, convertRecipe(edge.Node)) - } - } else { - resp, err := client.pluralClient.ListAllRecipes(client.ctx, &repo) - if err != nil { - return nil, err - } - for _, edge := range resp.Recipes.Edges { - recipes = append(recipes, convertRecipe(edge.Node)) - } - } - - return recipes, nil -} - -func (client *client) InstallRecipe(id string) error { - _, err := client.pluralClient.InstallRecipe(client.ctx, id) - if err != nil { - return err - } - return nil -} - -func (client *client) GetStack(name, provider string) (*Stack, error) { - p := gqlclient.Provider(ToGQLClientProvider(provider)) - resp, err := client.pluralClient.GetStack(client.ctx, name, p) - if err != nil { - return nil, err - } - - s := convertStack(resp.Stack) - s.Bundles = make([]*Recipe, 0) - for _, r := range resp.Stack.Bundles { - s.Bundles = append(s.Bundles, convertRecipe(r)) - } - - return s, nil -} - -func (client *client) ListStacks(featured bool) ([]*Stack, error) { - resp, err := client.pluralClient.ListStacks(client.ctx, &featured, nil) - if err != nil { - return nil, err - } - - stacks := make([]*Stack, 0) - for _, edge := range resp.Stacks.Edges { - stacks = append(stacks, convertStack(edge.Node)) - } - - return stacks, nil -} - -func (client *client) CreateStack(attributes gqlclient.StackAttributes) (string, error) { - resp, err := client.pluralClient.CreateStack(client.ctx, attributes) - if err != nil { - return "", err - } - - return resp.CreateStack.ID, err -} - -func ConstructStack(marshalled []byte) (stack gqlclient.StackAttributes, err error) { - err = yaml.Unmarshal(marshalled, &stack) - return -} - -func ConstructRecipe(marshalled []byte) (recipe gqlclient.RecipeAttributes, err error) { - err = yaml.Unmarshal(marshalled, &recipe) - return -} diff --git a/pkg/api/recipes_test.go b/pkg/api/recipes_test.go deleted file mode 100644 index 309e94371..000000000 --- a/pkg/api/recipes_test.go +++ /dev/null @@ -1,39 +0,0 @@ -package api_test - -import ( - "testing" - - "github.com/pluralsh/gqlclient" - "github.com/pluralsh/plural-cli/pkg/api" - - "github.com/stretchr/testify/assert" -) - -func TestConstructRecipe(t *testing.T) { - key := "key" - tests := []struct { - name string - input string - expected gqlclient.RecipeAttributes - }{ - { - name: `test ConstructRecipe method`, - expected: gqlclient.RecipeAttributes{ - OidcSettings: &gqlclient.OidcSettingsAttributes{ - DomainKey: &key, - }, - }, - input: ` -oidcSettings: - domainKey: "key" -`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - repositoryAttributes, err := api.ConstructRecipe([]byte(test.input)) - assert.NoError(t, err) - assert.Equal(t, test.expected, repositoryAttributes) - }) - } -} diff --git a/pkg/api/repos.go b/pkg/api/repos.go index 38e281e24..c114a17c8 100644 --- a/pkg/api/repos.go +++ b/pkg/api/repos.go @@ -1,19 +1,9 @@ package api import ( - "context" - "fmt" - "os" - "path/filepath" - "strings" - _ "github.com/AlecAivazis/survey/v2" - "sigs.k8s.io/yaml" - "github.com/pluralsh/gqlclient" "github.com/pluralsh/gqlclient/pkg/utils" - fileutils "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/samber/lo" ) type ResourceDefinitionInput struct { @@ -95,224 +85,3 @@ func convertRepository(repo *gqlclient.RepositoryFragment) *Repository { }, } } - -func (client *client) CreateRepository(name, publisher string, input *gqlclient.RepositoryAttributes) error { - var uploads []gqlclient.Upload - - iconUpload, err := getIconReader(input.Icon, "icon") - if err != nil { - return err - } - - if iconUpload != nil { - input.Icon = lo.ToPtr("icon") - uploads = append(uploads, *iconUpload) - } - - darkIconUpload, err := getIconReader(input.DarkIcon, "darkicon") - if err != nil { - return err - } - - if darkIconUpload != nil { - input.DarkIcon = lo.ToPtr("darkicon") - uploads = append(uploads, *darkIconUpload) - } - - if input.Docs != nil && *input.Docs != "" { - tarFile, err := tarDir(name, *input.Docs, "") - if err != nil { - return err - } - defer os.Remove(tarFile) - - docsUpload, err := getIconReader(lo.ToPtr(tarFile), "docs") - if err != nil { - return err - } - input.Docs = lo.ToPtr("docs") - uploads = append(uploads, *docsUpload) - } - - if input.Notes != nil && *input.Notes != "" { - file, _ := filepath.Abs(*input.Notes) - notes, err := fileutils.ReadFile(file) - if err != nil { - return err - } - - input.Notes = ¬es - } - client.pluralClient.Client.CustomDo = gqlclient.WithFiles(uploads, client.httpClient) - _, err = client.pluralClient.CreateRepository(context.Background(), name, publisher, *input) - return err -} - -func (client *client) AcquireLock(repo string) (*ApplyLock, error) { - resp, err := client.pluralClient.AcquireLock(client.ctx, repo) - if err != nil { - return nil, err - } - - return &ApplyLock{ - Id: resp.AcquireLock.ID, - Lock: utils.ConvertStringPointer(resp.AcquireLock.Lock), - }, err -} - -func (client *client) ReleaseLock(repo, lock string) (*ApplyLock, error) { - resp, err := client.pluralClient.ReleaseLock(client.ctx, repo, gqlclient.LockAttributes{Lock: lock}) - if err != nil { - return nil, err - } - - return &ApplyLock{ - Id: resp.ReleaseLock.ID, - Lock: utils.ConvertStringPointer(resp.ReleaseLock.Lock), - }, nil -} - -func (client *client) UnlockRepository(name string) error { - _, err := client.pluralClient.UnlockRepository(client.ctx, name) - if err != nil { - return err - } - - return nil -} - -func (client *client) ListRepositories(query string) ([]*Repository, error) { - resp, err := client.pluralClient.ListRepositories(client.ctx, &query) - if err != nil { - return nil, err - } - - res := make([]*Repository, 0) - for _, edge := range resp.Repositories.Edges { - rep := &Repository{ - Id: edge.Node.ID, - Name: edge.Node.Name, - Description: utils.ConvertStringPointer(edge.Node.Description), - Icon: utils.ConvertStringPointer(edge.Node.Icon), - DarkIcon: utils.ConvertStringPointer(edge.Node.DarkIcon), - Notes: utils.ConvertStringPointer(edge.Node.Notes), - Publisher: &Publisher{ - Name: edge.Node.Publisher.Name, - }, - Recipes: []*Recipe{}, - } - for _, rcp := range edge.Node.Recipes { - rep.Recipes = append(rep.Recipes, &Recipe{Name: rcp.Name}) - } - res = append(res, rep) - } - - return res, err -} - -func (client *client) InstallVersion(tp, repo, name, vsn string) error { - tp = strings.ToUpper(tp) - dt := gqlclient.DependencyType(tp) - if !dt.IsValid() { - return fmt.Errorf("invalid package type %s", tp) - } - - _, err := client.pluralClient.InstallVersion(context.Background(), dt, repo, name, vsn) - return err -} - -func (client *client) Release(name string, tags []string) error { - _, err := client.pluralClient.Release(context.Background(), name, tags) - return err -} - -func (client *client) Scaffolds(in *ScaffoldInputs) ([]*ScaffoldFile, error) { - scaffolds, err := client.pluralClient.Scaffolds(context.Background(), in.Application, in.Publisher, gqlclient.Category(strings.ToUpper(in.Category)), &in.Ingress, &in.Postgres) - if err != nil { - return nil, err - } - - resp := make([]*ScaffoldFile, 0) - - for _, scaffold := range scaffolds.Scaffold { - resp = append(resp, &ScaffoldFile{ - Path: utils.ConvertStringPointer(scaffold.Path), - Content: utils.ConvertStringPointer(scaffold.Content), - }) - } - - return resp, err -} - -func getIconReader(icon *string, field string) (*gqlclient.Upload, error) { - if icon == nil { - return nil, nil - } - if *icon == "" { - return nil, nil - } - - file, err := filepath.Abs(*icon) - if err != nil { - return nil, err - } - f, err := os.Open(file) - if err != nil { - return nil, err - } - - return &gqlclient.Upload{ - Field: field, - Name: file, - R: f, - }, nil -} - -func ConstructRepositoryInput(marshalled []byte) (input *RepositoryInput, err error) { - input = &RepositoryInput{} - err = yaml.Unmarshal(marshalled, input) - return -} - -func ConstructGqlClientRepositoryInput(marshalled []byte) (*gqlclient.RepositoryAttributes, error) { - repoInput, err := ConstructRepositoryInput(marshalled) - if err != nil { - return nil, err - } - - category := gqlclient.Category(repoInput.Category) - - var releaseStatus *gqlclient.ReleaseStatus - if repoInput.ReleaseStatus != "" { - releaseStatus = lo.ToPtr(gqlclient.ReleaseStatus(repoInput.ReleaseStatus)) - } - - resp := &gqlclient.RepositoryAttributes{ - Category: &category, - DarkIcon: &repoInput.DarkIcon, - Description: &repoInput.Description, - ReleaseStatus: releaseStatus, - Contributors: lo.ToSlicePtr(repoInput.Contributors), - GitURL: &repoInput.GitUrl, - Homepage: &repoInput.Homepage, - Icon: &repoInput.Icon, - Docs: &repoInput.Docs, - Name: &repoInput.Name, - Notes: &repoInput.Notes, - Private: &repoInput.Private, - Tags: []*gqlclient.TagAttributes{}, - } - if repoInput.OauthSettings != nil { - resp.OauthSettings = &gqlclient.OauthSettingsAttributes{ - AuthMethod: gqlclient.OidcAuthMethod(repoInput.OauthSettings.AuthMethod), - URIFormat: repoInput.OauthSettings.UriFormat, - } - } - for _, tag := range repoInput.Tags { - resp.Tags = append(resp.Tags, &gqlclient.TagAttributes{ - Tag: tag.Tag, - }) - } - - return resp, nil -} diff --git a/pkg/api/repos_test.go b/pkg/api/repos_test.go deleted file mode 100644 index 16a27172b..000000000 --- a/pkg/api/repos_test.go +++ /dev/null @@ -1,77 +0,0 @@ -package api_test - -import ( - "testing" - - "github.com/pluralsh/gqlclient" - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/samber/lo" - - "github.com/stretchr/testify/assert" -) - -func TestConstructGqlClientRepositoryInput(t *testing.T) { - devopsCategory := gqlclient.CategoryDevops - testDescription := "test" - privateFlag := true - icon := "plural/icons/test.png" - notes := "plural/notes.tpl" - name := "test" - emptyString := "" - - tests := []struct { - name string - input string - expected *gqlclient.RepositoryAttributes - }{ - { - name: `test repository.yaml conversion`, - expected: &gqlclient.RepositoryAttributes{ - Category: &devopsCategory, - DarkIcon: &emptyString, - Description: &testDescription, - GitURL: &emptyString, - Homepage: &emptyString, - Contributors: lo.ToSlicePtr([]string{"someone@email.com"}), - Icon: &icon, - Name: &name, - Notes: ¬es, - Docs: &emptyString, - OauthSettings: &gqlclient.OauthSettingsAttributes{ - AuthMethod: "POST", - URIFormat: "https://{domain}/oauth2/callback", - }, - Private: &privateFlag, - Readme: nil, - Secrets: nil, - Tags: []*gqlclient.TagAttributes{ - { - Tag: "data-science", - }, - }, - Verified: nil, - }, - input: `name: test -description: test -category: DEVOPS -private: true -icon: plural/icons/test.png -notes: plural/notes.tpl -contributors: -- someone@email.com -oauthSettings: - uriFormat: https://{domain}/oauth2/callback - authMethod: POST -tags: -- tag: data-science -`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - repositoryAttributes, err := api.ConstructGqlClientRepositoryInput([]byte(test.input)) - assert.NoError(t, err) - assert.Equal(t, test.expected, repositoryAttributes) - }) - } -} diff --git a/pkg/api/scaffolds.go b/pkg/api/scaffolds.go index 3b7f0b515..d6d142d0e 100644 --- a/pkg/api/scaffolds.go +++ b/pkg/api/scaffolds.go @@ -1,7 +1,5 @@ package api -import "github.com/pluralsh/gqlclient" - func (client *client) GetTfProviders() ([]string, error) { resp, err := client.pluralClient.GetTfProviders(client.ctx) if err != nil { @@ -14,12 +12,3 @@ func (client *client) GetTfProviders() ([]string, error) { return result, nil } - -func (client *client) GetTfProviderScaffold(name, version string) (string, error) { - resp, err := client.pluralClient.GetTfProviderScaffold(client.ctx, gqlclient.Provider(name), &version) - if err != nil { - return "", err - } - - return *resp.TerraformProvider.Content, err -} diff --git a/pkg/api/shell.go b/pkg/api/shell.go deleted file mode 100644 index 51f96a7cf..000000000 --- a/pkg/api/shell.go +++ /dev/null @@ -1,28 +0,0 @@ -package api - -import "fmt" - -func (client *client) GetShell() (CloudShell, error) { - resp, err := client.pluralClient.GetShell(client.ctx) - if err != nil { - return CloudShell{}, err - } - - if resp.Shell != nil { - return CloudShell{ - Id: resp.Shell.ID, - AesKey: resp.Shell.AesKey, - GitUrl: resp.Shell.GitURL, - }, nil - } - return CloudShell{}, fmt.Errorf("Could not find a cloud shell for this user") -} - -func (client *client) DeleteShell() error { - _, err := client.pluralClient.DeleteShell(client.ctx) - if err != nil { - return err - } - - return nil -} diff --git a/pkg/api/terraform.go b/pkg/api/terraform.go deleted file mode 100644 index 0b7aa2146..000000000 --- a/pkg/api/terraform.go +++ /dev/null @@ -1,137 +0,0 @@ -package api - -import ( - "os" - "path" - "path/filepath" - - "github.com/pluralsh/gqlclient" - - "github.com/pluralsh/gqlclient/pkg/utils" - "github.com/samber/lo" - - tarutils "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" -) - -func (client *client) GetTerraform(repoId string) ([]*Terraform, error) { - - terraformResponse, err := client.pluralClient.GetTerraform(client.ctx, repoId) - if err != nil { - return nil, err - } - - terraform := make([]*Terraform, 0) - for _, edge := range terraformResponse.Terraform.Edges { - terraform = append(terraform, convertTerraform(edge.Node)) - } - return terraform, err -} - -func (client *client) GetTerraformVersions(id string) ([]*Version, error) { - resp, err := client.pluralClient.GetTerraformVersions(client.ctx, id) - if err != nil { - return nil, err - } - - versions := make([]*Version, 0) - for _, version := range resp.Versions.Edges { - versions = append(versions, convertVersion(version.Node)) - } - - return versions, nil -} - -func (client *client) GetTerraformInstallations(repoId string) ([]*TerraformInstallation, error) { - resp, err := client.pluralClient.GetTerraformInstallations(client.ctx, repoId) - if err != nil { - return nil, err - } - - inst := make([]*TerraformInstallation, 0) - for _, edge := range resp.TerraformInstallations.Edges { - inst = append(inst, &TerraformInstallation{ - Id: utils.ConvertStringPointer(edge.Node.ID), - Terraform: convertTerraform(edge.Node.Terraform), - Version: convertVersion(edge.Node.Version), - }) - } - return inst, err -} - -func (client *client) UninstallTerraform(id string) (err error) { - _, err = client.pluralClient.UninstallTerraform(client.ctx, id) - return -} - -func tarDir(name, dir, regex string) (res string, err error) { - fullPath, err := filepath.Abs(dir) - if err != nil { - return - } - - cwd, _ := os.Getwd() - res = pathing.SanitizeFilepath(filepath.Join(cwd, name+".tgz")) - f, err := os.Create(res) - if err != nil { - return - } - defer f.Close() - - err = tarutils.Tar(fullPath, f, regex) - return -} - -func (client *client) UploadTerraform(dir, repoName string) (Terraform, error) { - tf := Terraform{} - name := path.Base(dir) - tarFile, err := tarDir(name, dir, "\\.terraform") - if err != nil { - return tf, err - } - - rf, err := os.Open(tarFile) - if err != nil { - return tf, err - } - defer rf.Close() - defer os.Remove(tarFile) - - client.pluralClient.Client.CustomDo = gqlclient.WithFiles([]gqlclient.Upload{ - { - Field: "package", - Name: tarFile, - R: rf, - }, - }, client.httpClient) - resp, err := client.pluralClient.UploadTerraform(client.ctx, repoName, name, "package") - if err != nil { - return tf, err - } - - upload := resp.UploadTerraform - tf.Name = lo.FromPtr(upload.Name) - tf.Id = lo.FromPtr(upload.ID) - tf.Description = lo.FromPtr(upload.Description) - tf.ValuesTemplate = lo.FromPtr(upload.ValuesTemplate) - tf.Package = lo.FromPtr(upload.Package) - if upload.Dependencies != nil { - tf.Dependencies = convertDependencies(upload.Dependencies) - } - - return tf, err -} - -func convertTerraform(ter *gqlclient.TerraformFragment) *Terraform { - if ter == nil { - return nil - } - return &Terraform{ - Id: utils.ConvertStringPointer(ter.ID), - Name: utils.ConvertStringPointer(ter.Name), - Description: utils.ConvertStringPointer(ter.Description), - ValuesTemplate: utils.ConvertStringPointer(ter.ValuesTemplate), - Dependencies: convertDependencies(ter.Dependencies), - Package: utils.ConvertStringPointer(ter.Package), - } -} diff --git a/pkg/api/upgrades.go b/pkg/api/upgrades.go deleted file mode 100644 index d348fee04..000000000 --- a/pkg/api/upgrades.go +++ /dev/null @@ -1,17 +0,0 @@ -package api - -import ( - "github.com/pluralsh/gqlclient" - "sigs.k8s.io/yaml" -) - -func (client *client) CreateUpgrade(queue, repository string, attrs gqlclient.UpgradeAttributes) error { - _, err := client.pluralClient.CreateUpgrade(client.ctx, queue, repository, attrs) - return err -} - -func ConstructUpgradeAttributes(marshalled []byte) (gqlclient.UpgradeAttributes, error) { - var attrs gqlclient.UpgradeAttributes - err := yaml.Unmarshal(marshalled, &attrs) - return attrs, err -} diff --git a/pkg/application/apps.go b/pkg/application/apps.go deleted file mode 100644 index d8006e218..000000000 --- a/pkg/application/apps.go +++ /dev/null @@ -1,83 +0,0 @@ -package application - -import ( - "context" - - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - "sigs.k8s.io/application/api/v1beta1" -) - -type ApplicationInterface interface { - List(ctx context.Context, opts metav1.ListOptions) (*v1beta1.ApplicationList, error) - Get(ctx context.Context, name string, options metav1.GetOptions) (*v1beta1.Application, error) - Create(ctx context.Context, app *v1beta1.Application) (*v1beta1.Application, error) - Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) - // ... -} - -type applicationClient struct { - restClient rest.Interface - ns string -} - -func (c *applicationClient) List(ctx context.Context, opts metav1.ListOptions) (*v1beta1.ApplicationList, error) { - result := v1beta1.ApplicationList{} - err := c.restClient. - Get(). - Namespace(c.ns). - Resource("applications"). - VersionedParams(&opts, scheme.ParameterCodec). - Do(ctx). - Into(&result) - - return &result, err -} - -func (c *applicationClient) Get(ctx context.Context, name string, opts metav1.GetOptions) (*v1beta1.Application, error) { - result := v1beta1.Application{} - err := c.restClient. - Get(). - Namespace(c.ns). - Resource("applications"). - Name(name). - VersionedParams(&opts, scheme.ParameterCodec). - Do(ctx). - Into(&result) - - return &result, err -} - -func (c *applicationClient) Create(ctx context.Context, app *v1beta1.Application) (*v1beta1.Application, error) { - result := v1beta1.Application{} - err := c.restClient. - Post(). - Namespace(c.ns). - Resource("applications"). - Body(app). - Do(ctx). - Into(&result) - - return &result, err -} - -func (c *applicationClient) Watch(ctx context.Context, opts metav1.ListOptions) (watch.Interface, error) { - opts.Watch = true - return c.restClient. - Get(). - Namespace(c.ns). - Resource("applications"). - VersionedParams(&opts, scheme.ParameterCodec). - Watch(ctx) -} - -func WatchNamespace(ctx context.Context, client ApplicationInterface) (watch.Interface, error) { - apps, err := client.List(ctx, metav1.ListOptions{}) - if err != nil { - return nil, err - } - resourceVersion := apps.ListMeta.ResourceVersion - return client.Watch(ctx, metav1.ListOptions{ResourceVersion: resourceVersion}) -} diff --git a/pkg/application/clientset.go b/pkg/application/clientset.go deleted file mode 100644 index 027fcd294..000000000 --- a/pkg/application/clientset.go +++ /dev/null @@ -1,41 +0,0 @@ -package application - -import ( - "k8s.io/client-go/kubernetes/scheme" - "k8s.io/client-go/rest" - "sigs.k8s.io/application/api/v1beta1" -) - -type ApplicationV1Beta1Interface interface { - Applications(namespace string) ApplicationInterface -} - -type ApplicationV1Beta1Client struct { - restClient rest.Interface -} - -func NewForConfig(c *rest.Config) (*ApplicationV1Beta1Client, error) { - if err := AddToScheme(scheme.Scheme); err != nil { - return nil, err - } - - config := *c - config.ContentConfig.GroupVersion = &v1beta1.GroupVersion - config.APIPath = "/apis" - config.NegotiatedSerializer = scheme.Codecs.WithoutConversion() - config.UserAgent = rest.DefaultKubernetesUserAgent() - - client, err := rest.RESTClientFor(&config) - if err != nil { - return nil, err - } - - return &ApplicationV1Beta1Client{restClient: client}, nil -} - -func (c *ApplicationV1Beta1Client) Applications(namespace string) ApplicationInterface { - return &applicationClient{ - restClient: c.restClient, - ns: namespace, - } -} diff --git a/pkg/application/details.go b/pkg/application/details.go deleted file mode 100644 index 4d957b1a5..000000000 --- a/pkg/application/details.go +++ /dev/null @@ -1,50 +0,0 @@ -package application - -import ( - "context" - "time" - - tm "github.com/buger/goterm" - "github.com/olekukonko/tablewriter" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/kubernetes" -) - -func additionalDetails(client *kubernetes.Clientset, kind, name, namespace string) { - ctx := context.Background() - if kind == "statefulset" { - ss, err := client.AppsV1().StatefulSets(namespace).Get(ctx, name, metav1.GetOptions{}) - if err != nil { - return - } - - podDetails(ctx, client, ss.Spec.Selector, namespace) - } - - if kind == "deployment" { - dep, err := client.AppsV1().Deployments(namespace).Get(ctx, name, metav1.GetOptions{}) - if err != nil { - return - } - - podDetails(ctx, client, dep.Spec.Selector, namespace) - } -} - -func podDetails(ctx context.Context, client *kubernetes.Clientset, selector *metav1.LabelSelector, namespace string) { - ls, _ := metav1.LabelSelectorAsSelector(selector) - listOptions := metav1.ListOptions{LabelSelector: ls.String()} - pods, err := client.CoreV1().Pods(namespace).List(ctx, listOptions) - if err != nil { - return - } - - tm.Println("\nPod Health:") - table := tablewriter.NewWriter(tm.Screen) - table.SetHeader([]string{"Pod", "Status", "Created"}) - for _, pod := range pods.Items { - table.Append([]string{pod.Name, string(pod.Status.Phase), pod.CreationTimestamp.Format(time.UnixDate)}) - } - - table.Render() -} diff --git a/pkg/application/printer.go b/pkg/application/printer.go deleted file mode 100644 index cb7a38fbb..000000000 --- a/pkg/application/printer.go +++ /dev/null @@ -1,130 +0,0 @@ -package application - -import ( - "fmt" - "strings" - - tm "github.com/buger/goterm" - "k8s.io/client-go/kubernetes" - "sigs.k8s.io/application/api/v1beta1" -) - -func Ready(app *v1beta1.Application) bool { - cond := findReadiness(app) - tm.Printf("Application %s (%s) ", app.Name, app.Spec.Descriptor.Version) - if cond == nil { - warn("WAITING") - tm.Println("") - return false - } - - if cond.Status == "True" { - success("READY") - tm.Println("") - return true - } - - if cond.Status == "False" { - warn("WAITING") - } else if cond.Status == "Unknown" { - highlight("UNKNOWN") - } - - tm.Println("") - return false -} - -func Print(client *kubernetes.Clientset, app *v1beta1.Application) (err error) { - Ready(app) - if _, err := tm.Println(app.Spec.Descriptor.Description); err != nil { - return err - } - if _, err := tm.Printf("\nComponents Ready: %s\n", app.Status.ComponentsReady); err != nil { - return err - } - first := true - for _, comp := range app.Status.ComponentList.Objects { - if comp.Status != "Ready" { - if first { - if _, err := tm.Println("\nUnready Components:"); err != nil { - return err - } - } - kind := strings.ToLower(comp.Kind) - if _, err := tm.Printf("- %s/%s :: %s\n", kind, comp.Name, comp.Status); err != nil { - return err - } - additionalDetails(client, kind, comp.Name, app.Namespace) - if _, err := tm.Printf("\tUse `kubectl describe %s %s -n %s` to investigate\n", kind, comp.Name, app.Namespace); err != nil { - return err - } - first = false - } - } - - first = true - for _, comp := range app.Status.ComponentList.Objects { - if comp.Status == "Ready" { - if first { - if _, err := tm.Println("\nReady Components:"); err != nil { - return err - } - } - if _, err := tm.Printf("- %s/%s :: %s\n", strings.ToLower(comp.Kind), comp.Name, comp.Status); err != nil { - return err - } - first = false - } - } - return -} - -func Flush() { - for idx, str := range strings.SplitAfter(tm.Screen.String(), "\n") { - if idx == tm.Height()-1 { - _, err := tm.Output.WriteString("...") - if err != nil { - return - } - break - } - - _, err := tm.Output.WriteString(str) - if err != nil { - return - } - } - - if err := tm.Output.Flush(); err != nil { - return - } - tm.Screen.Reset() -} - -func findReadiness(app *v1beta1.Application) (condition *v1beta1.Condition) { - for _, cond := range app.Status.Conditions { - if cond.Type == v1beta1.Ready { - condition = &cond - return - } - } - return -} - -func warn(line string, args ...interface{}) { - if _, err := tm.Print(tm.Color(fmt.Sprintf(line, args...), tm.YELLOW)); err != nil { - return - } -} - -func success(line string, args ...interface{}) { - if _, err := tm.Print(tm.Color(fmt.Sprintf(line, args...), tm.GREEN)); err != nil { - return - } -} - -func highlight(line string, args ...interface{}) { - if _, err := tm.Print(tm.Bold(fmt.Sprintf(line, args...))); err != nil { - return - } -} diff --git a/pkg/application/register.go b/pkg/application/register.go deleted file mode 100644 index 03b452a38..000000000 --- a/pkg/application/register.go +++ /dev/null @@ -1,38 +0,0 @@ -package application - -import ( - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - runtime "k8s.io/apimachinery/pkg/runtime" - schema "k8s.io/apimachinery/pkg/runtime/schema" - serializer "k8s.io/apimachinery/pkg/runtime/serializer" - utilruntime "k8s.io/apimachinery/pkg/util/runtime" - "sigs.k8s.io/application/api/v1beta1" -) - -var Scheme = runtime.NewScheme() -var Codecs = serializer.NewCodecFactory(Scheme) -var ParameterCodec = runtime.NewParameterCodec(Scheme) -var localSchemeBuilder = runtime.SchemeBuilder{ - v1beta1.AddToScheme, -} - -// AddToScheme adds all types of this clientset into the given scheme. This allows composition -// of clientsets, like in: -// -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kubernetes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) -// -// kclientset, _ := kubernetes.NewForConfig(c) -// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) -// -// After this, RawExtensions in Kubernetes types will serialize kube-aggregator types -// correctly. -var AddToScheme = localSchemeBuilder.AddToScheme - -func init() { - v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"}) - utilruntime.Must(AddToScheme(Scheme)) -} diff --git a/pkg/application/waiter.go b/pkg/application/waiter.go deleted file mode 100644 index 646f597c8..000000000 --- a/pkg/application/waiter.go +++ /dev/null @@ -1,105 +0,0 @@ -package application - -import ( - "context" - "fmt" - "time" - - tm "github.com/buger/goterm" - "github.com/pluralsh/plural-cli/pkg/config" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/rest" - "sigs.k8s.io/application/api/v1beta1" -) - -const ( - waitTime = 5 * 60 * time.Second -) - -func ListAll(kubeConf *rest.Config) ([]v1beta1.Application, error) { - apps, err := NewForConfig(kubeConf) - if err != nil { - return nil, err - } - - client := apps.Applications("") - l, err := client.List(context.Background(), metav1.ListOptions{}) - if err != nil { - return nil, err - } - - return l.Items, nil -} - -func Waiter(kubeConf *rest.Config, repo string, appFunc func(app *v1beta1.Application) (bool, error), timeout func() error) error { - conf := config.Read() - ctx := context.Background() - apps, err := NewForConfig(kubeConf) - if err != nil { - return err - } - - client := apps.Applications(conf.Namespace(repo)) - app, err := client.Get(ctx, repo, metav1.GetOptions{}) - if err != nil { - return err - } - - tm.Clear() - if ready, err := appFunc(app); ready || err != nil { - return err - } - - watcher, err := WatchNamespace(ctx, client) - if err != nil { - return err - } - - ch := watcher.ResultChan() - for { - select { - case event := <-ch: - tm.Clear() - app, ok := event.Object.(*v1beta1.Application) - if !ok { - return fmt.Errorf("Failed to parse watch event") - } - - if stop, err := appFunc(app); stop || err != nil { - return err - } - case <-time.After(waitTime): - if err := timeout(); err != nil { - return err - } - } - } -} - -func SilentWait(kubeConf *rest.Config, repo string) error { - timeout := func() error { - return fmt.Errorf("Failed to become ready after 5 minutes, try running `plural watch %s` to get an idea where to debug", repo) - } - - return Waiter(kubeConf, repo, func(app *v1beta1.Application) (bool, error) { - cond := findReadiness(app) - if cond.Status == "True" { - fmt.Printf("%s is finally ready!", repo) - return true, nil - } - return false, nil - }, timeout) -} - -func Wait(kubeConf *rest.Config, repo string) error { - timeout := func() error { - return fmt.Errorf("Failed to become ready after 5 minutes, try running `plural watch %s` to get an idea where to debug", repo) - } - - return Waiter(kubeConf, repo, func(app *v1beta1.Application) (bool, error) { - tm.MoveCursor(1, 1) - ready := Ready(app) - Flush() - return ready, nil - }, timeout) -} diff --git a/pkg/bundle/configuration.go b/pkg/bundle/configuration.go index 3dda77dbb..becd686e3 100644 --- a/pkg/bundle/configuration.go +++ b/pkg/bundle/configuration.go @@ -105,7 +105,7 @@ func Configure(ctx map[string]interface{}, item *api.ConfigurationItem, context } fmt.Println("") - utils.Highlight(item.Name) + utils.Highlight(item.Name) //nolint:govet fmt.Printf("\n>> %s\n", item.Documentation) def := getDefault(item.Default, item, proj) diff --git a/pkg/bundle/installer.go b/pkg/bundle/installer.go deleted file mode 100644 index 1c5e2ceb3..000000000 --- a/pkg/bundle/installer.go +++ /dev/null @@ -1,117 +0,0 @@ -package bundle - -import ( - "fmt" - "os" - - "github.com/inancgumus/screen" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/bundle/tests" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -func Install(client api.Client, repo, name string, refresh bool) error { - recipe, err := client.GetRecipe(repo, name) - if err != nil { - return api.GetErrorResponse(err, "GetRecipe") - } - - return doInstall(client, recipe, repo, name, refresh) -} - -func doInstall(client api.Client, recipe *api.Recipe, repo, name string, refresh bool) error { - if recipe.Restricted && os.Getenv("CLOUD_SHELL") == "1" { - return fmt.Errorf("Cannot install this bundle for %s in cloud shell, this is often because it requires a file locally available on your machine like a git ssh key", repo) - } - - path := manifest.ContextPath() - context, err := manifest.ReadContext(path) - if err != nil { - context = manifest.NewContext() - } - - context.AddBundle(repo, name) - - for _, section := range recipe.RecipeSections { - screen.Clear() - screen.MoveTopLeft() - utils.Highlight(section.Repository.Name) - fmt.Printf(" %s\n", section.Repository.Description) - - ctx, ok := context.Configuration[section.Repository.Name] - if !ok { - ctx = map[string]interface{}{} - } - - seen := make(map[string]bool) - - for _, configItem := range section.Configuration { - if seen[configItem.Name] { - continue - } - - if _, ok := ctx[configItem.Name]; ok && !refresh { - continue - } - - seen[configItem.Name] = true - if err := Configure(ctx, configItem, context, repo); err != nil { - context.Configuration[section.Repository.Name] = ctx - if err := context.Write(path); err != nil { - return err - } - return err - } - } - - context.Configuration[section.Repository.Name] = ctx - } - - err = context.Write(path) - if err != nil { - return err - } - - if err := performTests(context, recipe); err != nil { - return err - } - - if err := client.InstallRecipe(recipe.Id); err != nil { - return fmt.Errorf("Install failed, does your plural user have install permissions? error: %w", api.GetErrorResponse(err, "InstallRecipe")) - } - - if recipe.OidcSettings == nil { - return nil - } - - confirm := false - if err := ConfigureOidc(repo, client, recipe, context.Configuration[repo], &confirm); err != nil { - return err - } - - for _, r := range recipe.RecipeDependencies { - repo := r.Repository.Name - if err := ConfigureOidc(repo, client, r, context.Configuration[repo], &confirm); err != nil { - return err - } - } - - return nil -} - -func performTests(ctx *manifest.Context, recipe *api.Recipe) error { - if len(recipe.Tests) == 0 { - return nil - } - - utils.Highlight("Found %d tests to run...\n", len(recipe.Tests)) - for _, test := range recipe.Tests { - if err := tests.Perform(ctx, test); err != nil { - return err - } - } - - return nil -} diff --git a/pkg/bundle/oidc.go b/pkg/bundle/oidc.go index 936caf07b..7b594280d 100644 --- a/pkg/bundle/oidc.go +++ b/pkg/bundle/oidc.go @@ -1,60 +1,10 @@ package bundle import ( - "fmt" - "strings" - - "github.com/AlecAivazis/survey/v2" - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/manifest" "github.com/pluralsh/plural-cli/pkg/utils" ) -var oidcConfirmed bool - -func ConfigureOidc(repo string, client api.Client, recipe *api.Recipe, ctx map[string]interface{}, confirm *bool) error { - if recipe.OidcSettings == nil { - return nil - } - - ok, err := confirmOidc(confirm) - if err != nil { - return err - } - - if !ok { - return nil - } - - settings := recipe.OidcSettings - redirectUris, err := formatRedirectUris(settings, ctx) - if err != nil { - return err - } - - inst, err := client.GetInstallation(repo) - if err != nil { - return api.GetErrorResponse(err, "GetInstallation") - } - - me, err := client.Me() - if err != nil { - return api.GetErrorResponse(err, "Me") - } - - oidcSettings := &api.OidcProviderAttributes{ - RedirectUris: redirectUris, - AuthMethod: settings.AuthMethod, - Bindings: []api.Binding{ - {UserId: me.Id}, - }, - } - mergeOidcAttributes(inst, oidcSettings) - err = client.OIDCProvider(inst.Id, oidcSettings) - return api.GetErrorResponse(err, "OIDCProvider") -} - func SetupOIDC(repo string, client api.Client, redirectUris []string, authMethod string) error { inst, err := client.GetInstallation(repo) if err != nil { @@ -96,68 +46,3 @@ func mergeOidcAttributes(inst *api.Installation, attributes *api.OidcProviderAtt } attributes.Bindings = bindings } - -func formatRedirectUris(settings *api.OIDCSettings, ctx map[string]interface{}) ([]string, error) { - res := make([]string, 0) - domain := "" - - if settings.DomainKey != "" { - d, ok := ctx[settings.DomainKey] - if !ok { - return res, fmt.Errorf("No domain setting for %s in context", settings.DomainKey) - } - - domain = d.(string) - } - - proj, err := manifest.FetchProject() - if err != nil { - return res, err - } - - fmtUri := func(uri string) string { - if domain != "" { - uri = strings.ReplaceAll(uri, "{domain}", domain) - } - - if settings.Subdomain { - uri = strings.ReplaceAll(uri, "{subdomain}", proj.Network.Subdomain) - } - - return uri - } - - if settings.UriFormat != "" { - return []string{fmtUri(settings.UriFormat)}, err - } - - for _, uri := range settings.UriFormats { - res = append(res, fmtUri(uri)) - } - - return res, nil -} - -func confirmOidc(confirm *bool) (bool, error) { - if confirm != nil && *confirm { - oidcConfirmed = true - } - - if oidcConfirmed { - return true, nil - } - - value, ok := utils.GetEnvBoolValue("PLURAL_CONFIRM_OIDC") - if ok { - confirm = &value - } else { - if err := survey.AskOne(&survey.Confirm{ - Message: "Enable plural OIDC", - Default: true, - }, confirm, survey.WithValidator(survey.Required)); err != nil { - return false, err - } - } - - return *confirm, nil -} diff --git a/pkg/bundle/stack.go b/pkg/bundle/stack.go deleted file mode 100644 index 7bb148399..000000000 --- a/pkg/bundle/stack.go +++ /dev/null @@ -1,37 +0,0 @@ -package bundle - -import ( - "fmt" - "strings" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -func Stack(client api.Client, name, provider string, refresh bool) error { - s, err := client.GetStack(name, provider) - if err != nil { - return api.GetErrorResponse(err, "GetStack") - } - - utils.Highlight("You're attempting to install stack: %s\n>> ", s.Name) - fmt.Println(s.Description) - fmt.Println() - - repos := make([]string, 0) - for _, r := range s.Bundles { - repos = append(repos, r.Repository.Name) - } - - if !utils.Confirm(fmt.Sprintf("This will install all of {%s}, do you want to proceed?", strings.Join(repos, ", "))) { - return nil - } - - for _, recipe := range s.Bundles { - if err := doInstall(client, recipe, recipe.Repository.Name, provider, refresh); err != nil { - return err - } - } - - return nil -} diff --git a/pkg/bundle/tests/git.go b/pkg/bundle/tests/git.go deleted file mode 100644 index a7eb3cc75..000000000 --- a/pkg/bundle/tests/git.go +++ /dev/null @@ -1,73 +0,0 @@ -package tests - -import ( - "fmt" - "os" - - "github.com/go-git/go-git/v5/plumbing/transport" - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/utils/git" -) - -func testGit(ctx *manifest.Context, test *api.RecipeTest) error { - args := collectArguments(test.Args, ctx) - auth, err := authMethod(args) - if err != nil { - return err - } - url := args["url"].Val.(string) - dir, err := os.MkdirTemp("", "repo") - if err != nil { - return err - } - - defer os.RemoveAll(dir) - fmt.Println("~~> Attempting to clone repo in a temporary directory...") - _, err = git.Clone(auth, url, dir) - return err -} - -func authMethod(args map[string]*ContextValue) (transport.AuthMethod, error) { - if arg, ok := args["password"]; ok && arg.Present { - if pass, ok := arg.Val.(string); ok && pass != "" { - if user, ok := args["username"].Val.(string); ok { - return git.BasicAuth(user, pass) - } - return nil, fmt.Errorf("No valid username/password pair for basic auth") - } - } - - urlArg := args["url"] - if !urlArg.Present { - return nil, fmt.Errorf("requires a git url") - } - - url, ok := urlArg.Val.(string) - if !ok { - return nil, fmt.Errorf("No valid git url") - } - - privateKeyArg := args["private_key"] - if !privateKeyArg.Present { - return nil, fmt.Errorf("requires a ssh private key for authentication") - } - - pk, ok := privateKeyArg.Val.(string) - if !ok { - return nil, fmt.Errorf("No valid git ssh private key") - } - - passphrase := "" - if passArg, ok := args["passphrase"]; ok && passArg.Present { - if pass, ok := passArg.Val.(string); ok { - passphrase = pass - } - } - - user, _, _, _, err := git.UrlComponents(url) - if err != nil { - return nil, err - } - return git.SSHAuth(user, pk, passphrase) -} diff --git a/pkg/bundle/tests/tests.go b/pkg/bundle/tests/tests.go deleted file mode 100644 index 9e677f204..000000000 --- a/pkg/bundle/tests/tests.go +++ /dev/null @@ -1,15 +0,0 @@ -package tests - -import ( - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -func Perform(ctx *manifest.Context, test *api.RecipeTest) error { - utils.Highlight("\nRunning %s test [%s] ==>\n", test.Name, test.Type) - if test.Type == "GIT" { - return testGit(ctx, test) - } - return nil -} diff --git a/pkg/bundle/tests/utils.go b/pkg/bundle/tests/utils.go deleted file mode 100644 index d21942746..000000000 --- a/pkg/bundle/tests/utils.go +++ /dev/null @@ -1,20 +0,0 @@ -package tests - -import ( - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/manifest" -) - -type ContextValue struct { - Val interface{} - Present bool -} - -func collectArguments(args []*api.TestArgument, ctx *manifest.Context) map[string]*ContextValue { - res := make(map[string]*ContextValue) - for _, arg := range args { - val, ok := ctx.Configuration[arg.Repo][arg.Key] - res[arg.Name] = &ContextValue{val, ok} - } - return res -} diff --git a/pkg/client/build.go b/pkg/client/build.go deleted file mode 100644 index fc294a1ef..000000000 --- a/pkg/client/build.go +++ /dev/null @@ -1,168 +0,0 @@ -package client - -import ( - "fmt" - "path/filepath" - "strings" - - "github.com/pluralsh/plural-cli/pkg/application" - "github.com/pluralsh/plural-cli/pkg/common" - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/kubernetes" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/scaffold" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/polly/algorithms" - "github.com/pluralsh/polly/containers" - "github.com/urfave/cli" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/wkspace" -) - -const Bootstrap = "bootstrap" - -func GetSortedInstallations(client Plural, repo string) ([]*api.Installation, error) { - client.InitPluralClient() - installations, err := client.GetInstallations() - if err != nil { - return installations, api.GetErrorResponse(err, "GetInstallations") - } - - if len(installations) == 0 { - return installations, fmt.Errorf("no installations present, run `plural bundle install ` to install your first app") - } - - sorted, err := wkspace.UntilRepo(client.Client, repo, installations) - if err != nil { - sorted = installations // we don't know all the dependencies yet - } - - return sorted, nil -} - -func (p *Plural) Deploy(c *cli.Context) error { - p.InitPluralClient() - verbose := c.Bool("verbose") - repoRoot, err := git.Root() - if err != nil { - return err - } - - // project, err := manifest.FetchProject() - // if err != nil { - // return err - // } - - var sorted []string - switch { - case len(c.StringSlice("from")) > 0: - sorted, err = wkspace.AllDependencies(c.StringSlice("from")) - case c.Bool("all"): - sorted, err = p.allSortedRepos() - default: - sorted, err = getSortedNames(true) - } - if err != nil { - return err - } - - fmt.Printf("Deploying applications [%s] in topological order\n\n", strings.Join(sorted, ", ")) - - ignoreConsole := c.Bool("ignore-console") - for _, repo := range sorted { - if ignoreConsole && (repo == "console" || repo == Bootstrap) { - continue - } - - execution, err := executor.GetExecution(pathing.SanitizeFilepath(filepath.Join(repoRoot, repo)), "deploy") - if err != nil { - return err - } - - if err := execution.Execute("deploying", verbose); err != nil { - utils.Note("It looks like your deployment failed. This may be a transient issue and rerunning the `plural deploy` command may resolve it. Or, feel free to reach out to us on discord (https://discord.gg/bEBAMXV64s) or Intercom and we should be able to help you out\n") - return err - } - - fmt.Printf("\n") - - installation, err := p.GetInstallation(repo) - if err != nil { - return api.GetErrorResponse(err, "GetInstallation") - } - if installation == nil { - return fmt.Errorf("The %s was unistalled, run `plural bundle install %s ` ", repo, repo) - } - - if err := p.Client.MarkSynced(repo); err != nil { - utils.Warn("failed to mark %s as synced, this is not a critical error but might drift state in our api, you can run `plural repos synced %s` to mark it manually", repo, repo) - } - - if c.Bool("silence") { - continue - } - - if man, err := fetchManifest(repo); err == nil && man.Wait { - if kubeConf, err := kubernetes.KubeConfig(); err == nil { - fmt.Printf("Waiting for %s to become ready...\n", repo) - if err := application.SilentWait(kubeConf, repo); err != nil { - return err - } - fmt.Println("") - } - } - - if err := scaffold.Notes(installation); err != nil { - return err - } - } - - utils.Highlight("\n==> Commit and push your changes to record your deployment\n\n") - - if commit := common.CommitMsg(c); commit != "" { - utils.Highlight("Pushing upstream...\n") - return git.Sync(repoRoot, commit, c.Bool("force")) - } - - return nil -} - -func (p *Plural) allSortedRepos() ([]string, error) { - p.InitPluralClient() - insts, err := p.GetInstallations() - if err != nil { - return nil, api.GetErrorResponse(err, "GetInstallations") - } - - return wkspace.SortAndFilter(insts) -} -func getSortedNames(filter bool) ([]string, error) { - diffed, err := wkspace.DiffedRepos() - if err != nil { - return nil, err - } - - sorted, err := wkspace.TopSortNames(diffed) - if err != nil { - return nil, err - } - - if filter { - repos := containers.ToSet(diffed) - return algorithms.Filter(sorted, repos.Has), nil - } - - return sorted, nil -} - -func fetchManifest(repo string) (*manifest.Manifest, error) { - p, err := manifest.ManifestPath(repo) - if err != nil { - return nil, err - } - - return manifest.Read(p) -} diff --git a/pkg/client/plural.go b/pkg/client/plural.go index 14c9fd8cf..b65dd7218 100644 --- a/pkg/client/plural.go +++ b/pkg/client/plural.go @@ -18,8 +18,6 @@ import ( "github.com/pluralsh/plural-cli/pkg/utils" ) -const DemoingErrorMsg = "You're currently running a gcp demo cluster. Spin that down by deleting you shell at https://app.plural.sh/shell before beginning a local installation" - type Plural struct { api.Client ConsoleClient console.ConsoleClient @@ -119,7 +117,7 @@ func (p *Plural) HandleInit(c *cli.Context) error { return api.GetErrorResponse(err, "Me") } if me.Demoing { - return fmt.Errorf(DemoingErrorMsg) + return fmt.Errorf("You're currently running a gcp demo cluster. Spin that down by deleting you shell at https://app.plural.sh/shell before beginning a local installation") } if _, err := os.Stat(manifest.ProjectManifestPath()); err == nil && git && !common.Affirm("This repository's workspace.yaml already exists. Would you like to use it?", "PLURAL_INIT_AFFIRM_CURRENT_REPO") { diff --git a/pkg/common/app.go b/pkg/common/app.go index 127dbb67f..9e76c239b 100644 --- a/pkg/common/app.go +++ b/pkg/common/app.go @@ -2,70 +2,12 @@ package common import ( "fmt" - "os/exec" - "strings" "github.com/pluralsh/plural-cli/pkg/up" - tm "github.com/buger/goterm" "github.com/urfave/cli" - - "github.com/pluralsh/plural-cli/pkg/application" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/kubernetes" - "github.com/pluralsh/plural-cli/pkg/utils" - - "sigs.k8s.io/application/api/v1beta1" ) -func HandleWatch(c *cli.Context) error { - repo := c.Args().Get(0) - kubeConf, err := kubernetes.KubeConfig() - if err != nil { - return err - } - kube, err := kubernetes.Kubernetes() - if err != nil { - return err - } - - timeout := func() error { return nil } - return application.Waiter(kubeConf, repo, func(app *v1beta1.Application) (bool, error) { - tm.MoveCursor(1, 1) - application.Print(kube.GetClient(), app) - application.Flush() - return false, nil - }, timeout) -} - -func HandleWait(c *cli.Context) error { - repo := c.Args().Get(0) - kubeConf, err := kubernetes.KubeConfig() - if err != nil { - return err - } - - return application.Wait(kubeConf, repo) -} - -func HandleInfo(c *cli.Context) error { - repo := c.Args().Get(0) - conf := config.Read() - - _, err := exec.LookPath("k9s") - if err != nil { - utils.LogError().Println(err) - if strings.Contains(err.Error(), exec.ErrNotFound.Error()) { - utils.Error("Application k9s not installed.\n") - fmt.Println("Please install it first from here: https://k9scli.io/topics/install/ and try again") - return nil - } - } - - cmd := exec.Command("k9s", "-n", conf.Namespace(repo)) - return cmd.Run() -} - func HandleDown(_ *cli.Context) error { if !Affirm(AffirmDown, "PLURAL_DOWN_AFFIRM_DESTROY") { return fmt.Errorf("cancelled destroy") diff --git a/pkg/common/apply.go b/pkg/common/apply.go deleted file mode 100644 index 82362e5a8..000000000 --- a/pkg/common/apply.go +++ /dev/null @@ -1,33 +0,0 @@ -package common - -import ( - "os" - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/pluralfile" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/urfave/cli" -) - -func Apply(c *cli.Context) error { - path, _ := os.Getwd() - var file = pathing.SanitizeFilepath(filepath.Join(path, "Pluralfile")) - if c.IsSet("file") { - file, _ = filepath.Abs(c.String("file")) - } - - if err := os.Chdir(filepath.Dir(file)); err != nil { - return err - } - - plrl, err := pluralfile.Parse(file) - if err != nil { - return err - } - - lock, err := plrl.Lock(file) - if err != nil { - return err - } - return plrl.Execute(file, lock) -} diff --git a/pkg/common/common.go b/pkg/common/common.go index e147e3e22..730b65d50 100644 --- a/pkg/common/common.go +++ b/pkg/common/common.go @@ -13,13 +13,10 @@ import ( "github.com/pluralsh/plural-cli/pkg/config" "github.com/pluralsh/plural-cli/pkg/crypto" "github.com/pluralsh/plural-cli/pkg/provider" - "github.com/pluralsh/plural-cli/pkg/server" "github.com/pluralsh/plural-cli/pkg/utils" "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/plural-cli/pkg/wkspace" "github.com/urfave/cli" - "github.com/pluralsh/plural-cli/pkg/scaffold" "github.com/pluralsh/plural-cli/pkg/utils/git" ) @@ -27,56 +24,6 @@ var ( loggedIn = false ) -func AppReadme(name string, dryRun bool) error { - repoRoot, err := git.Root() - if err != nil { - return err - } - - dir := filepath.Join(repoRoot, name, "helm", name) - return scaffold.Readme(dir, dryRun) -} - -func DoBuild(client api.Client, installation *api.Installation, force bool) error { - repoName := installation.Repository.Name - fmt.Printf("Building workspace for %s\n", repoName) - - if !wkspace.Configured(repoName) { - fmt.Printf("You have not locally configured %s but have it registered as an installation in our api, ", repoName) - fmt.Printf("either delete it with `plural apps uninstall %s` or install it locally via a bundle in `plural bundle list %s`\n", repoName, repoName) - return nil - } - - workspace, err := wkspace.New(client, installation) - if err != nil { - return err - } - - vsn, ok := workspace.RequiredCliVsn() - if ok && !VersionValid(vsn) { - return fmt.Errorf("Your cli version is not sufficient to complete this build, please update to at least %s", vsn) - } - - if err := workspace.Prepare(); err != nil { - return err - } - - build, err := scaffold.Scaffolds(workspace) - if err != nil { - return err - } - - err = build.Execute(workspace, force) - if err == nil { - utils.Success("Finished building %s\n\n", repoName) - } - - workspace.PrintLinks() - - AppReadme(repoName, false) // nolint:errcheck - return err -} - func HandleLogin(c *cli.Context) error { if loggedIn { return nil @@ -204,10 +151,6 @@ func HandleClone(c *cli.Context) error { return nil } -func DownloadReadme(c *cli.Context) error { - return wkspace.DownloadReadme() -} - func HandleImport(c *cli.Context) error { dir, err := filepath.Abs(c.Args().Get(0)) if err != nil { @@ -240,10 +183,6 @@ func HandleImport(c *cli.Context) error { return nil } -func HandleServe(c *cli.Context) error { - return server.Run() -} - func GetIdAndName(input string) (id, name *string) { if strings.HasPrefix(input, "@") { h := strings.Trim(input, "@") diff --git a/pkg/common/constants.go b/pkg/common/constants.go index 072cce165..dd964ee8e 100644 --- a/pkg/common/constants.go +++ b/pkg/common/constants.go @@ -10,7 +10,5 @@ const ( ) var ( - ErrNoGit = fmt.Errorf("Could not compare current workspace to origin. Do you have an `origin` remote configured, or does your repo not have an initial commit?") - ErrRemoteDiff = fmt.Errorf("Your local workspace is not in sync with remote. Either `git pull` recent changes or `git push` any missed changes. Also confirm you can authenticate to the origin remote, which you can see with `git remote -v`") - ErrUnlock = fmt.Errorf("could not decrypt your repo, this is likely due to using the wrong key at ~/.plural/key. The original key might be in a backup or on your previous machine.") + ErrUnlock = fmt.Errorf("could not decrypt your repo, this is likely due to using the wrong key at ~/.plural/key. The original key might be in a backup or on your previous machine.") ) diff --git a/pkg/common/diff.go b/pkg/common/diff.go deleted file mode 100644 index e611c8706..000000000 --- a/pkg/common/diff.go +++ /dev/null @@ -1,75 +0,0 @@ -package common - -import ( - "fmt" - "path/filepath" - "strings" - - "github.com/pluralsh/plural-cli/pkg/diff" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/plural-cli/pkg/wkspace" - "github.com/pluralsh/polly/algorithms" - "github.com/pluralsh/polly/containers" - "github.com/urfave/cli" -) - -func Diffed(_ *cli.Context) error { - diffed, err := wkspace.DiffedRepos() - if err != nil { - return err - } - - for _, d := range diffed { - fmt.Println(d) - } - - return nil -} - -func getSortedNames(filter bool) ([]string, error) { - diffed, err := wkspace.DiffedRepos() - if err != nil { - return nil, err - } - - sorted, err := wkspace.TopSortNames(diffed) - if err != nil { - return nil, err - } - - if filter { - repos := containers.ToSet(diffed) - return algorithms.Filter(sorted, repos.Has), nil - } - - return sorted, nil -} - -func HandleDiff(_ *cli.Context) error { - repoRoot, err := git.Root() - if err != nil { - return err - } - - sorted, err := getSortedNames(true) - if err != nil { - return err - } - - fmt.Printf("Diffing applications [%s] in topological order\n\n", strings.Join(sorted, ", ")) - - for _, repo := range sorted { - d, err := diff.GetDiff(pathing.SanitizeFilepath(filepath.Join(repoRoot, repo)), "diff") - if err != nil { - return err - } - - if err := d.Execute(); err != nil { - return err - } - - fmt.Printf("\n") - } - return nil -} diff --git a/pkg/common/git.go b/pkg/common/git.go index 8321612bb..8f2b7a3e2 100644 --- a/pkg/common/git.go +++ b/pkg/common/git.go @@ -1,27 +1,10 @@ package common import ( - "fmt" "os" "os/exec" - - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/urfave/cli" ) -func HandleRepair(c *cli.Context) error { - repoRoot, err := git.Root() - if err != nil { - return err - } - - if err := git.Repair(repoRoot); err != nil { - fmt.Println(err) - } - - return nil -} - func GitConfig(name, val string) error { cmd := GitCommand("config", name, val) return cmd.Run() diff --git a/pkg/common/helm.go b/pkg/common/helm.go deleted file mode 100644 index 459fd8d74..000000000 --- a/pkg/common/helm.go +++ /dev/null @@ -1,52 +0,0 @@ -package common - -import ( - "fmt" - "os" - - "github.com/pluralsh/plural-cli/pkg/helm" - scftmpl "github.com/pluralsh/plural-cli/pkg/scaffold/template" - "github.com/urfave/cli" - "sigs.k8s.io/yaml" -) - -func HandleHelmTemplate(c *cli.Context) error { - path := c.String("values") - f, err := scftmpl.TmpValuesFile(path) - if err != nil { - return err - } - - defer func(name string) { - _ = os.Remove(name) - }(f.Name()) - - name := "default" - namespace := "default" - actionConfig, err := helm.GetActionConfig(namespace) - if err != nil { - return err - } - values, err := getValues(f.Name()) - if err != nil { - return err - } - res, err := helm.Template(actionConfig, name, namespace, c.Args().Get(0), false, false, values) - if err != nil { - return err - } - fmt.Println(string(res)) - return nil -} - -func getValues(path string) (map[string]interface{}, error) { - values := make(map[string]interface{}) - valsContent, err := os.ReadFile(path) - if err != nil { - return nil, err - } - if err := yaml.Unmarshal(valsContent, &values); err != nil { - return nil, err - } - return values, nil -} diff --git a/pkg/common/scaffold.go b/pkg/common/scaffold.go deleted file mode 100644 index 1d09c4de0..000000000 --- a/pkg/common/scaffold.go +++ /dev/null @@ -1,12 +0,0 @@ -package common - -import ( - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/scaffold" - "github.com/urfave/cli" -) - -func HandleScaffold(c *cli.Context) error { - client := api.NewClient() - return scaffold.ApplicationScaffold(client) -} diff --git a/pkg/common/template.go b/pkg/common/template.go deleted file mode 100644 index 7952e374c..000000000 --- a/pkg/common/template.go +++ /dev/null @@ -1,105 +0,0 @@ -package common - -import ( - "bytes" - "io" - "os" - - "github.com/pluralsh/gqlclient" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/config" - lua "github.com/pluralsh/plural-cli/pkg/scaffold/template" - "github.com/pluralsh/plural-cli/pkg/template" - "github.com/urfave/cli" - "gopkg.in/yaml.v2" -) - -func TestTemplate(c *cli.Context) error { - conf := config.Read() - client := api.NewClient() - installations, _ := client.GetInstallations() - repoName := c.Args().Get(0) - templateTypeFlag := c.String("templateType") - templateType := gqlclient.TemplateTypeGotemplate - testTemplate, err := io.ReadAll(os.Stdin) - if err != nil { - return err - } - if templateTypeFlag != "" { - templateType = gqlclient.TemplateType(templateTypeFlag) - } - - for _, installation := range installations { - if installation.Repository.Name != repoName { - continue - } - - var output []byte - vals := genDefaultValues(conf, installation) - - if templateType == gqlclient.TemplateTypeLua { - output, err = luaTmpValues(string(testTemplate), vals) - if err != nil { - return err - } - } else { - output, err = goTmpValues(string(testTemplate), vals) - if err != nil { - return err - } - } - if _, err := os.Stdout.Write(output); err != nil { - return err - } - } - - return nil -} - -func genDefaultValues(conf config.Config, installation *api.Installation) map[string]interface{} { - return map[string]interface{}{ - "Values": installation.Context, - "License": installation.LicenseKey, - "Region": "region", - "Project": "example", - "Cluster": "cluster", - "Provider": "provider", - "Config": conf, - "Context": map[string]interface{}{}, - } -} - -func goTmpValues(valuesTmpl string, defaultValues map[string]interface{}) ([]byte, error) { - var buf bytes.Buffer - buf.Grow(5 * 1024) - tmpl, err := template.MakeTemplate(valuesTmpl) - if err != nil { - return nil, err - } - if err = tmpl.Execute(&buf, defaultValues); err != nil { - return nil, err - } - - return buf.Bytes(), nil -} - -func luaTmpValues(valuesTmpl string, defaultValues map[string]interface{}) ([]byte, error) { - output, err := lua.ExecuteLua(defaultValues, valuesTmpl) - if err != nil { - return nil, err - } - - return yaml.Marshal(output) -} - -type GrafanaDashboard struct { - Title string - Panels []struct { - Title string - Targets []struct { - Expr string - LegendFormat string - } - } -} diff --git a/pkg/common/validation.go b/pkg/common/validation.go index a72cb88e4..6a4c362df 100644 --- a/pkg/common/validation.go +++ b/pkg/common/validation.go @@ -5,26 +5,16 @@ import ( "os" "github.com/pluralsh/plural-cli/pkg/provider" - "github.com/pluralsh/plural-cli/pkg/utils/errors" "github.com/pluralsh/polly/algorithms" "github.com/AlecAivazis/survey/v2" "github.com/pluralsh/plural-cli/pkg/api" "github.com/pluralsh/plural-cli/pkg/config" "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/manifest" "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" "github.com/urfave/cli" ) -func init() { - BootstrapMode = false -} - -var BootstrapMode bool - func RequireArgs(fn func(*cli.Context) error, args []string) func(*cli.Context) error { return func(c *cli.Context) error { nargs := c.NArg() @@ -40,26 +30,6 @@ func RequireArgs(fn func(*cli.Context) error, args []string) func(*cli.Context) } } -func Rooted(fn func(*cli.Context) error) func(*cli.Context) error { - return func(c *cli.Context) error { - if err := RepoRoot(); err != nil { - return err - } - - return fn(c) - } -} - -func Owned(fn func(*cli.Context) error) func(*cli.Context) error { - return func(c *cli.Context) error { - if err := ValidateOwner(); err != nil { - return err - } - - return fn(c) - } -} - func Affirmed(fn func(*cli.Context) error, msg string, envKey string) func(*cli.Context) error { return func(c *cli.Context) error { if !Affirm(msg, envKey) { @@ -70,12 +40,6 @@ func Affirmed(fn func(*cli.Context) error, msg string, envKey string) func(*cli. } } -func Highlighted(fn func(*cli.Context) error) func(*cli.Context) error { - return func(c *cli.Context) error { - return utils.HighlightError(fn(c)) - } -} - func Tracked(fn func(*cli.Context) error, event string) func(*cli.Context) error { return func(c *cli.Context) error { event := api.UserEventAttributes{Data: "", Event: event, Status: "OK"} @@ -100,27 +64,6 @@ func Tracked(fn func(*cli.Context) error, event string) func(*cli.Context) error } } -func ValidateOwner() error { - path := manifest.ProjectManifestPath() - project, err := manifest.ReadProject(path) - if err != nil { - return fmt.Errorf("Your workspace hasn't been configured. Try running `plural init`.") - } - - if owner := project.Owner; owner != nil { - conf := config.Read() - if owner.Endpoint != conf.Endpoint { - return fmt.Errorf( - "The owner of this project is actually %s; plural environment = %s", - owner.Email, - config.PluralUrl(owner.Endpoint), - ) - } - } - - return nil -} - func Confirm(msg string, envKey string) bool { res := true conf, ok := utils.GetEnvBoolValue(envKey) @@ -147,26 +90,6 @@ func Affirm(msg string, envKey string) bool { return res } -func RepoRoot() error { - dir, err := os.Getwd() - if err != nil { - return err - } - // santiize the filepath, respecting the OS - dir = pathing.SanitizeFilepath(dir) - - root, err := git.Root() - if err != nil { - return err - } - - if root != dir { - return fmt.Errorf("You must run this command at the root of your git repository") - } - - return nil -} - func LatestVersion(fn func(*cli.Context) error) func(*cli.Context) error { return func(c *cli.Context) error { if os.Getenv("PLURAL_CONSOLE") != "1" && os.Getenv("CLOUD_SHELL") != "1" && algorithms.Coinflip(1, 5) { @@ -185,9 +108,6 @@ func InitKubeconfig(fn func(*cli.Context) error) func(*cli.Context) error { if err != nil { return err } - if BootstrapMode { - prov = &provider.KINDProvider{Clust: "bootstrap"} - } if err := prov.KubeConfig(); err != nil { return err } @@ -200,17 +120,6 @@ func InitKubeconfig(fn func(*cli.Context) error) func(*cli.Context) error { } } -func RequireKind(fn func(*cli.Context) error) func(*cli.Context) error { - return func(c *cli.Context) error { - exists, _ := utils.Which("kind") - if !exists { - return fmt.Errorf("The kind CLI is not installed") - } - - return fn(c) - } -} - func CommitMsg(c *cli.Context) string { if commit := c.String("commit"); commit != "" { return commit @@ -226,20 +135,3 @@ func CommitMsg(c *cli.Context) string { return "" } - -func UpstreamSynced(fn func(*cli.Context) error) func(*cli.Context) error { - return func(c *cli.Context) error { - changed, sha, err := git.HasUpstreamChanges() - if err != nil { - utils.LogError().Println(err) - return errors.ErrorWrap(ErrNoGit, "Failed to get git information") - } - - force := c.Bool("force") - if !changed && !force { - return errors.ErrorWrap(ErrRemoteDiff, fmt.Sprintf("Expecting HEAD at commit=%s", sha)) - } - - return fn(c) - } -} diff --git a/pkg/common/version.go b/pkg/common/version.go index 100e23967..015802add 100644 --- a/pkg/common/version.go +++ b/pkg/common/version.go @@ -6,8 +6,6 @@ import ( "runtime" "strings" - "golang.org/x/mod/semver" - "github.com/pluralsh/plural-cli/pkg/utils" "github.com/urfave/cli" ) @@ -22,14 +20,6 @@ var ( Date = "" ) -func VersionValid(vsn string) bool { - current := Version - if !strings.HasPrefix(current, "v") { - current = fmt.Sprintf("v%s", current) - } - return semver.Compare(vsn, current) <= 0 -} - func checkRecency() error { if os.Getenv("CLOUD_SHELL") == "1" || os.Getenv("PLURAL_CONSOLE") == "1" { return nil diff --git a/pkg/console/agent.go b/pkg/console/agent.go index 2fd137371..62e4eccd3 100644 --- a/pkg/console/agent.go +++ b/pkg/console/agent.go @@ -45,9 +45,7 @@ func IsAlreadyAgentInstalled(k8sClient *kubernetes.Clientset) (bool, error) { func InstallAgent(url, token, namespace, version string, values map[string]interface{}) error { settings := cli.New() vals := map[string]interface{}{ - "secrets": map[string]string{ - "deployToken": token, - }, + "secrets": map[string]string{"deployToken": token}, "consoleUrl": url, } vals = algorithms.Merge(vals, values) diff --git a/pkg/console/describe.go b/pkg/console/describe.go index ba9b99391..3dbe49c62 100644 --- a/pkg/console/describe.go +++ b/pkg/console/describe.go @@ -15,22 +15,20 @@ import ( // Each level has 2 spaces for PrefixWriter const ( - LEVEL_0 = iota - LEVEL_1 - LEVEL_2 - LEVEL_3 - LEVEL_4 + Level0 = iota + Level1 + Level2 ) func DescribeServiceContext(sc *consoleclient.ServiceContextFragment) (string, error) { return tabbedString(func(out io.Writer) error { w := NewPrefixWriter(out) - w.Write(LEVEL_0, "Id:\t%s\n", sc.ID) - w.Write(LEVEL_0, "Configuration:\n \tName\tContext\n") - w.Write(LEVEL_1, "\t----\t------\n") + w.Write(Level0, "Id:\t%s\n", sc.ID) + w.Write(Level0, "Configuration:\n \tName\tContext\n") + w.Write(Level1, "\t----\t------\n") for name, value := range sc.Configuration { configurationJson, _ := json.Marshal(value) - w.Write(LEVEL_1, "\t%v \t%v\n", name, string(configurationJson)) + w.Write(Level1, "\t%v \t%v\n", name, string(configurationJson)) } return nil }) @@ -39,43 +37,43 @@ func DescribeServiceContext(sc *consoleclient.ServiceContextFragment) (string, e func DescribeCluster(cluster *consoleclient.ClusterFragment) (string, error) { return tabbedString(func(out io.Writer) error { w := NewPrefixWriter(out) - w.Write(LEVEL_0, "Id:\t%s\n", cluster.ID) - w.Write(LEVEL_0, "Name:\t%s\n", cluster.Name) + w.Write(Level0, "Id:\t%s\n", cluster.ID) + w.Write(Level0, "Name:\t%s\n", cluster.Name) if cluster.Handle != nil { - w.Write(LEVEL_0, "Handle:\t@%s\n", *cluster.Handle) + w.Write(Level0, "Handle:\t@%s\n", *cluster.Handle) } if cluster.Version != nil { - w.Write(LEVEL_0, "Version:\t%s\n", *cluster.Version) + w.Write(Level0, "Version:\t%s\n", *cluster.Version) } if cluster.CurrentVersion != nil { - w.Write(LEVEL_0, "Current Version:\t%s\n", *cluster.CurrentVersion) + w.Write(Level0, "Current Version:\t%s\n", *cluster.CurrentVersion) } if cluster.PingedAt != nil { - w.Write(LEVEL_0, "Pinged At:\t%s\n", *cluster.PingedAt) + w.Write(Level0, "Pinged At:\t%s\n", *cluster.PingedAt) } if cluster.Self != nil { - w.Write(LEVEL_0, "Self:\t%v\n", *cluster.Self) + w.Write(Level0, "Self:\t%v\n", *cluster.Self) } if cluster.Provider != nil { - w.Write(LEVEL_0, "Provider:\n") - w.Write(LEVEL_1, "Id:\t%s\n", cluster.Provider.ID) - w.Write(LEVEL_1, "Name:\t%s\n", cluster.Provider.Name) - w.Write(LEVEL_1, "Namespace:\t%s\n", cluster.Provider.Namespace) - w.Write(LEVEL_1, "Editable:\t%v\n", *cluster.Provider.Editable) - w.Write(LEVEL_1, "Cloud:\t%v\n", cluster.Provider.Cloud) + w.Write(Level0, "Provider:\n") + w.Write(Level1, "Id:\t%s\n", cluster.Provider.ID) + w.Write(Level1, "Name:\t%s\n", cluster.Provider.Name) + w.Write(Level1, "Namespace:\t%s\n", cluster.Provider.Namespace) + w.Write(Level1, "Editable:\t%v\n", *cluster.Provider.Editable) + w.Write(Level1, "Cloud:\t%v\n", cluster.Provider.Cloud) if cluster.Provider.Repository != nil { - w.Write(LEVEL_1, "Git:\n") - w.Write(LEVEL_2, "Id:\t%s\n", cluster.Provider.Repository.ID) - w.Write(LEVEL_2, "Url:\t%s\n", cluster.Provider.Repository.URL) + w.Write(Level1, "Git:\n") + w.Write(Level2, "Id:\t%s\n", cluster.Provider.Repository.ID) + w.Write(Level2, "Url:\t%s\n", cluster.Provider.Repository.URL) if cluster.Provider.Repository.AuthMethod != nil { - w.Write(LEVEL_2, "Auth Method:\t%v\n", *cluster.Provider.Repository.AuthMethod) + w.Write(Level2, "Auth Method:\t%v\n", *cluster.Provider.Repository.AuthMethod) } if cluster.Provider.Repository.Health != nil { - w.Write(LEVEL_2, "Health:\t%v\n", *cluster.Provider.Repository.Health) + w.Write(Level2, "Health:\t%v\n", *cluster.Provider.Repository.Health) } if cluster.Provider.Repository.Error != nil { - w.Write(LEVEL_2, "Error:\t%s\n", *cluster.Provider.Repository.Error) + w.Write(Level2, "Error:\t%s\n", *cluster.Provider.Repository.Error) } } } @@ -87,17 +85,17 @@ func DescribeCluster(cluster *consoleclient.ClusterFragment) (string, error) { func DescribeService(service *consoleclient.ServiceDeploymentExtended) (string, error) { return tabbedString(func(out io.Writer) error { w := NewPrefixWriter(out) - w.Write(LEVEL_0, "Id:\t%s\n", service.ID) - w.Write(LEVEL_0, "Name:\t%s\n", service.Name) - w.Write(LEVEL_0, "Namespace:\t%s\n", service.Namespace) - w.Write(LEVEL_0, "Version:\t%s\n", service.Version) + w.Write(Level0, "Id:\t%s\n", service.ID) + w.Write(Level0, "Name:\t%s\n", service.Name) + w.Write(Level0, "Namespace:\t%s\n", service.Namespace) + w.Write(Level0, "Version:\t%s\n", service.Version) if service.Tarball != nil { - w.Write(LEVEL_0, "Tarball:\t%s\n", *service.Tarball) + w.Write(Level0, "Tarball:\t%s\n", *service.Tarball) } else { - w.Write(LEVEL_0, "Tarball:\t%s\n", "") + w.Write(Level0, "Tarball:\t%s\n", "") } if service.DeletedAt != nil { - w.Write(LEVEL_0, "Status:\tTerminating (lasts %s)\n", *service.DeletedAt) + w.Write(Level0, "Status:\tTerminating (lasts %s)\n", *service.DeletedAt) } dryRun := false if service.DryRun != nil { @@ -107,33 +105,33 @@ func DescribeService(service *consoleclient.ServiceDeploymentExtended) (string, if service.Templated != nil { templated = *service.Templated } - w.Write(LEVEL_0, "Dry run:\t%v\n", dryRun) - w.Write(LEVEL_0, "Templated:\t%v\n", templated) - w.Write(LEVEL_0, "Git:\t\n") - w.Write(LEVEL_1, "Ref:\t%s\n", service.Git.Ref) - w.Write(LEVEL_1, "Folder:\t%s\n", service.Git.Folder) + w.Write(Level0, "Dry run:\t%v\n", dryRun) + w.Write(Level0, "Templated:\t%v\n", templated) + w.Write(Level0, "Git:\t\n") + w.Write(Level1, "Ref:\t%s\n", service.Git.Ref) + w.Write(Level1, "Folder:\t%s\n", service.Git.Folder) if service.Revision != nil { - w.Write(LEVEL_1, "Revision:\t\n") - w.Write(LEVEL_2, "Id:\t%s\n", service.Revision.ID) + w.Write(Level1, "Revision:\t\n") + w.Write(Level2, "Id:\t%s\n", service.Revision.ID) } if service.Kustomize != nil { - w.Write(LEVEL_0, "Kustomize:\t\n") - w.Write(LEVEL_1, "Path:\t%s\n", service.Kustomize.Path) + w.Write(Level0, "Kustomize:\t\n") + w.Write(Level1, "Path:\t%s\n", service.Kustomize.Path) } if service.Repository != nil { - w.Write(LEVEL_0, "Repository:\t\n") - w.Write(LEVEL_1, "Id:\t%s\n", service.Repository.ID) - w.Write(LEVEL_1, "Url:\t%s\n", service.Repository.URL) + w.Write(Level0, "Repository:\t\n") + w.Write(Level1, "Id:\t%s\n", service.Repository.ID) + w.Write(Level1, "Url:\t%s\n", service.Repository.URL) if service.Repository.AuthMethod != nil { - w.Write(LEVEL_1, "AuthMethod:\t%s\n", *service.Repository.AuthMethod) + w.Write(Level1, "AuthMethod:\t%s\n", *service.Repository.AuthMethod) } - w.Write(LEVEL_1, "Status:\t\n") + w.Write(Level1, "Status:\t\n") if service.Repository.Health != nil { - w.Write(LEVEL_2, "Health:\t%s\n", *service.Repository.Health) + w.Write(Level2, "Health:\t%s\n", *service.Repository.Health) } if service.Repository.Error != nil { - w.Write(LEVEL_2, "Error:\t%s\n", *service.Repository.Error) + w.Write(Level2, "Error:\t%s\n", *service.Repository.Error) } configMap := map[string]string{} for _, conf := range service.Configuration { @@ -141,8 +139,8 @@ func DescribeService(service *consoleclient.ServiceDeploymentExtended) (string, } printConfigMultiline(w, "Configuration", configMap) if len(service.Components) > 0 { - w.Write(LEVEL_0, "Components:\n Id\tName\tNamespace\tKind\tVersion\tState\tSynced\n") - w.Write(LEVEL_1, "----\t------\t------\t------\t------\t------\t------\n") + w.Write(Level0, "Components:\n Id\tName\tNamespace\tKind\tVersion\tState\tSynced\n") + w.Write(Level1, "----\t------\t------\t------\t------\t------\t------\n") for _, c := range service.Components { namespace := "-" version := "-" @@ -157,20 +155,20 @@ func DescribeService(service *consoleclient.ServiceDeploymentExtended) (string, state = string(*c.State) } - w.Write(LEVEL_1, "%v \t%v\t%v\t%v\t%v\t%v\t%v\n", c.ID, c.Name, namespace, c.Kind, version, state, c.Synced) + w.Write(Level1, "%v \t%v\t%v\t%v\t%v\t%v\t%v\n", c.ID, c.Name, namespace, c.Kind, version, state, c.Synced) } } else { - w.Write(LEVEL_0, "Components: %s\n", "") + w.Write(Level0, "Components: %s\n", "") } if len(service.Errors) > 0 { - w.Write(LEVEL_0, "Errors:\n Source\tMessage\n") - w.Write(LEVEL_1, "----\t------\n") + w.Write(Level0, "Errors:\n Source\tMessage\n") + w.Write(Level1, "----\t------\n") for _, c := range service.Errors { - w.Write(LEVEL_1, "%v \t%v\n", c.Source, c.Message) + w.Write(Level1, "%v \t%v\n", c.Source, c.Message) } } else { - w.Write(LEVEL_0, "Errors: %s\n", "") + w.Write(Level0, "Errors: %s\n", "") } } @@ -181,7 +179,7 @@ func DescribeService(service *consoleclient.ServiceDeploymentExtended) (string, var maxConfigLen = 140 func printConfigMultiline(w PrefixWriter, title string, configurations map[string]string) { - w.Write(LEVEL_0, "%s:\t", title) + w.Write(Level0, "%s:\t", title) // to print labels in the sorted order keys := make([]string, 0, len(configurations)) @@ -196,16 +194,16 @@ func printConfigMultiline(w PrefixWriter, title string, configurations map[strin indent := "\t" for i, key := range keys { if i != 0 { - w.Write(LEVEL_0, indent) + w.Write(Level0, indent) } value := strings.TrimSuffix(configurations[key], "\n") if (len(value)+len(key)+2) > maxConfigLen || strings.Contains(value, "\n") { - w.Write(LEVEL_0, "%s:\n", key) + w.Write(Level0, "%s:\n", key) for _, s := range strings.Split(value, "\n") { - w.Write(LEVEL_0, "%s %s\n", indent, shorten(s, maxConfigLen-2)) + w.Write(Level0, "%s %s\n", indent, shorten(s, maxConfigLen-2)) } } else { - w.Write(LEVEL_0, "%s: %s\n", key, value) + w.Write(Level0, "%s: %s\n", key, value) } } } diff --git a/pkg/crypto/hmac.go b/pkg/crypto/hmac.go deleted file mode 100644 index ea979c231..000000000 --- a/pkg/crypto/hmac.go +++ /dev/null @@ -1,13 +0,0 @@ -package crypto - -import ( - "crypto/hmac" - "crypto/sha1" - "encoding/hex" -) - -func Hmac(data string, secret string) string { - h := hmac.New(sha1.New, []byte(secret)) - h.Write([]byte(data)) - return hex.EncodeToString(h.Sum(nil)) -} diff --git a/pkg/diff/builder.go b/pkg/diff/builder.go deleted file mode 100644 index fcf28c713..000000000 --- a/pkg/diff/builder.go +++ /dev/null @@ -1,139 +0,0 @@ -package diff - -import ( - "fmt" - "os" - "path/filepath" - "strings" - - "github.com/hashicorp/hcl" - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/polly/algorithms" - "github.com/pluralsh/polly/containers" - "github.com/rodaine/hclencoder" -) - -type Diff struct { - Metadata Metadata `hcl:"metadata"` - Steps []*executor.Step `hcl:"step"` -} - -type Metadata struct { - Path string `hcl:"path"` - Name string `hcl:"name"` -} - -func GetDiff(path, name string) (*Diff, error) { - fullpath := pathing.SanitizeFilepath(filepath.Join(path, name+".hcl")) - contents, err := os.ReadFile(fullpath) - diff := Diff{} - if err != nil { - return &diff, nil - } - - err = hcl.Decode(&diff, string(contents)) - return &diff, err -} - -func (e *Diff) Execute() error { - root, err := git.Root() - if err != nil { - return err - } - - path := pathing.SanitizeFilepath(filepath.Join(root, "diffs")) - if err := os.MkdirAll(path, os.ModePerm); err != nil { - return err - } - - if err := utils.EmptyDirectory(path); err != nil { - return err - } - - ignore, err := e.IgnoreFile(root) - if err != nil { - return err - } - - fmt.Printf("deploying %s, hold on to your butts\n", e.Metadata.Path) - for i, step := range e.Steps { - newSha, err := step.Execute(root, ignore) - if err != nil { - if err := e.Flush(root); err != nil { - return err - } - - return err - } - - e.Steps[i].Sha = newSha - } - - return e.Flush(root) -} - -func (e *Diff) IgnoreFile(root string) ([]string, error) { - ignorePath := pathing.SanitizeFilepath(filepath.Join(root, e.Metadata.Path, ".pluralignore")) - contents, err := os.ReadFile(ignorePath) - if err != nil { - return []string{}, err - } - - ignore := strings.Split(string(contents), "\n") - result := []string{} - for _, prefix := range ignore { - ignoreStr := strings.TrimSpace(prefix) - if ignoreStr != "" { - result = append(result, ignoreStr) - } - } - - return result, nil -} - -func DefaultDiff(path string, prev *Diff) (e *Diff) { - byName := map[string]*executor.Step{} - steps := defaultDiff(path) - - for _, step := range prev.Steps { - byName[step.Name] = step - } - - for _, step := range steps { - prev, ok := byName[step.Name] - if ok { - step.Sha = prev.Sha - } - byName[step.Name] = step - } - - // set up a topsort between the two orders of operations - graph := containers.NewGraph[string]() - for i := 0; i < len(steps)-1; i++ { - graph.AddEdge(steps[i].Name, steps[i+1].Name) - } - - for i := 0; i < len(prev.Steps)-1; i++ { - graph.AddEdge(prev.Steps[i].Name, prev.Steps[i+1].Name) - } - - sorted, _ := algorithms.TopsortGraph(graph) - finalizedSteps := algorithms.Map(sorted, func(s string) *executor.Step { return byName[s] }) - return &Diff{ - Metadata: Metadata{Path: path, Name: "diff"}, - Steps: finalizedSteps, - } -} - -func (d *Diff) Flush(root string) error { - io, err := hclencoder.Encode(&d) - if err != nil { - return err - } - - path, _ := filepath.Abs(pathing.SanitizeFilepath(filepath.Join(root, d.Metadata.Path, d.Metadata.Name+".hcl"))) - return os.WriteFile(path, io, 0644) -} diff --git a/pkg/diff/default.go b/pkg/diff/default.go deleted file mode 100644 index d420e98ac..000000000 --- a/pkg/diff/default.go +++ /dev/null @@ -1,37 +0,0 @@ -package diff - -import ( - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" -) - -func defaultDiff(path string) []*executor.Step { - return []*executor.Step{ - { - Name: "terraform-init", - Wkdir: pathing.SanitizeFilepath(filepath.Join(path, "terraform")), - Target: pathing.SanitizeFilepath(filepath.Join(path, "terraform")), - Command: "terraform", - Args: []string{"init", "-upgrade"}, - Sha: "", - }, - { - Name: "terraform", - Wkdir: pathing.SanitizeFilepath(filepath.Join(path, "terraform")), - Target: pathing.SanitizeFilepath(filepath.Join(path, "terraform")), - Command: "plural", - Args: []string{"wkspace", "terraform-diff", path}, - Sha: "", - }, - { - Name: "helm", - Wkdir: pathing.SanitizeFilepath(filepath.Join(path, "helm")), - Target: pathing.SanitizeFilepath(filepath.Join(path, "helm")), - Command: "plural", - Args: []string{"wkspace", "helm-diff", path}, - Sha: "", - }, - } -} diff --git a/pkg/diff/tee.go b/pkg/diff/tee.go deleted file mode 100644 index bca48628a..000000000 --- a/pkg/diff/tee.go +++ /dev/null @@ -1,15 +0,0 @@ -package diff - -import ( - "io" - "os" -) - -type TeeWriter struct { - File io.Writer -} - -func (tee *TeeWriter) Write(p []byte) (int, error) { - os.Stdout.Write(p) - return tee.File.Write(p) -} diff --git a/pkg/executor/default.go b/pkg/executor/default.go deleted file mode 100644 index 957525e7f..000000000 --- a/pkg/executor/default.go +++ /dev/null @@ -1,65 +0,0 @@ -package executor - -import ( - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/utils/pathing" -) - -func defaultSteps(path string) []*Step { - app := pathing.SanitizeFilepath(filepath.Base(path)) - sanitizedPath := pathing.SanitizeFilepath(path) - - return []*Step{ - { - Name: "terraform-init", - Wkdir: pathing.SanitizeFilepath(filepath.Join(path, "terraform")), - Target: pathing.SanitizeFilepath(filepath.Join(path, "terraform")), - Command: "terraform", - Args: []string{"init", "-upgrade"}, - Sha: "", - }, - { - Name: "terraform-apply", - Wkdir: pathing.SanitizeFilepath(filepath.Join(path, "terraform")), - Target: pathing.SanitizeFilepath(filepath.Join(path, "terraform")), - Command: "terraform", - Args: []string{"apply", "-auto-approve"}, - Sha: "", - Retries: 2, - }, - { - Name: "terraform-output", - Wkdir: app, - Target: pathing.SanitizeFilepath(filepath.Join(path, "terraform")), - Command: "plural", - Args: []string{"output", "terraform", app}, - Sha: "", - }, - { - Name: "kube-init", - Wkdir: sanitizedPath, - Target: path, - Command: "plural", - Args: []string{"wkspace", "kube-init"}, - Sha: "", - }, - { - Name: "crds", - Wkdir: sanitizedPath, - Target: pathing.SanitizeFilepath(filepath.Join(path, "crds")), - Command: "plural", - Args: []string{"wkspace", "crds", sanitizedPath}, - Sha: "", - }, - { - Name: "bounce", - Wkdir: sanitizedPath, - Target: pathing.SanitizeFilepath(filepath.Join(path, "helm")), - Command: "plural", - Args: []string{"wkspace", "helm", sanitizedPath}, - Sha: "", - Retries: 2, - }, - } -} diff --git a/pkg/executor/execution.go b/pkg/executor/execution.go deleted file mode 100644 index cb9896c61..000000000 --- a/pkg/executor/execution.go +++ /dev/null @@ -1,147 +0,0 @@ -package executor - -import ( - "fmt" - "os" - "path/filepath" - "strings" - - "github.com/hashicorp/hcl" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/polly/algorithms" - "github.com/pluralsh/polly/containers" - "github.com/rodaine/hclencoder" -) - -type Execution struct { - Metadata Metadata `hcl:"metadata"` - Steps []*Step `hcl:"step"` -} - -type Metadata struct { - Path string `hcl:"path"` - Name string `hcl:"name"` -} - -const ( - pluralIgnore = `terraform/.terraform` -) - -func Ignore(root string) error { - ignoreFile := pathing.SanitizeFilepath(filepath.Join(root, ".pluralignore")) - return os.WriteFile(ignoreFile, []byte(pluralIgnore), 0644) -} - -func GetExecution(path, name string) (*Execution, error) { - fullpath := pathing.SanitizeFilepath(filepath.Join(path, name+".hcl")) - contents, err := os.ReadFile(fullpath) - ex := Execution{} - if err != nil { - return &ex, err - } - - err = hcl.Decode(&ex, string(contents)) - if err != nil { - return &ex, err - } - - return &ex, nil -} - -func (e *Execution) Execute(actionName string, verbose bool) error { - root, err := git.Root() - if err != nil { - return err - } - - ignore, err := e.IgnoreFile(root) - if err != nil { - return err - } - - fmt.Printf("%s %s. This may take a while, so hold on to your butts\n", actionName, e.Metadata.Path) - for i, step := range e.Steps { - prev := step.Verbose - if verbose { - step.Verbose = true - } - - newSha, err := step.Execute(root, ignore) - step.Verbose = prev - if err != nil { - if err := e.Flush(root); err != nil { - return err - } - - return err - } - - e.Steps[i].Sha = newSha - } - - return e.Flush(root) -} - -func (e *Execution) IgnoreFile(root string) ([]string, error) { - ignorePath := pathing.SanitizeFilepath(filepath.Join(root, e.Metadata.Path, ".pluralignore")) - contents, err := os.ReadFile(ignorePath) - if err != nil { - return []string{}, err - } - - ignore := strings.Split(string(contents), "\n") - result := []string{} - for _, prefix := range ignore { - ignoreStr := strings.TrimSpace(prefix) - if ignoreStr != "" { - result = append(result, ignoreStr) - } - } - - return result, nil -} - -func DefaultExecution(path string, prev *Execution) (e *Execution) { - byName := make(map[string]*Step) - steps := defaultSteps(path) - - for _, step := range prev.Steps { - byName[step.Name] = step - } - - for _, step := range steps { - prev, ok := byName[step.Name] - if ok { - step.Sha = prev.Sha - } - byName[step.Name] = step - } - - // set up a topsort between the two orders of operations - graph := containers.NewGraph[string]() - for i := 0; i < len(steps)-1; i++ { - graph.AddEdge(steps[i].Name, steps[i+1].Name) - } - - for i := 0; i < len(prev.Steps)-1; i++ { - graph.AddEdge(prev.Steps[i].Name, prev.Steps[i+1].Name) - } - - sorted, _ := algorithms.TopsortGraph(graph) - finalizedSteps := algorithms.Map(sorted, func(s string) *Step { return byName[s] }) - return &Execution{ - Metadata: Metadata{Path: path, Name: "deploy"}, - Steps: finalizedSteps, - } -} - -func (e *Execution) Flush(root string) error { - io, err := hclencoder.Encode(&e) - if err != nil { - return err - } - - path, _ := filepath.Abs(pathing.SanitizeFilepath(filepath.Join(root, e.Metadata.Path, e.Metadata.Name+".hcl"))) - return os.WriteFile(path, io, 0644) -} diff --git a/pkg/executor/step.go b/pkg/executor/step.go index 74a67a129..86a42fe0b 100644 --- a/pkg/executor/step.go +++ b/pkg/executor/step.go @@ -1,18 +1,5 @@ package executor -import ( - "fmt" - "io" - "os" - "os/exec" - "path/filepath" - "strings" - - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "golang.org/x/mod/sumdb/dirhash" -) - type WrappedError struct { inner error Output string @@ -21,129 +8,3 @@ type WrappedError struct { func (we *WrappedError) Error() string { return we.inner.Error() } - -type Step struct { - Name string `hcl:",key"` - Wkdir string `hcl:"wkdir"` - Target string `hcl:"target"` - Command string `hcl:"command"` - Args []string `hcl:"args"` - Sha string `hcl:"sha"` - Retries int `hcl:"retries"` - Verbose bool `hcl:"verbose"` -} - -func SuppressedCommand(command string, args ...string) (cmd *exec.Cmd, output *OutputWriter) { - cmd = exec.Command(command, args...) - output = &OutputWriter{delegate: os.Stdout} - cmd.Stdout = output - cmd.Stderr = output - if utils.EnableDebug { - cmd.Env = os.Environ() - cmd.Env = append(cmd.Env, fmt.Sprintf("PLURAL_DEBUG_ENABLE=%t", true)) - } - return -} - -func RunCommand(cmd *exec.Cmd, output *OutputWriter) (err error) { - err = cmd.Run() - if err != nil { - out := output.Format() - fmt.Printf("\nOutput:\n\n%s\n", out) - err = &WrappedError{inner: err, Output: out} - return - } - - utils.Success("\u2713\n") - return -} - -func (step Step) Run(root string) error { - dir := pathing.SanitizeFilepath(filepath.Join(root, step.Wkdir)) - if step.Verbose && os.Getenv("ENABLE_COLOR") == "" { - cmd := exec.Command(step.Command, step.Args...) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stdout - cmd.Dir = dir - fmt.Println() - return cmd.Run() - } - - cmd, output := SuppressedCommand(step.Command, step.Args...) - cmd.Dir = dir - return RunCommand(cmd, output) -} - -func (step Step) Execute(root string, ignore []string) (string, error) { - current, err := MkHash(pathing.SanitizeFilepath(filepath.Join(root, step.Target)), ignore) - if err != nil { - return step.Sha, err - } - - utils.Highlight("%s %s ~> ", step.Command, strings.Join(step.Args, " ")) - if current == step.Sha { - utils.Success("no changes to be made for %s\n", step.Name) - return current, nil - } - - err = step.Run(root) - if err != nil { - if step.Retries > 0 { - step.Retries -= 1 - fmt.Printf("retrying command, number of retries remaining: %d\n", step.Retries) - return step.Execute(root, ignore) - } - - return step.Sha, err - } - - return current, err -} - -func MkHash(root string, ignore []string) (string, error) { - fi, err := os.Stat(root) - if err != nil { - return "", err - } - - switch mode := fi.Mode(); { - case mode.IsDir(): - return filteredHash(root, ignore) - default: - return utils.Sha256(root) - } -} - -func filteredHash(root string, ignore []string) (string, error) { - prefix := filepath.Base(root) - files, err := dirhash.DirFiles(root, prefix) - if err != nil { - return "", err - } - - keep := []string{} - for _, file := range files { - trimmed := strings.TrimPrefix(file, root) - if ignorePath(trimmed, ignore) { - continue - } - - keep = append(keep, file) - } - - osOpen := func(name string) (io.ReadCloser, error) { - return os.Open(pathing.SanitizeFilepath(filepath.Join(root, strings.TrimPrefix(name, prefix)))) - } - - return dirhash.Hash1(keep, osOpen) -} - -func ignorePath(file string, ignore []string) bool { - for _, pref := range ignore { - if strings.Contains(file, pref) { - return true - } - } - - return false -} diff --git a/pkg/exp/env.go b/pkg/exp/env.go deleted file mode 100644 index 1a3904780..000000000 --- a/pkg/exp/env.go +++ /dev/null @@ -1,15 +0,0 @@ -package exp - -import ( - "os" -) - -type EnvProvider struct{} - -func (this *EnvProvider) IsFeatureEnabled(feature FeatureFlag) bool { - return os.Getenv(string(feature)) == "true" -} - -func newEnvProvider() Provider { - return &EnvProvider{} -} diff --git a/pkg/exp/features.go b/pkg/exp/features.go deleted file mode 100644 index 8615b858a..000000000 --- a/pkg/exp/features.go +++ /dev/null @@ -1,22 +0,0 @@ -package exp - -const ( - EXP_PLURAL_CAPI = FeatureFlag("EXP_PLURAL_CAPI") -) - -var ( - providers = []Provider{ - newEnvProvider(), - newPostHogProvider(), - } -) - -func IsFeatureEnabled(feature FeatureFlag) bool { - for _, p := range providers { - if p.IsFeatureEnabled(feature) { - return true - } - } - - return false -} diff --git a/pkg/exp/posthog.go b/pkg/exp/posthog.go index 0a09880c2..5786c7743 100644 --- a/pkg/exp/posthog.go +++ b/pkg/exp/posthog.go @@ -44,7 +44,3 @@ func (this *PostHogProvider) init() Provider { return this } - -func newPostHogProvider() Provider { - return (&PostHogProvider{}).init() -} diff --git a/pkg/format/csv.go b/pkg/format/csv.go deleted file mode 100644 index c87161be1..000000000 --- a/pkg/format/csv.go +++ /dev/null @@ -1,33 +0,0 @@ -package format - -import ( - "encoding/csv" - "os" -) - -type csvFormatter struct { - writer *csv.Writer -} - -func NewCsvFormatter() *csvFormatter { - return &csvFormatter{writer: csv.NewWriter(os.Stdout)} -} - -func (csv *csvFormatter) Write(line []string) error { - return csv.writer.Write(line) -} - -func (csv *csvFormatter) Dump(lines [][]string) error { - return csv.writer.WriteAll(lines) -} - -func (csv *csvFormatter) Flush() error { - csv.writer.Flush() - return nil -} - -func (csv *csvFormatter) Header(line []string) { - if err := csv.writer.Write(line); err != nil { - return - } -} diff --git a/pkg/format/formatter.go b/pkg/format/formatter.go deleted file mode 100644 index 6240ac807..000000000 --- a/pkg/format/formatter.go +++ /dev/null @@ -1,24 +0,0 @@ -package format - -type Formatter interface { - Header(line []string) - Write(line []string) error - Dump(lines [][]string) error - Flush() error -} - -type FormatType string - -const ( - CsvFormat FormatType = "csv" - TableFormat FormatType = "table" -) - -func New(format FormatType) Formatter { - switch format { - case CsvFormat: - return NewCsvFormatter() - default: - return NewTableFormatter() - } -} diff --git a/pkg/format/table.go b/pkg/format/table.go deleted file mode 100644 index 4eafc626f..000000000 --- a/pkg/format/table.go +++ /dev/null @@ -1,37 +0,0 @@ -package format - -import ( - "os" - - "github.com/olekukonko/tablewriter" -) - -type tableFormatter struct { - writer *tablewriter.Table -} - -func NewTableFormatter() *tableFormatter { - return &tableFormatter{writer: tablewriter.NewWriter(os.Stdout)} -} - -func (f *tableFormatter) Write(line []string) error { - f.writer.Append(line) - return nil -} - -func (f *tableFormatter) Dump(lines [][]string) error { - for _, line := range lines { - f.writer.Append(line) - } - - return nil -} - -func (f *tableFormatter) Flush() error { - f.writer.Render() - return nil -} - -func (f *tableFormatter) Header(line []string) { - f.writer.SetHeader(line) -} diff --git a/pkg/helm/downloader.go b/pkg/helm/downloader.go deleted file mode 100644 index 241e2945b..000000000 --- a/pkg/helm/downloader.go +++ /dev/null @@ -1,42 +0,0 @@ -package helm - -import ( - "os" - - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/registry" -) - -var providers = []getter.Provider{ChartMuseumProvider} - -func UpdateDependencies(path string) error { - out := os.Stdout - client := action.NewDependency() - settings := cli.New() - - registryClient, err := registry.NewClient( - registry.ClientOptDebug(settings.Debug), - registry.ClientOptWriter(out), - registry.ClientOptCredentialsFile(settings.RegistryConfig), - ) - if err != nil { - return err - } - - gtrs := getter.All(settings) - man := &downloader.Manager{ - Out: out, - ChartPath: path, - Keyring: client.Keyring, - SkipUpdate: false, - Getters: append(providers, gtrs...), - RegistryClient: registryClient, - RepositoryConfig: settings.RepositoryConfig, - RepositoryCache: settings.RepositoryCache, - Debug: settings.Debug, - } - return man.Update() -} diff --git a/pkg/helm/helm.go b/pkg/helm/helm.go index 807fcc72b..5c950d39b 100644 --- a/pkg/helm/helm.go +++ b/pkg/helm/helm.go @@ -1,7 +1,6 @@ package helm import ( - "bytes" "context" "fmt" "log" @@ -14,7 +13,6 @@ import ( "github.com/pluralsh/plural-cli/pkg/utils" "gopkg.in/yaml.v2" "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chart/loader" "helm.sh/helm/v3/pkg/cli" "helm.sh/helm/v3/pkg/getter" "helm.sh/helm/v3/pkg/helmpath" @@ -48,49 +46,6 @@ func GetActionConfig(namespace string) (*action.Configuration, error) { return actionConfig, nil } -func Template(conf *action.Configuration, name, namespace, path string, isUpgrade, validate bool, values map[string]interface{}) ([]byte, error) { - // load chart from the path - chart, err := loader.Load(path) - if err != nil { - return nil, err - } - - client := action.NewInstall(conf) - client.DryRun = true - client.ReleaseName = name - client.Replace = true // Skip the name check - client.ClientOnly = !validate - client.IsUpgrade = isUpgrade - client.Namespace = namespace - client.IncludeCRDs = false - rel, err := client.Run(chart, values) - if err != nil { - return nil, err - } - var manifests bytes.Buffer - fmt.Fprintln(&manifests, strings.TrimSpace(rel.Manifest)) - return manifests.Bytes(), nil -} - -func Lint(path, namespace string, values map[string]interface{}) error { - client := action.NewLint() - client.Namespace = namespace - result := client.Run([]string{path}, values) - // All the Errors that are generated by a chart - // that failed a lint will be included in the - // results.Messages so we only need to print - // the Errors if there are no Messages. - if len(result.Messages) == 0 { - for _, err := range result.Errors { - fmt.Printf("Error %s\n", err) - } - } - if len(result.Errors) != 0 { - return fmt.Errorf("failed") - } - return nil -} - func AddRepo(repoName, repoUrl string) error { repoFile := getEnvVar("HELM_REPOSITORY_CONFIG", helmpath.ConfigPath("repositories.yaml")) err := os.MkdirAll(filepath.Dir(repoFile), os.ModePerm) diff --git a/pkg/helm/push.go b/pkg/helm/push.go deleted file mode 100644 index 2c2bbc5f7..000000000 --- a/pkg/helm/push.go +++ /dev/null @@ -1,67 +0,0 @@ -package helm - -import ( - "fmt" - "io" - "os" - "strings" - - cm "github.com/chartmuseum/helm-push/pkg/chartmuseum" - "github.com/chartmuseum/helm-push/pkg/helm" - "github.com/pluralsh/plural-cli/pkg/config" -) - -func Push(chartName, repoUrl string) error { - repo, err := helm.TempRepoFromURL(repoUrl) - if err != nil { - return err - } - - chart, err := helm.GetChartByName(chartName) - if err != nil { - return err - } - - conf := config.Read() - - url := strings.Replace(repo.Config.URL, "cm://", "https://", 1) - client, err := cm.NewClient( - cm.URL(url), - cm.AccessToken(conf.Token), - cm.ContextPath("/cm"), - ) - if err != nil { - return err - } - - tmp, err := os.MkdirTemp("", "helm-push-") - if err != nil { - return err - } - defer func(path string) { - _ = os.RemoveAll(path) - }(tmp) - - chartPackagePath, err := helm.CreateChartPackage(chart, tmp) - if err != nil { - return err - } - - resp, err := client.UploadChartPackage(chartPackagePath, false) - if err != nil { - return err - } - defer func(Body io.ReadCloser) { - _ = Body.Close() - }(resp.Body) - - if resp.StatusCode != 201 && resp.StatusCode != 202 { - b, err := io.ReadAll(resp.Body) - if err != nil { - return err - } - return fmt.Errorf("Failed to upload to plural, code %d error %s\n", resp.StatusCode, string(b)) - } - fmt.Println("Done.") - return nil -} diff --git a/pkg/kubernetes/exec/exec.go b/pkg/kubernetes/exec/exec.go deleted file mode 100644 index d0b5de625..000000000 --- a/pkg/kubernetes/exec/exec.go +++ /dev/null @@ -1,91 +0,0 @@ -package exec - -import ( - "context" - "fmt" - "io" - "net/url" - "os" - - "github.com/pluralsh/plural-cli/pkg/kubernetes" - "github.com/pluralsh/plural-cli/pkg/kubernetes/utils" - corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/meta" - "k8s.io/client-go/tools/remotecommand" - "k8s.io/kubectl/pkg/cmd/util/podcmd" - "k8s.io/kubectl/pkg/scheme" - "k8s.io/kubectl/pkg/util/term" -) - -func Exec(namespace, resource string, commands []string) error { - obj, pod, err := utils.GetPodWithObject(namespace, resource) - if err != nil { - return err - } - if meta.IsListType(obj) { - return fmt.Errorf("cannot exec into multiple objects at a time") - } - if pod.Status.Phase == corev1.PodSucceeded || pod.Status.Phase == corev1.PodFailed { - return fmt.Errorf("cannot exec into a container in a completed pod; current phase is %s", pod.Status.Phase) - } - - container, err := podcmd.FindOrDefaultContainerByName(pod, "", true, os.Stderr) - if err != nil { - return err - } - - t := setupTTY() - sizeQueue := t.MonitorSize(t.GetSize()) - - kube, err := kubernetes.Kubernetes() - if err != nil { - return err - } - - fn := func() error { - req := kube.GetRestClient().Post(). - Resource("pods"). - Name(pod.Name). - Namespace(pod.Namespace). - SubResource("exec") - req.VersionedParams(&corev1.PodExecOptions{ - Container: container.Name, - Command: commands, - Stdin: true, - Stdout: true, - TTY: t.Raw, - }, scheme.ParameterCodec) - - return execute("POST", req.URL(), os.Stdin, os.Stdout, os.Stderr, t.Raw, sizeQueue) - } - - return t.Safe(fn) -} - -func execute(method string, url *url.URL, stdin io.Reader, stdout, stderr io.Writer, tty bool, terminalSizeQueue remotecommand.TerminalSizeQueue) error { - config, err := kubernetes.KubeConfig() - if err != nil { - return err - } - exec, err := remotecommand.NewSPDYExecutor(config, method, url) - if err != nil { - return err - } - return exec.StreamWithContext(context.Background(), remotecommand.StreamOptions{ - Stdin: stdin, - Stdout: stdout, - Stderr: stderr, - Tty: tty, - TerminalSizeQueue: terminalSizeQueue, - }) -} - -func setupTTY() term.TTY { - t := term.TTY{ - Out: os.Stdout, - In: os.Stdin, - Raw: true, - } - - return t -} diff --git a/pkg/kubernetes/kube.go b/pkg/kubernetes/kube.go index 4bde24b04..d7d1dd5e1 100644 --- a/pkg/kubernetes/kube.go +++ b/pkg/kubernetes/kube.go @@ -10,11 +10,9 @@ import ( "path/filepath" "strings" - "github.com/pluralsh/plural-cli/pkg/application" "github.com/pluralsh/plural-cli/pkg/utils" "github.com/pluralsh/plural-cli/pkg/utils/pathing" platformv1alpha1 "github.com/pluralsh/plural-operator/apis/platform/v1alpha1" - vpnv1alpha1 "github.com/pluralsh/plural-operator/apis/vpn/v1alpha1" pluralv1alpha1 "github.com/pluralsh/plural-operator/generated/client/clientset/versioned" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/meta" @@ -59,12 +57,6 @@ type Kube interface { LogTail(namespace string, name string) (*platformv1alpha1.LogTail, error) ProxyList(namespace string) (*platformv1alpha1.ProxyList, error) Proxy(namespace string, name string) (*platformv1alpha1.Proxy, error) - WireguardServerList(namespace string) (*vpnv1alpha1.WireguardServerList, error) - WireguardServer(namespace string, name string) (*vpnv1alpha1.WireguardServer, error) - WireguardPeerList(namespace string) (*vpnv1alpha1.WireguardPeerList, error) - WireguardPeer(namespace string, name string) (*vpnv1alpha1.WireguardPeer, error) - WireguardPeerCreate(namespace string, wireguardPeer *vpnv1alpha1.WireguardPeer) (*vpnv1alpha1.WireguardPeer, error) - WireguardPeerDelete(namespace string, name string) error Apply(path string, force bool) error CreateNamespace(namespace string, managedByPlural bool) error GetClient() *kubernetes.Clientset @@ -74,13 +66,12 @@ type Kube interface { var decUnstructured = yaml.NewDecodingSerializer(unstructured.UnstructuredJSONScheme) type kube struct { - Kube *kubernetes.Clientset - Plural *pluralv1alpha1.Clientset - Application *application.ApplicationV1Beta1Client - Dynamic dynamic.Interface - Discovery discovery.DiscoveryInterface - Mapper *restmapper.DeferredDiscoveryRESTMapper - RestClient *restclient.RESTClient + Kube *kubernetes.Clientset + Plural *pluralv1alpha1.Clientset + Dynamic dynamic.Interface + Discovery discovery.DiscoveryInterface + Mapper *restmapper.DeferredDiscoveryRESTMapper + RestClient *restclient.RESTClient } func (k *kube) GetRestClient() *restclient.RESTClient { @@ -124,22 +115,6 @@ func Kubernetes() (Kube, error) { return buildKubeFromConfig(conf) } -func KubernetesWithContext(context string) (Kube, error) { - homedir, err := os.UserHomeDir() - if err != nil { - return nil, err - } - - kubeconfigPath := pathing.SanitizeFilepath(filepath.Join(homedir, ".kube", "config")) - - conf, err := buildConfigFromFlags(context, kubeconfigPath) - if err != nil { - return nil, err - } - - return buildKubeFromConfig(conf) -} - func buildConfigFromFlags(context, kubeconfigPath string) (*rest.Config, error) { return clientcmd.NewNonInteractiveDeferredLoadingClientConfig( &clientcmd.ClientConfigLoadingRules{ExplicitPath: kubeconfigPath}, @@ -157,11 +132,6 @@ func buildKubeFromConfig(config *rest.Config) (Kube, error) { return nil, err } - app, err := application.NewForConfig(config) - if err != nil { - return nil, err - } - dyn, err := dynamic.NewForConfig(config) if err != nil { return nil, err @@ -181,7 +151,7 @@ func buildKubeFromConfig(config *rest.Config) (Kube, error) { return nil, err } - return &kube{Kube: clientset, Plural: plural, Application: app, Dynamic: dyn, Discovery: dc, Mapper: mapper, RestClient: restClient}, nil + return &kube{Kube: clientset, Plural: plural, Dynamic: dyn, Discovery: dc, Mapper: mapper, RestClient: restClient}, nil } func (k *kube) Secret(namespace string, name string) (*v1.Secret, error) { @@ -245,36 +215,6 @@ func (k *kube) Proxy(namespace string, name string) (*platformv1alpha1.Proxy, er return k.Plural.PlatformV1alpha1().Proxies(namespace).Get(ctx, name, metav1.GetOptions{}) } -func (k *kube) WireguardServerList(namespace string) (*vpnv1alpha1.WireguardServerList, error) { - ctx := context.Background() - return k.Plural.VpnV1alpha1().WireguardServers(namespace).List(ctx, metav1.ListOptions{}) -} - -func (k *kube) WireguardServer(namespace string, name string) (*vpnv1alpha1.WireguardServer, error) { - ctx := context.Background() - return k.Plural.VpnV1alpha1().WireguardServers(namespace).Get(ctx, name, metav1.GetOptions{}) -} - -func (k *kube) WireguardPeerList(namespace string) (*vpnv1alpha1.WireguardPeerList, error) { - ctx := context.Background() - return k.Plural.VpnV1alpha1().WireguardPeers(namespace).List(ctx, metav1.ListOptions{}) -} - -func (k *kube) WireguardPeer(namespace string, name string) (*vpnv1alpha1.WireguardPeer, error) { - ctx := context.Background() - return k.Plural.VpnV1alpha1().WireguardPeers(namespace).Get(ctx, name, metav1.GetOptions{}) -} - -func (k *kube) WireguardPeerCreate(namespace string, wireguardPeer *vpnv1alpha1.WireguardPeer) (*vpnv1alpha1.WireguardPeer, error) { - ctx := context.Background() - return k.Plural.VpnV1alpha1().WireguardPeers(namespace).Create(ctx, wireguardPeer, metav1.CreateOptions{}) -} - -func (k *kube) WireguardPeerDelete(namespace string, name string) error { - ctx := context.Background() - return k.Plural.VpnV1alpha1().WireguardPeers(namespace).Delete(ctx, name, metav1.DeleteOptions{}) -} - func (k *kube) GetClient() *kubernetes.Clientset { return k.Kube } diff --git a/pkg/kubernetes/logs/logs.go b/pkg/kubernetes/logs/logs.go deleted file mode 100644 index 388db01d8..000000000 --- a/pkg/kubernetes/logs/logs.go +++ /dev/null @@ -1,119 +0,0 @@ -package logs - -import ( - "bufio" - "context" - "fmt" - "io" - "os" - "sync" - "time" - - corev1 "k8s.io/api/core/v1" - "k8s.io/cli-runtime/pkg/genericclioptions" - "k8s.io/client-go/rest" - cmdutil "k8s.io/kubectl/pkg/cmd/util" - "k8s.io/kubectl/pkg/scheme" -) - -const ( - defaultPodLogsTimeout = 20 * time.Second -) - -func Logs(namespace, resource string, tailLines int64) error { - matchVersionKubeConfigFlags := cmdutil.NewMatchVersionFlags(genericclioptions.NewConfigFlags(true).WithDeprecatedPasswordFlag().WithDiscoveryBurst(300).WithDiscoveryQPS(50.0)) - f := cmdutil.NewFactory(matchVersionKubeConfigFlags) - - builder := f.NewBuilder(). - WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). - NamespaceParam(namespace).DefaultNamespace(). - SingleResourceType() - builder.ResourceNames("pods", resource) - infos, err := builder.Do().Infos() - if err != nil { - return err - } - if len(infos) != 1 { - return fmt.Errorf("expected a resource") - } - object := infos[0].Object - - options, err := logOptions(tailLines) - if err != nil { - return err - } - requests, err := logsForObject(object, options, defaultPodLogsTimeout, false) - if err != nil { - return err - } - if len(requests) > 1 { - return parallelConsumeRequest(requests) - } - - return sequentialConsumeRequest(requests) -} - -func parallelConsumeRequest(requests map[corev1.ObjectReference]rest.ResponseWrapper) error { - reader, writer := io.Pipe() - wg := &sync.WaitGroup{} - wg.Add(len(requests)) - for objRef, request := range requests { - go func(objRef corev1.ObjectReference, request rest.ResponseWrapper) { - defer wg.Done() - if err := defaultConsumeRequest(request, os.Stdout); err != nil { - fmt.Fprintf(writer, "error: %v\n", err) - } - - }(objRef, request) - } - - go func() { - wg.Wait() - writer.Close() - }() - - _, err := io.Copy(os.Stdout, reader) - return err -} - -func sequentialConsumeRequest(requests map[corev1.ObjectReference]rest.ResponseWrapper) error { - for _, request := range requests { - if err := defaultConsumeRequest(request, os.Stdout); err != nil { - return err - } - } - - return nil -} - -func logOptions(tailLines int64) (*corev1.PodLogOptions, error) { - logOptions := &corev1.PodLogOptions{ - Follow: true, - TailLines: &tailLines, - } - - return logOptions, nil -} - -func defaultConsumeRequest(request rest.ResponseWrapper, out io.Writer) error { - readCloser, err := request.Stream(context.TODO()) - if err != nil { - return err - } - defer readCloser.Close() - - r := bufio.NewReader(readCloser) - for { - bytes, err := r.ReadBytes('\n') - if _, err := out.Write(bytes); err != nil { - return err - } - - if err != nil { - if err != io.EOF { - return err - } - return nil - } - } -} diff --git a/pkg/kubernetes/logs/logsforobject.go b/pkg/kubernetes/logs/logsforobject.go deleted file mode 100644 index 3575af04e..000000000 --- a/pkg/kubernetes/logs/logsforobject.go +++ /dev/null @@ -1,158 +0,0 @@ -package logs - -import ( - "errors" - "fmt" - "os" - "sort" - "time" - - "github.com/pluralsh/plural-cli/pkg/kubernetes" - corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/runtime" - corev1client "k8s.io/client-go/kubernetes/typed/core/v1" - "k8s.io/client-go/rest" - "k8s.io/client-go/tools/reference" - "k8s.io/kubectl/pkg/cmd/util/podcmd" - "k8s.io/kubectl/pkg/polymorphichelpers" - "k8s.io/kubectl/pkg/scheme" - "k8s.io/kubectl/pkg/util/podutils" -) - -func logsForObject(object, options runtime.Object, timeout time.Duration, allContainers bool) (map[corev1.ObjectReference]rest.ResponseWrapper, error) { - config, err := kubernetes.KubeConfig() - if err != nil { - return nil, err - } - - clientset, err := corev1client.NewForConfig(config) - if err != nil { - return nil, err - } - return logsForObjectWithClient(clientset, object, options, timeout, allContainers) -} - -// this is split for easy test-ability -func logsForObjectWithClient(clientset corev1client.CoreV1Interface, object, options runtime.Object, timeout time.Duration, allContainers bool) (map[corev1.ObjectReference]rest.ResponseWrapper, error) { - opts, ok := options.(*corev1.PodLogOptions) - if !ok { - return nil, errors.New("provided options object is not a PodLogOptions") - } - - switch t := object.(type) { - case *corev1.PodList: - ret := make(map[corev1.ObjectReference]rest.ResponseWrapper) - for i := range t.Items { - currRet, err := logsForObjectWithClient(clientset, &t.Items[i], options, timeout, allContainers) - if err != nil { - return nil, err - } - for k, v := range currRet { - ret[k] = v - } - } - return ret, nil - - case *corev1.Pod: - return logsForPod(t, opts, clientset, timeout, allContainers) - } - - namespace, selector, err := polymorphichelpers.SelectorsForObject(object) - if err != nil { - return nil, fmt.Errorf("cannot get the logs from %T: %w", object, err) - } - - sortBy := func(pods []*corev1.Pod) sort.Interface { return podutils.ByLogging(pods) } - pod, numPods, err := polymorphichelpers.GetFirstPod(clientset, namespace, selector.String(), timeout, sortBy) - if err != nil { - return nil, err - } - if numPods > 1 { - fmt.Fprintf(os.Stderr, "Found %v pods, using pod/%v\n", numPods, pod.Name) - } - - return logsForObjectWithClient(clientset, pod, options, timeout, allContainers) -} - -func logsForPod(t *corev1.Pod, opts *corev1.PodLogOptions, clientset corev1client.CoreV1Interface, timeout time.Duration, allContainers bool) (map[corev1.ObjectReference]rest.ResponseWrapper, error) { - // if allContainers is true, then we're going to locate all containers and then iterate through them. At that point, "allContainers" is false - if !allContainers { - currOpts := new(corev1.PodLogOptions) - if opts != nil { - opts.DeepCopyInto(currOpts) - } - // in case the "kubectl.kubernetes.io/default-container" annotation is present, we preset the opts.Containers to default to selected - // container. This gives users ability to preselect the most interesting container in pod. - if annotations := t.GetAnnotations(); annotations != nil && currOpts.Container == "" { - var defaultContainer string - if len(annotations[podcmd.DefaultContainerAnnotationName]) > 0 { - defaultContainer = annotations[podcmd.DefaultContainerAnnotationName] - } - if len(defaultContainer) > 0 { - if exists, _ := podcmd.FindContainerByName(t, defaultContainer); exists == nil { - fmt.Fprintf(os.Stderr, "Default container name %q not found in pod %s\n", defaultContainer, t.Name) - } else { - currOpts.Container = defaultContainer - } - } - } - - if currOpts.Container == "" { - // Default to the first container name(aligning behavior with `kubectl exec'). - currOpts.Container = t.Spec.Containers[0].Name - if len(t.Spec.Containers) > 1 || len(t.Spec.InitContainers) > 0 || len(t.Spec.EphemeralContainers) > 0 { - fmt.Fprintf(os.Stderr, "Defaulted container %q out of: %s\n", currOpts.Container, podcmd.AllContainerNames(t)) - } - } - - container, fieldPath := podcmd.FindContainerByName(t, currOpts.Container) - if container == nil { - return nil, fmt.Errorf("container %s is not valid for pod %s", currOpts.Container, t.Name) - } - ref, err := reference.GetPartialReference(scheme.Scheme, t, fieldPath) - if err != nil { - return nil, fmt.Errorf("Unable to construct reference to '%#v': %w", t, err) - } - - ret := make(map[corev1.ObjectReference]rest.ResponseWrapper, 1) - ret[*ref] = clientset.Pods(t.Namespace).GetLogs(t.Name, currOpts) - return ret, nil - } - - ret := make(map[corev1.ObjectReference]rest.ResponseWrapper) - for _, c := range t.Spec.InitContainers { - currOpts := opts.DeepCopy() - currOpts.Container = c.Name - currRet, err := logsForObjectWithClient(clientset, t, currOpts, timeout, false) - if err != nil { - return nil, err - } - for k, v := range currRet { - ret[k] = v - } - } - for _, c := range t.Spec.Containers { - currOpts := opts.DeepCopy() - currOpts.Container = c.Name - currRet, err := logsForObjectWithClient(clientset, t, currOpts, timeout, false) - if err != nil { - return nil, err - } - for k, v := range currRet { - ret[k] = v - } - } - for _, c := range t.Spec.EphemeralContainers { - currOpts := opts.DeepCopy() - currOpts.Container = c.Name - currRet, err := logsForObjectWithClient(clientset, t, currOpts, timeout, false) - if err != nil { - return nil, err - } - for k, v := range currRet { - ret[k] = v - } - } - - return ret, nil -} diff --git a/pkg/kubernetes/portforward/helpers.go b/pkg/kubernetes/portforward/helpers.go deleted file mode 100644 index 792a08dca..000000000 --- a/pkg/kubernetes/portforward/helpers.go +++ /dev/null @@ -1,161 +0,0 @@ -package portforward - -import ( - "fmt" - "math" - "strconv" - "strings" - - "github.com/pluralsh/polly/containers" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/kubectl/pkg/util" -) - -// splitPort splits port string which is in form of [LOCAL PORT]:REMOTE PORT -// and returns local and remote ports separately -func splitPort(port string) (local, remote string) { - parts := strings.Split(port, ":") - if len(parts) == 2 { - return parts[0], parts[1] - } - - return parts[0], parts[0] -} - -// Translates service port to target port -// It rewrites ports as needed if the Service port declares targetPort. -// It returns an error when a named targetPort can't find a match in the pod, or the Service did not declare -// the port. -func translateServicePortToTargetPort(ports []string, svc corev1.Service, pod corev1.Pod) ([]string, error) { - var translated []string - for _, port := range ports { - localPort, remotePort := splitPort(port) - - portnum, err := strconv.Atoi(remotePort) - if err != nil { - svcPort, err := util.LookupServicePortNumberByName(svc, remotePort) - if err != nil { - return nil, err - } - portnum = int(svcPort) - - if localPort == remotePort { - localPort = strconv.Itoa(portnum) - } - } - if portnum > 0 && portnum <= math.MaxInt32 { - containerPort, err := util.LookupContainerPortNumberByServicePort(svc, pod, int32(portnum)) - if err != nil { - // can't resolve a named port, or Service did not declare this port, return an error - return nil, err - } - - // convert the resolved target port back to a string - remotePort = strconv.Itoa(int(containerPort)) - - if localPort != remotePort { - translated = append(translated, fmt.Sprintf("%s:%s", localPort, remotePort)) - } else { - translated = append(translated, remotePort) - } - } else { - return nil, fmt.Errorf("Incorrect conversion between integer types") - } - - } - return translated, nil -} - -// convertPodNamedPortToNumber converts named ports into port numbers -// It returns an error when a named port can't be found in the pod containers -func convertPodNamedPortToNumber(ports []string, pod corev1.Pod) ([]string, error) { - var converted []string - for _, port := range ports { - localPort, remotePort := splitPort(port) - - containerPortStr := remotePort - _, err := strconv.Atoi(remotePort) - if err != nil { - containerPort, err := util.LookupContainerPortNumberByName(pod, remotePort) - if err != nil { - return nil, err - } - - containerPortStr = strconv.Itoa(int(containerPort)) - } - - if localPort != remotePort { - converted = append(converted, fmt.Sprintf("%s:%s", localPort, containerPortStr)) - } else { - converted = append(converted, containerPortStr) - } - } - - return converted, nil -} - -func checkUDPPorts(udpOnlyPorts containers.Set[int], ports []string, obj metav1.Object) error { - for _, port := range ports { - _, remotePort := splitPort(port) - portNum, err := strconv.Atoi(remotePort) - if err != nil { - switch v := obj.(type) { - case *corev1.Service: - svcPort, err := util.LookupServicePortNumberByName(*v, remotePort) - if err != nil { - return err - } - portNum = int(svcPort) - - case *corev1.Pod: - ctPort, err := util.LookupContainerPortNumberByName(*v, remotePort) - if err != nil { - return err - } - portNum = int(ctPort) - - default: - return fmt.Errorf("unknown object: %v", obj) - } - } - if udpOnlyPorts.Has(portNum) { - return fmt.Errorf("UDP protocol is not supported for %s", remotePort) - } - } - return nil -} - -// checkUDPPortInService returns an error if remote port in Service is a UDP port -func checkUDPPortInService(ports []string, svc *corev1.Service) error { - udpPorts := containers.NewSet[int]() - tcpPorts := containers.NewSet[int]() - for _, port := range svc.Spec.Ports { - portNum := int(port.Port) - switch port.Protocol { - case corev1.ProtocolUDP: - udpPorts.Add(portNum) - case corev1.ProtocolTCP: - tcpPorts.Add(portNum) - } - } - return checkUDPPorts(udpPorts.Difference(tcpPorts), ports, svc) -} - -// checkUDPPortInPod returns an error if remote port in Pod is a UDP port -func checkUDPPortInPod(ports []string, pod *corev1.Pod) error { - udpPorts := containers.NewSet[int]() - tcpPorts := containers.NewSet[int]() - for _, ct := range pod.Spec.Containers { - for _, ctPort := range ct.Ports { - portNum := int(ctPort.ContainerPort) - switch ctPort.Protocol { - case corev1.ProtocolUDP: - udpPorts.Add(portNum) - case corev1.ProtocolTCP: - tcpPorts.Add(portNum) - } - } - } - return checkUDPPorts(udpPorts.Difference(tcpPorts), ports, pod) -} diff --git a/pkg/kubernetes/portforward/portforward.go b/pkg/kubernetes/portforward/portforward.go deleted file mode 100644 index 5e722f777..000000000 --- a/pkg/kubernetes/portforward/portforward.go +++ /dev/null @@ -1,92 +0,0 @@ -package portforward - -import ( - "context" - "fmt" - "net/http" - "net/url" - "os" - - "github.com/pluralsh/plural-cli/pkg/kubernetes" - "github.com/pluralsh/plural-cli/pkg/kubernetes/utils" - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/client-go/tools/portforward" - "k8s.io/client-go/transport/spdy" -) - -func PortForward(namespace, resource string, ports []string, stopChan, readyChan chan struct{}) error { - obj, forwardablePod, err := utils.GetPodWithObject(namespace, resource) - if err != nil { - return err - } - podName := forwardablePod.Name - if len(podName) == 0 { - return fmt.Errorf("pod name or resource type/name must be specified") - } - - var podPorts []string - // handle service port mapping to target port if needed - switch t := obj.(type) { - case *corev1.Service: - err = checkUDPPortInService(ports, t) - if err != nil { - return err - } - podPorts, err = translateServicePortToTargetPort(ports, *t, *forwardablePod) - if err != nil { - return err - } - default: - err = checkUDPPortInPod(ports, forwardablePod) - if err != nil { - return err - } - podPorts, err = convertPodNamedPortToNumber(ports, *forwardablePod) - if err != nil { - return err - } - } - if len(podPorts) < 1 { - return fmt.Errorf("at least 1 PORT is required for port-forward") - } - kube, err := kubernetes.Kubernetes() - if err != nil { - return err - } - - pod, err := kube.GetClient().CoreV1().Pods(namespace).Get(context.TODO(), podName, metav1.GetOptions{}) - if err != nil { - return err - } - if pod.Status.Phase != corev1.PodRunning { - return fmt.Errorf("unable to forward port because pod is not running. Current status=%v", pod.Status.Phase) - } - - req := kube.GetRestClient().Post(). - Resource("pods"). - Namespace(namespace). - Name(pod.Name). - SubResource("portforward") - - return forwardPorts(http.MethodPost, req.URL(), podPorts, stopChan, readyChan) -} - -func forwardPorts(method string, url *url.URL, ports []string, stopChan, readyChan chan struct{}) error { - - clientConfig, err := kubernetes.KubeConfig() - if err != nil { - return err - } - - transport, upgrader, err := spdy.RoundTripperFor(clientConfig) - if err != nil { - return err - } - dialer := spdy.NewDialer(upgrader, &http.Client{Transport: transport}, method, url) - fw, err := portforward.New(dialer, ports, stopChan, readyChan, os.Stdout, os.Stderr) - if err != nil { - return err - } - return fw.ForwardPorts() -} diff --git a/pkg/kubernetes/utils/utils.go b/pkg/kubernetes/utils/utils.go deleted file mode 100644 index 94ef17a3e..000000000 --- a/pkg/kubernetes/utils/utils.go +++ /dev/null @@ -1,63 +0,0 @@ -package utils - -import ( - "fmt" - "sort" - "time" - - "github.com/pluralsh/plural-cli/pkg/kubernetes" - corev1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/cli-runtime/pkg/genericclioptions" - corev1client "k8s.io/client-go/kubernetes/typed/core/v1" - cmdutil "k8s.io/kubectl/pkg/cmd/util" - "k8s.io/kubectl/pkg/polymorphichelpers" - "k8s.io/kubectl/pkg/scheme" - "k8s.io/kubectl/pkg/util/podutils" -) - -const ( - // Amount of time to wait until at least one pod is running - defaultPodWaitTimeout = 60 * time.Second -) - -func GetPodWithObject(namespace, resource string) (runtime.Object, *corev1.Pod, error) { - matchVersionKubeConfigFlags := cmdutil.NewMatchVersionFlags(genericclioptions.NewConfigFlags(true).WithDeprecatedPasswordFlag().WithDiscoveryBurst(300).WithDiscoveryQPS(50.0)) - f := cmdutil.NewFactory(matchVersionKubeConfigFlags) - - builder := f.NewBuilder(). - WithScheme(scheme.Scheme, scheme.Scheme.PrioritizedVersionsAllGroups()...). - NamespaceParam(namespace).DefaultNamespace(). - SingleResourceType() - builder.ResourceNames("pods", resource) - obj, err := builder.Do().Object() - if err != nil { - return nil, nil, err - } - - return attachablePodForObject(obj, defaultPodWaitTimeout) - -} - -func attachablePodForObject(object runtime.Object, timeout time.Duration) (runtime.Object, *corev1.Pod, error) { - if t, ok := object.(*corev1.Pod); ok { - return object, t, nil - } - - clientConfig, err := kubernetes.KubeConfig() - if err != nil { - return nil, nil, err - } - clientset, err := corev1client.NewForConfig(clientConfig) - if err != nil { - return nil, nil, err - } - - namespace, selector, err := polymorphichelpers.SelectorsForObject(object) - if err != nil { - return nil, nil, fmt.Errorf("cannot attach to %T: %w", object, err) - } - sortBy := func(pods []*corev1.Pod) sort.Interface { return sort.Reverse(podutils.ActivePods(pods)) } - pod, _, err := polymorphichelpers.GetFirstPod(clientset, namespace, selector.String(), timeout, sortBy) - return object, pod, err -} diff --git a/pkg/logs/api.go b/pkg/logs/api.go deleted file mode 100644 index 1f3bbaa06..000000000 --- a/pkg/logs/api.go +++ /dev/null @@ -1,33 +0,0 @@ -package logs - -import ( - "github.com/pluralsh/plural-cli/pkg/kubernetes" - "github.com/pluralsh/plural-cli/pkg/kubernetes/logs" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-operator/apis/platform/v1alpha1" -) - -func List(kube kubernetes.Kube, namespace string) (*v1alpha1.LogTailList, error) { - return kube.LogTailList(namespace) -} - -func Print(tails *v1alpha1.LogTailList) error { - headers := []string{"Name", "Follow", "Target"} - return utils.PrintTable[v1alpha1.LogTail](tails.Items, headers, func(log v1alpha1.LogTail) ([]string, error) { - follow := "False" - if log.Spec.Follow { - follow = "True" - } - - return []string{log.Name, follow, log.Spec.Target}, nil - }) -} - -func Tail(kube kubernetes.Kube, namespace string, name string) error { - tail, err := kube.LogTail(namespace, name) - if err != nil { - return err - } - - return logs.Logs(namespace, tail.Spec.Target, int64(tail.Spec.Limit)) -} diff --git a/pkg/manifest/context.go b/pkg/manifest/context.go index 846efcaf9..777886026 100644 --- a/pkg/manifest/context.go +++ b/pkg/manifest/context.go @@ -1,14 +1,11 @@ package manifest import ( - "fmt" "os" "path/filepath" jsoniter "github.com/json-iterator/go" "gopkg.in/yaml.v2" - - "github.com/pluralsh/plural-cli/pkg/api" ) type Bundle struct { @@ -31,7 +28,6 @@ type Globals struct { } type Context struct { - Bundles []*Bundle Buckets []string Domains []string Protect []string `yaml:"protect,omitempty" json:"protect,omitempty"` @@ -44,7 +40,6 @@ func (this *Context) MarshalJSON() ([]byte, error) { json := jsoniter.ConfigCompatibleWithStandardLibrary return json.Marshal(&struct { - Bundles []*Bundle `json:"bundles"` Buckets []string `json:"buckets"` Domains []string `json:"domains"` Protect []string `yaml:"protect,omitempty" json:"protect,omitempty"` @@ -52,7 +47,6 @@ func (this *Context) MarshalJSON() ([]byte, error) { Globals *Globals `yaml:"globals,omitempty" json:"globals,omitempty"` Configuration map[string]map[string]interface{} `json:"configuration"` }{ - Bundles: this.Bundles, Buckets: this.Buckets, Domains: this.Domains, Protect: this.Protect, @@ -73,18 +67,6 @@ func ContextPath() string { return path } -func BuildContext(path string, insts []*api.Installation) error { - ctx := &Context{ - Configuration: make(map[string]map[string]interface{}), - } - - for _, inst := range insts { - ctx.Configuration[inst.Repository.Name] = inst.Context - } - - return ctx.Write(path) -} - func FetchContext() (*Context, error) { return ReadContext(ContextPath()) } @@ -103,27 +85,11 @@ func ReadContext(path string) (c *Context, err error) { func NewContext() *Context { return &Context{ - Bundles: make([]*Bundle, 0), // Globals: &Globals{CertIssuer: "plural"}, Configuration: make(map[string]map[string]interface{}), } } -func (c *Context) Repo(name string) (res map[string]interface{}, ok bool) { - res, ok = c.Configuration[name] - return -} - -func (c *Context) AddBundle(repo, name string) { - for _, b := range c.Bundles { - if b.Name == name && b.Repository == repo { - return - } - } - - c.Bundles = append(c.Bundles, &Bundle{Repository: repo, Name: name}) -} - func (c *Context) AddBucket(bucket string) { c.Buckets = append(c.Buckets, bucket) } @@ -142,16 +108,6 @@ func (c *Context) AddDomain(domain string) { c.Domains = append(c.Domains, domain) } -func (c *Context) Protected(name string) bool { - for _, r := range c.Protect { - if r == name { - return true - } - } - - return false -} - func (c *Context) HasDomain(domain string) bool { // Exclusion for empty string. // There are some cases where an empty string for the hostname is used. @@ -182,18 +138,6 @@ func (c *Context) Write(path string) error { return os.WriteFile(path, io, 0644) } -func (c *Context) ContainsString(str, msg, ignoreRepo, ignoreKey string) error { - for r, section := range c.Configuration { - for k, val := range section { - if v, ok := val.(string); ok && v == str && (r != ignoreRepo || k != ignoreKey) { - return fmt.Errorf(msg) - } - } - } - - return nil -} - func (smtp *SMTP) GetServer() string { if smtp.Service != "" { if val, ok := smtpConfig[smtp.Service]; ok { diff --git a/pkg/manifest/link.go b/pkg/manifest/link.go deleted file mode 100644 index 96fe72d35..000000000 --- a/pkg/manifest/link.go +++ /dev/null @@ -1,51 +0,0 @@ -package manifest - -import ( - "path/filepath" -) - -type Links struct { - Terraform map[string]string - Helm map[string]string -} - -func (man *Manifest) AddLink(tool, name, path string) { - links := man.Links - if links == nil { - links = &Links{ - Terraform: map[string]string{}, - Helm: map[string]string{}, - } - } - - absPath, _ := filepath.Abs(path) - - if tool == "terraform" { - links.Terraform[name] = absPath - } - - if tool == "helm" { - links.Helm[name] = absPath - } - - man.Links = links -} - -func (man *Manifest) Unlink(tool, name string) { - links := man.Links - if links == nil { - return - } - - if tool == "terraform" { - delete(links.Terraform, name) - } else if tool == "helm" { - delete(links.Helm, name) - } - - man.Links = links -} - -func (man *Manifest) UnlinkAll() { - man.Links = nil -} diff --git a/pkg/manifest/manifest.go b/pkg/manifest/manifest.go index 7b4c08829..ab507ce82 100644 --- a/pkg/manifest/manifest.go +++ b/pkg/manifest/manifest.go @@ -28,15 +28,6 @@ func ProjectManifestPath() string { return pathing.SanitizeFilepath(filepath.Join(root, "workspace.yaml")) } -func ManifestPath(repo string) (string, error) { - root, found := utils.ProjectRoot() - if !found { - return "", fmt.Errorf("You're not within an installation repo") - } - - return pathing.SanitizeFilepath(filepath.Join(root, repo, "manifest.yaml")), nil -} - func (pMan *ProjectManifest) Write(path string) error { versioned := &VersionedProjectManifest{ ApiVersion: "plural.sh/v1alpha1", @@ -100,24 +91,6 @@ func (man *Manifest) Write(path string) error { return os.WriteFile(path, io, 0644) } -func Read(path string) (man *Manifest, err error) { - contents, err := os.ReadFile(path) - if err != nil { - return - } - - versioned := &VersionedManifest{} - err = yaml.Unmarshal(contents, versioned) - if err != nil || versioned.Spec == nil { - man = &Manifest{} - err = yaml.Unmarshal(contents, man) - return - } - - man = versioned.Spec - return -} - func (pMan *ProjectManifest) Configure(cloud bool, cluster string) Writer { utils.Highlight("\nLet's get some final information about your workspace set up\n\n") diff --git a/pkg/manifest/types.go b/pkg/manifest/types.go index 6e87ef2aa..f52258a77 100644 --- a/pkg/manifest/types.go +++ b/pkg/manifest/types.go @@ -37,7 +37,6 @@ type Manifest struct { Terraform []*TerraformManifest Dependencies []*Dependency Context map[string]interface{} - Links *Links `yaml:"links,omitempty"` } type Owner struct { diff --git a/pkg/output/terraform.go b/pkg/output/terraform.go deleted file mode 100644 index 1dd00521d..000000000 --- a/pkg/output/terraform.go +++ /dev/null @@ -1,32 +0,0 @@ -package output - -import ( - "encoding/json" - "os/exec" -) - -type TerraformOutputItem struct { - Value interface{} - Type interface{} -} - -func TerraformOutput(path string) (out map[string]interface{}, err error) { - cmd := exec.Command("terraform", "output", "-json") - cmd.Dir = path - res, err := cmd.Output() - if err != nil { - return - } - - outType := make(map[string]TerraformOutputItem) - err = json.Unmarshal(res, &outType) - if err != nil { - return - } - - out = make(map[string]interface{}) - for key, val := range outType { - out[key] = val.Value - } - return -} diff --git a/pkg/pluralfile/artifact.go b/pkg/pluralfile/artifact.go deleted file mode 100644 index c0927bae3..000000000 --- a/pkg/pluralfile/artifact.go +++ /dev/null @@ -1,71 +0,0 @@ -package pluralfile - -import ( - "fmt" - "os" - "os/exec" - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -type Artifact struct { - File string - Platform string - Arch string -} - -func (a *Artifact) Type() ComponentName { - return ARTIFACT -} - -func (a *Artifact) Key() string { - return fmt.Sprintf("%s_%s_%s", a.File, a.Platform, a.Arch) -} - -func (a *Artifact) Push(repo string, sha string) (string, error) { - newsha, err := mkSha(a.File) - if err != nil || newsha == sha { - utils.Highlight("No change for %s\n", a.File) - return sha, err - } - - utils.Highlight("pushing artifact %s\n [plat=%s,arch=%s]", a.File, a.Platform, a.Arch) - cmd := exec.Command("plural", "push", "artifact", a.File, repo, "--platform", a.Platform, "--arch", a.Arch) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err = cmd.Run() - return newsha, err -} - -func mkSha(file string) (sha string, err error) { - fullPath, _ := filepath.Abs(file) - base, err := utils.Sha256(fullPath) - if err != nil { - return - } - - contents, err := os.ReadFile(fullPath) - if err != nil { - return - } - - input, err := api.ConstructArtifactAttributes(contents) - if err != nil { - return - } - - readme, err := fileSha(input.Readme) - if err != nil { - return - } - - blob, err := fileSha(input.Blob) - if err != nil { - return - } - - sha = utils.Sha([]byte(fmt.Sprintf("%s:%s:%s", base, readme, blob))) - return -} diff --git a/pkg/pluralfile/attrs.go b/pkg/pluralfile/attrs.go deleted file mode 100644 index 84670c5f5..000000000 --- a/pkg/pluralfile/attrs.go +++ /dev/null @@ -1,86 +0,0 @@ -package pluralfile - -import ( - "fmt" - "os" - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -type RepoAttrs struct { - File string - Publisher string -} - -func (a *RepoAttrs) Type() ComponentName { - return REPO_ATTRS -} - -func (a *RepoAttrs) Key() string { - return fmt.Sprintf("%s_%s", a.File, a.Publisher) -} - -func (a *RepoAttrs) Push(repo string, sha string) (string, error) { - fullPath, _ := filepath.Abs(a.File) - contents, err := os.ReadFile(fullPath) - if err != nil { - return "", err - } - - input, err := api.ConstructRepositoryInput(contents) - if err != nil { - return "", err - } - - newsha, err := a.mkSha(fullPath, input) - if err != nil || newsha == sha { - utils.Highlight("No change for %s\n", a.File) - return sha, err - } - - utils.Highlight("Setting attributes for %s\n", repo) - client := api.NewClient() - repositoryAttributes, err := api.ConstructGqlClientRepositoryInput(contents) - if err != nil { - return "", err - } - err = client.CreateRepository(repo, a.Publisher, repositoryAttributes) - return newsha, api.GetErrorResponse(err, "CreateRepository") -} - -func (a *RepoAttrs) mkSha(fullPath string, input *api.RepositoryInput) (sha string, err error) { - base, err := utils.Sha256(fullPath) - if err != nil { - return - } - - iconSha, _ := fileSha(input.Icon) - darkIconSha, _ := fileSha(input.DarkIcon) - - notesSha, err := fileSha(input.Notes) - if err != nil { - return - } - docssha := "" - if input.Docs != "" { - fpath, _ := filepath.Abs(input.Docs) - docssha, err = executor.MkHash(fpath, []string{}) - if err != nil { - return - } - } - - sha = utils.Sha([]byte(fmt.Sprintf("%s:%s:%s:%s%s", base, iconSha, darkIconSha, notesSha, docssha))) - return -} - -func fileSha(path string) (string, error) { - if path == "" { - return "", nil - } - fpath, _ := filepath.Abs(path) - return utils.Sha256(fpath) -} diff --git a/pkg/pluralfile/command.go b/pkg/pluralfile/command.go deleted file mode 100644 index 9a650cdb1..000000000 --- a/pkg/pluralfile/command.go +++ /dev/null @@ -1,29 +0,0 @@ -package pluralfile - -import ( - "fmt" - "os" - "os/exec" - "strings" -) - -type Command struct { - Command string - Args []string -} - -func (c *Command) Type() ComponentName { - return COMMAND -} - -func (c *Command) Key() string { - return "" -} - -func (c *Command) Push(repo string, sha string) (string, error) { - fmt.Println("") - cmd := exec.Command("/bin/sh", "-c", fmt.Sprintf("%s %s", c.Command, strings.Join(c.Args, " "))) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - return "", cmd.Run() -} diff --git a/pkg/pluralfile/crd.go b/pkg/pluralfile/crd.go deleted file mode 100644 index acfba65dc..000000000 --- a/pkg/pluralfile/crd.go +++ /dev/null @@ -1,49 +0,0 @@ -package pluralfile - -import ( - "fmt" - "os" - "os/exec" - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -type Crd struct { - File string - Chart string -} - -func (a *Crd) Type() ComponentName { - return CRD -} - -func (a *Crd) Key() string { - return a.File -} - -func (c *Crd) Push(repo string, sha string) (string, error) { - crdSha, err := executor.MkHash(c.File, []string{}) - if err != nil { - return sha, err - } - - chartSha, err := executor.MkHash(c.Chart, []string{}) - if err != nil { - return sha, err - } - - newsha := fmt.Sprintf("%s:%s", crdSha, chartSha) - if newsha == sha { - utils.Highlight("No change for %s\n", c.File) - return sha, nil - } - - chart := filepath.Base(c.Chart) - utils.Highlight("pushing crd %s for %s\n", c.File, chart) - cmd := exec.Command("plural", "push", "crd", c.File, repo, chart) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - return newsha, cmd.Run() -} diff --git a/pkg/pluralfile/helm.go b/pkg/pluralfile/helm.go deleted file mode 100644 index 16c6f21ce..000000000 --- a/pkg/pluralfile/helm.go +++ /dev/null @@ -1,32 +0,0 @@ -package pluralfile - -import ( - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -type Helm struct { - File string -} - -func (a *Helm) Type() ComponentName { - return HELM -} - -func (a *Helm) Key() string { - return a.File -} - -func (a *Helm) Push(repo string, sha string) (string, error) { - newsha, err := executor.MkHash(a.File, []string{}) - if err != nil || newsha == sha { - utils.Highlight("No change for %s\n", a.File) - return sha, nil - } - - utils.Highlight("pushing helm %s", a.File) - cmd, output := executor.SuppressedCommand("plural", "push", "helm", a.File, repo) - - err = executor.RunCommand(cmd, output) - return newsha, err -} diff --git a/pkg/pluralfile/integration.go b/pkg/pluralfile/integration.go deleted file mode 100644 index 5bcb5f574..000000000 --- a/pkg/pluralfile/integration.go +++ /dev/null @@ -1,32 +0,0 @@ -package pluralfile - -import ( - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -type Integration struct { - File string -} - -func (a *Integration) Type() ComponentName { - return INTEGRATION -} - -func (a *Integration) Key() string { - return a.File -} - -func (a *Integration) Push(repo string, sha string) (string, error) { - newsha, err := executor.MkHash(a.File, []string{}) - if err != nil || newsha == sha { - utils.Highlight("No change for %s\n", a.File) - return sha, err - } - - utils.Highlight("pushing integration %s", a.File) - cmd, output := executor.SuppressedCommand("plural", "push", "integration", a.File, repo) - - err = executor.RunCommand(cmd, output) - return newsha, err -} diff --git a/pkg/pluralfile/lock.go b/pkg/pluralfile/lock.go deleted file mode 100644 index 6c02db395..000000000 --- a/pkg/pluralfile/lock.go +++ /dev/null @@ -1,163 +0,0 @@ -package pluralfile - -import ( - "fmt" - "os" - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "gopkg.in/yaml.v2" -) - -type Lockfile struct { - Artifact map[string]string - Terraform map[string]string - Helm map[string]string - Recipe map[string]string - Integration map[string]string - Crd map[string]string - Ird map[string]string - Tag map[string]string - Attrs map[string]string -} - -func lock() *Lockfile { - return &Lockfile{ - Artifact: map[string]string{}, - Terraform: map[string]string{}, - Helm: map[string]string{}, - Recipe: map[string]string{}, - Integration: map[string]string{}, - Crd: map[string]string{}, - Ird: map[string]string{}, - Tag: map[string]string{}, - Attrs: map[string]string{}, - } -} - -func (plrl *Pluralfile) Lock(path string) (*Lockfile, error) { - client := api.NewClient() - applyLock, err := client.AcquireLock(plrl.Repo) - if err != nil { - return lock(), nil - } - - if applyLock == nil { - return nil, fmt.Errorf("Could not fetch apply lock, do you have publish permissions for this repo?") - } - - if applyLock.Lock == "" { - return Lock(path) - } - - lock := lock() - if err := yaml.Unmarshal([]byte(applyLock.Lock), lock); err != nil { - return nil, err - } - return lock, nil -} - -func (plrl *Pluralfile) Flush(lock *Lockfile) error { - client := api.NewClient() - io, err := yaml.Marshal(lock) - if err != nil { - return err - } - - _, err = client.ReleaseLock(plrl.Repo, string(io)) - return api.GetErrorResponse(err, "ReleaseLock") -} - -func Lock(path string) (*Lockfile, error) { - conf := config.Read() - lock := lock() - lockfile := lockPath(path, conf.LockProfile) - content, err := os.ReadFile(lockfile) - if err != nil { - return lock, nil - } - - if err := yaml.Unmarshal(content, lock); err != nil { - return nil, err - } - return lock, nil -} - -func lockPath(path string, profile string) string { - if profile == "" { - return pathing.SanitizeFilepath(filepath.Join(filepath.Dir(path), "plural.lock")) - } - - return pathing.SanitizeFilepath(filepath.Join(filepath.Dir(path), fmt.Sprintf("plural.%s.lock", profile))) -} - -func (lock *Lockfile) Flush(path string) error { - conf := config.Read() - io, err := yaml.Marshal(lock) - if err != nil { - return err - } - return os.WriteFile(lockPath(path, conf.LockProfile), io, 0644) -} - -func (lock *Lockfile) getSha(name ComponentName, key string) string { - switch name { - case HELM: - sha := lock.Helm[key] - return sha - case TERRAFORM: - sha := lock.Terraform[key] - return sha - case RECIPE: - sha := lock.Recipe[key] - return sha - case ARTIFACT: - sha := lock.Artifact[key] - return sha - case INTEGRATION: - sha := lock.Integration[key] - return sha - case CRD: - sha := lock.Crd[key] - return sha - case IRD: - sha := lock.Ird[key] - return sha - case TAG: - sha := lock.Tag[key] - return sha - case REPO_ATTRS: - sha := lock.Attrs[key] - return sha - default: - return "" - } -} - -func (lock *Lockfile) addSha(name ComponentName, key string, sha string) { - switch name { - case HELM: - lock.Helm[key] = sha - return - case TERRAFORM: - lock.Terraform[key] = sha - case RECIPE: - lock.Recipe[key] = sha - case ARTIFACT: - lock.Artifact[key] = sha - case INTEGRATION: - lock.Integration[key] = sha - case CRD: - lock.Crd[key] = sha - case IRD: - lock.Ird[key] = sha - case TAG: - lock.Tag[key] = sha - case REPO_ATTRS: - lock.Attrs[key] = sha - default: - return - } -} diff --git a/pkg/pluralfile/parse.go b/pkg/pluralfile/parse.go deleted file mode 100644 index cb9714103..000000000 --- a/pkg/pluralfile/parse.go +++ /dev/null @@ -1,206 +0,0 @@ -package pluralfile - -import ( - "bufio" - "os" - "path/filepath" - "regexp" - "strings" - - "github.com/google/shlex" -) - -type Pluralfile struct { - Components []Component - Repo string -} - -type ComponentName string - -const ( - ARTIFACT ComponentName = "artificat" - TERRAFORM ComponentName = "tf" - HELM ComponentName = "helm" - RECIPE ComponentName = "recipe" - INTEGRATION ComponentName = "integration" - CRD ComponentName = "crd" - IRD ComponentName = "ird" - COMMAND ComponentName = "run" - TAG ComponentName = "tag" - REPO_ATTRS ComponentName = "attrs" - STACK ComponentName = "stack" -) - -type Component interface { - Type() ComponentName - Key() string - Push(repo string, sha string) (string, error) -} - -func (plrl *Pluralfile) Execute(f string, lock *Lockfile) (err error) { - defer func(plrl *Pluralfile, lock *Lockfile) { - _ = plrl.Flush(lock) - }(plrl, lock) - for _, component := range plrl.Components { - key := component.Key() - t := component.Type() - sha := lock.getSha(t, key) - newsha, err := component.Push(plrl.Repo, sha) - if err != nil { - return err - } - lock.addSha(t, key, newsha) - } - - return -} - -func Parse(f string) (*Pluralfile, error) { - pluralfile, err := os.Open(f) - if err != nil { - return nil, err - } - plrl := &Pluralfile{} - if err != nil { - return plrl, err - } - defer func(pluralfile *os.File) { - _ = pluralfile.Close() - }(pluralfile) - - scanner := bufio.NewScanner(pluralfile) - r := regexp.MustCompile(`^\s*$`) - for scanner.Scan() { - line := scanner.Text() - ignore := r.MatchString(line) - - if ignore { - continue - } - - splitline, err := shlex.Split(line) - if err != nil { - return plrl, err - } - - switch strings.ToLower(splitline[0]) { - case "repo": - plrl.Repo = splitline[1] - case "helm": - helms, err := expandGlob(splitline[1], func(targ string) Component { - return &Helm{File: targ} - }) - - if err != nil { - return plrl, err - } - - plrl.Components = append(plrl.Components, helms...) - case "tf": - tfs, err := expandGlob(splitline[1], func(targ string) Component { - return &Terraform{File: targ} - }) - - if err != nil { - return plrl, err - } - - plrl.Components = append(plrl.Components, tfs...) - case "artifact": - arts, err := expandGlob(splitline[1], func(targ string) Component { - return &Artifact{File: targ, Platform: splitline[2], Arch: splitline[3]} - }) - - if err != nil { - return plrl, err - } - - plrl.Components = append(plrl.Components, arts...) - case "ird": - irds, err := expandGlob(splitline[1], func(targ string) Component { - return &ResourceDefinition{File: targ} - }) - - if err != nil { - return plrl, err - } - - plrl.Components = append(plrl.Components, irds...) - case "recipe": - recipes, err := expandGlob(splitline[1], func(targ string) Component { - return &Recipe{File: targ} - }) - - if err != nil { - return plrl, err - } - - plrl.Components = append(plrl.Components, recipes...) - case "stack": - stacks, err := expandGlob(splitline[1], func(targ string) Component { - return &Stack{File: targ} - }) - - if err != nil { - return plrl, err - } - - plrl.Components = append(plrl.Components, stacks...) - case "integration": - integs, err := expandGlob(splitline[1], func(targ string) Component { - return &Integration{File: targ} - }) - - if err != nil { - return plrl, err - } - - plrl.Components = append(plrl.Components, integs...) - case "crd": - chart := splitline[2] - crds, err := expandGlob(splitline[1], func(targ string) Component { - return &Crd{Chart: chart, File: targ} - }) - - if err != nil { - return plrl, err - } - plrl.Components = append(plrl.Components, crds...) - case "run": - simpleSplit := strings.Split(line, " ") - cmd, args := simpleSplit[1], simpleSplit[2:] - plrl.Components = append(plrl.Components, &Command{Command: cmd, Args: args}) - case "tag": - tags, err := expandGlob(splitline[1], func(tag string) Component { - return &Tags{File: tag} - }) - - if err != nil { - return plrl, err - } - plrl.Components = append(plrl.Components, tags...) - case "attributes": - pub, file := splitline[1], splitline[2] - - plrl.Components = append(plrl.Components, &RepoAttrs{File: file, Publisher: pub}) - default: - continue - } - } - - return plrl, nil -} - -func expandGlob(relpath string, toComponent func(path string) Component) ([]Component, error) { - var comps []Component - paths, err := filepath.Glob(relpath) - if err != nil { - return comps, err - } - - for _, p := range paths { - comps = append(comps, toComponent(p)) - } - - return comps, nil -} diff --git a/pkg/pluralfile/recipe.go b/pkg/pluralfile/recipe.go deleted file mode 100644 index 007368432..000000000 --- a/pkg/pluralfile/recipe.go +++ /dev/null @@ -1,32 +0,0 @@ -package pluralfile - -import ( - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -type Recipe struct { - File string -} - -func (a *Recipe) Type() ComponentName { - return RECIPE -} - -func (a *Recipe) Key() string { - return a.File -} - -func (a *Recipe) Push(repo string, sha string) (string, error) { - newsha, err := executor.MkHash(a.File, []string{}) - if err != nil || newsha == sha { - utils.Highlight("No change for %s\n", a.File) - return sha, err - } - - utils.Highlight("pushing recipe %s", a.File) - cmd, output := executor.SuppressedCommand("plural", "push", "recipe", a.File, repo) - - err = executor.RunCommand(cmd, output) - return newsha, err -} diff --git a/pkg/pluralfile/resourcedefinition.go b/pkg/pluralfile/resourcedefinition.go deleted file mode 100644 index 3017a06ce..000000000 --- a/pkg/pluralfile/resourcedefinition.go +++ /dev/null @@ -1,32 +0,0 @@ -package pluralfile - -import ( - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -type ResourceDefinition struct { - File string -} - -func (a *ResourceDefinition) Type() ComponentName { - return IRD -} - -func (a *ResourceDefinition) Key() string { - return a.File -} - -func (a *ResourceDefinition) Push(repo string, sha string) (string, error) { - newsha, err := executor.MkHash(a.File, []string{}) - if err != nil || newsha == sha { - utils.Highlight("No change for %s\n", a.File) - return sha, err - } - - utils.Highlight("pushing integration definition %s", a.File) - cmd, output := executor.SuppressedCommand("plural", "push", "resourcedefinition", a.File, repo) - - err = executor.RunCommand(cmd, output) - return newsha, err -} diff --git a/pkg/pluralfile/stack.go b/pkg/pluralfile/stack.go deleted file mode 100644 index 82c16710b..000000000 --- a/pkg/pluralfile/stack.go +++ /dev/null @@ -1,50 +0,0 @@ -package pluralfile - -import ( - "os" - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -type Stack struct { - File string -} - -func (a *Stack) Type() ComponentName { - return STACK -} - -func (a *Stack) Key() string { - return a.File -} - -func (a *Stack) Push(repo string, sha string) (string, error) { - newsha, err := executor.MkHash(a.File, []string{}) - if err != nil || newsha == sha { - utils.Highlight("No change for %s\n", a.File) - return sha, err - } - - fullPath, _ := filepath.Abs(a.File) - contents, err := os.ReadFile(fullPath) - if err != nil { - return "", err - } - - utils.Highlight("pushing stack %s", a.File) - client := api.NewClient() - attrs, err := api.ConstructStack(contents) - if err != nil { - return "", err - } - - _, err = client.CreateStack(attrs) - if err == nil { - utils.Success("\u2713\n") - } - - return newsha, api.GetErrorResponse(err, "CreateStack") -} diff --git a/pkg/pluralfile/tags.go b/pkg/pluralfile/tags.go deleted file mode 100644 index f5882eb00..000000000 --- a/pkg/pluralfile/tags.go +++ /dev/null @@ -1,82 +0,0 @@ -package pluralfile - -import ( - "errors" - "fmt" - "io" - "os" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils" - "gopkg.in/yaml.v2" -) - -type VersionSpec struct { - Chart *string - Terraform *string - Version string -} - -type VersionTags struct { - Spec *VersionSpec - Tags []string -} - -type Tags struct { - File string -} - -func (a *Tags) Type() ComponentName { - return TAG -} - -func (a *Tags) Key() string { - return a.File -} - -func (t *Tags) Push(repo string, sha string) (string, error) { - newsha, err := executor.MkHash(t.File, []string{}) - if err != nil || newsha == sha { - if err == nil { - utils.Highlight("No change for %s\n", t.File) - } - return sha, err - } - - f, err := os.Open(t.File) - if err != nil { - return sha, err - } - - utils.Highlight("updating tags for %s", t.File) - client := api.NewClient() - d := yaml.NewDecoder(f) - for { - tagSpec := &VersionTags{} - err = d.Decode(tagSpec) - if errors.Is(err, io.EOF) { - break - } - if err != nil { - fmt.Println("") - return sha, err - } - - vspec := &api.VersionSpec{ - Repository: repo, - Chart: tagSpec.Spec.Chart, - Terraform: tagSpec.Spec.Terraform, - Version: tagSpec.Spec.Version, - } - if err := client.UpdateVersion(vspec, tagSpec.Tags); err != nil { - fmt.Println("") - return sha, api.GetErrorResponse(err, "UpdateVersion") - } - - utils.Highlight(".") - } - - utils.Success("\u2713\n") - return newsha, nil -} diff --git a/pkg/pluralfile/terraform.go b/pkg/pluralfile/terraform.go deleted file mode 100644 index 75783df85..000000000 --- a/pkg/pluralfile/terraform.go +++ /dev/null @@ -1,38 +0,0 @@ -package pluralfile - -import ( - "os" - "os/exec" - - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -type Terraform struct { - File string -} - -func (a *Terraform) Type() ComponentName { - return TERRAFORM -} - -func (a *Terraform) Key() string { - return a.File -} - -func (a *Terraform) Push(repo string, sha string) (string, error) { - newsha, err := executor.MkHash(a.File, []string{}) - if err != nil || newsha == sha { - if err == nil { - utils.Highlight("No change for %s\n", a.File) - } - return sha, err - } - - utils.Highlight("pushing terraform %s\n", a.File) - cmd := exec.Command("plural", "push", "terraform", a.File, repo) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err = cmd.Run() - return newsha, err -} diff --git a/pkg/provider/aws.go b/pkg/provider/aws.go index da7b248ad..47efc9ac2 100644 --- a/pkg/provider/aws.go +++ b/pkg/provider/aws.go @@ -21,7 +21,6 @@ import ( "github.com/pluralsh/plural-cli/pkg/config" "github.com/pluralsh/plural-cli/pkg/kubernetes" "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/template" "github.com/pluralsh/plural-cli/pkg/utils" plrlErrors "github.com/pluralsh/plural-cli/pkg/utils/errors" @@ -209,25 +208,6 @@ func (aws *AWSProvider) CreateBucket() error { return aws.mkBucket(aws.bucket) } -func (aws *AWSProvider) CreateBackend(prefix string, version string, ctx map[string]interface{}) (string, error) { - if err := aws.mkBucket(aws.bucket); err != nil { - return "", plrlErrors.ErrorWrap(err, fmt.Sprintf("Failed to create terraform state bucket %s", aws.bucket)) - } - - ctx["Region"] = aws.Region() - ctx["Bucket"] = aws.Bucket() - ctx["Prefix"] = prefix - ctx["__CLUSTER__"] = aws.Cluster() - if _, ok := ctx["Cluster"]; !ok { - ctx["Cluster"] = fmt.Sprintf("\"%s\"", aws.Cluster()) - } - scaffold, err := GetProviderScaffold(api.ToGQLClientProvider(api.ProviderAWS), version) - if err != nil { - return "", err - } - return template.RenderString(scaffold, ctx) -} - func (aws *AWSProvider) KubeConfig() error { if kubernetes.InKubernetes() { return nil diff --git a/pkg/provider/azure.go b/pkg/provider/azure.go index 8893246b6..18bbdee53 100644 --- a/pkg/provider/azure.go +++ b/pkg/provider/azure.go @@ -27,7 +27,6 @@ import ( "github.com/pluralsh/plural-cli/pkg/kubernetes" "github.com/pluralsh/plural-cli/pkg/manifest" "github.com/pluralsh/plural-cli/pkg/provider/permissions" - "github.com/pluralsh/plural-cli/pkg/template" "github.com/pluralsh/plural-cli/pkg/utils" pluralerr "github.com/pluralsh/plural-cli/pkg/utils/errors" ) @@ -213,31 +212,6 @@ func (az *AzureProvider) CreateBucket() error { return nil } -func (az *AzureProvider) CreateBackend(prefix string, version string, ctx map[string]interface{}) (string, error) { - if err := az.CreateBucket(); err != nil { - return "", err - } - - ctx["Region"] = az.Region() - ctx["Bucket"] = az.Bucket() - ctx["Prefix"] = prefix - ctx["ResourceGroup"] = az.Project() - ctx["__CLUSTER__"] = az.Cluster() - ctx["Context"] = az.Context() - if cluster, ok := ctx["cluster"]; ok { - ctx["Cluster"] = cluster - ctx["ClusterCreated"] = true - } else { - ctx["Cluster"] = fmt.Sprintf(`"%s"`, az.Cluster()) - } - - scaffold, err := GetProviderScaffold(api.ToGQLClientProvider(api.ProviderAzure), version) - if err != nil { - return "", err - } - return template.RenderString(scaffold, ctx) -} - func (az *AzureProvider) createContainer(bucket string) (err error) { acc, err := az.upsertStorageAccount(utils.ToString(az.Context()["StorageAccount"])) if err != nil { diff --git a/pkg/provider/equinix.go b/pkg/provider/equinix.go index 40fe3b0ba..a51902e15 100644 --- a/pkg/provider/equinix.go +++ b/pkg/provider/equinix.go @@ -32,8 +32,6 @@ import ( "github.com/pluralsh/plural-cli/pkg/config" "github.com/pluralsh/plural-cli/pkg/manifest" "github.com/pluralsh/plural-cli/pkg/provider/permissions" - "github.com/pluralsh/plural-cli/pkg/template" - "github.com/pluralsh/plural-cli/pkg/utils" pluralErrors "github.com/pluralsh/plural-cli/pkg/utils/errors" "github.com/pluralsh/plural-cli/pkg/utils/git" "github.com/pluralsh/plural-cli/pkg/utils/pathing" @@ -121,33 +119,6 @@ func (equinix *EQUINIXProvider) CreateBucket() error { return nil } -func (equinix *EQUINIXProvider) CreateBackend(prefix string, version string, ctx map[string]interface{}) (string, error) { - - ctx["Region"] = equinix.Region() - ctx["Bucket"] = equinix.Bucket() - ctx["Prefix"] = prefix - ctx["ClusterCreated"] = false - ctx["__CLUSTER__"] = equinix.Cluster() - if cluster, ok := ctx["cluster"]; ok { - ctx["Cluster"] = cluster - ctx["ClusterCreated"] = true - } else { - ctx["Cluster"] = fmt.Sprintf(`"%s"`, equinix.Cluster()) - } - - if err := utils.WriteFile(pathing.SanitizeFilepath(filepath.Join(equinix.Bucket(), ".gitignore")), []byte("!/**")); err != nil { - return "", err - } - if err := utils.WriteFile(pathing.SanitizeFilepath(filepath.Join(equinix.Bucket(), ".gitattributes")), []byte("/** filter=plural-crypt diff=plural-crypt\n.gitattributes !filter !diff")); err != nil { - return "", err - } - scaffold, err := GetProviderScaffold(api.ToGQLClientProvider(api.ProviderEquinix), version) - if err != nil { - return "", err - } - return template.RenderString(scaffold, ctx) -} - func (equinix *EQUINIXProvider) KubeConfig() error { // TODO: deal with current configured KUBECONFIG // TODO: deal with KUBECONFIG env var if it is set, as then the output KUBECONFIG file will be used diff --git a/pkg/provider/gcp.go b/pkg/provider/gcp.go index 1e521ea81..a69d4d2e9 100644 --- a/pkg/provider/gcp.go +++ b/pkg/provider/gcp.go @@ -29,7 +29,6 @@ import ( "github.com/pluralsh/plural-cli/pkg/manifest" "github.com/pluralsh/plural-cli/pkg/provider/permissions" provUtils "github.com/pluralsh/plural-cli/pkg/provider/utils" - "github.com/pluralsh/plural-cli/pkg/template" "github.com/pluralsh/plural-cli/pkg/utils" utilerr "github.com/pluralsh/plural-cli/pkg/utils/errors" ) @@ -253,34 +252,6 @@ func (gcp *GCPProvider) CreateBucket() error { return utilerr.ErrorWrap(err, fmt.Sprintf("Failed to create terraform state bucket %s", gcp.Bucket())) } -func (gcp *GCPProvider) CreateBackend(prefix string, version string, ctx map[string]interface{}) (string, error) { - if err := gcp.CreateBucket(); err != nil { - return "", err - } - - ctx["Project"] = gcp.Project() - // Location is here for backwards compatibility - ctx["Location"] = gcp.Context()["Location"] - ctx["Region"] = gcp.Region() - ctx["Bucket"] = gcp.Bucket() - _, location := gcp.clusterLocation() - ctx["ClusterLocation"] = location - ctx["Prefix"] = prefix - ctx["ClusterCreated"] = false - ctx["__CLUSTER__"] = gcp.Cluster() - if cluster, ok := ctx["cluster"]; ok { - ctx["Cluster"] = cluster - ctx["ClusterCreated"] = true - } else { - ctx["Cluster"] = fmt.Sprintf(`"%s"`, gcp.Cluster()) - } - scaffold, err := GetProviderScaffold(api.ToGQLClientProvider(api.ProviderGCP), version) - if err != nil { - return "", err - } - return template.RenderString(scaffold, ctx) -} - func (gcp *GCPProvider) mkBucket(name string) error { bkt := gcp.storageClient.Bucket(name) if _, err := bkt.Attrs(context.Background()); err != nil { diff --git a/pkg/provider/kind.go b/pkg/provider/kind.go deleted file mode 100644 index e8f5782bd..000000000 --- a/pkg/provider/kind.go +++ /dev/null @@ -1,158 +0,0 @@ -package provider - -import ( - "fmt" - "os/exec" - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/kubernetes" - - "github.com/AlecAivazis/survey/v2" - v1 "k8s.io/api/core/v1" - - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/provider/permissions" - "github.com/pluralsh/plural-cli/pkg/template" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" -) - -type KINDProvider struct { - Clust string `survey:"cluster"` - Proj string - bucket string - Reg string - ctx map[string]interface{} - writer manifest.Writer -} - -var kindSurvey = []*survey.Question{ - { - Name: "cluster", - Prompt: &survey.Input{Message: "Enter the name of your cluster:"}, - Validate: validCluster, - }, -} - -func mkKind(conf config.Config) (provider *KINDProvider, err error) { - var resp struct { - Cluster string - } - if err = survey.Ask(kindSurvey, &resp); err != nil { - return - } - - provider = &KINDProvider{ - resp.Cluster, - "", - "", - "us-east-1", - map[string]interface{}{}, - nil, - } - - projectManifest := manifest.ProjectManifest{ - Cluster: provider.Cluster(), - Project: provider.Project(), - Provider: api.ProviderKind, - Region: provider.Region(), - Context: provider.Context(), - Owner: &manifest.Owner{Email: conf.Email, Endpoint: conf.Endpoint}, - } - - provider.writer = projectManifest.Configure(cloudFlag, provider.Cluster()) - provider.bucket = projectManifest.Bucket - return -} - -func kindFromManifest(man *manifest.ProjectManifest) (*KINDProvider, error) { - return &KINDProvider{man.Cluster, man.Project, man.Bucket, man.Region, man.Context, nil}, nil -} - -func (kind *KINDProvider) CreateBucket() error { return nil } - -func (kind *KINDProvider) CreateBackend(prefix string, version string, ctx map[string]interface{}) (string, error) { - - ctx["Region"] = kind.Region() - ctx["Bucket"] = kind.Bucket() - ctx["Prefix"] = prefix - ctx["ClusterCreated"] = false - ctx["__CLUSTER__"] = kind.Cluster() - if cluster, ok := ctx["cluster"]; ok { - ctx["Cluster"] = cluster - ctx["ClusterCreated"] = true - } else { - ctx["Cluster"] = fmt.Sprintf(`"%s"`, kind.Cluster()) - } - - if err := utils.WriteFile(pathing.SanitizeFilepath(filepath.Join(kind.Bucket(), ".gitignore")), []byte("!/**")); err != nil { - return "", err - } - if err := utils.WriteFile(pathing.SanitizeFilepath(filepath.Join(kind.Bucket(), ".gitattributes")), []byte("/** filter=plural-crypt diff=plural-crypt\n.gitattributes !filter !diff")); err != nil { - return "", err - } - scaffold, err := GetProviderScaffold(api.ToGQLClientProvider(api.ProviderKind), version) - if err != nil { - return "", err - } - return template.RenderString(scaffold, ctx) -} - -func (kind *KINDProvider) KubeConfig() error { - if kubernetes.InKubernetes() { - return nil - } - cmd := exec.Command( - "kind", "export", "kubeconfig", "--name", kind.Cluster()) - return utils.Execute(cmd) -} - -func (kind *KINDProvider) KubeContext() string { - return fmt.Sprintf("kind-%s", kind.Cluster()) -} - -func (kind *KINDProvider) Name() string { - return api.ProviderKind -} - -func (kind *KINDProvider) Cluster() string { - return kind.Clust -} - -func (kind *KINDProvider) Project() string { - return kind.Proj -} - -func (kind *KINDProvider) Bucket() string { - return kind.bucket -} - -func (kind *KINDProvider) Region() string { - return kind.Reg -} - -func (*KINDProvider) Permissions() (permissions.Checker, error) { - return permissions.NullChecker(), nil -} - -func (kind *KINDProvider) Context() map[string]interface{} { - return kind.ctx -} - -func (prov *KINDProvider) Decommision(node *v1.Node) error { - return nil -} - -func (prov *KINDProvider) Preflights() []*Preflight { - return nil -} - -func (kind *KINDProvider) Flush() error { - if kind.writer == nil { - return nil - } - - return kind.writer() -} diff --git a/pkg/provider/linode.go b/pkg/provider/linode.go index 088b4991b..73c9e1010 100644 --- a/pkg/provider/linode.go +++ b/pkg/provider/linode.go @@ -173,10 +173,6 @@ func (l *LinodeProvider) CreateBucket() error { return godotenv.Load(envPath) } -func (l *LinodeProvider) CreateBackend(prefix string, version string, ctx map[string]interface{}) (string, error) { - return "", nil -} - func (l *LinodeProvider) KubeConfig() error { if kubernetes.InKubernetes() { return nil diff --git a/pkg/provider/provider.go b/pkg/provider/provider.go index 96d4905ba..eac3969b1 100644 --- a/pkg/provider/provider.go +++ b/pkg/provider/provider.go @@ -5,15 +5,13 @@ import ( "strings" "github.com/AlecAivazis/survey/v2" - "github.com/pluralsh/polly/algorithms" - "github.com/pluralsh/polly/containers" - v1 "k8s.io/api/core/v1" - "github.com/pluralsh/plural-cli/pkg/api" "github.com/pluralsh/plural-cli/pkg/config" "github.com/pluralsh/plural-cli/pkg/manifest" "github.com/pluralsh/plural-cli/pkg/provider/permissions" "github.com/pluralsh/plural-cli/pkg/utils" + "github.com/pluralsh/polly/algorithms" + "github.com/pluralsh/polly/containers" ) var cloudFlag bool @@ -27,10 +25,8 @@ type Provider interface { Bucket() string KubeConfig() error KubeContext() string - CreateBackend(prefix string, version string, ctx map[string]interface{}) (string, error) CreateBucket() error Context() map[string]interface{} - Decommision(node *v1.Node) error Preflights() []*Preflight Permissions() (permissions.Checker, error) Flush() error @@ -62,26 +58,6 @@ var ( filterProviders = containers.ToSet([]string{"GENERIC", "KIND", "LINODE"}) ) -func IgnoreProviders(prov []string) { - filterProviders = containers.ToSet([]string{"GENERIC", "KIND"}) -} - -func GetProviderScaffold(provider, version string) (string, error) { - if providers.Scaffolds == nil { - providers.Scaffolds = make(map[string]string) - } - _, ok := providers.Scaffolds[provider] - if !ok { - client := api.NewClient() - scaffold, err := client.GetTfProviderScaffold(provider, version) - providers.Scaffolds[provider] = scaffold - if err != nil { - return "", api.GetErrorResponse(err, "GetTfProviderScaffold") - } - } - return providers.Scaffolds[provider], nil -} - func GetProvider() (Provider, error) { path := manifest.ProjectManifestPath() if project, err := manifest.ReadProject(path); err == nil { @@ -121,8 +97,6 @@ func FromManifest(man *manifest.ProjectManifest) (Provider, error) { return AzureFromManifest(man, nil) case api.ProviderEquinix: return equinixFromManifest(man) - case api.ProviderKind: - return kindFromManifest(man) case api.TEST: return testFromManifest(man) default: @@ -141,8 +115,6 @@ func New(provider string) (Provider, error) { return mkAzure(conf) case api.ProviderEquinix: return mkEquinix(conf) - case api.ProviderKind: - return mkKind(conf) default: return nil, fmt.Errorf("invalid provider name: %s", provider) } diff --git a/pkg/provider/test.go b/pkg/provider/test.go index 2b4a578a2..90d092515 100644 --- a/pkg/provider/test.go +++ b/pkg/provider/test.go @@ -46,10 +46,6 @@ func (t TestProvider) KubeContext() string { func (t TestProvider) CreateBucket() error { return nil } -func (t TestProvider) CreateBackend(prefix string, version string, ctx map[string]interface{}) (string, error) { - return "test", nil -} - func (t TestProvider) Context() map[string]interface{} { return map[string]interface{}{} } diff --git a/pkg/proxy/database.go b/pkg/proxy/database.go deleted file mode 100644 index e018640fd..000000000 --- a/pkg/proxy/database.go +++ /dev/null @@ -1,67 +0,0 @@ -package proxy - -import ( - "fmt" - "os" - "os/exec" - "time" - - "github.com/pluralsh/plural-cli/pkg/kubernetes/portforward" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-operator/apis/platform/v1alpha1" -) - -type postgres struct { - Proxy *v1alpha1.Proxy - Pwd string -} - -type dbConnection interface { - Connect(namespace string) error -} - -func buildConnection(secret string, proxy *v1alpha1.Proxy) (dbConnection, error) { - switch proxy.Spec.DbConfig.Engine { - case "postgres": - return &postgres{Pwd: secret, Proxy: proxy}, nil - default: - return nil, fmt.Errorf("Unsupported engine %s", proxy.Spec.DbConfig.Engine) - } -} - -func (pg *postgres) Connect(namespace string) error { - err := portForward(namespace, pg.Proxy, pg.Proxy.Spec.DbConfig.Port) - if err != nil { - return err - } - - utils.Highlight("Wait a bit while the port-forward boots up\n") - time.Sleep(5 * time.Second) - cmd := exec.Command("psql", fmt.Sprintf("host=127.0.0.1 sslmode=allow user=%s dbname=%s", pg.Proxy.Spec.Credentials.User, pg.Proxy.Spec.DbConfig.Name)) - cmd.Env = os.Environ() - cmd.Env = append(cmd.Env, fmt.Sprintf("PGPASSWORD=%s", pg.Pwd)) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - cmd.Stdin = os.Stdin - return cmd.Run() -} - -func portForward(namespace string, proxy *v1alpha1.Proxy, port int32) error { - errorChan := make(chan error, 1) - stopChan, readyChan := make(chan struct{}, 1), make(chan struct{}) - var err error - go func() { - err = portforward.PortForward(namespace, proxy.Spec.Target, []string{fmt.Sprint(port)}, stopChan, readyChan) - errorChan <- err - }() - - select { - case <-readyChan: - break - case <-errorChan: - close(stopChan) - close(errorChan) - break - } - return err -} diff --git a/pkg/proxy/proxy.go b/pkg/proxy/proxy.go deleted file mode 100644 index 18582c1b0..000000000 --- a/pkg/proxy/proxy.go +++ /dev/null @@ -1,47 +0,0 @@ -package proxy - -import ( - "fmt" - - "github.com/pluralsh/plural-cli/pkg/kubernetes" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-operator/apis/platform/v1alpha1" -) - -func List(kube kubernetes.Kube, namespace string) (*v1alpha1.ProxyList, error) { - return kube.ProxyList(namespace) -} - -func Print(l *v1alpha1.ProxyList) error { - headers := []string{"Name", "Type", "Target"} - return utils.PrintTable[v1alpha1.Proxy](l.Items, headers, func(p v1alpha1.Proxy) ([]string, error) { - return []string{p.Name, string(p.Spec.Type), p.Spec.Target}, nil - }) -} - -func Exec(kube kubernetes.Kube, namespace string, name string) error { - proxy, err := kube.Proxy(namespace, name) - if err != nil { - return err - } - - t := proxy.Spec.Type - switch t { - case v1alpha1.Db: - secret, err := fetchSecret(namespace, kube, proxy.Spec.Credentials) - if err != nil { - return err - } - conn, err := buildConnection(secret, proxy) - if err != nil { - return err - } - return conn.Connect(namespace) - case v1alpha1.Sh: - return execShell(namespace, proxy) - case v1alpha1.Web: - return execWeb(namespace, proxy, kube) - default: - return fmt.Errorf("Unhandled proxy type %s", t) - } -} diff --git a/pkg/proxy/secret.go b/pkg/proxy/secret.go deleted file mode 100644 index 40289ec6a..000000000 --- a/pkg/proxy/secret.go +++ /dev/null @@ -1,55 +0,0 @@ -package proxy - -import ( - "fmt" - - "github.com/pluralsh/plural-cli/pkg/kubernetes" - "github.com/pluralsh/plural-operator/apis/platform/v1alpha1" - - v1 "k8s.io/api/core/v1" -) - -type UserCredentials struct { - User string - Password string -} - -func fetchSecret(namespace string, k kubernetes.Kube, creds *v1alpha1.Credentials) (string, error) { - secret, err := k.Secret(namespace, creds.Secret) - if err != nil { - return "", err - } - - val, ok := secret.Data[creds.Key] - if !ok { - return "", fmt.Errorf("Could not find credential key") - } - - return string(val), nil -} - -func fetchUserPassword(secret *v1.Secret, creds *v1alpha1.Credentials) (user *UserCredentials, err error) { - pwd, ok := secret.Data[creds.Key] - if !ok { - err = fmt.Errorf("Could not find password key") - return - } - - username := creds.User - if creds.UserKey != "" { - uname, ok := secret.Data[creds.UserKey] - if !ok { - err = fmt.Errorf("Could not find password key") - return - } - username = string(uname) - } - - if username == "" { - err = fmt.Errorf("No username found") - return - } - - user = &UserCredentials{User: username, Password: string(pwd)} - return -} diff --git a/pkg/proxy/shell.go b/pkg/proxy/shell.go deleted file mode 100644 index 6941446f9..000000000 --- a/pkg/proxy/shell.go +++ /dev/null @@ -1,18 +0,0 @@ -package proxy - -import ( - "github.com/pluralsh/plural-cli/pkg/kubernetes/exec" - "github.com/pluralsh/plural-operator/apis/platform/v1alpha1" -) - -func execShell(namespace string, proxy *v1alpha1.Proxy) error { - shell := proxy.Spec.ShConfig - var rest []string - if len(shell.Command) > 0 { - rest = append([]string{shell.Command}, shell.Args...) - } else { - rest = []string{"/bin/sh"} - } - - return exec.Exec(namespace, proxy.Spec.Target, rest) -} diff --git a/pkg/proxy/web.go b/pkg/proxy/web.go deleted file mode 100644 index 1cb2ebc45..000000000 --- a/pkg/proxy/web.go +++ /dev/null @@ -1,56 +0,0 @@ -package proxy - -import ( - "fmt" - "time" - - "github.com/pluralsh/plural-cli/pkg/kubernetes" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-operator/apis/platform/v1alpha1" -) - -func execWeb(namespace string, proxy *v1alpha1.Proxy, kube kubernetes.Kube) error { - config := proxy.Spec.WebConfig - err := portForward(namespace, proxy, config.Port) - if err != nil { - return err - } - - utils.Highlight("Wait a bit while the port-forward boots up\n\n") - time.Sleep(5 * time.Second) - - if err := printCredentials(proxy, namespace, kube); err != nil { - return err - } - fmt.Printf("\nVisit http://localhost:%d%s\n", config.Port, config.Path) - if _, err := utils.ReadLine("Press enter to close the proxy"); err != nil { - return err - } - return nil -} - -func printCredentials(proxy *v1alpha1.Proxy, namespace string, kube kubernetes.Kube) error { - creds := proxy.Spec.Credentials - if creds == nil { - return nil - } - - secret, err := kube.Secret(namespace, creds.Secret) - if err != nil { - return err - } - user, err := fetchUserPassword(secret, creds) - if err != nil { - return err - } - - highlightedEntry("Username", user.User) - highlightedEntry("Password", user.Password) - - return nil -} - -func highlightedEntry(label, value string) { - utils.Highlight(label + ": ") - fmt.Println(value) -} diff --git a/pkg/scaffold/application.go b/pkg/scaffold/application.go deleted file mode 100644 index f85597eb8..000000000 --- a/pkg/scaffold/application.go +++ /dev/null @@ -1,66 +0,0 @@ -package scaffold - -import ( - "os" - "path/filepath" - - "github.com/imdario/mergo" - "github.com/pluralsh/plural-cli/pkg/output" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "sigs.k8s.io/yaml" -) - -type Applications struct { - Root string -} - -func BuildApplications(root string) *Applications { - return &Applications{Root: root} -} - -func NewApplications() (*Applications, error) { - root, err := git.Root() - if err != nil { - return nil, err - } - - return BuildApplications(root), nil -} - -func (apps *Applications) HelmValues(app string) (map[string]interface{}, error) { - valuesFile := pathing.SanitizeFilepath(filepath.Join(apps.Root, app, "helm", app, "values.yaml")) - vals := make(map[string]interface{}) - valsContent, err := os.ReadFile(valuesFile) - if err != nil { - return nil, err - } - if err := yaml.Unmarshal(valsContent, &vals); err != nil { - return nil, err - } - - defaultValuesFile := pathing.SanitizeFilepath(filepath.Join(apps.Root, app, "helm", app, "default-values.yaml")) - defaultVals := make(map[string]interface{}) - if utils.Exists(defaultValuesFile) { - defaultValsContent, err := os.ReadFile(defaultValuesFile) - if err != nil { - return nil, err - } - if err := yaml.Unmarshal(defaultValsContent, &defaultVals); err != nil { - return nil, err - } - } - - err = mergo.Merge(&defaultVals, vals, mergo.WithOverride) - if err != nil { - return nil, err - } - - return defaultVals, err -} - -func (apps *Applications) TerraformValues(app string) (map[string]interface{}, error) { - out, err := output.Read(pathing.SanitizeFilepath(filepath.Join(apps.Root, app, "output.yaml"))) - return out.Terraform, err -} diff --git a/pkg/scaffold/application_test.go b/pkg/scaffold/application_test.go deleted file mode 100644 index d5c56fb8b..000000000 --- a/pkg/scaffold/application_test.go +++ /dev/null @@ -1,74 +0,0 @@ -package scaffold_test - -import ( - "os" - "path/filepath" - "testing" - - "github.com/pluralsh/plural-cli/pkg/scaffold" - "github.com/stretchr/testify/assert" -) - -const values_file = `console: - ingress: - console_dns: console.onplural.sh -` - -const defaultValues_file = `console: - enabled: true - ingress: - annotations: - external-dns.alpha.kubernetes.io/target: 127.0.0.1 - console_dns: console.onplural.sh - license: abc - provider: kind -` - -func TestListRepositories(t *testing.T) { - tests := []struct { - name string - appName string - expectedResponse map[string]interface{} - }{ - { - name: `test HelmValues`, - appName: "test", - expectedResponse: map[string]interface{}{ - "console": map[string]interface{}{ - "enabled": true, - "ingress": map[string]interface{}{ - "annotations": map[string]interface{}{ - "external-dns.alpha.kubernetes.io/target": "127.0.0.1", - }, - "console_dns": "console.onplural.sh", - }, - "license": "abc", - "provider": "kind", - }, - }, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - dir, err := os.MkdirTemp("", "config") - assert.NoError(t, err) - defer os.RemoveAll(dir) - - dirPath := filepath.Join(dir, test.appName, "helm", test.appName) - err = os.MkdirAll(dirPath, os.ModePerm) - assert.NoError(t, err) - err = os.WriteFile(filepath.Join(dirPath, "default-values.yaml"), []byte(defaultValues_file), 0644) - assert.NoError(t, err) - err = os.WriteFile(filepath.Join(dirPath, "values.yaml"), []byte(values_file), 0644) - assert.NoError(t, err) - - application := scaffold.Applications{ - Root: dir, - } - res, err := application.HelmValues("test") - - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, res) - }) - } -} diff --git a/pkg/scaffold/constants.go b/pkg/scaffold/constants.go deleted file mode 100644 index aa3401772..000000000 --- a/pkg/scaffold/constants.go +++ /dev/null @@ -1,116 +0,0 @@ -package scaffold - -import ( - "path/filepath" -) - -const ( - defaultNotes = `Your {{ .Release.Name }} installation` - sep = string(filepath.Separator) - - defaultIgnore = `# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ -` - defaultApplication = `apiVersion: app.k8s.io/v1beta1 -kind: Application -metadata: - name: {{ .Name }} -spec: - selector: - matchLabels: {} - componentKinds: - - group: v1 - kind: Service - - group: networking.k8s.io - kind: Ingress - - group: cert-manager.io - kind: Certificate - - group: apps - kind: StatefulSet - - group: apps - kind: Deployment - - group: batch - kind: CronJob - - group: batch - kind: Job - descriptor: - type: {{ .Name }} - version: "{{ .Version }}" - description: {{ .Description }} - icons: - - src: {{ .Icon }} - {{ if .DarkIcon }} - - src: {{ .DarkIcon }} - {{ end }} -` - - appTemplate = ` - {{- if .Values.global }} - {{- if .Values.global.application }} - {{- if .Values.global.application.links }} - links: - {{ toYaml .Values.global.application.links | nindent 6 }} - {{- end }} - {{- if .Values.global.application.info }} - info: - {{ toYaml .Values.global.application.info | nindent 4 }} - {{- end }} - {{- end }} - {{- end }} -` - - licenseSecret = `apiVersion: v1 -kind: Secret -metadata: - name: plural-license-secret -stringData: - license: {{ .Values.plrl.license }} -` - - license = `apiVersion: platform.plural.sh/v1alpha1 -kind: License -metadata: - name: %s -spec: - secretRef: - name: plural-license-secret - key: license -` - - // ChartfileName is the default Chart file name. - ChartfileName = "Chart.yaml" - // ValuesfileName is the default values file name. - TemplatesDir = "templates" - // ChartsDir is the relative directory name for charts dependencies. - ChartsDir = "charts" - // IgnorefileName is the name of the Helm ignore file. - IgnorefileName = ".helmignore" - // NotesName is the name of the example NOTES.txt file. - NotesName = TemplatesDir + sep + "NOTES.txt" - // file to put the default application resource in - ApplicationName = TemplatesDir + sep + "application.yaml" - // file to put the license secret in - LicenseSecretName = TemplatesDir + sep + "secret.yaml" - // file to put the license crd in - LicenseCrdName = TemplatesDir + sep + "license.yaml" -) diff --git a/pkg/scaffold/crd.go b/pkg/scaffold/crd.go deleted file mode 100644 index 3a4ed6e8b..000000000 --- a/pkg/scaffold/crd.go +++ /dev/null @@ -1,52 +0,0 @@ -package scaffold - -import ( - "fmt" - "io" - "net/http" - "os" - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/plural-cli/pkg/wkspace" -) - -func (s *Scaffold) buildCrds(wk *wkspace.Workspace) error { - utils.Highlight("syncing crds") - if err := os.RemoveAll(s.Root); err != nil { - return err - } - - if err := os.MkdirAll(s.Root, os.ModePerm); err != nil { - return err - } - - for _, chartInst := range wk.Charts { - for _, crd := range chartInst.Version.Crds { - utils.Highlight(".") - if err := writeCrd(s.Root, &crd); err != nil { - fmt.Print("\n") - return err - } - } - } - - utils.Success("\u2713\n") - return nil -} - -func writeCrd(path string, crd *api.Crd) error { - resp, err := http.Get(crd.Blob) - if err != nil { - return err - } - - contents, err := io.ReadAll(resp.Body) - if err != nil { - return err - } - - return os.WriteFile(pathing.SanitizeFilepath(filepath.Join(path, crd.Name)), contents, 0644) -} diff --git a/pkg/scaffold/creator.go b/pkg/scaffold/creator.go deleted file mode 100644 index cdfde92ae..000000000 --- a/pkg/scaffold/creator.go +++ /dev/null @@ -1,102 +0,0 @@ -package scaffold - -import ( - "os" - "path/filepath" - - "github.com/AlecAivazis/survey/v2" - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "helm.sh/helm/v3/pkg/chartutil" -) - -var categories = []string{ - "data", - "productivity", - "devops", - "database", - "messaging", - "security", - "network", -} - -var scaffoldSurvey = []*survey.Question{ - { - Name: "application", - Prompt: &survey.Input{Message: "Enter the name of your application:"}, - Validate: utils.ValidateAlphaNumeric, - }, - { - Name: "publisher", - Prompt: &survey.Input{Message: "Enter the name of your publisher:"}, - Validate: survey.Required, - }, - { - Name: "category", - Prompt: &survey.Select{ - Message: "Enter the category for your application:", - Options: categories, - }, - Validate: survey.Required, - }, - { - Name: "postgres", - Prompt: &survey.Confirm{Message: "Will your application need a postgres database?"}, - Validate: survey.Required, - }, - { - Name: "ingress", - Prompt: &survey.Confirm{Message: "Does your application need an ingress?"}, - Validate: survey.Required, - }, -} - -func ApplicationScaffold(client api.Client) error { - input := api.ScaffoldInputs{} - if err := survey.Ask(scaffoldSurvey, &input); err != nil { - return err - } - - scaffolds, err := client.Scaffolds(&input) - if err != nil { - return api.GetErrorResponse(err, "Scaffolds") - } - - app := input.Application - helmPath := pathing.SanitizeFilepath(filepath.Join(app, "helm")) - pwd, err := os.Getwd() - if err != nil { - return err - } - - if err := os.MkdirAll(helmPath, 0755); err != nil { - return err - } - - if err := os.Chdir(helmPath); err != nil { - return err - } - - if err := createHelm(app); err != nil { - return err - } - - if err := os.Chdir(pathing.SanitizeFilepath(filepath.Join(pwd, app))); err != nil { - return err - } - - for _, scaffold := range scaffolds { - if err := utils.WriteFile(scaffold.Path, []byte(scaffold.Content)); err != nil { - return err - } - } - - return nil -} - -func createHelm(name string) error { - chartname := filepath.Base(name) - _, err := chartutil.Create(chartname, filepath.Dir(name)) - return err -} diff --git a/pkg/scaffold/default.go b/pkg/scaffold/default.go deleted file mode 100644 index b52b41abc..000000000 --- a/pkg/scaffold/default.go +++ /dev/null @@ -1,59 +0,0 @@ -package scaffold - -import ( - "os" - "path/filepath" - - "github.com/hashicorp/hcl" - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/plural-cli/pkg/wkspace" -) - -func Read(path string) (*Build, error) { - fullpath := pathing.SanitizeFilepath(filepath.Join(path, "build.hcl")) - contents, err := os.ReadFile(fullpath) - build := Build{} - if err != nil { - return &build, err - } - - err = hcl.Decode(&build, string(contents)) - if err != nil { - return &build, err - } - - return &build, nil -} - -func Default(w *wkspace.Workspace, name string) (b *Build) { - return &Build{ - Metadata: &Metadata{Name: name}, - Scaffolds: []*Scaffold{ - { - Name: "terraform", - Path: "terraform", - Type: TF, - }, - { - Name: "crds", - Type: CRD, - Path: "crds", - }, - { - Name: "helm", - Type: HELM, - Path: pathing.SanitizeFilepath(filepath.Join("helm", name)), - Preflight: []*executor.Step{ - { - Name: "update-deps", - Command: "plural", - Args: []string{"wkspace", "helm-deps"}, - Target: "Chart.yaml", - Sha: "", - }, - }, - }, - }, - } -} diff --git a/pkg/scaffold/helm.go b/pkg/scaffold/helm.go deleted file mode 100644 index 26204d60c..000000000 --- a/pkg/scaffold/helm.go +++ /dev/null @@ -1,431 +0,0 @@ -package scaffold - -import ( - "bytes" - "fmt" - "os" - "path/filepath" - "sort" - "strings" - ttpl "text/template" - - "gopkg.in/yaml.v2" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/provider" - scftmpl "github.com/pluralsh/plural-cli/pkg/scaffold/template" - "github.com/pluralsh/plural-cli/pkg/template" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/errors" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/plural-cli/pkg/wkspace" -) - -type dependency struct { - Name string - Version string - Repository string - Condition string -} - -type chart struct { - ApiVersion string `yaml:"apiVersion"` - Name string - Description string - Version string - AppVersion string `yaml:"appVersion"` - Dependencies []dependency -} - -func (s *Scaffold) handleHelm(wk *wkspace.Workspace) error { - if err := s.createChart(wk); err != nil { - return err - } - - if err := s.buildChartValues(wk); err != nil { - return err - } - - return nil -} - -func (s *Scaffold) chartDependencies(w *wkspace.Workspace) []dependency { - dependencies := make([]dependency, len(w.Charts)) - repo := w.Installation.Repository - for i, chartInstallation := range w.Charts { - dependencies[i] = dependency{ - chartInstallation.Chart.Name, - chartInstallation.Version.Version, - repoUrl(w, repo.Name, chartInstallation.Chart.Name), - fmt.Sprintf("%s.enabled", chartInstallation.Chart.Name), - } - } - sort.SliceStable(dependencies, func(i, j int) bool { - return dependencies[i].Name < dependencies[j].Name - }) - return dependencies -} - -func Notes(installation *api.Installation) error { - repoRoot, err := git.Root() - if err != nil { - return err - } - - if installation.Repository != nil && installation.Repository.Notes == "" { - return nil - } - - context, err := manifest.ReadContext(manifest.ContextPath()) - if err != nil { - return err - } - - prov, err := provider.GetProvider() - if err != nil { - return err - } - - repo := installation.Repository.Name - ctx, _ := context.Repo(installation.Repository.Name) - - vals := map[string]interface{}{ - "Values": ctx, - "Configuration": context.Configuration, - "License": installation.LicenseKey, - "OIDC": installation.OIDCProvider, - "Region": prov.Region(), - "Project": prov.Project(), - "Cluster": prov.Cluster(), - "Config": config.Read(), - "Provider": prov.Name(), - "Context": prov.Context(), - "Applications": BuildApplications(repoRoot), - } - - if context.Globals != nil { - vals["Globals"] = context.Globals - } - - if context.SMTP != nil { - vals["SMTP"] = context.SMTP.Configuration() - } - - if installation.AcmeKeyId != "" { - vals["Acme"] = map[string]string{ - "KeyId": installation.AcmeKeyId, - "Secret": installation.AcmeSecret, - } - } - - apps := &Applications{Root: repoRoot} - values, err := apps.HelmValues(repo) - if err != nil { - return err - } - - for k, v := range values { - vals[k] = v - } - - tmpl, err := template.MakeTemplate(installation.Repository.Notes) - if err != nil { - return err - } - - var buf bytes.Buffer - buf.Grow(5 * 1024) - if err := tmpl.Execute(&buf, vals); err != nil { - return err - } - - fmt.Println(buf.String()) - return nil -} - -func (s *Scaffold) buildChartValues(w *wkspace.Workspace) error { - ctx, _ := w.Context.Repo(w.Installation.Repository.Name) - valuesFile := pathing.SanitizeFilepath(filepath.Join(s.Root, "values.yaml")) - defaultValuesFile := pathing.SanitizeFilepath(filepath.Join(s.Root, "default-values.yaml")) - defaultPrevVals, _ := prevValues(defaultValuesFile) - prevVals, _ := prevValues(valuesFile) - - if !utils.Exists(valuesFile) { - if err := os.WriteFile(valuesFile, []byte("{}\n"), 0644); err != nil { - return err - } - } - - conf := config.Read() - - apps, err := NewApplications() - if err != nil { - return err - } - - proj, err := manifest.FetchProject() - if err != nil { - return err - } - - vals := map[string]interface{}{ - "Values": ctx, - "Configuration": w.Context.Configuration, - "License": w.Installation.LicenseKey, - "OIDC": w.Installation.OIDCProvider, - "Region": w.Provider.Region(), - "Project": w.Provider.Project(), - "Cluster": w.Provider.Cluster(), - "Config": conf, - "Provider": w.Provider.Name(), - "Context": w.Provider.Context(), - "Network": proj.Network, - "Applications": apps, - } - - if proj.AvailabilityZones != nil { - vals["AvailabilityZones"] = proj.AvailabilityZones - } - - if w.Context.SMTP != nil { - vals["SMTP"] = w.Context.SMTP.Configuration() - } - - if w.Context.Globals != nil { - vals["Globals"] = w.Context.Globals - } - - if w.Installation.AcmeKeyId != "" { - vals["Acme"] = map[string]string{ - "KeyId": w.Installation.AcmeKeyId, - "Secret": w.Installation.AcmeSecret, - } - } - - // get previous values from default-values.yaml if exists otherwise from values.yaml - if utils.Exists(defaultValuesFile) { - for k, v := range defaultPrevVals { - vals[k] = v - } - } else { - for k, v := range prevVals { - vals[k] = v - } - } - defaultValues, err := scftmpl.BuildValuesFromTemplate(vals, w) - if err != nil { - return err - } - - io, err := yaml.Marshal(defaultValues) - if err != nil { - return err - } - - // TODO: Remove this after testing. It is deprecated as values.yaml migration should not longer be required. - // mapValues, err := getValues(valuesFile) - // if err != nil { - // return err - // } - // patchValues, err := utils.PatchInterfaceMap(defaultValues, mapValues) - // if err != nil { - // return err - // } - // - // values, err := yaml.Marshal(patchValues) - // if err != nil { - // return err - // } - // if err := utils.WriteFile(valuesFile, values); err != nil { - // return err - // } - - return utils.WriteFile(defaultValuesFile, io) -} - -//nolint:golint,unused -func getValues(path string) (map[string]map[string]interface{}, error) { - values := map[string]map[string]interface{}{} - valuesFromFile, err := os.ReadFile(path) - if err != nil { - return nil, err - } - if err := yaml.Unmarshal(valuesFromFile, &values); err != nil { - return nil, err - } - return values, nil -} - -func prevValues(filename string) (map[string]map[string]interface{}, error) { - vals := make(map[string]map[interface{}]interface{}) - parsed := make(map[string]map[string]interface{}) - if !utils.Exists(filename) { - return parsed, nil - } - - contents, err := os.ReadFile(filename) - if err != nil { - return parsed, err - } - if err := yaml.Unmarshal(contents, &vals); err != nil { - return parsed, err - } - - for k, v := range vals { - parsed[k] = utils.CleanUpInterfaceMap(v) - } - - return parsed, nil -} - -func (s *Scaffold) createChart(w *wkspace.Workspace) error { - repo := w.Installation.Repository - if len(w.Charts) == 0 { - return utils.HighlightError(fmt.Errorf("No charts installed for this repository. You might need to run `plural bundle install %s `.", repo.Name)) - } - - version := "0.1.0" - filename := pathing.SanitizeFilepath(filepath.Join(s.Root, ChartfileName)) - - if utils.Exists(filename) { - content, err := os.ReadFile(filename) - if err != nil { - return errors.ErrorWrap(err, "Failed to read existing Chart.yaml") - } - - chart := chart{} - if err := yaml.Unmarshal(content, &chart); err != nil { - return errors.ErrorWrap(err, "Existing Chart.yaml has invalid yaml formatting") - } - - version = chart.Version - } - - appVersion := appVersion(w.Charts) - chart := &chart{ - ApiVersion: "v2", - Name: repo.Name, - Description: fmt.Sprintf("A helm chart for %s", repo.Name), - Version: version, - AppVersion: appVersion, - Dependencies: s.chartDependencies(w), - } - - chartFile, err := yaml.Marshal(chart) - if err != nil { - return err - } - - if err := utils.WriteFile(filename, chartFile); err != nil { - return err - } - - files := []struct { - path string - content []byte - force bool - }{ - { - // .helmignore - path: pathing.SanitizeFilepath(filepath.Join(s.Root, IgnorefileName)), - content: []byte(defaultIgnore), - }, - { - // NOTES.txt - path: pathing.SanitizeFilepath(filepath.Join(s.Root, NotesName)), - content: []byte(defaultNotes), - force: true, - }, - { - // templates/secret.yaml - path: pathing.SanitizeFilepath(filepath.Join(s.Root, LicenseSecretName)), - content: []byte(licenseSecret), - force: true, - }, - { - // templates/licnse.yaml - path: pathing.SanitizeFilepath(filepath.Join(s.Root, LicenseCrdName)), - content: []byte(fmt.Sprintf(license, repo.Name)), - force: true, - }, - } - - for _, file := range files { - if !file.force { - if _, err := os.Stat(file.path); err == nil { - // File exists and is okay. Skip it. - continue - } - } - if err := utils.WriteFile(file.path, file.content); err != nil { - return err - } - } - - // remove old requirements.yaml files to fully migrate to helm v3 - reqsFile := pathing.SanitizeFilepath(filepath.Join(s.Root, "requirements.yaml")) - if utils.Exists(reqsFile) { - if err := os.Remove(reqsFile); err != nil { - return err - } - } - - tpl, err := ttpl.New("gotpl").Parse(defaultApplication) - if err != nil { - return err - } - - var appBuffer bytes.Buffer - vars := map[string]string{ - "Name": repo.Name, - "Version": appVersion, - "Description": repo.Description, - "Icon": repo.Icon, - "DarkIcon": repo.DarkIcon, - } - if err := tpl.Execute(&appBuffer, vars); err != nil { - return err - } - appBuffer.WriteString(appTemplate) - - if err := utils.WriteFile(pathing.SanitizeFilepath(filepath.Join(s.Root, ApplicationName)), appBuffer.Bytes()); err != nil { - return err - } - - // Need to add the ChartsDir explicitly as it does not contain any file OOTB - if err := os.MkdirAll(pathing.SanitizeFilepath(filepath.Join(s.Root, ChartsDir)), 0755); err != nil { - return err - } - - return nil -} - -func repoUrl(w *wkspace.Workspace, repo string, chart string) string { - if w.Links != nil { - if path, ok := w.Links.Helm[chart]; ok { - return fmt.Sprintf("file://%s", path) - } - } - url := strings.ReplaceAll(w.Config.BaseUrl(), "https", "cm") - return fmt.Sprintf("%s/cm/%s", url, repo) -} - -func appVersion(charts []*api.ChartInstallation) string { - for _, inst := range charts { - if inst.Chart.Dependencies.Application { - if inst.Version.Helm != nil { - if vsn, ok := inst.Version.Helm["appVersion"]; ok { - if v, ok := vsn.(string); ok { - return v - } - } - } - return inst.Version.Version - } - } - - return "0.1.0" -} diff --git a/pkg/scaffold/helm_test.go b/pkg/scaffold/helm_test.go deleted file mode 100644 index 3ba426b9d..000000000 --- a/pkg/scaffold/helm_test.go +++ /dev/null @@ -1,214 +0,0 @@ -package scaffold - -import ( - "os" - "path/filepath" - "testing" - - "github.com/stretchr/testify/assert" - "gopkg.in/yaml.v2" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/provider" - pluraltest "github.com/pluralsh/plural-cli/pkg/test" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/wkspace" -) - -func TestBuildChartValues(t *testing.T) { - tests := []struct { - name string - workspace *wkspace.Workspace - existingValues string - expectedDefaultValues string - expectedValues string - man *manifest.ProjectManifest - expectError bool - }{ - { - name: `test build values first time`, - expectedDefaultValues: `plrl: - license: abc -test: - extraEnv: - - name: ARM_USE_MSI - value: "true" -`, - expectedValues: "", - man: &manifest.ProjectManifest{ - Cluster: "test", - Bucket: "test", - Project: "test", - Provider: "kind", - Region: "test", - }, - workspace: &wkspace.Workspace{ - Installation: &api.Installation{ - Id: "123", - Repository: &api.Repository{ - Name: "test", - }, - LicenseKey: "abc", - }, - Charts: []*api.ChartInstallation{ - { - Id: "123", - Chart: &api.Chart{ - Id: "123", - Name: "test", - }, - Version: &api.Version{ - ValuesTemplate: `output = { - extraEnv={ - { - name="ARM_USE_MSI", - value = 'true' - - }, - } -}`, - TemplateType: "LUA", - }, - }, - }, - Context: &manifest.Context{ - Configuration: map[string]map[string]interface{}{ - "test": {}, - }, - }, - }, - }, - { - name: `test build values when values.yaml exists, add and override variables`, - expectedDefaultValues: `plrl: - license: abc -test: - extraEnv: - - name: ARM_USE_MSI - value: "true" -`, - expectedValues: `plrl: - license: abc -test: - enabled: false - extraEnv: - - name: TEST - value: "false" -`, - existingValues: `plrl: - license: abc -test: - enabled: false - extraEnv: - - name: TEST - value: "false" -`, - man: &manifest.ProjectManifest{ - Cluster: "test", - Bucket: "test", - Project: "test", - Provider: "kind", - Region: "test", - }, - workspace: &wkspace.Workspace{ - Installation: &api.Installation{ - Id: "123", - Repository: &api.Repository{ - Name: "test", - }, - LicenseKey: "abc", - }, - Charts: []*api.ChartInstallation{ - { - Id: "123", - Chart: &api.Chart{ - Id: "123", - Name: "test", - }, - Version: &api.Version{ - ValuesTemplate: `output = { - extraEnv={ - { - name="ARM_USE_MSI", - value = 'true' - - }, - } -}`, - TemplateType: "LUA", - }, - }, - }, - Context: &manifest.Context{ - Configuration: map[string]map[string]interface{}{ - "test": {}, - }, - }, - }, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - dir, err := os.MkdirTemp("", "config") - assert.NoError(t, err) - defer os.RemoveAll(dir) - - os.Setenv("HOME", dir) - defer os.Unsetenv("HOME") - - err = os.Chdir(dir) - assert.NoError(t, err) - - data, err := yaml.Marshal(test.man) - assert.NoError(t, err) - err = os.WriteFile("workspace.yaml", data, os.FileMode(0755)) - assert.NoError(t, err) - - err = os.WriteFile("values.yaml", []byte(test.existingValues), os.FileMode(0755)) - assert.NoError(t, err) - - defaultConfig := pluraltest.GenDefaultConfig() - err = defaultConfig.Save(config.ConfigName) - assert.NoError(t, err) - - _, err = git.Init() - assert.NoError(t, err) - _, err = git.GitRaw("config", "--global", "user.email", "test@plural.com") - assert.NoError(t, err) - _, err = git.GitRaw("config", "--global", "user.name", "test") - assert.NoError(t, err) - _, err = git.GitRaw("add", "-A") - assert.NoError(t, err) - _, err = git.GitRaw("commit", "-m", "init") - assert.NoError(t, err) - _, err = git.GitRaw("remote", "add", "origin", "git@git.test.com:portfolio/space.space_name.git") - assert.NoError(t, err) - - provider, err := provider.FromManifest(test.man) - if err != nil { - t.Fatal(err) - } - test.workspace.Provider = provider - scaffold := Scaffold{ - Name: "test", - Root: dir, - } - - err = scaffold.buildChartValues(test.workspace) - if test.expectError { - assert.Error(t, err) - return - } - assert.NoError(t, err) - defaultValues, err := os.ReadFile(filepath.Join(dir, "default-values.yaml")) - assert.NoError(t, err) - assert.Equal(t, test.expectedDefaultValues, string(defaultValues)) - - values, err := os.ReadFile(filepath.Join(dir, "values.yaml")) - assert.NoError(t, err) - assert.Equal(t, test.expectedValues, string(values)) - }) - } -} diff --git a/pkg/scaffold/readme.go b/pkg/scaffold/readme.go deleted file mode 100644 index e16ede9a3..000000000 --- a/pkg/scaffold/readme.go +++ /dev/null @@ -1,186 +0,0 @@ -package scaffold - -import ( - "fmt" - "os" - "path" - "path/filepath" - "reflect" - "regexp" - "runtime" - "strings" - "sync" - - log "github.com/sirupsen/logrus" - - "github.com/norwoodj/helm-docs/pkg/document" - "github.com/norwoodj/helm-docs/pkg/helm" - "github.com/spf13/viper" -) - -// parallelProcessIterable runs the visitFn function on each element of the iterable, using -// parallelism number of worker goroutines. The iterable may be a slice or a map. In the case of a -// map, the argument passed to visitFn will be the key. -func parallelProcessIterable(iterable interface{}, parallelism int, visitFn func(elem interface{})) { - workChan := make(chan interface{}) - - wg := &sync.WaitGroup{} - wg.Add(parallelism) - - for i := 0; i < parallelism; i++ { - go func() { - defer wg.Done() - for elem := range workChan { - visitFn(elem) - } - }() - } - - iterableValue := reflect.ValueOf(iterable) - - if iterableValue.Kind() == reflect.Map { - for _, key := range iterableValue.MapKeys() { - workChan <- key.Interface() - } - } else { - sliceLen := iterableValue.Len() - for i := 0; i < sliceLen; i++ { - workChan <- iterableValue.Index(i).Interface() - } - } - - close(workChan) - wg.Wait() -} - -func getDocumentationParsingConfigFromArgs() (helm.ChartValuesDocumentationParsingConfig, error) { - var regexps []*regexp.Regexp - regexpStrings := []string{".*service\\.type", ".*image\\.repository", ".*image\\.tag"} - for _, item := range regexpStrings { - regex, err := regexp.Compile(item) - if err != nil { - return helm.ChartValuesDocumentationParsingConfig{}, err - } - regexps = append(regexps, regex) - } - return helm.ChartValuesDocumentationParsingConfig{ - StrictMode: false, - AllowedMissingValuePaths: []string{}, - AllowedMissingValueRegexps: regexps, - }, nil -} - -func readDocumentationInfoByChartPath(chartSearchRoot string, parallelism int) (map[string]helm.ChartDocumentationInfo, error) { - var fullChartSearchRoot string - - if path.IsAbs(chartSearchRoot) { - fullChartSearchRoot = chartSearchRoot - } else { - cwd, err := os.Getwd() - if err != nil { - return nil, fmt.Errorf("error getting working directory: %w", err) - } - - fullChartSearchRoot = filepath.Join(cwd, chartSearchRoot) - } - - chartDirs, err := helm.FindChartDirectories(fullChartSearchRoot) - if err != nil { - return nil, fmt.Errorf("error finding chart directories: %w", err) - } - - log.Infof("Found Chart directories [%s]", strings.Join(chartDirs, ", ")) - - templateFiles := []string{"README.md.gotmpl"} - log.Debugf("Rendering from optional template files [%s]", strings.Join(templateFiles, ", ")) - - documentationInfoByChartPath := make(map[string]helm.ChartDocumentationInfo, len(chartDirs)) - documentationInfoByChartPathMu := &sync.Mutex{} - documentationParsingConfig, err := getDocumentationParsingConfigFromArgs() - if err != nil { - return nil, fmt.Errorf("error parsing the linting config%w", err) - } - - parallelProcessIterable(chartDirs, parallelism, func(elem interface{}) { - chartDir := elem.(string) - info, err := helm.ParseChartInformation(filepath.Join(chartSearchRoot, chartDir), documentationParsingConfig) - if err != nil { - log.Warnf("Error parsing information for chart %s, skipping: %s", chartDir, err) - return - } - documentationInfoByChartPathMu.Lock() - documentationInfoByChartPath[info.ChartDirectory] = info - documentationInfoByChartPathMu.Unlock() - }) - - return documentationInfoByChartPath, nil -} - -func getChartToGenerate(documentationInfoByChartPath map[string]helm.ChartDocumentationInfo) map[string]helm.ChartDocumentationInfo { - generateDirectories := []string{} - if len(generateDirectories) == 0 { - return documentationInfoByChartPath - } - documentationInfoToGenerate := make(map[string]helm.ChartDocumentationInfo, len(generateDirectories)) - var skipped = false - for _, chartDirectory := range generateDirectories { - if info, ok := documentationInfoByChartPath[chartDirectory]; ok { - documentationInfoToGenerate[chartDirectory] = info - } else { - log.Warnf("Couldn't find documentation Info for <%s> - skipping", chartDirectory) - skipped = true - } - } - if skipped { - possibleCharts := []string{} - for path := range documentationInfoByChartPath { - possibleCharts = append(possibleCharts, path) - } - log.Warnf("Some charts listed in `chart-to-generate` wasn't found. List of charts to choose: [%s]", strings.Join(possibleCharts, ", ")) - } - return documentationInfoToGenerate -} - -func writeDocumentation(chartSearchRoot string, documentationInfoByChartPath map[string]helm.ChartDocumentationInfo, dryRun bool, parallelism int) { - templateFiles := []string{"README.md.gotmpl"} - badgeStyle := "flat-square" - - log.Debugf("Rendering from optional template files [%s]", strings.Join(templateFiles, ", ")) - - documentDependencyValues := true - documentationInfoToGenerate := getChartToGenerate(documentationInfoByChartPath) - - parallelProcessIterable(documentationInfoToGenerate, parallelism, func(elem interface{}) { - info := documentationInfoByChartPath[elem.(string)] - var err error - var dependencyValues []document.DependencyValues - if documentDependencyValues { - dependencyValues, err = document.GetDependencyValues(info, documentationInfoByChartPath) - if err != nil { - log.Warnf("Error evaluating dependency values for chart %s, skipping: %v", info.ChartDirectory, err) - return - } - } - document.PrintDocumentation(info, chartSearchRoot, templateFiles, dryRun, "v1.11.0", badgeStyle, dependencyValues) - }) -} - -func Readme(chartSearchRoot string, dryRun bool) error { - parallelism := runtime.NumCPU() * 2 - log.SetLevel(log.FatalLevel) - viper.Set("values-file", "values.yaml") - viper.Set("output-file", "README.md") - - // On dry runs all output goes to stdout, and so as to not jumble things, generate serially. - if dryRun { - parallelism = 1 - } - - documentationInfoByChartPath, err := readDocumentationInfoByChartPath(chartSearchRoot, parallelism) - if err != nil { - return err - } - - writeDocumentation(chartSearchRoot, documentationInfoByChartPath, dryRun, parallelism) - return nil -} diff --git a/pkg/scaffold/scaffold.go b/pkg/scaffold/scaffold.go deleted file mode 100644 index 287f0addc..000000000 --- a/pkg/scaffold/scaffold.go +++ /dev/null @@ -1,166 +0,0 @@ -package scaffold - -import ( - "os" - "path/filepath" - - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/plural-cli/pkg/wkspace" - "github.com/pluralsh/polly/algorithms" - "github.com/pluralsh/polly/containers" - "github.com/rodaine/hclencoder" -) - -type Scaffold struct { - Name string `hcl:",key"` - Path string `hcl:"path"` - Type string `hcl:"type"` - Root string `hcle:"omit"` - - Preflight []*executor.Step `hcl:"preflight"` -} - -type Metadata struct { - Name string `hcl:"name"` -} - -type Build struct { - Metadata *Metadata `hcl:"metadata"` - Scaffolds []*Scaffold `hcl:"scaffold"` -} - -const ( - TF = "terraform" - HELM = "helm" - CRD = "crd" -) - -func Scaffolds(wk *wkspace.Workspace) (*Build, error) { - repoRoot, err := git.Root() - if err != nil { - return &Build{}, err - } - - name := wk.Installation.Repository.Name - wkspaceRoot := pathing.SanitizeFilepath(filepath.Join(repoRoot, name)) - - build, err := Read(wkspaceRoot) - def := Default(wk, name) - if err != nil { - return def, nil - } - - return merge(build, def), nil -} - -func merge(build *Build, base *Build) *Build { - byName := make(map[string]*Scaffold) - for _, scaffold := range build.Scaffolds { - byName[scaffold.Name] = scaffold - } - for _, scaffold := range base.Scaffolds { - if prev, ok := byName[scaffold.Name]; ok { - mergePreflights(scaffold, prev) - } - byName[scaffold.Name] = scaffold - } - - // to handle helm v3 transition - delete(byName, "add-repo") - - graph := containers.NewGraph[string]() - for i := 0; i < len(build.Scaffolds)-1; i++ { - graph.AddEdge(build.Scaffolds[i].Name, build.Scaffolds[i+1].Name) - } - - for i := 0; i < len(base.Scaffolds)-1; i++ { - graph.AddEdge(base.Scaffolds[i].Name, base.Scaffolds[i+1].Name) - } - - sorted, _ := algorithms.TopsortGraph(graph) - build.Scaffolds = algorithms.Map(sorted, func(n string) *Scaffold { return byName[n] }) - return build -} - -func mergePreflights(new, old *Scaffold) { - byName := make(map[string]*executor.Step) - for _, preflight := range old.Preflight { - byName[preflight.Name] = preflight - } - - for _, preflight := range new.Preflight { - if prev, ok := byName[preflight.Name]; ok { - preflight.Sha = prev.Sha - } - } -} - -func (b *Build) Flush(root string) error { - io, err := hclencoder.Encode(&b) - if err != nil { - return err - } - - path, _ := filepath.Abs(pathing.SanitizeFilepath(filepath.Join(root, b.Metadata.Name, "build.hcl"))) - return os.WriteFile(path, io, 0644) -} - -func (s *Scaffold) Execute(wk *wkspace.Workspace, force bool) error { - os.Setenv("HELM_REPO_ACCESS_TOKEN", wk.Config.Token) - err := s.executeType(wk) - if err != nil { - return err - } - - ignore := []string{} - for _, preflight := range s.Preflight { - if force { - preflight.Sha = "" - } - - sha, err := preflight.Execute(s.Root, ignore) - if err != nil { - return err - } - preflight.Sha = sha - } - - return nil -} - -func (s *Scaffold) executeType(wk *wkspace.Workspace) error { - switch s.Type { - case TF: - return s.handleTerraform(wk) - case HELM: - return s.handleHelm(wk) - case CRD: - return s.buildCrds(wk) - default: - return nil - } -} - -func (b *Build) Execute(wk *wkspace.Workspace, force bool) error { - root, err := git.Root() - if err != nil { - return err - } - - for _, s := range b.Scaffolds { - path := pathing.SanitizeFilepath(filepath.Join(root, b.Metadata.Name, s.Path)) - if err := os.MkdirAll(path, os.ModePerm); err != nil { - b.Flush(root) - return err - } - s.Root = path - if err := s.Execute(wk, force); err != nil { - b.Flush(root) - return err - } - } - - return b.Flush(root) -} diff --git a/pkg/scaffold/secrets.go b/pkg/scaffold/secrets.go deleted file mode 100644 index 6837ec540..000000000 --- a/pkg/scaffold/secrets.go +++ /dev/null @@ -1,20 +0,0 @@ -package scaffold - -import ( - "bytes" - "fmt" - - "github.com/pluralsh/plural-cli/pkg/utils" -) - -const filterTmpl = "%s filter=plural-crypt diff=plural-crypt\n" - -func buildSecrets(file string, secrets []string) error { - var b bytes.Buffer - b.Grow(32) - for _, secret := range secrets { - fmt.Fprintf(&b, filterTmpl, secret) - } - - return utils.WriteFile(file, b.Bytes()) -} diff --git a/pkg/scaffold/template/gotpl.go b/pkg/scaffold/template/gotpl.go deleted file mode 100644 index b7d7e851a..000000000 --- a/pkg/scaffold/template/gotpl.go +++ /dev/null @@ -1,44 +0,0 @@ -package template - -import ( - "bytes" - - "github.com/imdario/mergo" - "gopkg.in/yaml.v2" - - "github.com/pluralsh/plural-cli/pkg/template" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -func FromGoTemplate(vals map[string]interface{}, globals map[string]interface{}, output map[string]map[string]interface{}, chartName, tplate string) error { - var buf bytes.Buffer - buf.Grow(5 * 1024) - - tmpl, err := template.MakeTemplate(tplate) - if err != nil { - return err - } - - if err := tmpl.Execute(&buf, vals); err != nil { - return err - } - - var subVals = map[string]interface{}{} - subVals["enabled"] = true - if err := yaml.Unmarshal(buf.Bytes(), &subVals); err != nil { - return err - } - - // need to handle globals in a dedicated way - if glob, ok := subVals["global"]; ok { - globMap := utils.CleanUpInterfaceMap(glob.(map[interface{}]interface{})) - if err := mergo.Merge(&globals, globMap); err != nil { - return err - } - delete(subVals, "global") - } - - output[chartName] = subVals - buf.Reset() - return nil -} diff --git a/pkg/scaffold/template/lua.go b/pkg/scaffold/template/lua.go deleted file mode 100644 index 57c84cec0..000000000 --- a/pkg/scaffold/template/lua.go +++ /dev/null @@ -1,64 +0,0 @@ -package template - -import ( - "fmt" - - "github.com/Masterminds/sprig/v3" - "github.com/imdario/mergo" - lua "github.com/yuin/gopher-lua" - luar "layeh.com/gopher-luar" - - "github.com/pluralsh/plural-cli/pkg/template" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -func ExecuteLua(vals map[string]interface{}, tplate string) (map[string]interface{}, error) { - output := map[string]interface{}{} - L := lua.NewState() - defer L.Close() - - L.SetGlobal("Var", luar.New(L, vals)) - - for name, function := range template.GetFuncMap() { - L.SetGlobal(name, luar.New(L, function)) - } - for name, function := range sprig.GenericFuncMap() { - L.SetGlobal(name, luar.New(L, function)) - } - - if err := L.DoString(tplate); err != nil { - return nil, err - } - outTable, ok := L.GetGlobal("output").(*lua.LTable) - if !ok { - return nil, fmt.Errorf("the output variable is missing in the lua script") - } - if err := utils.MapLua(outTable, &output); err != nil { - return nil, err - } - - return output, nil - -} - -func FromLuaTemplate(vals map[string]interface{}, globals map[string]interface{}, output map[string]map[string]interface{}, chartName, tplate string) error { - var subVals = map[string]interface{}{} - subVals["enabled"] = true - subVals, err := ExecuteLua(vals, tplate) - if err != nil { - return err - } - - // need to handle globals in a dedicated way - if glob, ok := subVals["global"]; ok { - globMap := utils.CleanUpInterfaceMap(glob.(map[interface{}]interface{})) - if err := mergo.Merge(&globals, globMap); err != nil { - return err - } - delete(subVals, "global") - } - - output[chartName] = subVals - - return nil -} diff --git a/pkg/scaffold/template/lua_test.go b/pkg/scaffold/template/lua_test.go deleted file mode 100644 index 8af20de34..000000000 --- a/pkg/scaffold/template/lua_test.go +++ /dev/null @@ -1,451 +0,0 @@ -package template_test - -import ( - "os" - "path" - "testing" - - "github.com/stretchr/testify/assert" - "gopkg.in/yaml.v2" - - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/scaffold/template" - pluraltest "github.com/pluralsh/plural-cli/pkg/test" - "github.com/pluralsh/plural-cli/pkg/utils/git" -) - -func TestFromLuaTemplateComplex(t *testing.T) { - tests := []struct { - name string - vals map[string]interface{} - script string - keyContent string - expectedResponse string - expectedError string - }{ - { - name: `test complex azure`, - keyContent: `key: "gKNJBnflqQA6lfUKLWMwl7CMJk4j+qqG9jnGYdTvwTk="`, - vals: map[string]interface{}{ - "Values": map[string]interface{}{"console_dns": "https://onplural.sh"}, - "Configuration": "", - "License": "abc", - "Region": "US", - "Project": "test", - "Cluster": "test", - "Provider": "azure", - "Config": map[string]interface{}{"Email": "test@plural.sh"}, - "Context": map[string]interface{}{"SubscriptionId": "abc", "TenantId": "bca"}, - "console": map[string]interface{}{"secrets": map[string]interface{}{"admin_password": "abc", "jwt": "abc", "admin_email": "", "erlang": "abc"}}, - }, - script: func() string { - io, err := os.ReadFile("../../test/lua/values.yaml.lua") - if err != nil { - t.Fatal(err) - } - return string(io) - }(), - - expectedResponse: `global: - application: - links: - - description: console web ui - url: https://onplural.sh -test: - consoleIdentityClientId: '{{ .Import.Terraform.console_msi_client_id }}' - consoleIdentityId: '{{ .Import.Terraform.console_msi_id }}' - enabled: true - extraEnv: - - name: ARM_USE_MSI - value: true - - name: ARM_SUBSCRIPTION_ID - value: abc - - name: ARM_TENANT_ID - value: bca - ingress: - annotations: - kubernetes.io/tls-acme: "true" - console_dns: https://onplural.sh - ingressClass: nginx - license: abc - podLabels: - aadpodidbinding: console - provider: azure - replicaCount: 2 - secrets: - admin_email: "" - admin_password: abc - branch_name: master - cluster_name: test - config: | - apiVersion: platform.plural.sh/v1alpha1 - kind: Config - metadata: null - spec: - email: test@plural.sh - token: abc - consoleToken: "" - namespacePrefix: test - endpoint: http://example.com - lockProfile: abc - reportErrors: false - erlang: abc - git_access_token: "" - git_email: console@plural.sh - git_url: git@git.test.com:portfolio/space.space_name.git - git_user: console - id_rsa: "" - id_rsa_pub: "" - jwt: abc - key: | - key: "gKNJBnflqQA6lfUKLWMwl7CMJk4j+qqG9jnGYdTvwTk=" - repo_root: "" - ssh_passphrase: "" - serviceAccount: - annotations: - eks.amazonaws.com/role-arn: arn:aws:iam::test:role/test-console - create: true -`, - }, - { - name: `test complex aws`, - keyContent: `key: "gKNJBnflqQA6lfUKLWMwl7CMJk4j+qqG9jnGYdTvwTk="`, - vals: map[string]interface{}{ - "Values": map[string]interface{}{"console_dns": "https://onplural.sh"}, - "Configuration": "", - "License": "abc", - "Region": "US", - "Project": "test", - "Cluster": "test", - "Provider": "aws", - "Config": map[string]interface{}{"Email": "test@plural.sh"}, - "Context": map[string]interface{}{"SubscriptionId": "abc", "TenantId": "bca"}, - "console": map[string]interface{}{"secrets": map[string]interface{}{"admin_password": "abc", "jwt": "abc", "admin_email": "", "erlang": "abc"}}, - }, - script: func() string { - io, err := os.ReadFile("../../test/lua/values.yaml.lua") - if err != nil { - t.Fatal(err) - } - return string(io) - }(), - - expectedResponse: `global: - application: - links: - - description: console web ui - url: https://onplural.sh -test: - enabled: true - ingress: - annotations: - kubernetes.io/tls-acme: "true" - console_dns: https://onplural.sh - ingressClass: nginx - license: abc - provider: aws - replicaCount: 2 - secrets: - admin_email: "" - admin_password: abc - branch_name: master - cluster_name: test - config: | - apiVersion: platform.plural.sh/v1alpha1 - kind: Config - metadata: null - spec: - email: test@plural.sh - token: abc - consoleToken: "" - namespacePrefix: test - endpoint: http://example.com - lockProfile: abc - reportErrors: false - erlang: abc - git_access_token: "" - git_email: console@plural.sh - git_url: git@git.test.com:portfolio/space.space_name.git - git_user: console - id_rsa: "" - id_rsa_pub: "" - jwt: abc - key: | - key: "gKNJBnflqQA6lfUKLWMwl7CMJk4j+qqG9jnGYdTvwTk=" - repo_root: "" - ssh_passphrase: "" - serviceAccount: - annotations: - eks.amazonaws.com/role-arn: arn:aws:iam::test:role/test-console - create: true -`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - dir, err := os.MkdirTemp("", "config") - assert.NoError(t, err) - defer os.RemoveAll(dir) - - os.Setenv("HOME", dir) - defer os.Unsetenv("HOME") - - err = os.Chdir(dir) - assert.NoError(t, err) - defaultConfig := pluraltest.GenDefaultConfig() - err = defaultConfig.Save(config.ConfigName) - assert.NoError(t, err) - - _, err = git.Init() - assert.NoError(t, err) - _, err = git.GitRaw("config", "--global", "user.email", "test@plural.com") - assert.NoError(t, err) - _, err = git.GitRaw("config", "--global", "user.name", "test") - assert.NoError(t, err) - _, err = git.GitRaw("add", "-A") - assert.NoError(t, err) - _, err = git.GitRaw("commit", "-m", "init") - assert.NoError(t, err) - _, err = git.GitRaw("remote", "add", "origin", "git@git.test.com:portfolio/space.space_name.git") - assert.NoError(t, err) - - err = os.MkdirAll(path.Join(dir, ".plural"), os.ModePerm) - assert.NoError(t, err) - err = os.WriteFile(path.Join(dir, ".plural", "key"), []byte(test.keyContent), 0644) - assert.NoError(t, err) - - globals := map[string]interface{}{} - values := make(map[string]map[string]interface{}) - - err = template.FromLuaTemplate(test.vals, globals, values, "test", test.script) - if test.expectedError != "" { - assert.Equal(t, test.expectedError, err.Error()) - } else { - assert.NoError(t, err) - } - values["global"] = globals - res, err := yaml.Marshal(values) - assert.NoError(t, err) - response := string(res) - assert.Equal(t, test.expectedResponse, response) - }) - } -} - -func TestFromLuaTemplate(t *testing.T) { - tests := []struct { - name string - vals map[string]interface{} - script string - expectedResponse string - expectedError string - }{ - { - name: `test globals`, - vals: map[string]interface{}{ - "Values": map[string]interface{}{"console_dns": "https://onplural.sh"}, - }, - script: `output = { - global={ - application={ - links={ - { description= "console web ui", - url=Var.Values.console_dns - } - } - } - } -}`, - expectedResponse: `global: - application: - links: - - description: console web ui - url: https://onplural.sh -test: {} -`, - }, - { - name: `test env var`, - vals: map[string]interface{}{ - "Context": map[string]interface{}{"SubscriptionId": "abc", "TenantId": "cda"}, - }, - script: `output = { - extraEnv={ - { - name="ARM_USE_MSI", - value = 'true' - - }, - { - name="ARM_SUBSCRIPTION_ID", - value=Var.Context.SubscriptionId - }, - { - name="ARM_TENANT_ID", - value= Var.Context.TenantId - } - } -}`, - expectedResponse: `global: {} -test: - extraEnv: - - name: ARM_USE_MSI - value: "true" - - name: ARM_SUBSCRIPTION_ID - value: abc - - name: ARM_TENANT_ID - value: cda -`, - }, - { - name: `test annotations`, - vals: map[string]interface{}{ - "Context": map[string]interface{}{"SubscriptionId": "abc", "TenantId": "cda"}, - }, - script: `output = { - ingress={ - annotations={ - ['kubernetes.io/tls-acme']='true', - } - } -}`, - expectedResponse: `global: {} -test: - ingress: - annotations: - kubernetes.io/tls-acme: "true" -`, - }, - { - name: `test importValue`, - vals: map[string]interface{}{ - "Values": map[string]interface{}{"console_dns": "https://onplural.sh"}, - }, - script: `output = {} - output.consoleIdentityId=importValue("Terraform", "console_msi_id") - output.consoleIdentityClientId=importValue("Terraform", "console_msi_client_id") -`, - expectedResponse: `global: {} -test: - consoleIdentityClientId: '{{ .Import.Terraform.console_msi_client_id }}' - consoleIdentityId: '{{ .Import.Terraform.console_msi_id }}' -`, - }, - { - name: `test when output doesn't exist`, - vals: map[string]interface{}{ - "Values": map[string]interface{}{"console_dns": "https://onplural.sh"}, - }, - script: ` - somethingElse={} -`, - expectedError: `the output variable is missing in the lua script`, - }, - { - name: `test encryption key`, - vals: map[string]interface{}{}, - script: ` - output={ - secrets={ - key='' - } - } - output.secrets.key=dedupe(Var, "console.secrets.key", readFile(pathJoin(homeDir(), ".plural", "key"))) .. "\n" -`, - expectedResponse: `global: {} -test: - secrets: - key: | - key: 3fWQQvTe5w9Gu6uoJzw1C5SxnARtNT/QOvvISRFoxRs= -`, - }, - { - name: `test encryption key when already exists`, - vals: map[string]interface{}{ - "console": map[string]interface{}{"secrets": map[string]interface{}{ - "key": "key: abc", - }}, - }, - script: ` - output={ - secrets={ - key='' - } - } - output.secrets.key=dedupe(Var, "console.secrets.key", readFile(pathJoin(homeDir(), ".plural", "key"))) .. "\n" -`, - expectedResponse: `global: {} -test: - secrets: - key: | - key: abc -`, - }, - { - name: `test kebab case`, - vals: map[string]interface{}{ - "Values": map[string]interface{}{ - "console_dns": "console.onplural.sh", - "testBase": map[string]interface{}{ - "cypressEmail": "test@plural.sh", - "cypressPassword": "xyz", - }, - }, - }, - script: ` - output={ - - } - output["test-base"]={ - enabled=true, - secret={ - CYPRESS_EMAIL=Var.Values.testBase.cypressEmail, - CYPRESS_PASSWORD=Var.Values.testBase.cypressPassword, - CYPRESS_BASE_URL= "https://" .. Var.Values.console_dns .. "/", - } - } -`, - expectedResponse: `global: {} -test: - test-base: - enabled: true - secret: - CYPRESS_BASE_URL: https://console.onplural.sh/ - CYPRESS_EMAIL: test@plural.sh - CYPRESS_PASSWORD: xyz -`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - dir, err := os.MkdirTemp("", "config") - assert.NoError(t, err) - defer os.RemoveAll(dir) - - os.Setenv("HOME", dir) - defer os.Unsetenv("HOME") - - err = os.Chdir(dir) - assert.NoError(t, err) - err = os.MkdirAll(path.Join(dir, ".plural"), os.ModePerm) - assert.NoError(t, err) - err = os.WriteFile(path.Join(dir, ".plural", "key"), []byte("key: 3fWQQvTe5w9Gu6uoJzw1C5SxnARtNT/QOvvISRFoxRs="), 0644) - assert.NoError(t, err) - - globals := map[string]interface{}{} - values := make(map[string]map[string]interface{}) - err = template.FromLuaTemplate(test.vals, globals, values, "test", test.script) - if test.expectedError != "" { - assert.Equal(t, test.expectedError, err.Error()) - } else { - assert.NoError(t, err) - - values["global"] = globals - res, err := yaml.Marshal(values) - assert.NoError(t, err) - response := string(res) - assert.Equal(t, test.expectedResponse, response) - } - }) - } -} diff --git a/pkg/scaffold/template/template.go b/pkg/scaffold/template/template.go deleted file mode 100644 index f59f65de1..000000000 --- a/pkg/scaffold/template/template.go +++ /dev/null @@ -1,164 +0,0 @@ -package template - -import ( - "bytes" - "fmt" - "os" - "path/filepath" - "strings" - - "github.com/pluralsh/gqlclient" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/output" - "github.com/pluralsh/plural-cli/pkg/template" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/plural-cli/pkg/wkspace" - "gopkg.in/yaml.v2" -) - -func templateInfo(path string) (t gqlclient.TemplateType, contents string, err error) { - gopath := pathing.SanitizeFilepath(filepath.Join(path, "values.yaml.tpl")) - if utils.Exists(gopath) { - contents, err = utils.ReadFile(gopath) - t = gqlclient.TemplateTypeGotemplate - return - } - - luapath := pathing.SanitizeFilepath(filepath.Join(path, "values.yaml.lua")) - if utils.Exists(gopath) { - contents, err = utils.ReadFile(luapath) - t = gqlclient.TemplateTypeLua - return - } - - err = fmt.Errorf("could not find values.yaml.tpl or values.yaml.lua in directory, perhaps your link is to the wrong folder?") - return -} - -func BuildValuesFromTemplate(vals map[string]interface{}, w *wkspace.Workspace) (map[string]map[string]interface{}, error) { - globals := map[string]interface{}{} - output := make(map[string]map[string]interface{}) - for _, chartInst := range w.Charts { - chartName := chartInst.Chart.Name - tplate := chartInst.Version.ValuesTemplate - templateType := chartInst.Version.TemplateType - - if w.Links != nil { - if path, ok := w.Links.Helm[chartName]; ok { - var err error - templateType, tplate, err = templateInfo(path) - if err != nil { - return nil, err - } - } - } - - switch templateType { - case gqlclient.TemplateTypeGotemplate: - if err := FromGoTemplate(vals, globals, output, chartName, tplate); err != nil { - return nil, err - } - case gqlclient.TemplateTypeLua: - if err := FromLuaTemplate(vals, globals, output, chartName, tplate); err != nil { - return nil, err - } - } - } - - if len(globals) > 0 { - output["global"] = globals - } - - output["plrl"] = map[string]interface{}{ - "license": w.Installation.LicenseKey, - } - return output, nil -} - -func TmpValuesFile(path string) (f *os.File, err error) { - conf := config.Read() - if strings.HasSuffix(path, "lua") { - return luaTmpValuesFile(path, &conf) - } - - return goTmpValuesFile(path, &conf) - -} - -func luaTmpValuesFile(path string, conf *config.Config) (f *os.File, err error) { - valuesTmpl, err := utils.ReadFile(path) - if err != nil { - return - } - f, err = os.CreateTemp("", "values.yaml") - if err != nil { - return - } - defer func(f *os.File) { - _ = f.Close() - }(f) - - vals := genDefaultValues(conf) - - output, err := ExecuteLua(vals, valuesTmpl) - if err != nil { - return nil, err - } - - io, err := yaml.Marshal(output) - if err != nil { - return nil, err - } - - fmt.Println(string(io)) - _, err = f.Write(io) - if err != nil { - return nil, err - } - return -} - -func goTmpValuesFile(path string, conf *config.Config) (f *os.File, err error) { - valuesTmpl, err := utils.ReadFile(path) - if err != nil { - return - } - tmpl, err := template.MakeTemplate(valuesTmpl) - if err != nil { - return - } - - vals := genDefaultValues(conf) - var buf bytes.Buffer - - if err = tmpl.Execute(&buf, vals); err != nil { - return - } - - f, err = os.CreateTemp("", "values.yaml") - if err != nil { - return - } - defer func(f *os.File) { - _ = f.Close() - }(f) - - fmt.Println(buf.String()) - err = wkspace.FormatValues(f, buf.String(), output.New()) - return -} - -func genDefaultValues(conf *config.Config) map[string]interface{} { - return map[string]interface{}{ - "Values": map[string]interface{}{}, - "Configuration": map[string]map[string]interface{}{}, - "License": "example-license", - "Region": "region", - "Project": "example", - "Cluster": "cluster", - "Provider": "provider", - "Config": conf, - "Context": map[string]interface{}{}, - } -} diff --git a/pkg/scaffold/terraform.go b/pkg/scaffold/terraform.go deleted file mode 100644 index 1efbff6d6..000000000 --- a/pkg/scaffold/terraform.go +++ /dev/null @@ -1,283 +0,0 @@ -package scaffold - -import ( - "bytes" - "fmt" - "net/http" - "os" - "path/filepath" - "regexp" - "sort" - "strings" - - "golang.org/x/exp/maps" - - "golang.org/x/mod/semver" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/template" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - "github.com/pluralsh/plural-cli/pkg/wkspace" -) - -const moduleTemplate = `module "{{ .Values.name }}" { - source = "{{ .Values.path }}" - -### BEGIN MANUAL SECTION <<{{ .Values.name }}>> -{{ .Values.Manual }} -### END MANUAL SECTION <<{{ .Values.name }}>> - -{{ .Values.conf | nindent 2 }} -{{ range $key, $val := .Values.deps }} - {{ $key }} = module.{{ $val }} -{{- end }} -} -` - -const outputTemplate = `output "{{ .Name }}" { - value = module.{{ .Module }}.{{ .Value }} - sensitive = true -} -` - -const helpDoc = ` -############## Helpful Hints ################### - -# Any configuration updates should be done in this file in a manual section. You can also create files alongside this one, -# and plural build will preserve them. That's the ideal strategy if you want to add additional resources like a sql instance -# or vpn gateway. - -# The submodule folders within this directory are generated by plural build and we cannot guarantee a change in -# them will be merged properly. - -################################################# - -` - -func (scaffold *Scaffold) handleTerraform(wk *wkspace.Workspace) error { - repo := wk.Installation.Repository - providerCtx := buildContext(wk, repo.Name, wk.Terraform) - - var providerVersions semver.ByVersion - - if len(wk.Terraform) == 0 { - return nil - } - - for i := range wk.Terraform { - providerVersions = append(providerVersions, wk.Terraform[i].Terraform.Dependencies.ProviderVsn) - } - - semver.Sort(providerVersions) - - // use the latest version of the TF template for the provider - backend, err := wk.Provider.CreateBackend(repo.Name, providerVersions[providerVersions.Len()-1], providerCtx) - if err != nil { - return err - } - - apps, err := NewApplications() - if err != nil { - return err - } - - if err := scaffold.untarModules(wk); err != nil { - return err - } - - mainFile := pathing.SanitizeFilepath(filepath.Join(scaffold.Root, "main.tf")) - contents, err := utils.ReadFile(mainFile) - if err != nil { - contents = "" - } - - var modules = make([]string, len(wk.Terraform)+1) - modules[0] = helpDoc + backend - ctx, _ := wk.Context.Repo(repo.Name) - links := wk.Links - for i, tfInst := range wk.Terraform { - tf := tfInst.Terraform - linkPath := "" - if links != nil { - if path, ok := links.Terraform[tf.Name]; ok { - linkPath = path - } - } - - var buf bytes.Buffer - buf.Grow(5 * 1024) - plate := tfInst.Version.ValuesTemplate - if linkPath != "" { - var err error - plate, err = utils.ReadFile(pathing.SanitizeFilepath(filepath.Join(linkPath, "terraform.tfvars"))) - if err != nil { - return err - } - } - - tmpl, err := template.MakeTemplate(plate) - if err != nil { - return err - } - values := map[string]interface{}{ - "Values": ctx, - "Configuration": wk.Context.Configuration, - "Cluster": wk.Provider.Cluster(), - "Project": wk.Provider.Project(), - "Namespace": wk.Config.Namespace(repo.Name), - "Region": wk.Provider.Region(), - "Context": wk.Provider.Context(), - "Config": config.Read(), - "Applications": apps, - } - if err := tmpl.Execute(&buf, values); err != nil { - return err - } - - module := make(map[string]interface{}) - module["name"] = tf.Name - if linkPath != "" { - module["path"] = linkPath - } else { - module["path"] = "./" + tf.Name - } - - module["conf"] = buf.String() - if tf.Dependencies != nil && tf.Dependencies.Wirings != nil { - module["deps"] = tf.Dependencies.Wirings.Terraform - } else { - module["deps"] = map[string]interface{}{} - } - module["Manual"] = manualSection(contents, tf.Name) - - var moduleBuf bytes.Buffer - moduleBuf.Grow(1024) - if err := template.RenderTemplate(&moduleBuf, moduleTemplate, module); err != nil { - return err - } - - modules[i+1] = moduleBuf.String() - - valuesFile := pathing.SanitizeFilepath(filepath.Join(scaffold.Root, tf.Name, "terraform.tfvars")) - os.Remove(valuesFile) - - moduleBuf.Reset() - buf.Reset() - } - - if err := utils.WriteFile(mainFile, []byte(strings.Join(modules, "\n\n"))); err != nil { - return err - } - - if err := scaffold.buildOutputs(wk); err != nil { - return err - } - - secrets := buildTfSecrets(wk.Terraform) - if err := buildSecrets(pathing.SanitizeFilepath(filepath.Join(scaffold.Root, ".gitattributes")), secrets); err != nil { - return err - } - - return nil -} - -// TODO: move to some sort of scaffold util? -func (scaffold *Scaffold) untarModules(wk *wkspace.Workspace) error { - length := len(wk.Terraform) - utils.Highlight("unpacking %d %s", len(wk.Terraform), utils.Pluralize("module", "modules", length)) - for _, tfInst := range wk.Terraform { - tf := tfInst.Terraform - v := tfInst.Version - path := pathing.SanitizeFilepath(filepath.Join(scaffold.Root, tf.Name)) - if err := os.MkdirAll(path, os.ModePerm); err != nil { - fmt.Print("\n") - return err - } - - if err := untar(v, tf, path); err != nil { - fmt.Print("\n") - return err - } - fmt.Print(".") - } - - utils.Success("\u2713\n") - return nil -} - -func (scaffold *Scaffold) buildOutputs(wk *wkspace.Workspace) error { - var buf bytes.Buffer - buf.Grow(5 * 1024) - - tmp, err := template.MakeTemplate(outputTemplate) - if err != nil { - return err - } - - sort.SliceStable(wk.Terraform, func(i, j int) bool { - return wk.Terraform[i].Terraform.Name < wk.Terraform[j].Terraform.Name - }) - for _, tfInst := range wk.Terraform { - tfName := tfInst.Terraform.Name - outs := tfInst.Version.Dependencies.Outputs - outputs := maps.Keys(outs) - sort.Strings(outputs) - for _, name := range outputs { - value := outs[name] - err = tmp.Execute(&buf, map[string]interface{}{"Name": name, "Value": value, "Module": tfName}) - if err != nil { - return err - } - buf.WriteString("\n\n") - } - } - - outputFile := pathing.SanitizeFilepath(filepath.Join(scaffold.Root, "outputs.tf")) - return utils.WriteFile(outputFile, buf.Bytes()) -} - -func untar(v *api.Version, tf *api.Terraform, dir string) error { - resp, err := http.Get(v.Package) - if err != nil { - return err - } - - return utils.Untar(resp.Body, dir, tf.Name) -} - -func manualSection(contents, name string) string { - re := regexp.MustCompile(fmt.Sprintf(`(?s)### BEGIN MANUAL SECTION <<%s>>(.*)### END MANUAL SECTION <<%s>>`, name, name)) - matches := re.FindStringSubmatch(contents) - if len(matches) > 0 { - return strings.TrimSpace(matches[1]) - } - - return "" -} - -func buildTfSecrets(installations []*api.TerraformInstallation) []string { - res := []string{} - for _, inst := range installations { - res = append(res, inst.Version.Dependencies.Secrets...) - } - return res -} - -func buildContext(wk *wkspace.Workspace, repo string, installations []*api.TerraformInstallation) map[string]interface{} { - ctx := map[string]interface{}{ - "Namespace": wk.Config.Namespace(repo), - } - - for _, inst := range installations { - for k, v := range inst.Version.Dependencies.ProviderWirings { - if k == "cluster" { - ctx["Cluster"] = v - } - ctx[k] = v - } - } - - return ctx -} diff --git a/pkg/scm/bitbucket.go b/pkg/scm/bitbucket.go index 87121f823..2487dfe4f 100644 --- a/pkg/scm/bitbucket.go +++ b/pkg/scm/bitbucket.go @@ -17,8 +17,6 @@ var ( BitbucketClientSecret string ) -const emailError = "Can't find the user email address" - type Link struct { Name string `json:"name"` Href string `json:"href"` @@ -66,7 +64,7 @@ func (b *Bitbucket) Setup() (Context, error) { emailAddress := "" emailValues, ok := emails.(map[string]interface{}) if !ok { - return Context{}, fmt.Errorf(emailError) + return Context{}, fmt.Errorf("Can't find the user email address") } emailAddress, err = getEmailAddress(emailValues) if err != nil { @@ -243,7 +241,7 @@ func getEmailAddress(values map[string]interface{}) (string, error) { } } if emailAddress == "" { - return "", fmt.Errorf(emailError) + return "", fmt.Errorf("Can't find the user email address") } return emailAddress, nil } diff --git a/pkg/server/applications.go b/pkg/server/applications.go deleted file mode 100644 index f0620b75e..000000000 --- a/pkg/server/applications.go +++ /dev/null @@ -1,25 +0,0 @@ -package server - -import ( - "net/http" - - "github.com/gin-gonic/gin" - "github.com/pluralsh/plural-cli/pkg/application" - "github.com/pluralsh/plural-cli/pkg/kubernetes" -) - -func listApplications(c *gin.Context) error { - kubeConf, err := kubernetes.KubeConfig() - if err != nil { - return err - } - - apps, err := application.ListAll(kubeConf) - if err != nil { - return err - } - - c.Header("Content-Type", "application/json") - c.JSON(http.StatusOK, apps) - return nil -} diff --git a/pkg/server/configuration.go b/pkg/server/configuration.go deleted file mode 100644 index c4e0c69a5..000000000 --- a/pkg/server/configuration.go +++ /dev/null @@ -1,88 +0,0 @@ -package server - -import ( - "net/http" - "path/filepath" - - "github.com/gin-gonic/gin" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/utils/git" -) - -type Configuration struct { - Workspace WorkspaceConfiguration `json:"workspace"` - Git GitConfiguration `json:"git"` - ContextConfiguration map[string]map[string]interface{} `json:"context_configuration,omitempty"` - Buckets []string `json:"buckets"` - Domains []string `json:"domains"` -} - -type WorkspaceConfiguration struct { - Network *NetworkConfiguration `json:"network,omitempty"` - BucketPrefix string `json:"bucket_prefix,omitempty"` - Cluster string `json:"cluster,omitempty"` -} - -type NetworkConfiguration struct { - PluralDns bool `json:"plural_dns,omitempty"` - Subdomain string `json:"subdomain,omitempty"` -} - -type GitConfiguration struct { - Url string `json:"url,omitempty"` - Root string `json:"root,omitempty"` - Name string `json:"name,omitempty"` - Branch string `json:"branch,omitempty"` -} - -func configuration(c *gin.Context) error { - path := manifest.ProjectManifestPath() - project, err := manifest.ReadProject(path) - if err != nil { - return err - } - - context, err := manifest.ReadContext(manifest.ContextPath()) - if err != nil { - return err - } - - configuration := Configuration{ - Workspace: WorkspaceConfiguration{ - BucketPrefix: project.BucketPrefix, - Cluster: project.Cluster, - }, - ContextConfiguration: context.Configuration, - Buckets: context.Buckets, - Domains: context.Domains, - } - if project.Network != nil { - configuration.Workspace.Network = &NetworkConfiguration{ - PluralDns: project.Network.PluralDns, - Subdomain: project.Network.Subdomain, - } - } - repoRoot, err := git.Root() - if err != nil { - return err - } - branch, err := git.CurrentBranch() - if err != nil { - return err - } - url, err := git.GetURL() - if err != nil { - return err - } - - configuration.Git = GitConfiguration{ - Url: url, - Root: repoRoot, - Name: filepath.Base(repoRoot), - Branch: branch, - } - - c.Header("Content-Type", "application/json") - c.JSON(http.StatusOK, configuration) - return nil -} diff --git a/pkg/server/configuration_test.go b/pkg/server/configuration_test.go deleted file mode 100644 index 69e47318f..000000000 --- a/pkg/server/configuration_test.go +++ /dev/null @@ -1,102 +0,0 @@ -package server_test - -import ( - "encoding/json" - "fmt" - "net/http" - "net/http/httptest" - "os" - "path" - "path/filepath" - "strings" - "testing" - - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/server" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/stretchr/testify/assert" -) - -func TestGetConfiguration(t *testing.T) { - tests := []struct { - name string - expectedHTTPStatus int - expectedResponse string - }{ - { - name: `update configuration console email address`, - expectedHTTPStatus: http.StatusOK, - expectedResponse: `{"workspace":{},"git":{"url":"git@git.test.com:portfolio/space.space_name.git","root":"%s","name":"%s","branch":"master"},"context_configuration":{"console":{"email":"test@plural.sh","git_user":"test"},"minio":{"host":"minio.plural.sh","url":"https://test.plural.sh"}},"buckets":["example-bucket"],"domains":["domain.example.com"]}`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - - // create temp environment - dir, err := os.MkdirTemp("", "config") - assert.NoError(t, err) - defer os.RemoveAll(dir) - - err = os.Chdir(dir) - assert.NoError(t, err) - - pm := genProjectManifest() - io, err := json.Marshal(pm) - assert.NoError(t, err) - err = os.WriteFile(path.Join(dir, "workspace.yaml"), io, 0644) - assert.NoError(t, err) - - context := manifest.NewContext() - context.Configuration = genDefaultContextConfiguration() - context.Buckets = []string{"example-bucket"} - context.Domains = []string{"domain.example.com"} - err = context.Write(path.Join(dir, "context.yaml")) - assert.NoError(t, err) - - // To don't override ~/.gitconfig - os.Setenv("HOME", dir) - defer os.Unsetenv("HOME") - _, err = git.Init() - assert.NoError(t, err) - _, err = git.GitRaw("config", "--global", "user.email", "test@plural.com") - assert.NoError(t, err) - _, err = git.GitRaw("config", "--global", "user.name", "test") - assert.NoError(t, err) - _, err = git.GitRaw("add", "-A") - assert.NoError(t, err) - _, err = git.GitRaw("commit", "-m", "init") - assert.NoError(t, err) - _, err = git.GitRaw("remote", "add", "origin", "git@git.test.com:portfolio/space.space_name.git") - assert.NoError(t, err) - - req := httptest.NewRequest(http.MethodGet, "/v1/configuration", strings.NewReader("")) - res := httptest.NewRecorder() - r := server.SetUpRouter() - r.ServeHTTP(res, req) - - if res.Code != test.expectedHTTPStatus { - t.Fatalf("Expected HTTP status code %d, got %d: %s", test.expectedHTTPStatus, res.Code, res.Body.String()) - } - - realDir, err := filepath.EvalSymlinks(dir) - assert.NoError(t, err) - test.expectedResponse = fmt.Sprintf(test.expectedResponse, realDir, filepath.Base(dir)) - - if res.Code == http.StatusOK { - CompareWithResult(t, res, test.expectedResponse) - } - }) - } -} - -func genProjectManifest() *manifest.VersionedProjectManifest { - return &manifest.VersionedProjectManifest{ - ApiVersion: "plural.sh/v1alpha1", - Kind: "ProjectManifest", - Spec: &manifest.ProjectManifest{ - Cluster: "abc", - Bucket: "def", - Project: "test", - }, - } -} diff --git a/pkg/server/context.go b/pkg/server/context.go deleted file mode 100644 index afb8d6ebe..000000000 --- a/pkg/server/context.go +++ /dev/null @@ -1,46 +0,0 @@ -package server - -import ( - "fmt" - "net/http" - - "github.com/gin-gonic/gin" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/samber/lo" -) - -type ConfigurationUpdate struct { - Configuration map[string]map[string]interface{} `json:"configuration,omitempty"` - Buckets []string `json:"buckets"` - Domains []string `json:"domains"` - Bundles []*manifest.Bundle `json:"bundles"` -} - -func contextConfiguration(c *gin.Context) error { - var update ConfigurationUpdate - if err := c.BindJSON(&update); err != nil { - return err - } - - context, err := manifest.ReadContext(manifest.ContextPath()) - if err != nil { - return err - } - - for k, v := range update.Configuration { - context.Configuration[k] = v - } - - context.Buckets = lo.Uniq(append(context.Buckets, update.Buckets...)) - context.Domains = lo.Uniq(append(context.Domains, update.Domains...)) - context.Bundles = lo.UniqBy(append(context.Bundles, update.Bundles...), func(b *manifest.Bundle) string { - return fmt.Sprintf("%s:%s", b.Repository, b.Name) - }) - - if err := context.Write(manifest.ContextPath()); err != nil { - return err - } - - c.JSON(http.StatusOK, context) - return nil -} diff --git a/pkg/server/context_test.go b/pkg/server/context_test.go deleted file mode 100644 index b8772eb44..000000000 --- a/pkg/server/context_test.go +++ /dev/null @@ -1,93 +0,0 @@ -package server_test - -import ( - "encoding/json" - "net/http" - "net/http/httptest" - "os" - "path" - "strings" - "testing" - - "github.com/stretchr/testify/assert" - - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/server" -) - -func TestContextConfiguration(t *testing.T) { - tests := []struct { - name string - body string - expectedHTTPStatus int - expectedResponse string - }{ - { - name: `update configuration console email address`, - body: `{"configuration": {"console":{"email":"newEmail@plural.sh"}}}`, - expectedHTTPStatus: http.StatusOK, - expectedResponse: `{"bundles":[],"buckets":[],"domains":[],"smtp":null,"configuration":{"console":{"email":"newEmail@plural.sh"},"minio":{"host":"minio.plural.sh","url":"https://test.plural.sh"}}}`, - }, - { - name: `add new entry to configuration`, - body: `{"configuration": {"newEntry":{"test":"test"}}}`, - expectedHTTPStatus: http.StatusOK, - expectedResponse: `{"bundles":[],"buckets":[],"domains":[],"smtp":null,"configuration":{"console":{"email":"test@plural.sh","git_user":"test"},"minio":{"host":"minio.plural.sh","url":"https://test.plural.sh"},"newEntry":{"test":"test"}}}`, - }, - { - name: `remove minio url from configuration`, - body: `{"configuration": {"console":{"email":"test@plural.sh","git_user":"test"},"minio":{"host":"minio.plural.sh"}}}`, - expectedHTTPStatus: http.StatusOK, - expectedResponse: `{"bundles":[],"buckets":[],"domains":[],"smtp":null,"configuration":{"console":{"email":"test@plural.sh","git_user":"test"},"minio":{"host":"minio.plural.sh"}}}`, - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - dir, err := os.MkdirTemp("", "config") - assert.NoError(t, err) - defer os.RemoveAll(dir) - - err = os.Chdir(dir) - assert.NoError(t, err) - - context := manifest.NewContext() - context.Configuration = genDefaultContextConfiguration() - err = context.Write(path.Join(dir, "context.yaml")) - assert.NoError(t, err) - - req := httptest.NewRequest(http.MethodPost, "/v1/context/configuration", strings.NewReader(test.body)) - res := httptest.NewRecorder() - r := server.SetUpRouter() - r.ServeHTTP(res, req) - - if res.Code != test.expectedHTTPStatus { - t.Fatalf("Expected HTTP status code %d, got %d: %s", test.expectedHTTPStatus, res.Code, res.Body.String()) - } - - if res.Code == http.StatusOK { - CompareWithResult(t, res, test.expectedResponse) - } - - context, err = manifest.ReadContext(manifest.ContextPath()) - assert.NoError(t, err) - - contextBytes, err := json.Marshal(context) - assert.NoError(t, err) - assert.Equal(t, test.expectedResponse, string(contextBytes)) - - }) - } -} - -func genDefaultContextConfiguration() map[string]map[string]interface{} { - configMap := make(map[string]map[string]interface{}) - configMap["console"] = map[string]interface{}{ - "email": "test@plural.sh", - "git_user": "test", - } - configMap["minio"] = map[string]interface{}{ - "url": "https://test.plural.sh", - "host": "minio.plural.sh", - } - return configMap -} diff --git a/pkg/server/git.go b/pkg/server/git.go deleted file mode 100644 index 5b8a624d5..000000000 --- a/pkg/server/git.go +++ /dev/null @@ -1,92 +0,0 @@ -package server - -import ( - "fmt" - "os" - "path/filepath" - - "github.com/mitchellh/go-homedir" - - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" -) - -func gitExists() (bool, error) { - dir, err := homedir.Expand("~/workspace") - if err != nil { - return false, err - } - - return utils.Exists(dir), nil -} - -func setupGit(setup *SetupRequest) error { - p, err := homedir.Expand("~/.ssh") - if err != nil { - return err - } - - if err := os.MkdirAll(p, 0700); err != nil { - return err - } - - if err := os.WriteFile(pathing.SanitizeFilepath(filepath.Join(p, "id_rsa")), []byte(setup.SshPrivateKey), 0600); err != nil { - return fmt.Errorf("error writing ssh private key: %w", err) - } - if err := os.WriteFile(pathing.SanitizeFilepath(filepath.Join(p, "id_rsa.pub")), []byte(setup.SshPublicKey), 0644); err != nil { - return fmt.Errorf("error writing ssh public key: %w", err) - } - - if err := execCmd("ssh-add", pathing.SanitizeFilepath(filepath.Join(p, "id_rsa"))); err != nil { - return fmt.Errorf("error adding ssh key to agent: %w", err) - } - - dir, err := homedir.Expand("~/workspace") - if err != nil { - return fmt.Errorf("error getting the workspace: %w", err) - } - - if err := execCmd("git", "clone", setup.GitUrl, dir); err != nil { - return fmt.Errorf("error cloning the repository: %w", err) - } - - if err := os.Chdir(dir); err != nil { - return fmt.Errorf("error changing directory: %w", err) - } - if err := gitConfig("user.email", setup.User.Email); err != nil { - return fmt.Errorf("error during git config: %w", err) - } - - name := "plural-shell" - if setup.User.GitUser != "" { - name = setup.User.GitUser - } - if err := gitConfig("user.name", name); err != nil { - return fmt.Errorf("error during git config: %w", err) - } - - if err := execCmd("plural", "crypto", "init"); err != nil { - return fmt.Errorf("error running plural crypt init: %w", err) - } - - return execCmd("plural", "crypto", "unlock") -} - -func gitConfig(args ...string) error { - cmdArgs := append([]string{"config", "--global"}, args...) - return execCmd("git", cmdArgs...) -} - -func syncGit() error { - dir, err := homedir.Expand("~/workspace") - if err != nil { - return err - } - - if err := os.Chdir(dir); err != nil { - return err - } - - return git.Sync(dir, "pushing local cloud shell changes", true) -} diff --git a/pkg/server/middleware.go b/pkg/server/middleware.go deleted file mode 100644 index 6fe97e67e..000000000 --- a/pkg/server/middleware.go +++ /dev/null @@ -1,17 +0,0 @@ -package server - -import ( - "net/http" - - "github.com/gin-gonic/gin" -) - -func ErrorHandler() gin.HandlerFunc { - return func(c *gin.Context) { - c.Next() - - for _, err := range c.Errors { - c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) - } - } -} diff --git a/pkg/server/provider.go b/pkg/server/provider.go deleted file mode 100644 index 366b69dc4..000000000 --- a/pkg/server/provider.go +++ /dev/null @@ -1,126 +0,0 @@ -package server - -import ( - "bytes" - "context" - "fmt" - "os" - "text/template" - - "github.com/mitchellh/go-homedir" - - prov "github.com/pluralsh/plural-cli/pkg/provider" -) - -const azureEnvFile = ` -export AZURE_CLIENT_ID={{ .ClientId }} -export AZURE_TENANT_ID={{ .TenantId }} -export AZURE_CLIENT_SECRET={{ .ClientSecret }} -export ARM_CLIENT_ID={{ .ClientId }} -export ARM_TENANT_ID={{ .TenantId }} -export ARM_CLIENT_SECRET={{ .ClientSecret }} -export ARM_USE_MSI=true -export ARM_SUBSCRIPTION_ID={{ .SubscriptionId }} -` - -func setupProvider(setup *SetupRequest) error { - if marked("cloud") { - return nil - } - - if setup.Provider == "aws" { - return setupAws(setup) - } - - if setup.Provider == "gcp" { - return setupGcp(setup) - } - - if setup.Provider == "azure" { - return setupAzure(setup) - } - - return nil -} - -func setupGcp(setup *SetupRequest) error { - f, err := homedir.Expand("~/gcp.json") - if err != nil { - return fmt.Errorf("error getting the gcp.json path: %w", err) - } - - if err := os.WriteFile(f, []byte(setup.Credentials.Gcp.ApplicationCredentials), 0644); err != nil { - return fmt.Errorf("error writing gcp credentials: %w", err) - } - - if out, err := execCmdWithOutput("gcloud", "auth", "activate-service-account", "--key-file", f, "--project", setup.Workspace.Project); err != nil { - return fmt.Errorf("error authenticating to gcloud: %s", out) - } - - return nil -} - -func setupAzure(setup *SetupRequest) error { - az := setup.Credentials.Azure - setup.Context = map[string]interface{}{ - "TenantId": az.TenantId, - "SubscriptionId": az.SubscriptionId, - "StorageAccount": az.StorageAccount, - } - - tpl, err := template.New("azure").Parse(azureEnvFile) - if err != nil { - return err - } - - var out bytes.Buffer - out.Grow(5 * 1024) - if err := tpl.Execute(&out, az); err != nil { - return err - } - - f, err := homedir.Expand("~/.env") - if err != nil { - return err - } - - if err := os.WriteFile(f, out.Bytes(), 0644); err != nil { - return fmt.Errorf("error writing azure env file: %w", err) - } - - if out, err := execCmdWithOutput("az", "login", "--service-principal", "-u", az.ClientId, "-p", az.ClientSecret, "--tenant", az.TenantId); err != nil { - return fmt.Errorf("error logging into az cli: %s", out) - } - - return nil -} - -func setupAws(setup *SetupRequest) error { - aws := setup.Credentials.Aws - - if err := awsConfig("default.region", setup.Workspace.Region); err != nil { - return fmt.Errorf("error configuring default aws region: %w", err) - } - - if err := awsConfig("aws_access_key_id", aws.AccessKeyId); err != nil { - return fmt.Errorf("error configuring aws access key: %w", err) - } - - if err := awsConfig("aws_secret_access_key", aws.SecretAccessKey); err != nil { - return fmt.Errorf("error configuring aws secret key: %w", err) - } - - accountId, err := prov.GetAwsAccount(context.Background()) - if err != nil { - return fmt.Errorf("error getting aws account: %w", err) - } - - setup.Workspace.Project = accountId - return nil -} - -func awsConfig(args ...string) error { - allArgs := []string{"configure", "set"} - allArgs = append(allArgs, args...) - return execCmd("aws", allArgs...) -} diff --git a/pkg/server/server.go b/pkg/server/server.go deleted file mode 100644 index ec77c52f0..000000000 --- a/pkg/server/server.go +++ /dev/null @@ -1,70 +0,0 @@ -package server - -import ( - "context" - "errors" - "net/http" - "os" - "os/signal" - "syscall" - "time" - - "github.com/gin-gonic/gin" -) - -func SetUpRouter() *gin.Engine { - r := gin.Default() - r.Use(ErrorHandler()) - v1 := r.Group("/v1") - { - v1.POST("/setup", serverFunc(setupCli)) - v1.GET("/health", healthcheck) - v1.GET("/configuration", serverFunc(configuration)) - v1.GET("/applications", serverFunc(listApplications)) - v1.GET("/shutdown", serverFunc(shutdown)) - v1.POST("/context/configuration", serverFunc(contextConfiguration)) - v1.POST("/shutdown", serverFunc(shutdown)) - } - return r -} - -func Run() error { - gin.SetMode(gin.ReleaseMode) - r := SetUpRouter() - - term := make(chan os.Signal, 1) // OS termination signal - fail := make(chan error) // Teardown failure signal - - go func() { - signal.Notify(term, syscall.SIGINT, syscall.SIGTERM) - <-term // waits for termination signal - // context with 30s timeout - _, cancel := context.WithTimeout(context.Background(), 30*time.Second) - defer cancel() - // all teardown process must complete within 30 seconds - fail <- teardown() - }() - - if err := r.Run(":8080"); err != nil && !errors.Is(err, http.ErrServerClosed) { - return err - } - - return <-fail -} - -func healthcheck(c *gin.Context) { - c.String(http.StatusOK, "OK") -} - -func shutdown(c *gin.Context) error { - if err := syncGit(); err != nil { - return err - } - - c.String(http.StatusOK, "OK") - return nil -} - -func teardown() error { - return syncGit() -} diff --git a/pkg/server/server_test.go b/pkg/server/server_test.go deleted file mode 100644 index a9fa58032..000000000 --- a/pkg/server/server_test.go +++ /dev/null @@ -1,57 +0,0 @@ -package server_test - -import ( - "io" - "net/http" - "net/http/httptest" - "strings" - "testing" - - "github.com/pluralsh/plural-cli/pkg/server" -) - -func TestHealthcheck(t *testing.T) { - tests := []struct { - name string - expectedHTTPStatus int - expectedResponse string - }{ - { - name: `test health check`, - expectedHTTPStatus: http.StatusOK, - expectedResponse: "OK", - }, - } - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - req := httptest.NewRequest(http.MethodGet, "/v1/health", strings.NewReader("")) - res := httptest.NewRecorder() - r := server.SetUpRouter() - r.ServeHTTP(res, req) - - if res.Code != test.expectedHTTPStatus { - t.Fatalf("Expected HTTP status code %d, got %d: %s", test.expectedHTTPStatus, res.Code, res.Body.String()) - } - - if res.Code == http.StatusOK { - CompareWithResult(t, res, test.expectedResponse) - } - }) - } -} - -// CompareWithResult a convenience function for comparing http.Body content with response. -func CompareWithResult(t *testing.T, res *httptest.ResponseRecorder, response string) { - t.Helper() - bBytes, err := io.ReadAll(res.Body) - if err != nil { - t.Fatal("Unable to read response body") - } - - r := strings.TrimSpace(response) - b := strings.TrimSpace(string(bBytes)) - - if r != b { - t.Fatalf("Expected response body to be \n%s \ngot \n%s", r, b) - } -} diff --git a/pkg/server/setup.go b/pkg/server/setup.go deleted file mode 100644 index fc9b9e3d5..000000000 --- a/pkg/server/setup.go +++ /dev/null @@ -1,189 +0,0 @@ -package server - -import ( - "fmt" - "net/http" - "os" - - "github.com/gin-gonic/gin" - "github.com/mitchellh/go-homedir" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/crypto" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/provider" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/wkspace" - - "github.com/pluralsh/polly/algorithms" -) - -func toConfig(setup *SetupRequest) *config.Config { - return &config.Config{ - Email: setup.User.Email, - Token: setup.User.AccessToken, - ReportErrors: true, - } -} - -func toManifest(setup *SetupRequest) *manifest.ProjectManifest { - wk := setup.Workspace - return &manifest.ProjectManifest{ - Cluster: wk.Cluster, - Bucket: wk.Bucket, - Project: wk.Project, - Provider: toProvider(setup.Provider), - Region: wk.Region, - BucketPrefix: wk.BucketPrefix, - Owner: &manifest.Owner{Email: setup.User.Email}, - Network: &manifest.NetworkConfig{ - PluralDns: true, - Subdomain: wk.Subdomain, - }, - Context: setup.Context, - } -} - -func toContext(setup *SetupRequest) *manifest.Context { - ctx := manifest.NewContext() - consoleConf := map[string]interface{}{ - "private_key": setup.SshPrivateKey, - "public_key": setup.SshPublicKey, - "passphrase": "", - "repo_url": setup.GitUrl, - "console_dns": fmt.Sprintf("console.%s", setup.Workspace.Subdomain), - "kas_dns": fmt.Sprintf("kas.%s", setup.Workspace.Subdomain), - "is_demo": setup.IsDemo, - } - - if setup.GitInfo != nil { - consoleConf["git_email"] = setup.GitInfo.Email - consoleConf["git_user"] = setup.GitInfo.Username - } - - if setup.User.Name != "" { - consoleConf["admin_name"] = setup.User.Name - } - - if setup.User.Email != "" { - consoleConf["admin_email"] = setup.User.Email - } - - ctx.Configuration = map[string]map[string]interface{}{ - "console": consoleConf, - } - return ctx -} - -func setupCli(c *gin.Context) error { - fmt.Println("Beginning to setup workspace") - var setup SetupRequest - if err := c.ShouldBindJSON(&setup); err != nil { - return err - } - - p, err := homedir.Expand("~/.plural") - if err != nil { - return err - } - - if err := os.MkdirAll(p, 0755); err != nil { - return err - } - - if err := crypto.Setup(setup.AesKey); err != nil { - return err - } - - conf := toConfig(&setup) - if err := conf.Flush(); err != nil { - return err - } - - if err := setupProvider(&setup); err != nil { - return fmt.Errorf("error setting up provider: %w", err) - } - marker("cloud") - - exists, err := gitExists() - if err != nil { - return err - } - - if exists { - c.JSON(http.StatusOK, gin.H{"success": true}) - return nil - } - - if err := setupGit(&setup); err != nil { - return fmt.Errorf("error setting up git: %w", err) - } - - if err := crypto.CreateKeyFingerprintFile(); err != nil { - return err - } - _ = wkspace.DownloadReadme() - - man := toManifest(&setup) - path := manifest.ProjectManifestPath() - if !utils.Exists(path) { - if err := man.Write(path); err != nil { - return fmt.Errorf("error writing manifest: %w", err) - } - } else if setup.Provider == "azure" { - current, err := manifest.FetchProject() - if err != nil { - return err - } - - current.Project = man.Project - if err := current.Write(path); err != nil { - return fmt.Errorf("error writing manifest: %w", err) - } - } - - ctx := toContext(&setup) - path = manifest.ContextPath() - if !utils.Exists(path) { - if err := ctx.Write(path); err != nil { - return fmt.Errorf("error writing context: %w", err) - } - } - - prov, err := provider.GetProvider() - if err != nil { - return err - } - - if err := runPreflights(prov); err != nil { - return err - } - - missing, err := prov.Permissions() - if err != nil { - return err - } - - // try to initialize kubeconfig if we can, but don't stress if it fails - _ = execCmd("plural", "wkspace", "kube-init") - c.JSON(http.StatusOK, gin.H{"success": true, "missing": missing}) - return nil -} - -func runPreflights(prov provider.Provider) error { - // run only relevant preflights - preflights := []*provider.Preflight{} - if prov.Name() == api.ProviderGCP { - preflights = algorithms.Filter(prov.Preflights(), func(pre *provider.Preflight) bool { - return pre.Name == string(provider.PreflightCheckEnabledServices) - }) - } - - for _, pre := range preflights { - if err := pre.Validate(); err != nil { - return err - } - } - return nil -} diff --git a/pkg/server/types.go b/pkg/server/types.go deleted file mode 100644 index 4487e6d77..000000000 --- a/pkg/server/types.go +++ /dev/null @@ -1,59 +0,0 @@ -package server - -type Workspace struct { - Cluster string `json:"cluster"` - Project string `json:"project"` - Region string `json:"region"` - Bucket string `json:"bucket"` - BucketPrefix string `json:"bucket_prefix"` - Subdomain string `json:"subdomain"` -} - -type Aws struct { - AccessKeyId string `json:"access_key_id"` - SecretAccessKey string `json:"secret_access_key"` -} - -type Gcp struct { - ApplicationCredentials string `json:"application_credentials"` -} - -type Azure struct { - TenantId string `json:"tenant_id"` - ClientId string `json:"client_id"` - ClientSecret string `json:"client_secret"` - StorageAccount string `json:"storage_account"` - SubscriptionId string `json:"subscription_id"` -} - -type Credentials struct { - Aws *Aws `json:"aws"` - Gcp *Gcp `json:"gcp"` - Azure *Azure `json:"azure"` -} - -type User struct { - GitUser string `json:"gitUser"` - Email string `json:"email"` - Name string `json:"name"` - AccessToken string `json:"access_token"` -} - -type GitInfo struct { - Username string `json:"username"` - Email string `json:"email"` -} - -type SetupRequest struct { - Workspace *Workspace `json:"workspace"` - Credentials *Credentials `json:"credentials"` - User *User `json:"user"` - Provider string `json:"provider"` - AesKey string `json:"aes_key"` - GitUrl string `json:"git_url"` - GitInfo *GitInfo `json:"git_info"` - SshPublicKey string `json:"ssh_public_key"` - SshPrivateKey string `json:"ssh_private_key"` - IsDemo bool `json:"is_demo"` - Context map[string]interface{} -} diff --git a/pkg/server/utils.go b/pkg/server/utils.go deleted file mode 100644 index 8946a8958..000000000 --- a/pkg/server/utils.go +++ /dev/null @@ -1,59 +0,0 @@ -package server - -import ( - "bytes" - "fmt" - "os" - "os/exec" - "path/filepath" - "strings" - - "github.com/gin-gonic/gin" - "github.com/mitchellh/go-homedir" - "github.com/pluralsh/plural-cli/pkg/utils" -) - -func serverFunc(f func(c *gin.Context) error) func(c *gin.Context) { - return func(c *gin.Context) { - if err := f(c); err != nil { - _ = c.Error(err) - } - } -} - -func toProvider(prov string) string { - prov = strings.ToLower(prov) - if prov == "gcp" { - return "google" - } - return prov -} - -func marker(name string) { - if file, err := os.Create(markfile(name)); err == nil { - file.Close() - } -} - -func marked(name string) bool { - return utils.Exists(markfile(name)) -} - -func markfile(name string) string { - p, _ := homedir.Expand("~/.plural") - return filepath.Join(p, fmt.Sprintf("%s.mark", name)) -} - -func execCmd(command string, args ...string) error { - _, err := execCmdWithOutput(command, args...) - return err -} - -func execCmdWithOutput(command string, args ...string) (string, error) { - var buff bytes.Buffer - cmd := exec.Command(command, args...) - cmd.Stdout = &buff - cmd.Stderr = &buff - err := cmd.Run() - return buff.String(), err -} diff --git a/pkg/template/funcs.go b/pkg/template/funcs.go index 70a206773..5ed8b5d68 100644 --- a/pkg/template/funcs.go +++ b/pkg/template/funcs.go @@ -97,12 +97,12 @@ func homeDir(parts ...string) (string, error) { } func knownHosts() (string, error) { - known_hosts, err := homeDir(".ssh", "known_hosts") + knownHostsPath, err := homeDir(".ssh", "known_hosts") if err != nil { return "", err } - res, _ := utils.ReadFile(known_hosts) + res, _ := utils.ReadFile(knownHostsPath) return res, nil } @@ -161,30 +161,6 @@ func importValue(tool, path string) string { return fmt.Sprintf(`"{{ .Import.%s.%s }}"`, tool, path) } -func chartInstalled(name, repoName string) (bool, error) { - client := api.NewClient() - - repo, err := client.GetRepository(repoName) - if err != nil { - fmt.Printf("error: %s\n", err) - return false, nil - } - - chartInstallations, err := client.GetChartInstallations(repo.Id) - if err != nil { - fmt.Printf("error: %s\n", err) - return false, nil - } - - for _, chartInstallation := range chartInstallations { - if chartInstallation.Chart.Name == name { - return true, nil - } - } - - return false, nil -} - func toYaml(val interface{}) (string, error) { res, err := yaml.Marshal(val) return string(res), err diff --git a/pkg/template/template.go b/pkg/template/template.go index 732e814b6..d0a7e7f07 100644 --- a/pkg/template/template.go +++ b/pkg/template/template.go @@ -34,7 +34,6 @@ func GetFuncMap() template.FuncMap { funcs["fileExists"] = fileExists funcs["pathJoin"] = pathJoin funcs["eabCredential"] = eabCredential - funcs["chartInstalled"] = chartInstalled return funcs } diff --git a/pkg/test/mocks/Client.go b/pkg/test/mocks/Client.go index 81e29523b..1a9a758b5 100644 --- a/pkg/test/mocks/Client.go +++ b/pkg/test/mocks/Client.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package mocks @@ -14,36 +14,6 @@ type Client struct { mock.Mock } -// AcquireLock provides a mock function with given fields: repo -func (_m *Client) AcquireLock(repo string) (*api.ApplyLock, error) { - ret := _m.Called(repo) - - if len(ret) == 0 { - panic("no return value specified for AcquireLock") - } - - var r0 *api.ApplyLock - var r1 error - if rf, ok := ret.Get(0).(func(string) (*api.ApplyLock, error)); ok { - return rf(repo) - } - if rf, ok := ret.Get(0).(func(string) *api.ApplyLock); ok { - r0 = rf(repo) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*api.ApplyLock) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(repo) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - // Chat provides a mock function with given fields: history func (_m *Client) Chat(history []*api.ChatMessage) (*api.ChatMessage, error) { ret := _m.Called(history) @@ -104,7 +74,7 @@ func (_m *Client) Cluster(id string) (*api.Cluster, error) { return r0, r1 } -// Clusters provides a mock function with given fields: +// Clusters provides a mock function with no fields func (_m *Client) Clusters() ([]*api.Cluster, error) { ret := _m.Called() @@ -134,7 +104,7 @@ func (_m *Client) Clusters() ([]*api.Cluster, error) { return r0, r1 } -// CreateAccessToken provides a mock function with given fields: +// CreateAccessToken provides a mock function with no fields func (_m *Client) CreateAccessToken() (string, error) { ret := _m.Called() @@ -162,70 +132,6 @@ func (_m *Client) CreateAccessToken() (string, error) { return r0, r1 } -// CreateArtifact provides a mock function with given fields: repo, attrs -func (_m *Client) CreateArtifact(repo string, attrs api.ArtifactAttributes) (api.Artifact, error) { - ret := _m.Called(repo, attrs) - - if len(ret) == 0 { - panic("no return value specified for CreateArtifact") - } - - var r0 api.Artifact - var r1 error - if rf, ok := ret.Get(0).(func(string, api.ArtifactAttributes) (api.Artifact, error)); ok { - return rf(repo, attrs) - } - if rf, ok := ret.Get(0).(func(string, api.ArtifactAttributes) api.Artifact); ok { - r0 = rf(repo, attrs) - } else { - r0 = ret.Get(0).(api.Artifact) - } - - if rf, ok := ret.Get(1).(func(string, api.ArtifactAttributes) error); ok { - r1 = rf(repo, attrs) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// CreateCrd provides a mock function with given fields: repo, chart, file -func (_m *Client) CreateCrd(repo string, chart string, file string) error { - ret := _m.Called(repo, chart, file) - - if len(ret) == 0 { - panic("no return value specified for CreateCrd") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string, string, string) error); ok { - r0 = rf(repo, chart, file) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// CreateDependency provides a mock function with given fields: source, dest -func (_m *Client) CreateDependency(source string, dest string) error { - ret := _m.Called(source, dest) - - if len(ret) == 0 { - panic("no return value specified for CreateDependency") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string, string) error); ok { - r0 = rf(source, dest) - } else { - r0 = ret.Error(0) - } - - return r0 -} - // CreateDomain provides a mock function with given fields: name func (_m *Client) CreateDomain(name string) error { ret := _m.Called(name) @@ -326,80 +232,6 @@ func (_m *Client) CreateKeyBackup(attrs api.KeyBackupAttributes) error { return r0 } -// CreateRecipe provides a mock function with given fields: repoName, attrs -func (_m *Client) CreateRecipe(repoName string, attrs gqlclient.RecipeAttributes) (string, error) { - ret := _m.Called(repoName, attrs) - - if len(ret) == 0 { - panic("no return value specified for CreateRecipe") - } - - var r0 string - var r1 error - if rf, ok := ret.Get(0).(func(string, gqlclient.RecipeAttributes) (string, error)); ok { - return rf(repoName, attrs) - } - if rf, ok := ret.Get(0).(func(string, gqlclient.RecipeAttributes) string); ok { - r0 = rf(repoName, attrs) - } else { - r0 = ret.Get(0).(string) - } - - if rf, ok := ret.Get(1).(func(string, gqlclient.RecipeAttributes) error); ok { - r1 = rf(repoName, attrs) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// CreateRepository provides a mock function with given fields: name, publisher, input -func (_m *Client) CreateRepository(name string, publisher string, input *gqlclient.RepositoryAttributes) error { - ret := _m.Called(name, publisher, input) - - if len(ret) == 0 { - panic("no return value specified for CreateRepository") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string, string, *gqlclient.RepositoryAttributes) error); ok { - r0 = rf(name, publisher, input) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// CreateStack provides a mock function with given fields: attributes -func (_m *Client) CreateStack(attributes gqlclient.StackAttributes) (string, error) { - ret := _m.Called(attributes) - - if len(ret) == 0 { - panic("no return value specified for CreateStack") - } - - var r0 string - var r1 error - if rf, ok := ret.Get(0).(func(gqlclient.StackAttributes) (string, error)); ok { - return rf(attributes) - } - if rf, ok := ret.Get(0).(func(gqlclient.StackAttributes) string); ok { - r0 = rf(attributes) - } else { - r0 = ret.Get(0).(string) - } - - if rf, ok := ret.Get(1).(func(gqlclient.StackAttributes) error); ok { - r1 = rf(attributes) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - // CreateTrust provides a mock function with given fields: issuer, trust func (_m *Client) CreateTrust(issuer string, trust string) error { ret := _m.Called(issuer, trust) @@ -418,24 +250,6 @@ func (_m *Client) CreateTrust(issuer string, trust string) error { return r0 } -// CreateUpgrade provides a mock function with given fields: queue, repository, attrs -func (_m *Client) CreateUpgrade(queue string, repository string, attrs gqlclient.UpgradeAttributes) error { - ret := _m.Called(queue, repository, attrs) - - if len(ret) == 0 { - panic("no return value specified for CreateUpgrade") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string, string, gqlclient.UpgradeAttributes) error); ok { - r0 = rf(queue, repository, attrs) - } else { - r0 = ret.Error(0) - } - - return r0 -} - // DeleteEabCredential provides a mock function with given fields: cluster, provider func (_m *Client) DeleteEabCredential(cluster string, provider string) error { ret := _m.Called(cluster, provider) @@ -454,42 +268,6 @@ func (_m *Client) DeleteEabCredential(cluster string, provider string) error { return r0 } -// DeleteInstallation provides a mock function with given fields: id -func (_m *Client) DeleteInstallation(id string) error { - ret := _m.Called(id) - - if len(ret) == 0 { - panic("no return value specified for DeleteInstallation") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string) error); ok { - r0 = rf(id) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// DeleteShell provides a mock function with given fields: -func (_m *Client) DeleteShell() error { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for DeleteShell") - } - - var r0 error - if rf, ok := ret.Get(0).(func() error); ok { - r0 = rf() - } else { - r0 = ret.Error(0) - } - - return r0 -} - // DeleteTrust provides a mock function with given fields: id func (_m *Client) DeleteTrust(id string) error { ret := _m.Called(id) @@ -508,25 +286,7 @@ func (_m *Client) DeleteTrust(id string) error { return r0 } -// DestroyCluster provides a mock function with given fields: domain, name, provider -func (_m *Client) DestroyCluster(domain string, name string, provider string) error { - ret := _m.Called(domain, name, provider) - - if len(ret) == 0 { - panic("no return value specified for DestroyCluster") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string, string, string) error); ok { - r0 = rf(domain, name, provider) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// DeviceLogin provides a mock function with given fields: +// DeviceLogin provides a mock function with no fields func (_m *Client) DeviceLogin() (*api.DeviceLogin, error) { ret := _m.Called() @@ -556,67 +316,7 @@ func (_m *Client) DeviceLogin() (*api.DeviceLogin, error) { return r0, r1 } -// GetChartInstallations provides a mock function with given fields: repoId -func (_m *Client) GetChartInstallations(repoId string) ([]*api.ChartInstallation, error) { - ret := _m.Called(repoId) - - if len(ret) == 0 { - panic("no return value specified for GetChartInstallations") - } - - var r0 []*api.ChartInstallation - var r1 error - if rf, ok := ret.Get(0).(func(string) ([]*api.ChartInstallation, error)); ok { - return rf(repoId) - } - if rf, ok := ret.Get(0).(func(string) []*api.ChartInstallation); ok { - r0 = rf(repoId) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.ChartInstallation) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(repoId) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetCharts provides a mock function with given fields: repoId -func (_m *Client) GetCharts(repoId string) ([]*api.Chart, error) { - ret := _m.Called(repoId) - - if len(ret) == 0 { - panic("no return value specified for GetCharts") - } - - var r0 []*api.Chart - var r1 error - if rf, ok := ret.Get(0).(func(string) ([]*api.Chart, error)); ok { - return rf(repoId) - } - if rf, ok := ret.Get(0).(func(string) []*api.Chart); ok { - r0 = rf(repoId) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.Chart) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(repoId) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetConsoleInstances provides a mock function with given fields: +// GetConsoleInstances provides a mock function with no fields func (_m *Client) GetConsoleInstances() ([]*gqlclient.ConsoleInstanceFragment, error) { ret := _m.Called() @@ -734,29 +434,29 @@ func (_m *Client) GetInstallation(name string) (*api.Installation, error) { return r0, r1 } -// GetInstallationById provides a mock function with given fields: id -func (_m *Client) GetInstallationById(id string) (*api.Installation, error) { - ret := _m.Called(id) +// GetKeyBackup provides a mock function with given fields: name +func (_m *Client) GetKeyBackup(name string) (*api.KeyBackup, error) { + ret := _m.Called(name) if len(ret) == 0 { - panic("no return value specified for GetInstallationById") + panic("no return value specified for GetKeyBackup") } - var r0 *api.Installation + var r0 *api.KeyBackup var r1 error - if rf, ok := ret.Get(0).(func(string) (*api.Installation, error)); ok { - return rf(id) + if rf, ok := ret.Get(0).(func(string) (*api.KeyBackup, error)); ok { + return rf(name) } - if rf, ok := ret.Get(0).(func(string) *api.Installation); ok { - r0 = rf(id) + if rf, ok := ret.Get(0).(func(string) *api.KeyBackup); ok { + r0 = rf(name) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*api.Installation) + r0 = ret.Get(0).(*api.KeyBackup) } } if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(id) + r1 = rf(name) } else { r1 = ret.Error(1) } @@ -764,29 +464,29 @@ func (_m *Client) GetInstallationById(id string) (*api.Installation, error) { return r0, r1 } -// GetInstallations provides a mock function with given fields: -func (_m *Client) GetInstallations() ([]*api.Installation, error) { - ret := _m.Called() +// GetRepository provides a mock function with given fields: repo +func (_m *Client) GetRepository(repo string) (*api.Repository, error) { + ret := _m.Called(repo) if len(ret) == 0 { - panic("no return value specified for GetInstallations") + panic("no return value specified for GetRepository") } - var r0 []*api.Installation + var r0 *api.Repository var r1 error - if rf, ok := ret.Get(0).(func() ([]*api.Installation, error)); ok { - return rf() + if rf, ok := ret.Get(0).(func(string) (*api.Repository, error)); ok { + return rf(repo) } - if rf, ok := ret.Get(0).(func() []*api.Installation); ok { - r0 = rf() + if rf, ok := ret.Get(0).(func(string) *api.Repository); ok { + r0 = rf(repo) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.Installation) + r0 = ret.Get(0).(*api.Repository) } } - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() + if rf, ok := ret.Get(1).(func(string) error); ok { + r1 = rf(repo) } else { r1 = ret.Error(1) } @@ -794,548 +494,24 @@ func (_m *Client) GetInstallations() ([]*api.Installation, error) { return r0, r1 } -// GetKeyBackup provides a mock function with given fields: name -func (_m *Client) GetKeyBackup(name string) (*api.KeyBackup, error) { - ret := _m.Called(name) +// GetTfProviders provides a mock function with no fields +func (_m *Client) GetTfProviders() ([]string, error) { + ret := _m.Called() if len(ret) == 0 { - panic("no return value specified for GetKeyBackup") + panic("no return value specified for GetTfProviders") } - var r0 *api.KeyBackup + var r0 []string var r1 error - if rf, ok := ret.Get(0).(func(string) (*api.KeyBackup, error)); ok { - return rf(name) + if rf, ok := ret.Get(0).(func() ([]string, error)); ok { + return rf() } - if rf, ok := ret.Get(0).(func(string) *api.KeyBackup); ok { - r0 = rf(name) + if rf, ok := ret.Get(0).(func() []string); ok { + r0 = rf() } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(*api.KeyBackup) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(name) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetPackageInstallations provides a mock function with given fields: repoId -func (_m *Client) GetPackageInstallations(repoId string) ([]*api.ChartInstallation, []*api.TerraformInstallation, error) { - ret := _m.Called(repoId) - - if len(ret) == 0 { - panic("no return value specified for GetPackageInstallations") - } - - var r0 []*api.ChartInstallation - var r1 []*api.TerraformInstallation - var r2 error - if rf, ok := ret.Get(0).(func(string) ([]*api.ChartInstallation, []*api.TerraformInstallation, error)); ok { - return rf(repoId) - } - if rf, ok := ret.Get(0).(func(string) []*api.ChartInstallation); ok { - r0 = rf(repoId) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.ChartInstallation) - } - } - - if rf, ok := ret.Get(1).(func(string) []*api.TerraformInstallation); ok { - r1 = rf(repoId) - } else { - if ret.Get(1) != nil { - r1 = ret.Get(1).([]*api.TerraformInstallation) - } - } - - if rf, ok := ret.Get(2).(func(string) error); ok { - r2 = rf(repoId) - } else { - r2 = ret.Error(2) - } - - return r0, r1, r2 -} - -// GetRecipe provides a mock function with given fields: repo, name -func (_m *Client) GetRecipe(repo string, name string) (*api.Recipe, error) { - ret := _m.Called(repo, name) - - if len(ret) == 0 { - panic("no return value specified for GetRecipe") - } - - var r0 *api.Recipe - var r1 error - if rf, ok := ret.Get(0).(func(string, string) (*api.Recipe, error)); ok { - return rf(repo, name) - } - if rf, ok := ret.Get(0).(func(string, string) *api.Recipe); ok { - r0 = rf(repo, name) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*api.Recipe) - } - } - - if rf, ok := ret.Get(1).(func(string, string) error); ok { - r1 = rf(repo, name) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetRecipeByID provides a mock function with given fields: id -func (_m *Client) GetRecipeByID(id string) (*api.Recipe, error) { - ret := _m.Called(id) - - if len(ret) == 0 { - panic("no return value specified for GetRecipeByID") - } - - var r0 *api.Recipe - var r1 error - if rf, ok := ret.Get(0).(func(string) (*api.Recipe, error)); ok { - return rf(id) - } - if rf, ok := ret.Get(0).(func(string) *api.Recipe); ok { - r0 = rf(id) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*api.Recipe) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(id) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetRepository provides a mock function with given fields: repo -func (_m *Client) GetRepository(repo string) (*api.Repository, error) { - ret := _m.Called(repo) - - if len(ret) == 0 { - panic("no return value specified for GetRepository") - } - - var r0 *api.Repository - var r1 error - if rf, ok := ret.Get(0).(func(string) (*api.Repository, error)); ok { - return rf(repo) - } - if rf, ok := ret.Get(0).(func(string) *api.Repository); ok { - r0 = rf(repo) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*api.Repository) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(repo) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetShell provides a mock function with given fields: -func (_m *Client) GetShell() (api.CloudShell, error) { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for GetShell") - } - - var r0 api.CloudShell - var r1 error - if rf, ok := ret.Get(0).(func() (api.CloudShell, error)); ok { - return rf() - } - if rf, ok := ret.Get(0).(func() api.CloudShell); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(api.CloudShell) - } - - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetStack provides a mock function with given fields: name, provider -func (_m *Client) GetStack(name string, provider string) (*api.Stack, error) { - ret := _m.Called(name, provider) - - if len(ret) == 0 { - panic("no return value specified for GetStack") - } - - var r0 *api.Stack - var r1 error - if rf, ok := ret.Get(0).(func(string, string) (*api.Stack, error)); ok { - return rf(name, provider) - } - if rf, ok := ret.Get(0).(func(string, string) *api.Stack); ok { - r0 = rf(name, provider) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*api.Stack) - } - } - - if rf, ok := ret.Get(1).(func(string, string) error); ok { - r1 = rf(name, provider) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetTerraform provides a mock function with given fields: repoId -func (_m *Client) GetTerraform(repoId string) ([]*api.Terraform, error) { - ret := _m.Called(repoId) - - if len(ret) == 0 { - panic("no return value specified for GetTerraform") - } - - var r0 []*api.Terraform - var r1 error - if rf, ok := ret.Get(0).(func(string) ([]*api.Terraform, error)); ok { - return rf(repoId) - } - if rf, ok := ret.Get(0).(func(string) []*api.Terraform); ok { - r0 = rf(repoId) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.Terraform) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(repoId) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetTerraformInstallations provides a mock function with given fields: repoId -func (_m *Client) GetTerraformInstallations(repoId string) ([]*api.TerraformInstallation, error) { - ret := _m.Called(repoId) - - if len(ret) == 0 { - panic("no return value specified for GetTerraformInstallations") - } - - var r0 []*api.TerraformInstallation - var r1 error - if rf, ok := ret.Get(0).(func(string) ([]*api.TerraformInstallation, error)); ok { - return rf(repoId) - } - if rf, ok := ret.Get(0).(func(string) []*api.TerraformInstallation); ok { - r0 = rf(repoId) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.TerraformInstallation) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(repoId) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetTerraformVersions provides a mock function with given fields: id -func (_m *Client) GetTerraformVersions(id string) ([]*api.Version, error) { - ret := _m.Called(id) - - if len(ret) == 0 { - panic("no return value specified for GetTerraformVersions") - } - - var r0 []*api.Version - var r1 error - if rf, ok := ret.Get(0).(func(string) ([]*api.Version, error)); ok { - return rf(id) - } - if rf, ok := ret.Get(0).(func(string) []*api.Version); ok { - r0 = rf(id) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.Version) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(id) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetTfProviderScaffold provides a mock function with given fields: name, version -func (_m *Client) GetTfProviderScaffold(name string, version string) (string, error) { - ret := _m.Called(name, version) - - if len(ret) == 0 { - panic("no return value specified for GetTfProviderScaffold") - } - - var r0 string - var r1 error - if rf, ok := ret.Get(0).(func(string, string) (string, error)); ok { - return rf(name, version) - } - if rf, ok := ret.Get(0).(func(string, string) string); ok { - r0 = rf(name, version) - } else { - r0 = ret.Get(0).(string) - } - - if rf, ok := ret.Get(1).(func(string, string) error); ok { - r1 = rf(name, version) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetTfProviders provides a mock function with given fields: -func (_m *Client) GetTfProviders() ([]string, error) { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for GetTfProviders") - } - - var r0 []string - var r1 error - if rf, ok := ret.Get(0).(func() ([]string, error)); ok { - return rf() - } - if rf, ok := ret.Get(0).(func() []string); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]string) - } - } - - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GetVersions provides a mock function with given fields: chartId -func (_m *Client) GetVersions(chartId string) ([]*api.Version, error) { - ret := _m.Called(chartId) - - if len(ret) == 0 { - panic("no return value specified for GetVersions") - } - - var r0 []*api.Version - var r1 error - if rf, ok := ret.Get(0).(func(string) ([]*api.Version, error)); ok { - return rf(chartId) - } - if rf, ok := ret.Get(0).(func(string) []*api.Version); ok { - r0 = rf(chartId) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.Version) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(chartId) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// GrabAccessToken provides a mock function with given fields: -func (_m *Client) GrabAccessToken() (string, error) { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for GrabAccessToken") - } - - var r0 string - var r1 error - if rf, ok := ret.Get(0).(func() (string, error)); ok { - return rf() - } - if rf, ok := ret.Get(0).(func() string); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(string) - } - - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// ImpersonateServiceAccount provides a mock function with given fields: email -func (_m *Client) ImpersonateServiceAccount(email string) (string, string, error) { - ret := _m.Called(email) - - if len(ret) == 0 { - panic("no return value specified for ImpersonateServiceAccount") - } - - var r0 string - var r1 string - var r2 error - if rf, ok := ret.Get(0).(func(string) (string, string, error)); ok { - return rf(email) - } - if rf, ok := ret.Get(0).(func(string) string); ok { - r0 = rf(email) - } else { - r0 = ret.Get(0).(string) - } - - if rf, ok := ret.Get(1).(func(string) string); ok { - r1 = rf(email) - } else { - r1 = ret.Get(1).(string) - } - - if rf, ok := ret.Get(2).(func(string) error); ok { - r2 = rf(email) - } else { - r2 = ret.Error(2) - } - - return r0, r1, r2 -} - -// InstallRecipe provides a mock function with given fields: id -func (_m *Client) InstallRecipe(id string) error { - ret := _m.Called(id) - - if len(ret) == 0 { - panic("no return value specified for InstallRecipe") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string) error); ok { - r0 = rf(id) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// InstallVersion provides a mock function with given fields: tp, repo, pkg, vsn -func (_m *Client) InstallVersion(tp string, repo string, pkg string, vsn string) error { - ret := _m.Called(tp, repo, pkg, vsn) - - if len(ret) == 0 { - panic("no return value specified for InstallVersion") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string, string, string, string) error); ok { - r0 = rf(tp, repo, pkg, vsn) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// ListArtifacts provides a mock function with given fields: repo -func (_m *Client) ListArtifacts(repo string) ([]api.Artifact, error) { - ret := _m.Called(repo) - - if len(ret) == 0 { - panic("no return value specified for ListArtifacts") - } - - var r0 []api.Artifact - var r1 error - if rf, ok := ret.Get(0).(func(string) ([]api.Artifact, error)); ok { - return rf(repo) - } - if rf, ok := ret.Get(0).(func(string) []api.Artifact); ok { - r0 = rf(repo) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]api.Artifact) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(repo) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// ListKeyBackups provides a mock function with given fields: -func (_m *Client) ListKeyBackups() ([]*api.KeyBackup, error) { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for ListKeyBackups") - } - - var r0 []*api.KeyBackup - var r1 error - if rf, ok := ret.Get(0).(func() ([]*api.KeyBackup, error)); ok { - return rf() - } - if rf, ok := ret.Get(0).(func() []*api.KeyBackup); ok { - r0 = rf() - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.KeyBackup) + r0 = ret.Get(0).([]string) } } @@ -1348,29 +524,27 @@ func (_m *Client) ListKeyBackups() ([]*api.KeyBackup, error) { return r0, r1 } -// ListKeys provides a mock function with given fields: emails -func (_m *Client) ListKeys(emails []string) ([]*api.PublicKey, error) { - ret := _m.Called(emails) +// GrabAccessToken provides a mock function with no fields +func (_m *Client) GrabAccessToken() (string, error) { + ret := _m.Called() if len(ret) == 0 { - panic("no return value specified for ListKeys") + panic("no return value specified for GrabAccessToken") } - var r0 []*api.PublicKey + var r0 string var r1 error - if rf, ok := ret.Get(0).(func([]string) ([]*api.PublicKey, error)); ok { - return rf(emails) + if rf, ok := ret.Get(0).(func() (string, error)); ok { + return rf() } - if rf, ok := ret.Get(0).(func([]string) []*api.PublicKey); ok { - r0 = rf(emails) + if rf, ok := ret.Get(0).(func() string); ok { + r0 = rf() } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.PublicKey) - } + r0 = ret.Get(0).(string) } - if rf, ok := ret.Get(1).(func([]string) error); ok { - r1 = rf(emails) + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() } else { r1 = ret.Error(1) } @@ -1378,59 +552,64 @@ func (_m *Client) ListKeys(emails []string) ([]*api.PublicKey, error) { return r0, r1 } -// ListRecipes provides a mock function with given fields: repo, provider -func (_m *Client) ListRecipes(repo string, provider string) ([]*api.Recipe, error) { - ret := _m.Called(repo, provider) +// ImpersonateServiceAccount provides a mock function with given fields: email +func (_m *Client) ImpersonateServiceAccount(email string) (string, string, error) { + ret := _m.Called(email) if len(ret) == 0 { - panic("no return value specified for ListRecipes") + panic("no return value specified for ImpersonateServiceAccount") } - var r0 []*api.Recipe - var r1 error - if rf, ok := ret.Get(0).(func(string, string) ([]*api.Recipe, error)); ok { - return rf(repo, provider) + var r0 string + var r1 string + var r2 error + if rf, ok := ret.Get(0).(func(string) (string, string, error)); ok { + return rf(email) } - if rf, ok := ret.Get(0).(func(string, string) []*api.Recipe); ok { - r0 = rf(repo, provider) + if rf, ok := ret.Get(0).(func(string) string); ok { + r0 = rf(email) } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.Recipe) - } + r0 = ret.Get(0).(string) } - if rf, ok := ret.Get(1).(func(string, string) error); ok { - r1 = rf(repo, provider) + if rf, ok := ret.Get(1).(func(string) string); ok { + r1 = rf(email) } else { - r1 = ret.Error(1) + r1 = ret.Get(1).(string) } - return r0, r1 + if rf, ok := ret.Get(2).(func(string) error); ok { + r2 = rf(email) + } else { + r2 = ret.Error(2) + } + + return r0, r1, r2 } -// ListRepositories provides a mock function with given fields: query -func (_m *Client) ListRepositories(query string) ([]*api.Repository, error) { - ret := _m.Called(query) +// ListKeyBackups provides a mock function with no fields +func (_m *Client) ListKeyBackups() ([]*api.KeyBackup, error) { + ret := _m.Called() if len(ret) == 0 { - panic("no return value specified for ListRepositories") + panic("no return value specified for ListKeyBackups") } - var r0 []*api.Repository + var r0 []*api.KeyBackup var r1 error - if rf, ok := ret.Get(0).(func(string) ([]*api.Repository, error)); ok { - return rf(query) + if rf, ok := ret.Get(0).(func() ([]*api.KeyBackup, error)); ok { + return rf() } - if rf, ok := ret.Get(0).(func(string) []*api.Repository); ok { - r0 = rf(query) + if rf, ok := ret.Get(0).(func() []*api.KeyBackup); ok { + r0 = rf() } else { if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.Repository) + r0 = ret.Get(0).([]*api.KeyBackup) } } - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(query) + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() } else { r1 = ret.Error(1) } @@ -1438,29 +617,29 @@ func (_m *Client) ListRepositories(query string) ([]*api.Repository, error) { return r0, r1 } -// ListStacks provides a mock function with given fields: featured -func (_m *Client) ListStacks(featured bool) ([]*api.Stack, error) { - ret := _m.Called(featured) +// ListKeys provides a mock function with given fields: emails +func (_m *Client) ListKeys(emails []string) ([]*api.PublicKey, error) { + ret := _m.Called(emails) if len(ret) == 0 { - panic("no return value specified for ListStacks") + panic("no return value specified for ListKeys") } - var r0 []*api.Stack + var r0 []*api.PublicKey var r1 error - if rf, ok := ret.Get(0).(func(bool) ([]*api.Stack, error)); ok { - return rf(featured) + if rf, ok := ret.Get(0).(func([]string) ([]*api.PublicKey, error)); ok { + return rf(emails) } - if rf, ok := ret.Get(0).(func(bool) []*api.Stack); ok { - r0 = rf(featured) + if rf, ok := ret.Get(0).(func([]string) []*api.PublicKey); ok { + r0 = rf(emails) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.Stack) + r0 = ret.Get(0).([]*api.PublicKey) } } - if rf, ok := ret.Get(1).(func(bool) error); ok { - r1 = rf(featured) + if rf, ok := ret.Get(1).(func([]string) error); ok { + r1 = rf(emails) } else { r1 = ret.Error(1) } @@ -1526,25 +705,7 @@ func (_m *Client) LoginMethod(email string) (*api.LoginMethod, error) { return r0, r1 } -// MarkSynced provides a mock function with given fields: repo -func (_m *Client) MarkSynced(repo string) error { - ret := _m.Called(repo) - - if len(ret) == 0 { - panic("no return value specified for MarkSynced") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string) error); ok { - r0 = rf(repo) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// Me provides a mock function with given fields: +// Me provides a mock function with no fields func (_m *Client) Me() (*api.Me, error) { ret := _m.Called() @@ -1648,202 +809,6 @@ func (_m *Client) PollLoginToken(token string) (string, error) { return r0, r1 } -// PromoteCluster provides a mock function with given fields: -func (_m *Client) PromoteCluster() error { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for PromoteCluster") - } - - var r0 error - if rf, ok := ret.Get(0).(func() error); ok { - r0 = rf() - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// Release provides a mock function with given fields: name, tags -func (_m *Client) Release(name string, tags []string) error { - ret := _m.Called(name, tags) - - if len(ret) == 0 { - panic("no return value specified for Release") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string, []string) error); ok { - r0 = rf(name, tags) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// ReleaseLock provides a mock function with given fields: repo, lock -func (_m *Client) ReleaseLock(repo string, lock string) (*api.ApplyLock, error) { - ret := _m.Called(repo, lock) - - if len(ret) == 0 { - panic("no return value specified for ReleaseLock") - } - - var r0 *api.ApplyLock - var r1 error - if rf, ok := ret.Get(0).(func(string, string) (*api.ApplyLock, error)); ok { - return rf(repo, lock) - } - if rf, ok := ret.Get(0).(func(string, string) *api.ApplyLock); ok { - r0 = rf(repo, lock) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*api.ApplyLock) - } - } - - if rf, ok := ret.Get(1).(func(string, string) error); ok { - r1 = rf(repo, lock) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// ResetInstallations provides a mock function with given fields: -func (_m *Client) ResetInstallations() (int, error) { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for ResetInstallations") - } - - var r0 int - var r1 error - if rf, ok := ret.Get(0).(func() (int, error)); ok { - return rf() - } - if rf, ok := ret.Get(0).(func() int); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(int) - } - - if rf, ok := ret.Get(1).(func() error); ok { - r1 = rf() - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Scaffolds provides a mock function with given fields: in -func (_m *Client) Scaffolds(in *api.ScaffoldInputs) ([]*api.ScaffoldFile, error) { - ret := _m.Called(in) - - if len(ret) == 0 { - panic("no return value specified for Scaffolds") - } - - var r0 []*api.ScaffoldFile - var r1 error - if rf, ok := ret.Get(0).(func(*api.ScaffoldInputs) ([]*api.ScaffoldFile, error)); ok { - return rf(in) - } - if rf, ok := ret.Get(0).(func(*api.ScaffoldInputs) []*api.ScaffoldFile); ok { - r0 = rf(in) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).([]*api.ScaffoldFile) - } - } - - if rf, ok := ret.Get(1).(func(*api.ScaffoldInputs) error); ok { - r1 = rf(in) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// TransferOwnership provides a mock function with given fields: name, email -func (_m *Client) TransferOwnership(name string, email string) error { - ret := _m.Called(name, email) - - if len(ret) == 0 { - panic("no return value specified for TransferOwnership") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string, string) error); ok { - r0 = rf(name, email) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// UninstallChart provides a mock function with given fields: id -func (_m *Client) UninstallChart(id string) error { - ret := _m.Called(id) - - if len(ret) == 0 { - panic("no return value specified for UninstallChart") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string) error); ok { - r0 = rf(id) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// UninstallTerraform provides a mock function with given fields: id -func (_m *Client) UninstallTerraform(id string) error { - ret := _m.Called(id) - - if len(ret) == 0 { - panic("no return value specified for UninstallTerraform") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string) error); ok { - r0 = rf(id) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// UnlockRepository provides a mock function with given fields: name -func (_m *Client) UnlockRepository(name string) error { - ret := _m.Called(name) - - if len(ret) == 0 { - panic("no return value specified for UnlockRepository") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string) error); ok { - r0 = rf(name) - } else { - r0 = ret.Error(0) - } - - return r0 -} - // UpdateConsoleInstance provides a mock function with given fields: id, attrs func (_m *Client) UpdateConsoleInstance(id string, attrs gqlclient.ConsoleInstanceUpdateAttributes) error { ret := _m.Called(id, attrs) @@ -1880,34 +845,6 @@ func (_m *Client) UpdateVersion(spec *api.VersionSpec, tags []string) error { return r0 } -// UploadTerraform provides a mock function with given fields: dir, repoName -func (_m *Client) UploadTerraform(dir string, repoName string) (api.Terraform, error) { - ret := _m.Called(dir, repoName) - - if len(ret) == 0 { - panic("no return value specified for UploadTerraform") - } - - var r0 api.Terraform - var r1 error - if rf, ok := ret.Get(0).(func(string, string) (api.Terraform, error)); ok { - return rf(dir, repoName) - } - if rf, ok := ret.Get(0).(func(string, string) api.Terraform); ok { - r0 = rf(dir, repoName) - } else { - r0 = ret.Get(0).(api.Terraform) - } - - if rf, ok := ret.Get(1).(func(string, string) error); ok { - r1 = rf(dir, repoName) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - // NewClient creates a new instance of Client. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewClient(t interface { diff --git a/pkg/test/mocks/ConsoleClient.go b/pkg/test/mocks/ConsoleClient.go index 62abed716..51f4875ee 100644 --- a/pkg/test/mocks/ConsoleClient.go +++ b/pkg/test/mocks/ConsoleClient.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package mocks @@ -407,7 +407,7 @@ func (_m *ConsoleClient) DetachCluster(id string) error { return r0 } -// ExtUrl provides a mock function with given fields: +// ExtUrl provides a mock function with no fields func (_m *ConsoleClient) ExtUrl() string { ret := _m.Called() @@ -513,7 +513,7 @@ func (_m *ConsoleClient) GetDeployToken(clusterId *string, clusterName *string) return r0, r1 } -// GetGlobalSettings provides a mock function with given fields: +// GetGlobalSettings provides a mock function with no fields func (_m *ConsoleClient) GetGlobalSettings() (*client.DeploymentSettingsFragment, error) { ret := _m.Called() @@ -723,7 +723,7 @@ func (_m *ConsoleClient) ListClusterServices(clusterId *string, handle *string) return r0, r1 } -// ListClusters provides a mock function with given fields: +// ListClusters provides a mock function with no fields func (_m *ConsoleClient) ListClusters() (*client.ListClusters, error) { ret := _m.Called() @@ -783,7 +783,7 @@ func (_m *ConsoleClient) ListNotificationSinks(after *string, first *int64) (*cl return r0, r1 } -// ListProviders provides a mock function with given fields: +// ListProviders provides a mock function with no fields func (_m *ConsoleClient) ListProviders() (*client.ListProviders, error) { ret := _m.Called() @@ -813,7 +813,7 @@ func (_m *ConsoleClient) ListProviders() (*client.ListProviders, error) { return r0, r1 } -// ListRepositories provides a mock function with given fields: +// ListRepositories provides a mock function with no fields func (_m *ConsoleClient) ListRepositories() (*client.ListGitRepositories, error) { ret := _m.Called() @@ -873,7 +873,7 @@ func (_m *ConsoleClient) ListStackRuns(stackID string) (*client.ListStackRuns, e return r0, r1 } -// MyCluster provides a mock function with given fields: +// MyCluster provides a mock function with no fields func (_m *ConsoleClient) MyCluster() (*client.MyCluster, error) { ret := _m.Called() @@ -963,7 +963,7 @@ func (_m *ConsoleClient) SaveServiceContext(name string, attributes client.Servi return r0, r1 } -// Token provides a mock function with given fields: +// Token provides a mock function with no fields func (_m *ConsoleClient) Token() string { ret := _m.Called() @@ -1101,7 +1101,7 @@ func (_m *ConsoleClient) UpdateRepository(id string, attrs client.GitAttributes) return r0, r1 } -// Url provides a mock function with given fields: +// Url provides a mock function with no fields func (_m *ConsoleClient) Url() string { ret := _m.Called() diff --git a/pkg/test/mocks/Kube.go b/pkg/test/mocks/Kube.go index f9a3511be..82261562f 100644 --- a/pkg/test/mocks/Kube.go +++ b/pkg/test/mocks/Kube.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.46.3. DO NOT EDIT. +// Code generated by mockery v2.50.0. DO NOT EDIT. package mocks @@ -14,8 +14,6 @@ import ( v1 "k8s.io/api/core/v1" v1alpha1 "github.com/pluralsh/plural-operator/apis/platform/v1alpha1" - - vpnv1alpha1 "github.com/pluralsh/plural-operator/apis/vpn/v1alpha1" ) // Kube is an autogenerated mock type for the Kube type @@ -77,7 +75,7 @@ func (_m *Kube) FinalizeNamespace(namespace string) error { return r0 } -// GetClient provides a mock function with given fields: +// GetClient provides a mock function with no fields func (_m *Kube) GetClient() *client_gokubernetes.Clientset { ret := _m.Called() @@ -97,7 +95,7 @@ func (_m *Kube) GetClient() *client_gokubernetes.Clientset { return r0 } -// GetRestClient provides a mock function with given fields: +// GetRestClient provides a mock function with no fields func (_m *Kube) GetRestClient() *rest.RESTClient { ret := _m.Called() @@ -207,7 +205,7 @@ func (_m *Kube) Node(name string) (*v1.Node, error) { return r0, r1 } -// Nodes provides a mock function with given fields: +// Nodes provides a mock function with no fields func (_m *Kube) Nodes() (*v1.NodeList, error) { ret := _m.Called() @@ -423,174 +421,6 @@ func (_m *Kube) SecretList(namespace string, opts metav1.ListOptions) (*v1.Secre return r0, r1 } -// WireguardPeer provides a mock function with given fields: namespace, name -func (_m *Kube) WireguardPeer(namespace string, name string) (*vpnv1alpha1.WireguardPeer, error) { - ret := _m.Called(namespace, name) - - if len(ret) == 0 { - panic("no return value specified for WireguardPeer") - } - - var r0 *vpnv1alpha1.WireguardPeer - var r1 error - if rf, ok := ret.Get(0).(func(string, string) (*vpnv1alpha1.WireguardPeer, error)); ok { - return rf(namespace, name) - } - if rf, ok := ret.Get(0).(func(string, string) *vpnv1alpha1.WireguardPeer); ok { - r0 = rf(namespace, name) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*vpnv1alpha1.WireguardPeer) - } - } - - if rf, ok := ret.Get(1).(func(string, string) error); ok { - r1 = rf(namespace, name) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// WireguardPeerCreate provides a mock function with given fields: namespace, wireguardPeer -func (_m *Kube) WireguardPeerCreate(namespace string, wireguardPeer *vpnv1alpha1.WireguardPeer) (*vpnv1alpha1.WireguardPeer, error) { - ret := _m.Called(namespace, wireguardPeer) - - if len(ret) == 0 { - panic("no return value specified for WireguardPeerCreate") - } - - var r0 *vpnv1alpha1.WireguardPeer - var r1 error - if rf, ok := ret.Get(0).(func(string, *vpnv1alpha1.WireguardPeer) (*vpnv1alpha1.WireguardPeer, error)); ok { - return rf(namespace, wireguardPeer) - } - if rf, ok := ret.Get(0).(func(string, *vpnv1alpha1.WireguardPeer) *vpnv1alpha1.WireguardPeer); ok { - r0 = rf(namespace, wireguardPeer) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*vpnv1alpha1.WireguardPeer) - } - } - - if rf, ok := ret.Get(1).(func(string, *vpnv1alpha1.WireguardPeer) error); ok { - r1 = rf(namespace, wireguardPeer) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// WireguardPeerDelete provides a mock function with given fields: namespace, name -func (_m *Kube) WireguardPeerDelete(namespace string, name string) error { - ret := _m.Called(namespace, name) - - if len(ret) == 0 { - panic("no return value specified for WireguardPeerDelete") - } - - var r0 error - if rf, ok := ret.Get(0).(func(string, string) error); ok { - r0 = rf(namespace, name) - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// WireguardPeerList provides a mock function with given fields: namespace -func (_m *Kube) WireguardPeerList(namespace string) (*vpnv1alpha1.WireguardPeerList, error) { - ret := _m.Called(namespace) - - if len(ret) == 0 { - panic("no return value specified for WireguardPeerList") - } - - var r0 *vpnv1alpha1.WireguardPeerList - var r1 error - if rf, ok := ret.Get(0).(func(string) (*vpnv1alpha1.WireguardPeerList, error)); ok { - return rf(namespace) - } - if rf, ok := ret.Get(0).(func(string) *vpnv1alpha1.WireguardPeerList); ok { - r0 = rf(namespace) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*vpnv1alpha1.WireguardPeerList) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(namespace) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// WireguardServer provides a mock function with given fields: namespace, name -func (_m *Kube) WireguardServer(namespace string, name string) (*vpnv1alpha1.WireguardServer, error) { - ret := _m.Called(namespace, name) - - if len(ret) == 0 { - panic("no return value specified for WireguardServer") - } - - var r0 *vpnv1alpha1.WireguardServer - var r1 error - if rf, ok := ret.Get(0).(func(string, string) (*vpnv1alpha1.WireguardServer, error)); ok { - return rf(namespace, name) - } - if rf, ok := ret.Get(0).(func(string, string) *vpnv1alpha1.WireguardServer); ok { - r0 = rf(namespace, name) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*vpnv1alpha1.WireguardServer) - } - } - - if rf, ok := ret.Get(1).(func(string, string) error); ok { - r1 = rf(namespace, name) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// WireguardServerList provides a mock function with given fields: namespace -func (_m *Kube) WireguardServerList(namespace string) (*vpnv1alpha1.WireguardServerList, error) { - ret := _m.Called(namespace) - - if len(ret) == 0 { - panic("no return value specified for WireguardServerList") - } - - var r0 *vpnv1alpha1.WireguardServerList - var r1 error - if rf, ok := ret.Get(0).(func(string) (*vpnv1alpha1.WireguardServerList, error)); ok { - return rf(namespace) - } - if rf, ok := ret.Get(0).(func(string) *vpnv1alpha1.WireguardServerList); ok { - r0 = rf(namespace) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*vpnv1alpha1.WireguardServerList) - } - } - - if rf, ok := ret.Get(1).(func(string) error); ok { - r1 = rf(namespace) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - // NewKube creates a new instance of Kube. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. // The first argument is typically a *testing.T value. func NewKube(t interface { diff --git a/pkg/ui/bindings.go b/pkg/ui/bindings.go deleted file mode 100644 index 223780f01..000000000 --- a/pkg/ui/bindings.go +++ /dev/null @@ -1,16 +0,0 @@ -//go:build generate - -package ui - -import ( - "log" -) - -// Used to generate frontend bindings used to call backend. -// Only needed when 'generate' tag is provided during the build. -func init() { - err := Run(nil, nil) - if err != nil { - log.Fatal(err) - } -} diff --git a/pkg/ui/client.go b/pkg/ui/client.go deleted file mode 100644 index af262383c..000000000 --- a/pkg/ui/client.go +++ /dev/null @@ -1,197 +0,0 @@ -//go:build ui || generate - -package ui - -import ( - "encoding/json" - "fmt" - - "github.com/pluralsh/polly/algorithms" - "github.com/urfave/cli" - "golang.org/x/exp/maps" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/bundle" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/manifest" -) - -type Application struct { - Key string `json:"key"` - Label string `json:"label"` - IsDependency bool `json:"isDependency"` - // DependencyOf is a set of application names that this app is a dependency of. - DependencyOf map[string]interface{} `json:"dependencyOf"` - Data map[string]interface{} `json:"data"` -} - -func (this *Application) UnmarshalJSON(data []byte) error { - type Alias struct { - Key string `json:"key"` - Label string `json:"label"` - IsDependency bool `json:"isDependency"` - // Since Set does not exist in Go, we are passing array - // from the frontend and converting it to a map. - DependencyOf []string `json:"dependencyOf"` - Data map[string]interface{} `json:"data"` - } - alias := &Alias{} - if err := json.Unmarshal(data, alias); err != nil { - return fmt.Errorf("error during Application.UnmarshalJSON: %v\n", err) - } - - dependencyOf := map[string]interface{}{} - for _, appName := range alias.DependencyOf { - dependencyOf[appName] = struct{}{} - } - - *this = Application{ - Key: alias.Key, - Label: alias.Label, - IsDependency: alias.IsDependency, - DependencyOf: dependencyOf, - Data: alias.Data, - } - - return nil -} - -// Client struct used by the frontend to access and update backend data. -type Client struct { - ctx *cli.Context - client api.Client -} - -func (this *Client) Token() string { - conf := config.Read() - - return conf.Token -} - -func (this *Client) Project() *manifest.ProjectManifest { - project, err := manifest.FetchProject() - if err != nil { - return nil - } - - return project -} - -func (this *Client) Context() *manifest.Context { - context, err := manifest.FetchContext() - if err != nil { - return nil - } - - return context -} - -func (this *Client) Provider() string { - project, err := manifest.FetchProject() - if err != nil { - return "" - } - - return project.Provider -} - -func (this *Client) Install(applications []Application, domains, buckets []string) error { - path := manifest.ContextPath() - context, err := manifest.ReadContext(path) - if err != nil { - context = manifest.NewContext() - } - - this.addDomains(context, domains) - this.addBuckets(context, buckets) - - installableApplications := algorithms.Filter(applications, func(app Application) bool { - return !app.IsDependency - }) - - dependencies := algorithms.Filter(applications, func(app Application) bool { - return app.IsDependency - }) - - for _, app := range installableApplications { - if err = this.doInstall(app, context); err != nil { - return err - } - } - - for _, dep := range dependencies { - if err = this.doInstall(dep, context); err != nil { - return err - } - } - - // Write to context.yaml only if there were no errors - err = context.Write(path) - return err -} - -func (this *Client) doInstall(application Application, context *manifest.Context) error { - recipeID := application.Data["id"].(string) - oidc := application.Data["oidc"].(bool) - configuration := application.Data["context"].(map[string]interface{}) - repoName := application.Label - mergedConfiguration, exists := context.Configuration[repoName] - if !exists { - mergedConfiguration = map[string]interface{}{} - } - - recipe, err := this.client.GetRecipeByID(recipeID) - if err != nil { - return api.GetErrorResponse(err, "GetRecipeByID") - } - - // Merge incoming configuration with existing one and update context - maps.Copy(mergedConfiguration, configuration) - context.Configuration[repoName] = mergedConfiguration - - // Non-dependency apps need some additional handling - if !application.IsDependency { - // Add installed app to the context - context.AddBundle(repoName, recipe.Name) - - // Install app recipe - if err := this.client.InstallRecipe(recipeID); err != nil { - return fmt.Errorf("error: %w", api.GetErrorResponse(err, "InstallRecipe")) - } - } - - // Configure OIDC if enabled - if oidc { - confirm := true - err = bundle.ConfigureOidc(repoName, this.client, recipe, configuration, &confirm) - if err != nil { - return err - } - } - - return nil -} - -func (this *Client) addDomains(context *manifest.Context, domains []string) { - for _, domain := range domains { - if !context.HasDomain(domain) { - context.AddDomain(domain) - } - } -} - -func (this *Client) addBuckets(context *manifest.Context, buckets []string) { - for _, bucket := range buckets { - if !context.HasBucket(bucket) { - context.AddBucket(bucket) - } - } -} - -// NewClient creates a new proxy client struct -func NewClient(client api.Client, ctx *cli.Context) *Client { - return &Client{ - ctx: ctx, - client: client, - } -} diff --git a/pkg/ui/ui.go b/pkg/ui/ui.go deleted file mode 100644 index feffee5fa..000000000 --- a/pkg/ui/ui.go +++ /dev/null @@ -1,41 +0,0 @@ -//go:build ui || generate - -package ui - -import ( - "embed" - - "github.com/urfave/cli" - "github.com/wailsapp/wails/v2" - "github.com/wailsapp/wails/v2/pkg/options" - "github.com/wailsapp/wails/v2/pkg/options/assetserver" - - "github.com/pluralsh/plural-cli/pkg/api" -) - -//go:embed all:web/dist -var assets embed.FS - -func Run(c api.Client, ctx *cli.Context) error { - // Create an instance of the main window structure - window := NewWindow() - client := NewClient(c, ctx) - - // Create application with options - err := wails.Run(&options.App{ - Title: "Plural", - Frameless: true, - Width: window.width(), - Height: window.height(), - AssetServer: &assetserver.Options{ - Assets: assets, - }, - OnStartup: window.startup, - Bind: []interface{}{ - window, - client, - }, - }) - - return err -} diff --git a/pkg/ui/web/.eslintrc b/pkg/ui/web/.eslintrc deleted file mode 100644 index 65710b159..000000000 --- a/pkg/ui/web/.eslintrc +++ /dev/null @@ -1,3 +0,0 @@ -extends: ["@pluralsh/eslint-config-typescript"] -globals: - JSX: true diff --git a/pkg/ui/web/.gitignore b/pkg/ui/web/.gitignore deleted file mode 100644 index 704b8167e..000000000 --- a/pkg/ui/web/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -# dependencies -/node_modules -.pnp.* -.yarn/* -!.yarn/patches -!.yarn/plugins -!.yarn/releases -!.yarn/sdks -!.yarn/versions diff --git a/pkg/ui/web/.graphqlconfig b/pkg/ui/web/.graphqlconfig deleted file mode 100644 index 4543260f6..000000000 --- a/pkg/ui/web/.graphqlconfig +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "Plural API", - "schemaPath": "schema/schema.graphql", - "extensions": { - "endpoints": { - "Default GraphQL Endpoint": { - "url": "https://app.plural.sh/graphiql", - "headers": { - "user-agent": "JS GraphQL" - }, - "introspect": true - } - } - } -} \ No newline at end of file diff --git a/pkg/ui/web/.yarn/releases/yarn-3.4.1.cjs b/pkg/ui/web/.yarn/releases/yarn-3.4.1.cjs deleted file mode 100755 index 2bdb752d8..000000000 --- a/pkg/ui/web/.yarn/releases/yarn-3.4.1.cjs +++ /dev/null @@ -1,873 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable */ -//prettier-ignore -(()=>{var Mue=Object.create;var Wb=Object.defineProperty;var Kue=Object.getOwnPropertyDescriptor;var Uue=Object.getOwnPropertyNames;var Hue=Object.getPrototypeOf,Gue=Object.prototype.hasOwnProperty;var J=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var Yue=(r,e)=>()=>(r&&(e=r(r=0)),e);var w=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ut=(r,e)=>{for(var t in e)Wb(r,t,{get:e[t],enumerable:!0})},jue=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Uue(e))!Gue.call(r,n)&&n!==t&&Wb(r,n,{get:()=>e[n],enumerable:!(i=Kue(e,n))||i.enumerable});return r};var Pe=(r,e,t)=>(t=r!=null?Mue(Hue(r)):{},jue(e||!r||!r.__esModule?Wb(t,"default",{value:r,enumerable:!0}):t,r));var _1=w((O7e,X1)=>{X1.exports=V1;V1.sync=uge;var W1=J("fs");function cge(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var i=0;i{tK.exports=$1;$1.sync=gge;var Z1=J("fs");function $1(r,e,t){Z1.stat(r,function(i,n){t(i,i?!1:eK(n,e))})}function gge(r,e){return eK(Z1.statSync(r),e)}function eK(r,e){return r.isFile()&&fge(r,e)}function fge(r,e){var t=r.mode,i=r.uid,n=r.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=t&c||t&l&&n===o||t&a&&i===s||t&u&&s===0;return g}});var nK=w((U7e,iK)=>{var K7e=J("fs"),_E;process.platform==="win32"||global.TESTING_WINDOWS?_E=_1():_E=rK();iK.exports=uS;uS.sync=hge;function uS(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){uS(r,e||{},function(s,o){s?n(s):i(o)})})}_E(r,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),t(i,n)})}function hge(r,e){try{return _E.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var uK=w((H7e,cK)=>{var Ig=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",sK=J("path"),pge=Ig?";":":",oK=nK(),aK=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),AK=(r,e)=>{let t=e.colon||pge,i=r.match(/\//)||Ig&&r.match(/\\/)?[""]:[...Ig?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=Ig?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=Ig?n.split(t):[""];return Ig&&r.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},lK=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=AK(r,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(aK(r));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=sK.join(h,r),C=!h&&/^\.[\\\/]/.test(r)?r.slice(0,2)+p:p;u(l(C,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];oK(c+p,{pathExt:s},(C,y)=>{if(!C&&y)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return t?a(0).then(c=>t(null,c),t):a(0)},dge=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:i,pathExtExe:n}=AK(r,e),s=[];for(let o=0;o{"use strict";var gK=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};gS.exports=gK;gS.exports.default=gK});var CK=w((Y7e,dK)=>{"use strict";var hK=J("path"),Cge=uK(),mge=fK();function pK(r,e){let t=r.options.env||process.env,i=process.cwd(),n=r.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(r.options.cwd)}catch{}let o;try{o=Cge.sync(r.command,{path:t[mge({env:t})],pathExt:e?hK.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=hK.resolve(n?r.options.cwd:"",o)),o}function Ege(r){return pK(r)||pK(r,!0)}dK.exports=Ege});var mK=w((j7e,hS)=>{"use strict";var fS=/([()\][%!^"`<>&|;, *?])/g;function Ige(r){return r=r.replace(fS,"^$1"),r}function yge(r,e){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(fS,"^$1"),e&&(r=r.replace(fS,"^$1")),r}hS.exports.command=Ige;hS.exports.argument=yge});var IK=w((q7e,EK)=>{"use strict";EK.exports=/^#!(.*)/});var wK=w((J7e,yK)=>{"use strict";var wge=IK();yK.exports=(r="")=>{let e=r.match(wge);if(!e)return null;let[t,i]=e[0].replace(/#! ?/,"").split(" "),n=t.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var QK=w((W7e,BK)=>{"use strict";var pS=J("fs"),Bge=wK();function Qge(r){let t=Buffer.alloc(150),i;try{i=pS.openSync(r,"r"),pS.readSync(i,t,0,150,0),pS.closeSync(i)}catch{}return Bge(t.toString())}BK.exports=Qge});var xK=w((z7e,vK)=>{"use strict";var bge=J("path"),bK=CK(),SK=mK(),Sge=QK(),vge=process.platform==="win32",xge=/\.(?:com|exe)$/i,Pge=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Dge(r){r.file=bK(r);let e=r.file&&Sge(r.file);return e?(r.args.unshift(r.file),r.command=e,bK(r)):r.file}function kge(r){if(!vge)return r;let e=Dge(r),t=!xge.test(e);if(r.options.forceShell||t){let i=Pge.test(e);r.command=bge.normalize(r.command),r.command=SK.command(r.command),r.args=r.args.map(s=>SK.argument(s,i));let n=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${n}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function Rge(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let i={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?i:kge(i)}vK.exports=Rge});var kK=w((V7e,DK)=>{"use strict";var dS=process.platform==="win32";function CS(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function Fge(r,e){if(!dS)return;let t=r.emit;r.emit=function(i,n){if(i==="exit"){let s=PK(n,e,"spawn");if(s)return t.call(r,"error",s)}return t.apply(r,arguments)}}function PK(r,e){return dS&&r===1&&!e.file?CS(e.original,"spawn"):null}function Nge(r,e){return dS&&r===1&&!e.file?CS(e.original,"spawnSync"):null}DK.exports={hookChildProcess:Fge,verifyENOENT:PK,verifyENOENTSync:Nge,notFoundError:CS}});var IS=w((X7e,yg)=>{"use strict";var RK=J("child_process"),mS=xK(),ES=kK();function FK(r,e,t){let i=mS(r,e,t),n=RK.spawn(i.command,i.args,i.options);return ES.hookChildProcess(n,i),n}function Lge(r,e,t){let i=mS(r,e,t),n=RK.spawnSync(i.command,i.args,i.options);return n.error=n.error||ES.verifyENOENTSync(n.status,i),n}yg.exports=FK;yg.exports.spawn=FK;yg.exports.sync=Lge;yg.exports._parse=mS;yg.exports._enoent=ES});var LK=w((_7e,NK)=>{"use strict";function Tge(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function Ml(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ml)}Tge(Ml,Error);Ml.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",ie=me(">>",!1),de=">&",tt=me(">&",!1),Pt=">",It=me(">",!1),Or="<<<",ii=me("<<<",!1),gi="<&",hr=me("<&",!1),fi="<",ni=me("<",!1),Ls=function(m){return{type:"argument",segments:[].concat(...m)}},pr=function(m){return m},Ei="$'",_n=me("$'",!1),oa="'",aA=me("'",!1),eg=function(m){return[{type:"text",text:m}]},Zn='""',AA=me('""',!1),aa=function(){return{type:"text",text:""}},up='"',lA=me('"',!1),cA=function(m){return m},wr=function(m){return{type:"arithmetic",arithmetic:m,quoted:!0}},wl=function(m){return{type:"shell",shell:m,quoted:!0}},tg=function(m){return{type:"variable",...m,quoted:!0}},po=function(m){return{type:"text",text:m}},rg=function(m){return{type:"arithmetic",arithmetic:m,quoted:!1}},gp=function(m){return{type:"shell",shell:m,quoted:!1}},fp=function(m){return{type:"variable",...m,quoted:!1}},vr=function(m){return{type:"glob",pattern:m}},se=/^[^']/,Co=Je(["'"],!0,!1),Dn=function(m){return m.join("")},ig=/^[^$"]/,Qt=Je(["$",'"'],!0,!1),Bl=`\\ -`,kn=me(`\\ -`,!1),$n=function(){return""},es="\\",gt=me("\\",!1),mo=/^[\\$"`]/,At=Je(["\\","$",'"',"`"],!1,!1),an=function(m){return m},S="\\a",Tt=me("\\a",!1),ng=function(){return"a"},Ql="\\b",hp=me("\\b",!1),pp=function(){return"\b"},dp=/^[Ee]/,Cp=Je(["E","e"],!1,!1),mp=function(){return"\x1B"},G="\\f",yt=me("\\f",!1),uA=function(){return"\f"},ji="\\n",bl=me("\\n",!1),Xe=function(){return` -`},Aa="\\r",sg=me("\\r",!1),bE=function(){return"\r"},Ep="\\t",SE=me("\\t",!1),ar=function(){return" "},Rn="\\v",Sl=me("\\v",!1),Ip=function(){return"\v"},Ts=/^[\\'"?]/,la=Je(["\\","'",'"',"?"],!1,!1),An=function(m){return String.fromCharCode(parseInt(m,16))},Te="\\x",og=me("\\x",!1),vl="\\u",Os=me("\\u",!1),xl="\\U",gA=me("\\U",!1),ag=function(m){return String.fromCodePoint(parseInt(m,16))},Ag=/^[0-7]/,ca=Je([["0","7"]],!1,!1),ua=/^[0-9a-fA-f]/,rt=Je([["0","9"],["a","f"],["A","f"]],!1,!1),Eo=nt(),fA="-",Pl=me("-",!1),Ms="+",Dl=me("+",!1),vE=".",yp=me(".",!1),lg=function(m,b,N){return{type:"number",value:(m==="-"?-1:1)*parseFloat(b.join("")+"."+N.join(""))}},wp=function(m,b){return{type:"number",value:(m==="-"?-1:1)*parseInt(b.join(""))}},xE=function(m){return{type:"variable",...m}},kl=function(m){return{type:"variable",name:m}},PE=function(m){return m},cg="*",hA=me("*",!1),Rr="/",DE=me("/",!1),Ks=function(m,b,N){return{type:b==="*"?"multiplication":"division",right:N}},Us=function(m,b){return b.reduce((N,U)=>({left:N,...U}),m)},ug=function(m,b,N){return{type:b==="+"?"addition":"subtraction",right:N}},pA="$((",R=me("$((",!1),q="))",Ce=me("))",!1),Ke=function(m){return m},Re="$(",ze=me("$(",!1),dt=function(m){return m},Ft="${",Fn=me("${",!1),Db=":-",$M=me(":-",!1),e1=function(m,b){return{name:m,defaultValue:b}},kb=":-}",t1=me(":-}",!1),r1=function(m){return{name:m,defaultValue:[]}},Rb=":+",i1=me(":+",!1),n1=function(m,b){return{name:m,alternativeValue:b}},Fb=":+}",s1=me(":+}",!1),o1=function(m){return{name:m,alternativeValue:[]}},Nb=function(m){return{name:m}},a1="$",A1=me("$",!1),l1=function(m){return e.isGlobPattern(m)},c1=function(m){return m},Lb=/^[a-zA-Z0-9_]/,Tb=Je([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),Ob=function(){return T()},Mb=/^[$@*?#a-zA-Z0-9_\-]/,Kb=Je(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),u1=/^[(){}<>$|&; \t"']/,gg=Je(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),Ub=/^[<>&; \t"']/,Hb=Je(["<",">","&",";"," "," ",'"',"'"],!1,!1),kE=/^[ \t]/,RE=Je([" "," "],!1,!1),Q=0,Me=0,dA=[{line:1,column:1}],d=0,E=[],I=0,k;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function T(){return r.substring(Me,Q)}function _(){return Et(Me,Q)}function te(m,b){throw b=b!==void 0?b:Et(Me,Q),ki([lt(m)],r.substring(Me,Q),b)}function Be(m,b){throw b=b!==void 0?b:Et(Me,Q),Nn(m,b)}function me(m,b){return{type:"literal",text:m,ignoreCase:b}}function Je(m,b,N){return{type:"class",parts:m,inverted:b,ignoreCase:N}}function nt(){return{type:"any"}}function wt(){return{type:"end"}}function lt(m){return{type:"other",description:m}}function it(m){var b=dA[m],N;if(b)return b;for(N=m-1;!dA[N];)N--;for(b=dA[N],b={line:b.line,column:b.column};Nd&&(d=Q,E=[]),E.push(m))}function Nn(m,b){return new Ml(m,null,null,b)}function ki(m,b,N){return new Ml(Ml.buildMessage(m,b),m,b,N)}function CA(){var m,b;return m=Q,b=Mr(),b===t&&(b=null),b!==t&&(Me=m,b=s(b)),m=b,m}function Mr(){var m,b,N,U,ce;if(m=Q,b=Kr(),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();N!==t?(U=ga(),U!==t?(ce=ts(),ce===t&&(ce=null),ce!==t?(Me=m,b=o(b,U,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;if(m===t)if(m=Q,b=Kr(),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();N!==t?(U=ga(),U===t&&(U=null),U!==t?(Me=m,b=a(b,U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function ts(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=Mr(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=l(N),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function ga(){var m;return r.charCodeAt(Q)===59?(m=c,Q++):(m=t,I===0&&Qe(u)),m===t&&(r.charCodeAt(Q)===38?(m=g,Q++):(m=t,I===0&&Qe(f))),m}function Kr(){var m,b,N;return m=Q,b=g1(),b!==t?(N=yue(),N===t&&(N=null),N!==t?(Me=m,b=h(b,N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function yue(){var m,b,N,U,ce,Se,ht;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=wue(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Kr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=p(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function wue(){var m;return r.substr(Q,2)===C?(m=C,Q+=2):(m=t,I===0&&Qe(y)),m===t&&(r.substr(Q,2)===B?(m=B,Q+=2):(m=t,I===0&&Qe(v))),m}function g1(){var m,b,N;return m=Q,b=bue(),b!==t?(N=Bue(),N===t&&(N=null),N!==t?(Me=m,b=D(b,N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function Bue(){var m,b,N,U,ce,Se,ht;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(N=Que(),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=g1(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=L(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function Que(){var m;return r.substr(Q,2)===H?(m=H,Q+=2):(m=t,I===0&&Qe(j)),m===t&&(r.charCodeAt(Q)===124?(m=$,Q++):(m=t,I===0&&Qe(V))),m}function FE(){var m,b,N,U,ce,Se;if(m=Q,b=Q1(),b!==t)if(r.charCodeAt(Q)===61?(N=W,Q++):(N=t,I===0&&Qe(Z)),N!==t)if(U=p1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(Me=m,b=A(b,U),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;else Q=m,m=t;if(m===t)if(m=Q,b=Q1(),b!==t)if(r.charCodeAt(Q)===61?(N=W,Q++):(N=t,I===0&&Qe(Z)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=ae(b),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function bue(){var m,b,N,U,ce,Se,ht,Bt,Jr,hi,rs;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(r.charCodeAt(Q)===40?(N=ge,Q++):(N=t,I===0&&Qe(re)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Mr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();if(Se!==t)if(r.charCodeAt(Q)===41?(ht=O,Q++):(ht=t,I===0&&Qe(F)),ht!==t){for(Bt=[],Jr=He();Jr!==t;)Bt.push(Jr),Jr=He();if(Bt!==t){for(Jr=[],hi=Bp();hi!==t;)Jr.push(hi),hi=Bp();if(Jr!==t){for(hi=[],rs=He();rs!==t;)hi.push(rs),rs=He();hi!==t?(Me=m,b=ue(ce,Jr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t)if(r.charCodeAt(Q)===123?(N=he,Q++):(N=t,I===0&&Qe(ke)),N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t)if(ce=Mr(),ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();if(Se!==t)if(r.charCodeAt(Q)===125?(ht=Fe,Q++):(ht=t,I===0&&Qe(Ne)),ht!==t){for(Bt=[],Jr=He();Jr!==t;)Bt.push(Jr),Jr=He();if(Bt!==t){for(Jr=[],hi=Bp();hi!==t;)Jr.push(hi),hi=Bp();if(Jr!==t){for(hi=[],rs=He();rs!==t;)hi.push(rs),rs=He();hi!==t?(Me=m,b=oe(ce,Jr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){for(N=[],U=FE();U!==t;)N.push(U),U=FE();if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();if(U!==t){if(ce=[],Se=h1(),Se!==t)for(;Se!==t;)ce.push(Se),Se=h1();else ce=t;if(ce!==t){for(Se=[],ht=He();ht!==t;)Se.push(ht),ht=He();Se!==t?(Me=m,b=le(N,ce),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;if(m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){if(N=[],U=FE(),U!==t)for(;U!==t;)N.push(U),U=FE();else N=t;if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=we(N),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}}}return m}function f1(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t){if(N=[],U=NE(),U!==t)for(;U!==t;)N.push(U),U=NE();else N=t;if(N!==t){for(U=[],ce=He();ce!==t;)U.push(ce),ce=He();U!==t?(Me=m,b=fe(N),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t;return m}function h1(){var m,b,N;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();if(b!==t?(N=Bp(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t){for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();b!==t?(N=NE(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t)}return m}function Bp(){var m,b,N,U,ce;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();return b!==t?(qe.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(ne)),N===t&&(N=null),N!==t?(U=Sue(),U!==t?(ce=NE(),ce!==t?(Me=m,b=Y(N,U,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function Sue(){var m;return r.substr(Q,2)===pe?(m=pe,Q+=2):(m=t,I===0&&Qe(ie)),m===t&&(r.substr(Q,2)===de?(m=de,Q+=2):(m=t,I===0&&Qe(tt)),m===t&&(r.charCodeAt(Q)===62?(m=Pt,Q++):(m=t,I===0&&Qe(It)),m===t&&(r.substr(Q,3)===Or?(m=Or,Q+=3):(m=t,I===0&&Qe(ii)),m===t&&(r.substr(Q,2)===gi?(m=gi,Q+=2):(m=t,I===0&&Qe(hr)),m===t&&(r.charCodeAt(Q)===60?(m=fi,Q++):(m=t,I===0&&Qe(ni))))))),m}function NE(){var m,b,N;for(m=Q,b=[],N=He();N!==t;)b.push(N),N=He();return b!==t?(N=p1(),N!==t?(Me=m,b=Ae(N),m=b):(Q=m,m=t)):(Q=m,m=t),m}function p1(){var m,b,N;if(m=Q,b=[],N=d1(),N!==t)for(;N!==t;)b.push(N),N=d1();else b=t;return b!==t&&(Me=m,b=Ls(b)),m=b,m}function d1(){var m,b;return m=Q,b=vue(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=xue(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=Pue(),b!==t&&(Me=m,b=pr(b)),m=b,m===t&&(m=Q,b=Due(),b!==t&&(Me=m,b=pr(b)),m=b))),m}function vue(){var m,b,N,U;return m=Q,r.substr(Q,2)===Ei?(b=Ei,Q+=2):(b=t,I===0&&Qe(_n)),b!==t?(N=Fue(),N!==t?(r.charCodeAt(Q)===39?(U=oa,Q++):(U=t,I===0&&Qe(aA)),U!==t?(Me=m,b=eg(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function xue(){var m,b,N,U;return m=Q,r.charCodeAt(Q)===39?(b=oa,Q++):(b=t,I===0&&Qe(aA)),b!==t?(N=kue(),N!==t?(r.charCodeAt(Q)===39?(U=oa,Q++):(U=t,I===0&&Qe(aA)),U!==t?(Me=m,b=eg(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function Pue(){var m,b,N,U;if(m=Q,r.substr(Q,2)===Zn?(b=Zn,Q+=2):(b=t,I===0&&Qe(AA)),b!==t&&(Me=m,b=aa()),m=b,m===t)if(m=Q,r.charCodeAt(Q)===34?(b=up,Q++):(b=t,I===0&&Qe(lA)),b!==t){for(N=[],U=C1();U!==t;)N.push(U),U=C1();N!==t?(r.charCodeAt(Q)===34?(U=up,Q++):(U=t,I===0&&Qe(lA)),U!==t?(Me=m,b=cA(N),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function Due(){var m,b,N;if(m=Q,b=[],N=m1(),N!==t)for(;N!==t;)b.push(N),N=m1();else b=t;return b!==t&&(Me=m,b=cA(b)),m=b,m}function C1(){var m,b;return m=Q,b=w1(),b!==t&&(Me=m,b=wr(b)),m=b,m===t&&(m=Q,b=B1(),b!==t&&(Me=m,b=wl(b)),m=b,m===t&&(m=Q,b=qb(),b!==t&&(Me=m,b=tg(b)),m=b,m===t&&(m=Q,b=Rue(),b!==t&&(Me=m,b=po(b)),m=b))),m}function m1(){var m,b;return m=Q,b=w1(),b!==t&&(Me=m,b=rg(b)),m=b,m===t&&(m=Q,b=B1(),b!==t&&(Me=m,b=gp(b)),m=b,m===t&&(m=Q,b=qb(),b!==t&&(Me=m,b=fp(b)),m=b,m===t&&(m=Q,b=Tue(),b!==t&&(Me=m,b=vr(b)),m=b,m===t&&(m=Q,b=Lue(),b!==t&&(Me=m,b=po(b)),m=b)))),m}function kue(){var m,b,N;for(m=Q,b=[],se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co));N!==t;)b.push(N),se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co));return b!==t&&(Me=m,b=Dn(b)),m=b,m}function Rue(){var m,b,N;if(m=Q,b=[],N=E1(),N===t&&(ig.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Qt))),N!==t)for(;N!==t;)b.push(N),N=E1(),N===t&&(ig.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Qt)));else b=t;return b!==t&&(Me=m,b=Dn(b)),m=b,m}function E1(){var m,b,N;return m=Q,r.substr(Q,2)===Bl?(b=Bl,Q+=2):(b=t,I===0&&Qe(kn)),b!==t&&(Me=m,b=$n()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(mo.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(At)),N!==t?(Me=m,b=an(N),m=b):(Q=m,m=t)):(Q=m,m=t)),m}function Fue(){var m,b,N;for(m=Q,b=[],N=I1(),N===t&&(se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co)));N!==t;)b.push(N),N=I1(),N===t&&(se.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Co)));return b!==t&&(Me=m,b=Dn(b)),m=b,m}function I1(){var m,b,N;return m=Q,r.substr(Q,2)===S?(b=S,Q+=2):(b=t,I===0&&Qe(Tt)),b!==t&&(Me=m,b=ng()),m=b,m===t&&(m=Q,r.substr(Q,2)===Ql?(b=Ql,Q+=2):(b=t,I===0&&Qe(hp)),b!==t&&(Me=m,b=pp()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(dp.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Cp)),N!==t?(Me=m,b=mp(),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===G?(b=G,Q+=2):(b=t,I===0&&Qe(yt)),b!==t&&(Me=m,b=uA()),m=b,m===t&&(m=Q,r.substr(Q,2)===ji?(b=ji,Q+=2):(b=t,I===0&&Qe(bl)),b!==t&&(Me=m,b=Xe()),m=b,m===t&&(m=Q,r.substr(Q,2)===Aa?(b=Aa,Q+=2):(b=t,I===0&&Qe(sg)),b!==t&&(Me=m,b=bE()),m=b,m===t&&(m=Q,r.substr(Q,2)===Ep?(b=Ep,Q+=2):(b=t,I===0&&Qe(SE)),b!==t&&(Me=m,b=ar()),m=b,m===t&&(m=Q,r.substr(Q,2)===Rn?(b=Rn,Q+=2):(b=t,I===0&&Qe(Sl)),b!==t&&(Me=m,b=Ip()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(Ts.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(la)),N!==t?(Me=m,b=an(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Nue()))))))))),m}function Nue(){var m,b,N,U,ce,Se,ht,Bt,Jr,hi,rs,Jb;return m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Qe(gt)),b!==t?(N=Gb(),N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Te?(b=Te,Q+=2):(b=t,I===0&&Qe(og)),b!==t?(N=Q,U=Q,ce=Gb(),ce!==t?(Se=Ln(),Se!==t?(ce=[ce,Se],U=ce):(Q=U,U=t)):(Q=U,U=t),U===t&&(U=Gb()),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===vl?(b=vl,Q+=2):(b=t,I===0&&Qe(Os)),b!==t?(N=Q,U=Q,ce=Ln(),ce!==t?(Se=Ln(),Se!==t?(ht=Ln(),ht!==t?(Bt=Ln(),Bt!==t?(ce=[ce,Se,ht,Bt],U=ce):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=An(N),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===xl?(b=xl,Q+=2):(b=t,I===0&&Qe(gA)),b!==t?(N=Q,U=Q,ce=Ln(),ce!==t?(Se=Ln(),Se!==t?(ht=Ln(),ht!==t?(Bt=Ln(),Bt!==t?(Jr=Ln(),Jr!==t?(hi=Ln(),hi!==t?(rs=Ln(),rs!==t?(Jb=Ln(),Jb!==t?(ce=[ce,Se,ht,Bt,Jr,hi,rs,Jb],U=ce):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t),U!==t?N=r.substring(N,Q):N=U,N!==t?(Me=m,b=ag(N),m=b):(Q=m,m=t)):(Q=m,m=t)))),m}function Gb(){var m;return Ag.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(ca)),m}function Ln(){var m;return ua.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(rt)),m}function Lue(){var m,b,N,U,ce;if(m=Q,b=[],N=Q,r.charCodeAt(Q)===92?(U=es,Q++):(U=t,I===0&&Qe(gt)),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N===t&&(N=Q,U=Q,I++,ce=b1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t)),N!==t)for(;N!==t;)b.push(N),N=Q,r.charCodeAt(Q)===92?(U=es,Q++):(U=t,I===0&&Qe(gt)),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N===t&&(N=Q,U=Q,I++,ce=b1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t));else b=t;return b!==t&&(Me=m,b=Dn(b)),m=b,m}function Yb(){var m,b,N,U,ce,Se;if(m=Q,r.charCodeAt(Q)===45?(b=fA,Q++):(b=t,I===0&&Qe(Pl)),b===t&&(r.charCodeAt(Q)===43?(b=Ms,Q++):(b=t,I===0&&Qe(Dl))),b===t&&(b=null),b!==t){if(N=[],qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne)),U!==t)for(;U!==t;)N.push(U),qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne));else N=t;if(N!==t)if(r.charCodeAt(Q)===46?(U=vE,Q++):(U=t,I===0&&Qe(yp)),U!==t){if(ce=[],qe.test(r.charAt(Q))?(Se=r.charAt(Q),Q++):(Se=t,I===0&&Qe(ne)),Se!==t)for(;Se!==t;)ce.push(Se),qe.test(r.charAt(Q))?(Se=r.charAt(Q),Q++):(Se=t,I===0&&Qe(ne));else ce=t;ce!==t?(Me=m,b=lg(b,N,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;if(m===t){if(m=Q,r.charCodeAt(Q)===45?(b=fA,Q++):(b=t,I===0&&Qe(Pl)),b===t&&(r.charCodeAt(Q)===43?(b=Ms,Q++):(b=t,I===0&&Qe(Dl))),b===t&&(b=null),b!==t){if(N=[],qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne)),U!==t)for(;U!==t;)N.push(U),qe.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Qe(ne));else N=t;N!==t?(Me=m,b=wp(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;if(m===t&&(m=Q,b=qb(),b!==t&&(Me=m,b=xE(b)),m=b,m===t&&(m=Q,b=Rl(),b!==t&&(Me=m,b=kl(b)),m=b,m===t)))if(m=Q,r.charCodeAt(Q)===40?(b=ge,Q++):(b=t,I===0&&Qe(re)),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();if(N!==t)if(U=y1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(r.charCodeAt(Q)===41?(Se=O,Q++):(Se=t,I===0&&Qe(F)),Se!==t?(Me=m,b=PE(U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t}return m}function jb(){var m,b,N,U,ce,Se,ht,Bt;if(m=Q,b=Yb(),b!==t){for(N=[],U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===42?(Se=cg,Q++):(Se=t,I===0&&Qe(hA)),Se===t&&(r.charCodeAt(Q)===47?(Se=Rr,Q++):(Se=t,I===0&&Qe(DE))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=Yb(),Bt!==t?(Me=U,ce=Ks(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t;for(;U!==t;){for(N.push(U),U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===42?(Se=cg,Q++):(Se=t,I===0&&Qe(hA)),Se===t&&(r.charCodeAt(Q)===47?(Se=Rr,Q++):(Se=t,I===0&&Qe(DE))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=Yb(),Bt!==t?(Me=U,ce=Ks(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t}N!==t?(Me=m,b=Us(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function y1(){var m,b,N,U,ce,Se,ht,Bt;if(m=Q,b=jb(),b!==t){for(N=[],U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===43?(Se=Ms,Q++):(Se=t,I===0&&Qe(Dl)),Se===t&&(r.charCodeAt(Q)===45?(Se=fA,Q++):(Se=t,I===0&&Qe(Pl))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=jb(),Bt!==t?(Me=U,ce=ug(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t;for(;U!==t;){for(N.push(U),U=Q,ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();if(ce!==t)if(r.charCodeAt(Q)===43?(Se=Ms,Q++):(Se=t,I===0&&Qe(Dl)),Se===t&&(r.charCodeAt(Q)===45?(Se=fA,Q++):(Se=t,I===0&&Qe(Pl))),Se!==t){for(ht=[],Bt=He();Bt!==t;)ht.push(Bt),Bt=He();ht!==t?(Bt=jb(),Bt!==t?(Me=U,ce=ug(b,Se,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t}N!==t?(Me=m,b=Us(b,N),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function w1(){var m,b,N,U,ce,Se;if(m=Q,r.substr(Q,3)===pA?(b=pA,Q+=3):(b=t,I===0&&Qe(R)),b!==t){for(N=[],U=He();U!==t;)N.push(U),U=He();if(N!==t)if(U=y1(),U!==t){for(ce=[],Se=He();Se!==t;)ce.push(Se),Se=He();ce!==t?(r.substr(Q,2)===q?(Se=q,Q+=2):(Se=t,I===0&&Qe(Ce)),Se!==t?(Me=m,b=Ke(U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;return m}function B1(){var m,b,N,U;return m=Q,r.substr(Q,2)===Re?(b=Re,Q+=2):(b=t,I===0&&Qe(ze)),b!==t?(N=Mr(),N!==t?(r.charCodeAt(Q)===41?(U=O,Q++):(U=t,I===0&&Qe(F)),U!==t?(Me=m,b=dt(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function qb(){var m,b,N,U,ce,Se;return m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,2)===Db?(U=Db,Q+=2):(U=t,I===0&&Qe($M)),U!==t?(ce=f1(),ce!==t?(r.charCodeAt(Q)===125?(Se=Fe,Q++):(Se=t,I===0&&Qe(Ne)),Se!==t?(Me=m,b=e1(N,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,3)===kb?(U=kb,Q+=3):(U=t,I===0&&Qe(t1)),U!==t?(Me=m,b=r1(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,2)===Rb?(U=Rb,Q+=2):(U=t,I===0&&Qe(i1)),U!==t?(ce=f1(),ce!==t?(r.charCodeAt(Q)===125?(Se=Fe,Q++):(Se=t,I===0&&Qe(Ne)),Se!==t?(Me=m,b=n1(N,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.substr(Q,3)===Fb?(U=Fb,Q+=3):(U=t,I===0&&Qe(s1)),U!==t?(Me=m,b=o1(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Qe(Fn)),b!==t?(N=Rl(),N!==t?(r.charCodeAt(Q)===125?(U=Fe,Q++):(U=t,I===0&&Qe(Ne)),U!==t?(Me=m,b=Nb(N),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.charCodeAt(Q)===36?(b=a1,Q++):(b=t,I===0&&Qe(A1)),b!==t?(N=Rl(),N!==t?(Me=m,b=Nb(N),m=b):(Q=m,m=t)):(Q=m,m=t)))))),m}function Tue(){var m,b,N;return m=Q,b=Oue(),b!==t?(Me=Q,N=l1(b),N?N=void 0:N=t,N!==t?(Me=m,b=c1(b),m=b):(Q=m,m=t)):(Q=m,m=t),m}function Oue(){var m,b,N,U,ce;if(m=Q,b=[],N=Q,U=Q,I++,ce=S1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t),N!==t)for(;N!==t;)b.push(N),N=Q,U=Q,I++,ce=S1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Qe(Eo)),ce!==t?(Me=N,U=an(ce),N=U):(Q=N,N=t)):(Q=N,N=t);else b=t;return b!==t&&(Me=m,b=Dn(b)),m=b,m}function Q1(){var m,b,N;if(m=Q,b=[],Lb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Tb)),N!==t)for(;N!==t;)b.push(N),Lb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Tb));else b=t;return b!==t&&(Me=m,b=Ob()),m=b,m}function Rl(){var m,b,N;if(m=Q,b=[],Mb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Kb)),N!==t)for(;N!==t;)b.push(N),Mb.test(r.charAt(Q))?(N=r.charAt(Q),Q++):(N=t,I===0&&Qe(Kb));else b=t;return b!==t&&(Me=m,b=Ob()),m=b,m}function b1(){var m;return u1.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(gg)),m}function S1(){var m;return Ub.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Qe(Hb)),m}function He(){var m,b;if(m=[],kE.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Qe(RE)),b!==t)for(;b!==t;)m.push(b),kE.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Qe(RE));else m=t;return m}if(k=n(),k!==t&&Q===r.length)return k;throw k!==t&&Q{"use strict";function Mge(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function Ul(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ul)}Mge(Ul,Error);Ul.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=v,j=[]),j.push(ne))}function Ne(ne,Y){return new Ul(ne,null,null,Y)}function oe(ne,Y,pe){return new Ul(Ul.buildMessage(ne,Y),ne,Y,pe)}function le(){var ne,Y,pe,ie;return ne=v,Y=we(),Y!==t?(r.charCodeAt(v)===47?(pe=s,v++):(pe=t,$===0&&Fe(o)),pe!==t?(ie=we(),ie!==t?(D=ne,Y=a(Y,ie),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=we(),Y!==t&&(D=ne,Y=l(Y)),ne=Y),ne}function we(){var ne,Y,pe,ie;return ne=v,Y=fe(),Y!==t?(r.charCodeAt(v)===64?(pe=c,v++):(pe=t,$===0&&Fe(u)),pe!==t?(ie=qe(),ie!==t?(D=ne,Y=g(Y,ie),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=fe(),Y!==t&&(D=ne,Y=f(Y)),ne=Y),ne}function fe(){var ne,Y,pe,ie,de;return ne=v,r.charCodeAt(v)===64?(Y=c,v++):(Y=t,$===0&&Fe(u)),Y!==t?(pe=Ae(),pe!==t?(r.charCodeAt(v)===47?(ie=s,v++):(ie=t,$===0&&Fe(o)),ie!==t?(de=Ae(),de!==t?(D=ne,Y=h(),ne=Y):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t)):(v=ne,ne=t),ne===t&&(ne=v,Y=Ae(),Y!==t&&(D=ne,Y=h()),ne=Y),ne}function Ae(){var ne,Y,pe;if(ne=v,Y=[],p.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(C)),pe!==t)for(;pe!==t;)Y.push(pe),p.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(C));else Y=t;return Y!==t&&(D=ne,Y=h()),ne=Y,ne}function qe(){var ne,Y,pe;if(ne=v,Y=[],y.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(B)),pe!==t)for(;pe!==t;)Y.push(pe),y.test(r.charAt(v))?(pe=r.charAt(v),v++):(pe=t,$===0&&Fe(B));else Y=t;return Y!==t&&(D=ne,Y=h()),ne=Y,ne}if(V=n(),V!==t&&v===r.length)return V;throw V!==t&&v{"use strict";function UK(r){return typeof r>"u"||r===null}function Uge(r){return typeof r=="object"&&r!==null}function Hge(r){return Array.isArray(r)?r:UK(r)?[]:[r]}function Gge(r,e){var t,i,n,s;if(e)for(s=Object.keys(e),t=0,i=s.length;t{"use strict";function Op(r,e){Error.call(this),this.name="YAMLException",this.reason=r,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Op.prototype=Object.create(Error.prototype);Op.prototype.constructor=Op;Op.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t};HK.exports=Op});var jK=w((pXe,YK)=>{"use strict";var GK=Gl();function SS(r,e,t,i,n){this.name=r,this.buffer=e,this.position=t,this.line=i,this.column=n}SS.prototype.getSnippet=function(e,t){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,t=t||75,i="",n=this.position;n>0&&`\0\r -\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>t/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;ot/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),GK.repeat(" ",e)+i+a+s+` -`+GK.repeat(" ",e+this.position-n+i.length)+"^"};SS.prototype.toString=function(e){var t,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(i+=`: -`+t)),i};YK.exports=SS});var si=w((dXe,JK)=>{"use strict";var qK=Qg(),qge=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Jge=["scalar","sequence","mapping"];function Wge(r){var e={};return r!==null&&Object.keys(r).forEach(function(t){r[t].forEach(function(i){e[String(i)]=t})}),e}function zge(r,e){if(e=e||{},Object.keys(e).forEach(function(t){if(qge.indexOf(t)===-1)throw new qK('Unknown option "'+t+'" is met in definition of "'+r+'" YAML type.')}),this.tag=r,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=Wge(e.styleAliases||null),Jge.indexOf(this.kind)===-1)throw new qK('Unknown kind "'+this.kind+'" is specified for "'+r+'" YAML type.')}JK.exports=zge});var Yl=w((CXe,zK)=>{"use strict";var WK=Gl(),nI=Qg(),Vge=si();function vS(r,e,t){var i=[];return r.include.forEach(function(n){t=vS(n,e,t)}),r[e].forEach(function(n){t.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),t.push(n)}),t.filter(function(n,s){return i.indexOf(s)===-1})}function Xge(){var r={scalar:{},sequence:{},mapping:{},fallback:{}},e,t;function i(n){r[n.kind][n.tag]=r.fallback[n.tag]=n}for(e=0,t=arguments.length;e{"use strict";var _ge=si();VK.exports=new _ge("tag:yaml.org,2002:str",{kind:"scalar",construct:function(r){return r!==null?r:""}})});var ZK=w((EXe,_K)=>{"use strict";var Zge=si();_K.exports=new Zge("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(r){return r!==null?r:[]}})});var eU=w((IXe,$K)=>{"use strict";var $ge=si();$K.exports=new $ge("tag:yaml.org,2002:map",{kind:"mapping",construct:function(r){return r!==null?r:{}}})});var sI=w((yXe,tU)=>{"use strict";var efe=Yl();tU.exports=new efe({explicit:[XK(),ZK(),eU()]})});var iU=w((wXe,rU)=>{"use strict";var tfe=si();function rfe(r){if(r===null)return!0;var e=r.length;return e===1&&r==="~"||e===4&&(r==="null"||r==="Null"||r==="NULL")}function ife(){return null}function nfe(r){return r===null}rU.exports=new tfe("tag:yaml.org,2002:null",{kind:"scalar",resolve:rfe,construct:ife,predicate:nfe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var sU=w((BXe,nU)=>{"use strict";var sfe=si();function ofe(r){if(r===null)return!1;var e=r.length;return e===4&&(r==="true"||r==="True"||r==="TRUE")||e===5&&(r==="false"||r==="False"||r==="FALSE")}function afe(r){return r==="true"||r==="True"||r==="TRUE"}function Afe(r){return Object.prototype.toString.call(r)==="[object Boolean]"}nU.exports=new sfe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:ofe,construct:afe,predicate:Afe,represent:{lowercase:function(r){return r?"true":"false"},uppercase:function(r){return r?"TRUE":"FALSE"},camelcase:function(r){return r?"True":"False"}},defaultStyle:"lowercase"})});var aU=w((QXe,oU)=>{"use strict";var lfe=Gl(),cfe=si();function ufe(r){return 48<=r&&r<=57||65<=r&&r<=70||97<=r&&r<=102}function gfe(r){return 48<=r&&r<=55}function ffe(r){return 48<=r&&r<=57}function hfe(r){if(r===null)return!1;var e=r.length,t=0,i=!1,n;if(!e)return!1;if(n=r[t],(n==="-"||n==="+")&&(n=r[++t]),n==="0"){if(t+1===e)return!0;if(n=r[++t],n==="b"){for(t++;t=0?"0b"+r.toString(2):"-0b"+r.toString(2).slice(1)},octal:function(r){return r>=0?"0"+r.toString(8):"-0"+r.toString(8).slice(1)},decimal:function(r){return r.toString(10)},hexadecimal:function(r){return r>=0?"0x"+r.toString(16).toUpperCase():"-0x"+r.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var cU=w((bXe,lU)=>{"use strict";var AU=Gl(),Cfe=si(),mfe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Efe(r){return!(r===null||!mfe.test(r)||r[r.length-1]==="_")}function Ife(r){var e,t,i,n;return e=r.replace(/_/g,"").toLowerCase(),t=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),t*e):t*parseFloat(e,10)}var yfe=/^[-+]?[0-9]+e/;function wfe(r,e){var t;if(isNaN(r))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===r)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===r)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(AU.isNegativeZero(r))return"-0.0";return t=r.toString(10),yfe.test(t)?t.replace("e",".e"):t}function Bfe(r){return Object.prototype.toString.call(r)==="[object Number]"&&(r%1!==0||AU.isNegativeZero(r))}lU.exports=new Cfe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Efe,construct:Ife,predicate:Bfe,represent:wfe,defaultStyle:"lowercase"})});var xS=w((SXe,uU)=>{"use strict";var Qfe=Yl();uU.exports=new Qfe({include:[sI()],implicit:[iU(),sU(),aU(),cU()]})});var PS=w((vXe,gU)=>{"use strict";var bfe=Yl();gU.exports=new bfe({include:[xS()]})});var dU=w((xXe,pU)=>{"use strict";var Sfe=si(),fU=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),hU=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function vfe(r){return r===null?!1:fU.exec(r)!==null||hU.exec(r)!==null}function xfe(r){var e,t,i,n,s,o,a,l=0,c=null,u,g,f;if(e=fU.exec(r),e===null&&(e=hU.exec(r)),e===null)throw new Error("Date resolve error");if(t=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(t,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(t,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function Pfe(r){return r.toISOString()}pU.exports=new Sfe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:vfe,construct:xfe,instanceOf:Date,represent:Pfe})});var mU=w((PXe,CU)=>{"use strict";var Dfe=si();function kfe(r){return r==="<<"||r===null}CU.exports=new Dfe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:kfe})});var yU=w((DXe,IU)=>{"use strict";var jl;try{EU=J,jl=EU("buffer").Buffer}catch{}var EU,Rfe=si(),DS=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function Ffe(r){if(r===null)return!1;var e,t,i=0,n=r.length,s=DS;for(t=0;t64)){if(e<0)return!1;i+=6}return i%8===0}function Nfe(r){var e,t,i=r.replace(/[\r\n=]/g,""),n=i.length,s=DS,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return t=n%4*6,t===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):t===18?(a.push(o>>10&255),a.push(o>>2&255)):t===12&&a.push(o>>4&255),jl?jl.from?jl.from(a):new jl(a):a}function Lfe(r){var e="",t=0,i,n,s=r.length,o=DS;for(i=0;i>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]),t=(t<<8)+r[i];return n=s%3,n===0?(e+=o[t>>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]):n===2?(e+=o[t>>10&63],e+=o[t>>4&63],e+=o[t<<2&63],e+=o[64]):n===1&&(e+=o[t>>2&63],e+=o[t<<4&63],e+=o[64],e+=o[64]),e}function Tfe(r){return jl&&jl.isBuffer(r)}IU.exports=new Rfe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Ffe,construct:Nfe,predicate:Tfe,represent:Lfe})});var BU=w((kXe,wU)=>{"use strict";var Ofe=si(),Mfe=Object.prototype.hasOwnProperty,Kfe=Object.prototype.toString;function Ufe(r){if(r===null)return!0;var e=[],t,i,n,s,o,a=r;for(t=0,i=a.length;t{"use strict";var Gfe=si(),Yfe=Object.prototype.toString;function jfe(r){if(r===null)return!0;var e,t,i,n,s,o=r;for(s=new Array(o.length),e=0,t=o.length;e{"use strict";var Jfe=si(),Wfe=Object.prototype.hasOwnProperty;function zfe(r){if(r===null)return!0;var e,t=r;for(e in t)if(Wfe.call(t,e)&&t[e]!==null)return!1;return!0}function Vfe(r){return r!==null?r:{}}SU.exports=new Jfe("tag:yaml.org,2002:set",{kind:"mapping",resolve:zfe,construct:Vfe})});var Sg=w((NXe,xU)=>{"use strict";var Xfe=Yl();xU.exports=new Xfe({include:[PS()],implicit:[dU(),mU()],explicit:[yU(),BU(),bU(),vU()]})});var DU=w((LXe,PU)=>{"use strict";var _fe=si();function Zfe(){return!0}function $fe(){}function ehe(){return""}function the(r){return typeof r>"u"}PU.exports=new _fe("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:Zfe,construct:$fe,predicate:the,represent:ehe})});var RU=w((TXe,kU)=>{"use strict";var rhe=si();function ihe(r){if(r===null||r.length===0)return!1;var e=r,t=/\/([gim]*)$/.exec(r),i="";return!(e[0]==="/"&&(t&&(i=t[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function nhe(r){var e=r,t=/\/([gim]*)$/.exec(r),i="";return e[0]==="/"&&(t&&(i=t[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function she(r){var e="/"+r.source+"/";return r.global&&(e+="g"),r.multiline&&(e+="m"),r.ignoreCase&&(e+="i"),e}function ohe(r){return Object.prototype.toString.call(r)==="[object RegExp]"}kU.exports=new rhe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:ihe,construct:nhe,predicate:ohe,represent:she})});var LU=w((OXe,NU)=>{"use strict";var oI;try{FU=J,oI=FU("esprima")}catch{typeof window<"u"&&(oI=window.esprima)}var FU,ahe=si();function Ahe(r){if(r===null)return!1;try{var e="("+r+")",t=oI.parse(e,{range:!0});return!(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function lhe(r){var e="("+r+")",t=oI.parse(e,{range:!0}),i=[],n;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return t.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=t.body[0].expression.body.range,t.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function che(r){return r.toString()}function uhe(r){return Object.prototype.toString.call(r)==="[object Function]"}NU.exports=new ahe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Ahe,construct:lhe,predicate:uhe,represent:che})});var Mp=w((MXe,OU)=>{"use strict";var TU=Yl();OU.exports=TU.DEFAULT=new TU({include:[Sg()],explicit:[DU(),RU(),LU()]})});var r2=w((KXe,Kp)=>{"use strict";var da=Gl(),jU=Qg(),ghe=jK(),qU=Sg(),fhe=Mp(),wA=Object.prototype.hasOwnProperty,aI=1,JU=2,WU=3,AI=4,kS=1,hhe=2,MU=3,phe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,dhe=/[\x85\u2028\u2029]/,Che=/[,\[\]\{\}]/,zU=/^(?:!|!!|![a-z\-]+!)$/i,VU=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function KU(r){return Object.prototype.toString.call(r)}function Bo(r){return r===10||r===13}function Jl(r){return r===9||r===32}function un(r){return r===9||r===32||r===10||r===13}function vg(r){return r===44||r===91||r===93||r===123||r===125}function mhe(r){var e;return 48<=r&&r<=57?r-48:(e=r|32,97<=e&&e<=102?e-97+10:-1)}function Ehe(r){return r===120?2:r===117?4:r===85?8:0}function Ihe(r){return 48<=r&&r<=57?r-48:-1}function UU(r){return r===48?"\0":r===97?"\x07":r===98?"\b":r===116||r===9?" ":r===110?` -`:r===118?"\v":r===102?"\f":r===114?"\r":r===101?"\x1B":r===32?" ":r===34?'"':r===47?"/":r===92?"\\":r===78?"\x85":r===95?"\xA0":r===76?"\u2028":r===80?"\u2029":""}function yhe(r){return r<=65535?String.fromCharCode(r):String.fromCharCode((r-65536>>10)+55296,(r-65536&1023)+56320)}var XU=new Array(256),_U=new Array(256);for(ql=0;ql<256;ql++)XU[ql]=UU(ql)?1:0,_U[ql]=UU(ql);var ql;function whe(r,e){this.input=r,this.filename=e.filename||null,this.schema=e.schema||fhe,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=r.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function ZU(r,e){return new jU(e,new ghe(r.filename,r.input,r.position,r.line,r.position-r.lineStart))}function ft(r,e){throw ZU(r,e)}function lI(r,e){r.onWarning&&r.onWarning.call(null,ZU(r,e))}var HU={YAML:function(e,t,i){var n,s,o;e.version!==null&&ft(e,"duplication of %YAML directive"),i.length!==1&&ft(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&ft(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&&ft(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&lI(e,"unsupported YAML version of the document")},TAG:function(e,t,i){var n,s;i.length!==2&&ft(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],zU.test(n)||ft(e,"ill-formed tag handle (first argument) of the TAG directive"),wA.call(e.tagMap,n)&&ft(e,'there is a previously declared suffix for "'+n+'" tag handle'),VU.test(s)||ft(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function yA(r,e,t,i){var n,s,o,a;if(e1&&(r.result+=da.repeat(` -`,e-1))}function Bhe(r,e,t){var i,n,s,o,a,l,c,u,g=r.kind,f=r.result,h;if(h=r.input.charCodeAt(r.position),un(h)||vg(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=r.input.charCodeAt(r.position+1),un(n)||t&&vg(n)))return!1;for(r.kind="scalar",r.result="",s=o=r.position,a=!1;h!==0;){if(h===58){if(n=r.input.charCodeAt(r.position+1),un(n)||t&&vg(n))break}else if(h===35){if(i=r.input.charCodeAt(r.position-1),un(i))break}else{if(r.position===r.lineStart&&cI(r)||t&&vg(h))break;if(Bo(h))if(l=r.line,c=r.lineStart,u=r.lineIndent,zr(r,!1,-1),r.lineIndent>=e){a=!0,h=r.input.charCodeAt(r.position);continue}else{r.position=o,r.line=l,r.lineStart=c,r.lineIndent=u;break}}a&&(yA(r,s,o,!1),FS(r,r.line-l),s=o=r.position,a=!1),Jl(h)||(o=r.position+1),h=r.input.charCodeAt(++r.position)}return yA(r,s,o,!1),r.result?!0:(r.kind=g,r.result=f,!1)}function Qhe(r,e){var t,i,n;if(t=r.input.charCodeAt(r.position),t!==39)return!1;for(r.kind="scalar",r.result="",r.position++,i=n=r.position;(t=r.input.charCodeAt(r.position))!==0;)if(t===39)if(yA(r,i,r.position,!0),t=r.input.charCodeAt(++r.position),t===39)i=r.position,r.position++,n=r.position;else return!0;else Bo(t)?(yA(r,i,n,!0),FS(r,zr(r,!1,e)),i=n=r.position):r.position===r.lineStart&&cI(r)?ft(r,"unexpected end of the document within a single quoted scalar"):(r.position++,n=r.position);ft(r,"unexpected end of the stream within a single quoted scalar")}function bhe(r,e){var t,i,n,s,o,a;if(a=r.input.charCodeAt(r.position),a!==34)return!1;for(r.kind="scalar",r.result="",r.position++,t=i=r.position;(a=r.input.charCodeAt(r.position))!==0;){if(a===34)return yA(r,t,r.position,!0),r.position++,!0;if(a===92){if(yA(r,t,r.position,!0),a=r.input.charCodeAt(++r.position),Bo(a))zr(r,!1,e);else if(a<256&&XU[a])r.result+=_U[a],r.position++;else if((o=Ehe(a))>0){for(n=o,s=0;n>0;n--)a=r.input.charCodeAt(++r.position),(o=mhe(a))>=0?s=(s<<4)+o:ft(r,"expected hexadecimal character");r.result+=yhe(s),r.position++}else ft(r,"unknown escape sequence");t=i=r.position}else Bo(a)?(yA(r,t,i,!0),FS(r,zr(r,!1,e)),t=i=r.position):r.position===r.lineStart&&cI(r)?ft(r,"unexpected end of the document within a double quoted scalar"):(r.position++,i=r.position)}ft(r,"unexpected end of the stream within a double quoted scalar")}function She(r,e){var t=!0,i,n=r.tag,s,o=r.anchor,a,l,c,u,g,f={},h,p,C,y;if(y=r.input.charCodeAt(r.position),y===91)l=93,g=!1,s=[];else if(y===123)l=125,g=!0,s={};else return!1;for(r.anchor!==null&&(r.anchorMap[r.anchor]=s),y=r.input.charCodeAt(++r.position);y!==0;){if(zr(r,!0,e),y=r.input.charCodeAt(r.position),y===l)return r.position++,r.tag=n,r.anchor=o,r.kind=g?"mapping":"sequence",r.result=s,!0;t||ft(r,"missed comma between flow collection entries"),p=h=C=null,c=u=!1,y===63&&(a=r.input.charCodeAt(r.position+1),un(a)&&(c=u=!0,r.position++,zr(r,!0,e))),i=r.line,Pg(r,e,aI,!1,!0),p=r.tag,h=r.result,zr(r,!0,e),y=r.input.charCodeAt(r.position),(u||r.line===i)&&y===58&&(c=!0,y=r.input.charCodeAt(++r.position),zr(r,!0,e),Pg(r,e,aI,!1,!0),C=r.result),g?xg(r,s,f,p,h,C):c?s.push(xg(r,null,f,p,h,C)):s.push(h),zr(r,!0,e),y=r.input.charCodeAt(r.position),y===44?(t=!0,y=r.input.charCodeAt(++r.position)):t=!1}ft(r,"unexpected end of the stream within a flow collection")}function vhe(r,e){var t,i,n=kS,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=r.input.charCodeAt(r.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(r.kind="scalar",r.result="";g!==0;)if(g=r.input.charCodeAt(++r.position),g===43||g===45)kS===n?n=g===43?MU:hhe:ft(r,"repeat of a chomping mode identifier");else if((u=Ihe(g))>=0)u===0?ft(r,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?ft(r,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(Jl(g)){do g=r.input.charCodeAt(++r.position);while(Jl(g));if(g===35)do g=r.input.charCodeAt(++r.position);while(!Bo(g)&&g!==0)}for(;g!==0;){for(RS(r),r.lineIndent=0,g=r.input.charCodeAt(r.position);(!o||r.lineIndenta&&(a=r.lineIndent),Bo(g)){l++;continue}if(r.lineIndente)&&l!==0)ft(r,"bad indentation of a sequence entry");else if(r.lineIndente)&&(Pg(r,e,AI,!0,n)&&(p?f=r.result:h=r.result),p||(xg(r,c,u,g,f,h,s,o),g=f=h=null),zr(r,!0,-1),y=r.input.charCodeAt(r.position)),r.lineIndent>e&&y!==0)ft(r,"bad indentation of a mapping entry");else if(r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndent tag; it should be "scalar", not "'+r.kind+'"'),g=0,f=r.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+r.kind+'"'),h.resolve(r.result)?(r.result=h.construct(r.result),r.anchor!==null&&(r.anchorMap[r.anchor]=r.result)):ft(r,"cannot resolve a node with !<"+r.tag+"> explicit tag")):ft(r,"unknown tag !<"+r.tag+">");return r.listener!==null&&r.listener("close",r),r.tag!==null||r.anchor!==null||u}function Rhe(r){var e=r.position,t,i,n,s=!1,o;for(r.version=null,r.checkLineBreaks=r.legacy,r.tagMap={},r.anchorMap={};(o=r.input.charCodeAt(r.position))!==0&&(zr(r,!0,-1),o=r.input.charCodeAt(r.position),!(r.lineIndent>0||o!==37));){for(s=!0,o=r.input.charCodeAt(++r.position),t=r.position;o!==0&&!un(o);)o=r.input.charCodeAt(++r.position);for(i=r.input.slice(t,r.position),n=[],i.length<1&&ft(r,"directive name must not be less than one character in length");o!==0;){for(;Jl(o);)o=r.input.charCodeAt(++r.position);if(o===35){do o=r.input.charCodeAt(++r.position);while(o!==0&&!Bo(o));break}if(Bo(o))break;for(t=r.position;o!==0&&!un(o);)o=r.input.charCodeAt(++r.position);n.push(r.input.slice(t,r.position))}o!==0&&RS(r),wA.call(HU,i)?HU[i](r,i,n):lI(r,'unknown document directive "'+i+'"')}if(zr(r,!0,-1),r.lineIndent===0&&r.input.charCodeAt(r.position)===45&&r.input.charCodeAt(r.position+1)===45&&r.input.charCodeAt(r.position+2)===45?(r.position+=3,zr(r,!0,-1)):s&&ft(r,"directives end mark is expected"),Pg(r,r.lineIndent-1,AI,!1,!0),zr(r,!0,-1),r.checkLineBreaks&&dhe.test(r.input.slice(e,r.position))&&lI(r,"non-ASCII line breaks are interpreted as content"),r.documents.push(r.result),r.position===r.lineStart&&cI(r)){r.input.charCodeAt(r.position)===46&&(r.position+=3,zr(r,!0,-1));return}if(r.position"u"&&(t=e,e=null);var i=$U(r,t);if(typeof e!="function")return i;for(var n=0,s=i.length;n"u"&&(t=e,e=null),e2(r,e,da.extend({schema:qU},t))}function Nhe(r,e){return t2(r,da.extend({schema:qU},e))}Kp.exports.loadAll=e2;Kp.exports.load=t2;Kp.exports.safeLoadAll=Fhe;Kp.exports.safeLoad=Nhe});var b2=w((UXe,OS)=>{"use strict";var Hp=Gl(),Gp=Qg(),Lhe=Mp(),The=Sg(),c2=Object.prototype.toString,u2=Object.prototype.hasOwnProperty,Ohe=9,Up=10,Mhe=13,Khe=32,Uhe=33,Hhe=34,g2=35,Ghe=37,Yhe=38,jhe=39,qhe=42,f2=44,Jhe=45,h2=58,Whe=61,zhe=62,Vhe=63,Xhe=64,p2=91,d2=93,_he=96,C2=123,Zhe=124,m2=125,Fi={};Fi[0]="\\0";Fi[7]="\\a";Fi[8]="\\b";Fi[9]="\\t";Fi[10]="\\n";Fi[11]="\\v";Fi[12]="\\f";Fi[13]="\\r";Fi[27]="\\e";Fi[34]='\\"';Fi[92]="\\\\";Fi[133]="\\N";Fi[160]="\\_";Fi[8232]="\\L";Fi[8233]="\\P";var $he=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function epe(r,e){var t,i,n,s,o,a,l;if(e===null)return{};for(t={},i=Object.keys(e),n=0,s=i.length;n0?r.charCodeAt(s-1):null,f=f&&s2(o,a)}else{for(s=0;si&&r[g+1]!==" ",g=s);else if(!Dg(o))return uI;a=s>0?r.charCodeAt(s-1):null,f=f&&s2(o,a)}c=c||u&&s-g-1>i&&r[g+1]!==" "}return!l&&!c?f&&!n(r)?I2:y2:t>9&&E2(r)?uI:c?B2:w2}function ope(r,e,t,i){r.dump=function(){if(e.length===0)return"''";if(!r.noCompatMode&&$he.indexOf(e)!==-1)return"'"+e+"'";var n=r.indent*Math.max(1,t),s=r.lineWidth===-1?-1:Math.max(Math.min(r.lineWidth,40),r.lineWidth-n),o=i||r.flowLevel>-1&&t>=r.flowLevel;function a(l){return rpe(r,l)}switch(spe(e,o,r.indent,s,a)){case I2:return e;case y2:return"'"+e.replace(/'/g,"''")+"'";case w2:return"|"+o2(e,r.indent)+a2(n2(e,n));case B2:return">"+o2(e,r.indent)+a2(n2(ape(e,s),n));case uI:return'"'+Ape(e,s)+'"';default:throw new Gp("impossible error: invalid scalar style")}}()}function o2(r,e){var t=E2(r)?String(e):"",i=r[r.length-1]===` -`,n=i&&(r[r.length-2]===` -`||r===` -`),s=n?"+":i?"":"-";return t+s+` -`}function a2(r){return r[r.length-1]===` -`?r.slice(0,-1):r}function ape(r,e){for(var t=/(\n+)([^\n]*)/g,i=function(){var c=r.indexOf(` -`);return c=c!==-1?c:r.length,t.lastIndex=c,A2(r.slice(0,c),e)}(),n=r[0]===` -`||r[0]===" ",s,o;o=t.exec(r);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` -`:"")+A2(l,e),n=s}return i}function A2(r,e){if(r===""||r[0]===" ")return r;for(var t=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=t.exec(r);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` -`+r.slice(n,s),n=s+1),o=a;return l+=` -`,r.length-n>e&&o>n?l+=r.slice(n,o)+` -`+r.slice(o+1):l+=r.slice(n),l.slice(1)}function Ape(r){for(var e="",t,i,n,s=0;s=55296&&t<=56319&&(i=r.charCodeAt(s+1),i>=56320&&i<=57343)){e+=i2((t-55296)*1024+i-56320+65536),s++;continue}n=Fi[t],e+=!n&&Dg(t)?r[s]:n||i2(t)}return e}function lpe(r,e,t){var i="",n=r.tag,s,o;for(s=0,o=t.length;s1024&&(u+="? "),u+=r.dump+(r.condenseFlow?'"':"")+":"+(r.condenseFlow?"":" "),Wl(r,e,c,!1,!1)&&(u+=r.dump,i+=u));r.tag=n,r.dump="{"+i+"}"}function gpe(r,e,t,i){var n="",s=r.tag,o=Object.keys(t),a,l,c,u,g,f;if(r.sortKeys===!0)o.sort();else if(typeof r.sortKeys=="function")o.sort(r.sortKeys);else if(r.sortKeys)throw new Gp("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(r.dump&&Up===r.dump.charCodeAt(0)?f+="?":f+="? "),f+=r.dump,g&&(f+=NS(r,e)),Wl(r,e+1,u,!0,g)&&(r.dump&&Up===r.dump.charCodeAt(0)?f+=":":f+=": ",f+=r.dump,n+=f));r.tag=s,r.dump=n||"{}"}function l2(r,e,t){var i,n,s,o,a,l;for(n=t?r.explicitTypes:r.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');r.dump=i}return!0}return!1}function Wl(r,e,t,i,n,s){r.tag=null,r.dump=t,l2(r,t,!1)||l2(r,t,!0);var o=c2.call(r.dump);i&&(i=r.flowLevel<0||r.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=r.duplicates.indexOf(t),c=l!==-1),(r.tag!==null&&r.tag!=="?"||c||r.indent!==2&&e>0)&&(n=!1),c&&r.usedDuplicates[l])r.dump="*ref_"+l;else{if(a&&c&&!r.usedDuplicates[l]&&(r.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(r.dump).length!==0?(gpe(r,e,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(upe(r,e,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump));else if(o==="[object Array]"){var u=r.noArrayIndent&&e>0?e-1:e;i&&r.dump.length!==0?(cpe(r,u,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(lpe(r,u,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump))}else if(o==="[object String]")r.tag!=="?"&&ope(r,r.dump,e,s);else{if(r.skipInvalid)return!1;throw new Gp("unacceptable kind of an object to dump "+o)}r.tag!==null&&r.tag!=="?"&&(r.dump="!<"+r.tag+"> "+r.dump)}return!0}function fpe(r,e){var t=[],i=[],n,s;for(LS(r,t,i),n=0,s=i.length;n{"use strict";var gI=r2(),S2=b2();function fI(r){return function(){throw new Error("Function "+r+" is deprecated and cannot be used.")}}Fr.exports.Type=si();Fr.exports.Schema=Yl();Fr.exports.FAILSAFE_SCHEMA=sI();Fr.exports.JSON_SCHEMA=xS();Fr.exports.CORE_SCHEMA=PS();Fr.exports.DEFAULT_SAFE_SCHEMA=Sg();Fr.exports.DEFAULT_FULL_SCHEMA=Mp();Fr.exports.load=gI.load;Fr.exports.loadAll=gI.loadAll;Fr.exports.safeLoad=gI.safeLoad;Fr.exports.safeLoadAll=gI.safeLoadAll;Fr.exports.dump=S2.dump;Fr.exports.safeDump=S2.safeDump;Fr.exports.YAMLException=Qg();Fr.exports.MINIMAL_SCHEMA=sI();Fr.exports.SAFE_SCHEMA=Sg();Fr.exports.DEFAULT_SCHEMA=Mp();Fr.exports.scan=fI("scan");Fr.exports.parse=fI("parse");Fr.exports.compose=fI("compose");Fr.exports.addConstructor=fI("addConstructor")});var P2=w((GXe,x2)=>{"use strict";var ppe=v2();x2.exports=ppe});var k2=w((YXe,D2)=>{"use strict";function dpe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function zl(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,zl)}dpe(zl,Error);zl.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[Ke]:Ce})))},H=function(R){return R},j=function(R){return R},$=Ts("correct indentation"),V=" ",W=ar(" ",!1),Z=function(R){return R.length===pA*ug},A=function(R){return R.length===(pA+1)*ug},ae=function(){return pA++,!0},ge=function(){return pA--,!0},re=function(){return sg()},O=Ts("pseudostring"),F=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,ue=Rn(["\r",` -`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),he=/^[^\r\n\t ,\][{}:#"']/,ke=Rn(["\r",` -`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Fe=function(){return sg().replace(/^ *| *$/g,"")},Ne="--",oe=ar("--",!1),le=/^[a-zA-Z\/0-9]/,we=Rn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),fe=/^[^\r\n\t :,]/,Ae=Rn(["\r",` -`," "," ",":",","],!0,!1),qe="null",ne=ar("null",!1),Y=function(){return null},pe="true",ie=ar("true",!1),de=function(){return!0},tt="false",Pt=ar("false",!1),It=function(){return!1},Or=Ts("string"),ii='"',gi=ar('"',!1),hr=function(){return""},fi=function(R){return R},ni=function(R){return R.join("")},Ls=/^[^"\\\0-\x1F\x7F]/,pr=Rn(['"',"\\",["\0",""],"\x7F"],!0,!1),Ei='\\"',_n=ar('\\"',!1),oa=function(){return'"'},aA="\\\\",eg=ar("\\\\",!1),Zn=function(){return"\\"},AA="\\/",aa=ar("\\/",!1),up=function(){return"/"},lA="\\b",cA=ar("\\b",!1),wr=function(){return"\b"},wl="\\f",tg=ar("\\f",!1),po=function(){return"\f"},rg="\\n",gp=ar("\\n",!1),fp=function(){return` -`},vr="\\r",se=ar("\\r",!1),Co=function(){return"\r"},Dn="\\t",ig=ar("\\t",!1),Qt=function(){return" "},Bl="\\u",kn=ar("\\u",!1),$n=function(R,q,Ce,Ke){return String.fromCharCode(parseInt(`0x${R}${q}${Ce}${Ke}`))},es=/^[0-9a-fA-F]/,gt=Rn([["0","9"],["a","f"],["A","F"]],!1,!1),mo=Ts("blank space"),At=/^[ \t]/,an=Rn([" "," "],!1,!1),S=Ts("white space"),Tt=/^[ \t\n\r]/,ng=Rn([" "," ",` -`,"\r"],!1,!1),Ql=`\r -`,hp=ar(`\r -`,!1),pp=` -`,dp=ar(` -`,!1),Cp="\r",mp=ar("\r",!1),G=0,yt=0,uA=[{line:1,column:1}],ji=0,bl=[],Xe=0,Aa;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function sg(){return r.substring(yt,G)}function bE(){return An(yt,G)}function Ep(R,q){throw q=q!==void 0?q:An(yt,G),vl([Ts(R)],r.substring(yt,G),q)}function SE(R,q){throw q=q!==void 0?q:An(yt,G),og(R,q)}function ar(R,q){return{type:"literal",text:R,ignoreCase:q}}function Rn(R,q,Ce){return{type:"class",parts:R,inverted:q,ignoreCase:Ce}}function Sl(){return{type:"any"}}function Ip(){return{type:"end"}}function Ts(R){return{type:"other",description:R}}function la(R){var q=uA[R],Ce;if(q)return q;for(Ce=R-1;!uA[Ce];)Ce--;for(q=uA[Ce],q={line:q.line,column:q.column};Ceji&&(ji=G,bl=[]),bl.push(R))}function og(R,q){return new zl(R,null,null,q)}function vl(R,q,Ce){return new zl(zl.buildMessage(R,q),R,q,Ce)}function Os(){var R;return R=ag(),R}function xl(){var R,q,Ce;for(R=G,q=[],Ce=gA();Ce!==t;)q.push(Ce),Ce=gA();return q!==t&&(yt=R,q=s(q)),R=q,R}function gA(){var R,q,Ce,Ke,Re;return R=G,q=ua(),q!==t?(r.charCodeAt(G)===45?(Ce=o,G++):(Ce=t,Xe===0&&Te(a)),Ce!==t?(Ke=Rr(),Ke!==t?(Re=ca(),Re!==t?(yt=R,q=l(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R}function ag(){var R,q,Ce;for(R=G,q=[],Ce=Ag();Ce!==t;)q.push(Ce),Ce=Ag();return q!==t&&(yt=R,q=c(q)),R=q,R}function Ag(){var R,q,Ce,Ke,Re,ze,dt,Ft,Fn;if(R=G,q=Rr(),q===t&&(q=null),q!==t){if(Ce=G,r.charCodeAt(G)===35?(Ke=u,G++):(Ke=t,Xe===0&&Te(g)),Ke!==t){if(Re=[],ze=G,dt=G,Xe++,Ft=Us(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Te(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t),ze!==t)for(;ze!==t;)Re.push(ze),ze=G,dt=G,Xe++,Ft=Us(),Xe--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,Xe===0&&Te(f)),Ft!==t?(dt=[dt,Ft],ze=dt):(G=ze,ze=t)):(G=ze,ze=t);else Re=t;Re!==t?(Ke=[Ke,Re],Ce=Ke):(G=Ce,Ce=t)}else G=Ce,Ce=t;if(Ce===t&&(Ce=null),Ce!==t){if(Ke=[],Re=Ks(),Re!==t)for(;Re!==t;)Ke.push(Re),Re=Ks();else Ke=t;Ke!==t?(yt=R,q=h(),R=q):(G=R,R=t)}else G=R,R=t}else G=R,R=t;if(R===t&&(R=G,q=ua(),q!==t?(Ce=Pl(),Ce!==t?(Ke=Rr(),Ke===t&&(Ke=null),Ke!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Te(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=ca(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=ua(),q!==t?(Ce=Ms(),Ce!==t?(Ke=Rr(),Ke===t&&(Ke=null),Ke!==t?(r.charCodeAt(G)===58?(Re=p,G++):(Re=t,Xe===0&&Te(C)),Re!==t?(ze=Rr(),ze===t&&(ze=null),ze!==t?(dt=ca(),dt!==t?(yt=R,q=y(Ce,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))){if(R=G,q=ua(),q!==t)if(Ce=Ms(),Ce!==t)if(Ke=Rr(),Ke!==t)if(Re=vE(),Re!==t){if(ze=[],dt=Ks(),dt!==t)for(;dt!==t;)ze.push(dt),dt=Ks();else ze=t;ze!==t?(yt=R,q=y(Ce,Re),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;else G=R,R=t;else G=R,R=t;if(R===t)if(R=G,q=ua(),q!==t)if(Ce=Ms(),Ce!==t){if(Ke=[],Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Te(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Fn=Ms(),Fn!==t?(yt=Re,ze=D(Ce,Fn),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t),Re!==t)for(;Re!==t;)Ke.push(Re),Re=G,ze=Rr(),ze===t&&(ze=null),ze!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,Xe===0&&Te(v)),dt!==t?(Ft=Rr(),Ft===t&&(Ft=null),Ft!==t?(Fn=Ms(),Fn!==t?(yt=Re,ze=D(Ce,Fn),Re=ze):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t)):(G=Re,Re=t);else Ke=t;Ke!==t?(Re=Rr(),Re===t&&(Re=null),Re!==t?(r.charCodeAt(G)===58?(ze=p,G++):(ze=t,Xe===0&&Te(C)),ze!==t?(dt=Rr(),dt===t&&(dt=null),dt!==t?(Ft=ca(),Ft!==t?(yt=R,q=L(Ce,Ke,Ft),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)}else G=R,R=t;else G=R,R=t}return R}function ca(){var R,q,Ce,Ke,Re,ze,dt;if(R=G,q=G,Xe++,Ce=G,Ke=Us(),Ke!==t?(Re=rt(),Re!==t?(r.charCodeAt(G)===45?(ze=o,G++):(ze=t,Xe===0&&Te(a)),ze!==t?(dt=Rr(),dt!==t?(Ke=[Ke,Re,ze,dt],Ce=Ke):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t)):(G=Ce,Ce=t),Xe--,Ce!==t?(G=q,q=void 0):q=t,q!==t?(Ce=Ks(),Ce!==t?(Ke=Eo(),Ke!==t?(Re=xl(),Re!==t?(ze=fA(),ze!==t?(yt=R,q=H(Re),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Us(),q!==t?(Ce=Eo(),Ce!==t?(Ke=ag(),Ke!==t?(Re=fA(),Re!==t?(yt=R,q=H(Ke),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))if(R=G,q=Dl(),q!==t){if(Ce=[],Ke=Ks(),Ke!==t)for(;Ke!==t;)Ce.push(Ke),Ke=Ks();else Ce=t;Ce!==t?(yt=R,q=j(q),R=q):(G=R,R=t)}else G=R,R=t;return R}function ua(){var R,q,Ce;for(Xe++,R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));return q!==t?(yt=G,Ce=Z(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),Xe--,R===t&&(q=t,Xe===0&&Te($)),R}function rt(){var R,q,Ce;for(R=G,q=[],r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));Ce!==t;)q.push(Ce),r.charCodeAt(G)===32?(Ce=V,G++):(Ce=t,Xe===0&&Te(W));return q!==t?(yt=G,Ce=A(q),Ce?Ce=void 0:Ce=t,Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)):(G=R,R=t),R}function Eo(){var R;return yt=G,R=ae(),R?R=void 0:R=t,R}function fA(){var R;return yt=G,R=ge(),R?R=void 0:R=t,R}function Pl(){var R;return R=kl(),R===t&&(R=yp()),R}function Ms(){var R,q,Ce;if(R=kl(),R===t){if(R=G,q=[],Ce=lg(),Ce!==t)for(;Ce!==t;)q.push(Ce),Ce=lg();else q=t;q!==t&&(yt=R,q=re()),R=q}return R}function Dl(){var R;return R=wp(),R===t&&(R=xE(),R===t&&(R=kl(),R===t&&(R=yp()))),R}function vE(){var R;return R=wp(),R===t&&(R=kl(),R===t&&(R=lg())),R}function yp(){var R,q,Ce,Ke,Re,ze;if(Xe++,R=G,F.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ue)),q!==t){for(Ce=[],Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(he.test(r.charAt(G))?(ze=r.charAt(G),G++):(ze=t,Xe===0&&Te(ke)),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ke!==t;)Ce.push(Ke),Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(he.test(r.charAt(G))?(ze=r.charAt(G),G++):(ze=t,Xe===0&&Te(ke)),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ce!==t?(yt=R,q=Fe(),R=q):(G=R,R=t)}else G=R,R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(O)),R}function lg(){var R,q,Ce,Ke,Re;if(R=G,r.substr(G,2)===Ne?(q=Ne,G+=2):(q=t,Xe===0&&Te(oe)),q===t&&(q=null),q!==t)if(le.test(r.charAt(G))?(Ce=r.charAt(G),G++):(Ce=t,Xe===0&&Te(we)),Ce!==t){for(Ke=[],fe.test(r.charAt(G))?(Re=r.charAt(G),G++):(Re=t,Xe===0&&Te(Ae));Re!==t;)Ke.push(Re),fe.test(r.charAt(G))?(Re=r.charAt(G),G++):(Re=t,Xe===0&&Te(Ae));Ke!==t?(yt=R,q=Fe(),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;return R}function wp(){var R,q;return R=G,r.substr(G,4)===qe?(q=qe,G+=4):(q=t,Xe===0&&Te(ne)),q!==t&&(yt=R,q=Y()),R=q,R}function xE(){var R,q;return R=G,r.substr(G,4)===pe?(q=pe,G+=4):(q=t,Xe===0&&Te(ie)),q!==t&&(yt=R,q=de()),R=q,R===t&&(R=G,r.substr(G,5)===tt?(q=tt,G+=5):(q=t,Xe===0&&Te(Pt)),q!==t&&(yt=R,q=It()),R=q),R}function kl(){var R,q,Ce,Ke;return Xe++,R=G,r.charCodeAt(G)===34?(q=ii,G++):(q=t,Xe===0&&Te(gi)),q!==t?(r.charCodeAt(G)===34?(Ce=ii,G++):(Ce=t,Xe===0&&Te(gi)),Ce!==t?(yt=R,q=hr(),R=q):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,r.charCodeAt(G)===34?(q=ii,G++):(q=t,Xe===0&&Te(gi)),q!==t?(Ce=PE(),Ce!==t?(r.charCodeAt(G)===34?(Ke=ii,G++):(Ke=t,Xe===0&&Te(gi)),Ke!==t?(yt=R,q=fi(Ce),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)),Xe--,R===t&&(q=t,Xe===0&&Te(Or)),R}function PE(){var R,q,Ce;if(R=G,q=[],Ce=cg(),Ce!==t)for(;Ce!==t;)q.push(Ce),Ce=cg();else q=t;return q!==t&&(yt=R,q=ni(q)),R=q,R}function cg(){var R,q,Ce,Ke,Re,ze;return Ls.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,Xe===0&&Te(pr)),R===t&&(R=G,r.substr(G,2)===Ei?(q=Ei,G+=2):(q=t,Xe===0&&Te(_n)),q!==t&&(yt=R,q=oa()),R=q,R===t&&(R=G,r.substr(G,2)===aA?(q=aA,G+=2):(q=t,Xe===0&&Te(eg)),q!==t&&(yt=R,q=Zn()),R=q,R===t&&(R=G,r.substr(G,2)===AA?(q=AA,G+=2):(q=t,Xe===0&&Te(aa)),q!==t&&(yt=R,q=up()),R=q,R===t&&(R=G,r.substr(G,2)===lA?(q=lA,G+=2):(q=t,Xe===0&&Te(cA)),q!==t&&(yt=R,q=wr()),R=q,R===t&&(R=G,r.substr(G,2)===wl?(q=wl,G+=2):(q=t,Xe===0&&Te(tg)),q!==t&&(yt=R,q=po()),R=q,R===t&&(R=G,r.substr(G,2)===rg?(q=rg,G+=2):(q=t,Xe===0&&Te(gp)),q!==t&&(yt=R,q=fp()),R=q,R===t&&(R=G,r.substr(G,2)===vr?(q=vr,G+=2):(q=t,Xe===0&&Te(se)),q!==t&&(yt=R,q=Co()),R=q,R===t&&(R=G,r.substr(G,2)===Dn?(q=Dn,G+=2):(q=t,Xe===0&&Te(ig)),q!==t&&(yt=R,q=Qt()),R=q,R===t&&(R=G,r.substr(G,2)===Bl?(q=Bl,G+=2):(q=t,Xe===0&&Te(kn)),q!==t?(Ce=hA(),Ce!==t?(Ke=hA(),Ke!==t?(Re=hA(),Re!==t?(ze=hA(),ze!==t?(yt=R,q=$n(Ce,Ke,Re,ze),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)))))))))),R}function hA(){var R;return es.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,Xe===0&&Te(gt)),R}function Rr(){var R,q;if(Xe++,R=[],At.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(an)),q!==t)for(;q!==t;)R.push(q),At.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(an));else R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(mo)),R}function DE(){var R,q;if(Xe++,R=[],Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ng)),q!==t)for(;q!==t;)R.push(q),Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,Xe===0&&Te(ng));else R=t;return Xe--,R===t&&(q=t,Xe===0&&Te(S)),R}function Ks(){var R,q,Ce,Ke,Re,ze;if(R=G,q=Us(),q!==t){for(Ce=[],Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(ze=Us(),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ke!==t;)Ce.push(Ke),Ke=G,Re=Rr(),Re===t&&(Re=null),Re!==t?(ze=Us(),ze!==t?(Re=[Re,ze],Ke=Re):(G=Ke,Ke=t)):(G=Ke,Ke=t);Ce!==t?(q=[q,Ce],R=q):(G=R,R=t)}else G=R,R=t;return R}function Us(){var R;return r.substr(G,2)===Ql?(R=Ql,G+=2):(R=t,Xe===0&&Te(hp)),R===t&&(r.charCodeAt(G)===10?(R=pp,G++):(R=t,Xe===0&&Te(dp)),R===t&&(r.charCodeAt(G)===13?(R=Cp,G++):(R=t,Xe===0&&Te(mp)))),R}let ug=2,pA=0;if(Aa=n(),Aa!==t&&G===r.length)return Aa;throw Aa!==t&&G{"use strict";var wpe=r=>{let e=!1,t=!1,i=!1;for(let n=0;n{if(!(typeof r=="string"||Array.isArray(r)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let t=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(r)?r=r.map(n=>n.trim()).filter(n=>n.length).join("-"):r=r.trim(),r.length===0?"":r.length===1?e.pascalCase?r.toUpperCase():r.toLowerCase():(r!==r.toLowerCase()&&(r=wpe(r)),r=r.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),t(r))};KS.exports=T2;KS.exports.default=T2});var M2=w((VXe,Bpe)=>{Bpe.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var Vl=w(On=>{"use strict";var U2=M2(),Qo=process.env;Object.defineProperty(On,"_vendors",{value:U2.map(function(r){return r.constant})});On.name=null;On.isPR=null;U2.forEach(function(r){let t=(Array.isArray(r.env)?r.env:[r.env]).every(function(i){return K2(i)});if(On[r.constant]=t,t)switch(On.name=r.name,typeof r.pr){case"string":On.isPR=!!Qo[r.pr];break;case"object":"env"in r.pr?On.isPR=r.pr.env in Qo&&Qo[r.pr.env]!==r.pr.ne:"any"in r.pr?On.isPR=r.pr.any.some(function(i){return!!Qo[i]}):On.isPR=K2(r.pr);break;default:On.isPR=null}});On.isCI=!!(Qo.CI||Qo.CONTINUOUS_INTEGRATION||Qo.BUILD_NUMBER||Qo.RUN_ID||On.name);function K2(r){return typeof r=="string"?!!Qo[r]:Object.keys(r).every(function(e){return Qo[e]===r[e]})}});var gn={};ut(gn,{KeyRelationship:()=>Xl,applyCascade:()=>zp,base64RegExp:()=>q2,colorStringAlphaRegExp:()=>j2,colorStringRegExp:()=>Y2,computeKey:()=>BA,getPrintable:()=>Vr,hasExactLength:()=>X2,hasForbiddenKeys:()=>tde,hasKeyRelationship:()=>JS,hasMaxLength:()=>Mpe,hasMinLength:()=>Ope,hasMutuallyExclusiveKeys:()=>rde,hasRequiredKeys:()=>ede,hasUniqueItems:()=>Kpe,isArray:()=>Ppe,isAtLeast:()=>Gpe,isAtMost:()=>Ype,isBase64:()=>Zpe,isBoolean:()=>Spe,isDate:()=>xpe,isDict:()=>kpe,isEnum:()=>Wi,isHexColor:()=>_pe,isISO8601:()=>Xpe,isInExclusiveRange:()=>qpe,isInInclusiveRange:()=>jpe,isInstanceOf:()=>Fpe,isInteger:()=>Jpe,isJSON:()=>$pe,isLiteral:()=>Qpe,isLowerCase:()=>Wpe,isNegative:()=>Upe,isNullable:()=>Tpe,isNumber:()=>vpe,isObject:()=>Rpe,isOneOf:()=>Npe,isOptional:()=>Lpe,isPositive:()=>Hpe,isString:()=>Wp,isTuple:()=>Dpe,isUUID4:()=>Vpe,isUnknown:()=>V2,isUpperCase:()=>zpe,iso8601RegExp:()=>qS,makeCoercionFn:()=>_l,makeSetter:()=>z2,makeTrait:()=>W2,makeValidator:()=>bt,matchesRegExp:()=>Vp,plural:()=>EI,pushError:()=>pt,simpleKeyRegExp:()=>G2,uuid4RegExp:()=>J2});function bt({test:r}){return W2(r)()}function Vr(r){return r===null?"null":r===void 0?"undefined":r===""?"an empty string":JSON.stringify(r)}function BA(r,e){var t,i,n;return typeof e=="number"?`${(t=r==null?void 0:r.p)!==null&&t!==void 0?t:"."}[${e}]`:G2.test(e)?`${(i=r==null?void 0:r.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=r==null?void 0:r.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function _l(r,e){return t=>{let i=r[e];return r[e]=t,_l(r,e).bind(null,i)}}function z2(r,e){return t=>{r[e]=t}}function EI(r,e,t){return r===1?e:t}function pt({errors:r,p:e}={},t){return r==null||r.push(`${e!=null?e:"."}: ${t}`),!1}function Qpe(r){return bt({test:(e,t)=>e!==r?pt(t,`Expected a literal (got ${Vr(r)})`):!0})}function Wi(r){let e=Array.isArray(r)?r:Object.values(r),t=new Set(e);return bt({test:(i,n)=>t.has(i)?!0:pt(n,`Expected a valid enumeration value (got ${Vr(i)})`)})}var G2,Y2,j2,q2,J2,qS,W2,V2,Wp,bpe,Spe,vpe,xpe,Ppe,Dpe,kpe,Rpe,Fpe,Npe,zp,Lpe,Tpe,Ope,Mpe,X2,Kpe,Upe,Hpe,Gpe,Ype,jpe,qpe,Jpe,Vp,Wpe,zpe,Vpe,Xpe,_pe,Zpe,$pe,ede,tde,rde,Xl,ide,JS,ns=Yue(()=>{G2=/^[a-zA-Z_][a-zA-Z0-9_]*$/,Y2=/^#[0-9a-f]{6}$/i,j2=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,q2=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,J2=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,qS=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,W2=r=>()=>r;V2=()=>bt({test:(r,e)=>!0});Wp=()=>bt({test:(r,e)=>typeof r!="string"?pt(e,`Expected a string (got ${Vr(r)})`):!0});bpe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),Spe=()=>bt({test:(r,e)=>{var t;if(typeof r!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i=bpe.get(r);if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a boolean (got ${Vr(r)})`)}return!0}}),vpe=()=>bt({test:(r,e)=>{var t;if(typeof r!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"){let n;try{n=JSON.parse(r)}catch{}if(typeof n=="number")if(JSON.stringify(n)===r)i=n;else return pt(e,`Received a number that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a number (got ${Vr(r)})`)}return!0}}),xpe=()=>bt({test:(r,e)=>{var t;if(!(r instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"&&qS.test(r))i=new Date(r);else{let n;if(typeof r=="string"){let s;try{s=JSON.parse(r)}catch{}typeof s=="number"&&(n=s)}else typeof r=="number"&&(n=r);if(typeof n<"u")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return pt(e,`Received a timestamp that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a date (got ${Vr(r)})`)}return!0}}),Ppe=(r,{delimiter:e}={})=>bt({test:(t,i)=>{var n;if(typeof t=="string"&&typeof e<"u"&&typeof(i==null?void 0:i.coercions)<"u"){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");t=t.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,t)])}if(!Array.isArray(t))return pt(i,`Expected an array (got ${Vr(t)})`);let s=!0;for(let o=0,a=t.length;o{let t=X2(r.length);return bt({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e<"u"&&typeof(n==null?void 0:n.coercions)<"u"){if(typeof(n==null?void 0:n.coercion)>"u")return pt(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return pt(n,`Expected a tuple (got ${Vr(i)})`);let o=t(i,Object.assign({},n));for(let a=0,l=i.length;abt({test:(t,i)=>{if(typeof t!="object"||t===null)return pt(i,`Expected an object (got ${Vr(t)})`);let n=Object.keys(t),s=!0;for(let o=0,a=n.length;o{let t=Object.keys(r);return bt({test:(i,n)=>{if(typeof i!="object"||i===null)return pt(n,`Expected an object (got ${Vr(i)})`);let s=new Set([...t,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=pt(Object.assign(Object.assign({},n),{p:BA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(r,l)?r[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c<"u"?a=c(u,Object.assign(Object.assign({},n),{p:BA(n,l),coercion:_l(i,l)}))&&a:e===null?a=pt(Object.assign(Object.assign({},n),{p:BA(n,l)}),`Extraneous property (got ${Vr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:z2(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},Fpe=r=>bt({test:(e,t)=>e instanceof r?!0:pt(t,`Expected an instance of ${r.name} (got ${Vr(e)})`)}),Npe=(r,{exclusive:e=!1}={})=>bt({test:(t,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)<"u"?[]:void 0;for(let c=0,u=r.length;c1?pt(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),zp=(r,e)=>bt({test:(t,i)=>{var n,s;let o={value:t},a=typeof(i==null?void 0:i.coercions)<"u"?_l(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)<"u"?[]:void 0;if(!r(t,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l<"u")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)<"u"){if(o.value!==t){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),Lpe=r=>bt({test:(e,t)=>typeof e>"u"?!0:r(e,t)}),Tpe=r=>bt({test:(e,t)=>e===null?!0:r(e,t)}),Ope=r=>bt({test:(e,t)=>e.length>=r?!0:pt(t,`Expected to have a length of at least ${r} elements (got ${e.length})`)}),Mpe=r=>bt({test:(e,t)=>e.length<=r?!0:pt(t,`Expected to have a length of at most ${r} elements (got ${e.length})`)}),X2=r=>bt({test:(e,t)=>e.length!==r?pt(t,`Expected to have a length of exactly ${r} elements (got ${e.length})`):!0}),Kpe=({map:r}={})=>bt({test:(e,t)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sbt({test:(r,e)=>r<=0?!0:pt(e,`Expected to be negative (got ${r})`)}),Hpe=()=>bt({test:(r,e)=>r>=0?!0:pt(e,`Expected to be positive (got ${r})`)}),Gpe=r=>bt({test:(e,t)=>e>=r?!0:pt(t,`Expected to be at least ${r} (got ${e})`)}),Ype=r=>bt({test:(e,t)=>e<=r?!0:pt(t,`Expected to be at most ${r} (got ${e})`)}),jpe=(r,e)=>bt({test:(t,i)=>t>=r&&t<=e?!0:pt(i,`Expected to be in the [${r}; ${e}] range (got ${t})`)}),qpe=(r,e)=>bt({test:(t,i)=>t>=r&&tbt({test:(e,t)=>e!==Math.round(e)?pt(t,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:pt(t,`Expected to be a safe integer (got ${e})`)}),Vp=r=>bt({test:(e,t)=>r.test(e)?!0:pt(t,`Expected to match the pattern ${r.toString()} (got ${Vr(e)})`)}),Wpe=()=>bt({test:(r,e)=>r!==r.toLowerCase()?pt(e,`Expected to be all-lowercase (got ${r})`):!0}),zpe=()=>bt({test:(r,e)=>r!==r.toUpperCase()?pt(e,`Expected to be all-uppercase (got ${r})`):!0}),Vpe=()=>bt({test:(r,e)=>J2.test(r)?!0:pt(e,`Expected to be a valid UUID v4 (got ${Vr(r)})`)}),Xpe=()=>bt({test:(r,e)=>qS.test(r)?!1:pt(e,`Expected to be a valid ISO 8601 date string (got ${Vr(r)})`)}),_pe=({alpha:r=!1})=>bt({test:(e,t)=>(r?Y2.test(e):j2.test(e))?!0:pt(t,`Expected to be a valid hexadecimal color string (got ${Vr(e)})`)}),Zpe=()=>bt({test:(r,e)=>q2.test(r)?!0:pt(e,`Expected to be a valid base 64 string (got ${Vr(r)})`)}),$pe=(r=V2())=>bt({test:(e,t)=>{let i;try{i=JSON.parse(e)}catch{return pt(t,`Expected to be a valid JSON string (got ${Vr(e)})`)}return r(i,t)}}),ede=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?pt(i,`Missing required ${EI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},tde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?pt(i,`Forbidden ${EI(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},rde=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?pt(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(r){r.Forbids="Forbids",r.Requires="Requires"})(Xl||(Xl={}));ide={[Xl.Forbids]:{expect:!1,message:"forbids using"},[Xl.Requires]:{expect:!0,message:"requires using"}},JS=(r,e,t,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(t),o=ide[e];return bt({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(r)||n.has(a[r]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?pt(l,`Property "${r}" ${o.message} ${EI(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})}});var fH=w((V_e,gH)=>{"use strict";gH.exports=(r,...e)=>new Promise(t=>{t(r(...e))})});var Tg=w((X_e,ev)=>{"use strict";var Ide=fH(),hH=r=>{if(r<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],t=0,i=()=>{t--,e.length>0&&e.shift()()},n=(a,l,...c)=>{t++;let u=Ide(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{tnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>t},pendingCount:{get:()=>e.length}}),o};ev.exports=hH;ev.exports.default=hH});var ed=w((Z_e,pH)=>{var yde="2.0.0",wde=Number.MAX_SAFE_INTEGER||9007199254740991,Bde=16;pH.exports={SEMVER_SPEC_VERSION:yde,MAX_LENGTH:256,MAX_SAFE_INTEGER:wde,MAX_SAFE_COMPONENT_LENGTH:Bde}});var td=w(($_e,dH)=>{var Qde=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};dH.exports=Qde});var Zl=w((bA,CH)=>{var{MAX_SAFE_COMPONENT_LENGTH:tv}=ed(),bde=td();bA=CH.exports={};var Sde=bA.re=[],$e=bA.src=[],et=bA.t={},vde=0,St=(r,e,t)=>{let i=vde++;bde(i,e),et[r]=i,$e[i]=e,Sde[i]=new RegExp(e,t?"g":void 0)};St("NUMERICIDENTIFIER","0|[1-9]\\d*");St("NUMERICIDENTIFIERLOOSE","[0-9]+");St("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");St("MAINVERSION",`(${$e[et.NUMERICIDENTIFIER]})\\.(${$e[et.NUMERICIDENTIFIER]})\\.(${$e[et.NUMERICIDENTIFIER]})`);St("MAINVERSIONLOOSE",`(${$e[et.NUMERICIDENTIFIERLOOSE]})\\.(${$e[et.NUMERICIDENTIFIERLOOSE]})\\.(${$e[et.NUMERICIDENTIFIERLOOSE]})`);St("PRERELEASEIDENTIFIER",`(?:${$e[et.NUMERICIDENTIFIER]}|${$e[et.NONNUMERICIDENTIFIER]})`);St("PRERELEASEIDENTIFIERLOOSE",`(?:${$e[et.NUMERICIDENTIFIERLOOSE]}|${$e[et.NONNUMERICIDENTIFIER]})`);St("PRERELEASE",`(?:-(${$e[et.PRERELEASEIDENTIFIER]}(?:\\.${$e[et.PRERELEASEIDENTIFIER]})*))`);St("PRERELEASELOOSE",`(?:-?(${$e[et.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${$e[et.PRERELEASEIDENTIFIERLOOSE]})*))`);St("BUILDIDENTIFIER","[0-9A-Za-z-]+");St("BUILD",`(?:\\+(${$e[et.BUILDIDENTIFIER]}(?:\\.${$e[et.BUILDIDENTIFIER]})*))`);St("FULLPLAIN",`v?${$e[et.MAINVERSION]}${$e[et.PRERELEASE]}?${$e[et.BUILD]}?`);St("FULL",`^${$e[et.FULLPLAIN]}$`);St("LOOSEPLAIN",`[v=\\s]*${$e[et.MAINVERSIONLOOSE]}${$e[et.PRERELEASELOOSE]}?${$e[et.BUILD]}?`);St("LOOSE",`^${$e[et.LOOSEPLAIN]}$`);St("GTLT","((?:<|>)?=?)");St("XRANGEIDENTIFIERLOOSE",`${$e[et.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);St("XRANGEIDENTIFIER",`${$e[et.NUMERICIDENTIFIER]}|x|X|\\*`);St("XRANGEPLAIN",`[v=\\s]*(${$e[et.XRANGEIDENTIFIER]})(?:\\.(${$e[et.XRANGEIDENTIFIER]})(?:\\.(${$e[et.XRANGEIDENTIFIER]})(?:${$e[et.PRERELEASE]})?${$e[et.BUILD]}?)?)?`);St("XRANGEPLAINLOOSE",`[v=\\s]*(${$e[et.XRANGEIDENTIFIERLOOSE]})(?:\\.(${$e[et.XRANGEIDENTIFIERLOOSE]})(?:\\.(${$e[et.XRANGEIDENTIFIERLOOSE]})(?:${$e[et.PRERELEASELOOSE]})?${$e[et.BUILD]}?)?)?`);St("XRANGE",`^${$e[et.GTLT]}\\s*${$e[et.XRANGEPLAIN]}$`);St("XRANGELOOSE",`^${$e[et.GTLT]}\\s*${$e[et.XRANGEPLAINLOOSE]}$`);St("COERCE",`(^|[^\\d])(\\d{1,${tv}})(?:\\.(\\d{1,${tv}}))?(?:\\.(\\d{1,${tv}}))?(?:$|[^\\d])`);St("COERCERTL",$e[et.COERCE],!0);St("LONETILDE","(?:~>?)");St("TILDETRIM",`(\\s*)${$e[et.LONETILDE]}\\s+`,!0);bA.tildeTrimReplace="$1~";St("TILDE",`^${$e[et.LONETILDE]}${$e[et.XRANGEPLAIN]}$`);St("TILDELOOSE",`^${$e[et.LONETILDE]}${$e[et.XRANGEPLAINLOOSE]}$`);St("LONECARET","(?:\\^)");St("CARETTRIM",`(\\s*)${$e[et.LONECARET]}\\s+`,!0);bA.caretTrimReplace="$1^";St("CARET",`^${$e[et.LONECARET]}${$e[et.XRANGEPLAIN]}$`);St("CARETLOOSE",`^${$e[et.LONECARET]}${$e[et.XRANGEPLAINLOOSE]}$`);St("COMPARATORLOOSE",`^${$e[et.GTLT]}\\s*(${$e[et.LOOSEPLAIN]})$|^$`);St("COMPARATOR",`^${$e[et.GTLT]}\\s*(${$e[et.FULLPLAIN]})$|^$`);St("COMPARATORTRIM",`(\\s*)${$e[et.GTLT]}\\s*(${$e[et.LOOSEPLAIN]}|${$e[et.XRANGEPLAIN]})`,!0);bA.comparatorTrimReplace="$1$2$3";St("HYPHENRANGE",`^\\s*(${$e[et.XRANGEPLAIN]})\\s+-\\s+(${$e[et.XRANGEPLAIN]})\\s*$`);St("HYPHENRANGELOOSE",`^\\s*(${$e[et.XRANGEPLAINLOOSE]})\\s+-\\s+(${$e[et.XRANGEPLAINLOOSE]})\\s*$`);St("STAR","(<|>)?=?\\s*\\*");St("GTE0","^\\s*>=\\s*0.0.0\\s*$");St("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var rd=w((eZe,mH)=>{var xde=["includePrerelease","loose","rtl"],Pde=r=>r?typeof r!="object"?{loose:!0}:xde.filter(e=>r[e]).reduce((e,t)=>(e[t]=!0,e),{}):{};mH.exports=Pde});var bI=w((tZe,yH)=>{var EH=/^[0-9]+$/,IH=(r,e)=>{let t=EH.test(r),i=EH.test(e);return t&&i&&(r=+r,e=+e),r===e?0:t&&!i?-1:i&&!t?1:rIH(e,r);yH.exports={compareIdentifiers:IH,rcompareIdentifiers:Dde}});var Li=w((rZe,bH)=>{var SI=td(),{MAX_LENGTH:wH,MAX_SAFE_INTEGER:vI}=ed(),{re:BH,t:QH}=Zl(),kde=rd(),{compareIdentifiers:id}=bI(),Un=class{constructor(e,t){if(t=kde(t),e instanceof Un){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>wH)throw new TypeError(`version is longer than ${wH} characters`);SI("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let i=e.trim().match(t.loose?BH[QH.LOOSE]:BH[QH.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>vI||this.major<0)throw new TypeError("Invalid major version");if(this.minor>vI||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>vI||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};bH.exports=Un});var $l=w((iZe,PH)=>{var{MAX_LENGTH:Rde}=ed(),{re:SH,t:vH}=Zl(),xH=Li(),Fde=rd(),Nde=(r,e)=>{if(e=Fde(e),r instanceof xH)return r;if(typeof r!="string"||r.length>Rde||!(e.loose?SH[vH.LOOSE]:SH[vH.FULL]).test(r))return null;try{return new xH(r,e)}catch{return null}};PH.exports=Nde});var kH=w((nZe,DH)=>{var Lde=$l(),Tde=(r,e)=>{let t=Lde(r,e);return t?t.version:null};DH.exports=Tde});var FH=w((sZe,RH)=>{var Ode=$l(),Mde=(r,e)=>{let t=Ode(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};RH.exports=Mde});var LH=w((oZe,NH)=>{var Kde=Li(),Ude=(r,e,t,i)=>{typeof t=="string"&&(i=t,t=void 0);try{return new Kde(r,t).inc(e,i).version}catch{return null}};NH.exports=Ude});var ss=w((aZe,OH)=>{var TH=Li(),Hde=(r,e,t)=>new TH(r,t).compare(new TH(e,t));OH.exports=Hde});var xI=w((AZe,MH)=>{var Gde=ss(),Yde=(r,e,t)=>Gde(r,e,t)===0;MH.exports=Yde});var HH=w((lZe,UH)=>{var KH=$l(),jde=xI(),qde=(r,e)=>{if(jde(r,e))return null;{let t=KH(r),i=KH(e),n=t.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in t)if((a==="major"||a==="minor"||a==="patch")&&t[a]!==i[a])return s+a;return o}};UH.exports=qde});var YH=w((cZe,GH)=>{var Jde=Li(),Wde=(r,e)=>new Jde(r,e).major;GH.exports=Wde});var qH=w((uZe,jH)=>{var zde=Li(),Vde=(r,e)=>new zde(r,e).minor;jH.exports=Vde});var WH=w((gZe,JH)=>{var Xde=Li(),_de=(r,e)=>new Xde(r,e).patch;JH.exports=_de});var VH=w((fZe,zH)=>{var Zde=$l(),$de=(r,e)=>{let t=Zde(r,e);return t&&t.prerelease.length?t.prerelease:null};zH.exports=$de});var _H=w((hZe,XH)=>{var eCe=ss(),tCe=(r,e,t)=>eCe(e,r,t);XH.exports=tCe});var $H=w((pZe,ZH)=>{var rCe=ss(),iCe=(r,e)=>rCe(r,e,!0);ZH.exports=iCe});var PI=w((dZe,tG)=>{var eG=Li(),nCe=(r,e,t)=>{let i=new eG(r,t),n=new eG(e,t);return i.compare(n)||i.compareBuild(n)};tG.exports=nCe});var iG=w((CZe,rG)=>{var sCe=PI(),oCe=(r,e)=>r.sort((t,i)=>sCe(t,i,e));rG.exports=oCe});var sG=w((mZe,nG)=>{var aCe=PI(),ACe=(r,e)=>r.sort((t,i)=>aCe(i,t,e));nG.exports=ACe});var nd=w((EZe,oG)=>{var lCe=ss(),cCe=(r,e,t)=>lCe(r,e,t)>0;oG.exports=cCe});var DI=w((IZe,aG)=>{var uCe=ss(),gCe=(r,e,t)=>uCe(r,e,t)<0;aG.exports=gCe});var rv=w((yZe,AG)=>{var fCe=ss(),hCe=(r,e,t)=>fCe(r,e,t)!==0;AG.exports=hCe});var kI=w((wZe,lG)=>{var pCe=ss(),dCe=(r,e,t)=>pCe(r,e,t)>=0;lG.exports=dCe});var RI=w((BZe,cG)=>{var CCe=ss(),mCe=(r,e,t)=>CCe(r,e,t)<=0;cG.exports=mCe});var iv=w((QZe,uG)=>{var ECe=xI(),ICe=rv(),yCe=nd(),wCe=kI(),BCe=DI(),QCe=RI(),bCe=(r,e,t,i)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return ECe(r,t,i);case"!=":return ICe(r,t,i);case">":return yCe(r,t,i);case">=":return wCe(r,t,i);case"<":return BCe(r,t,i);case"<=":return QCe(r,t,i);default:throw new TypeError(`Invalid operator: ${e}`)}};uG.exports=bCe});var fG=w((bZe,gG)=>{var SCe=Li(),vCe=$l(),{re:FI,t:NI}=Zl(),xCe=(r,e)=>{if(r instanceof SCe)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(FI[NI.COERCE]);else{let i;for(;(i=FI[NI.COERCERTL].exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||i.index+i[0].length!==t.index+t[0].length)&&(t=i),FI[NI.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;FI[NI.COERCERTL].lastIndex=-1}return t===null?null:vCe(`${t[2]}.${t[3]||"0"}.${t[4]||"0"}`,e)};gG.exports=xCe});var pG=w((SZe,hG)=>{"use strict";hG.exports=function(r){r.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var sd=w((vZe,dG)=>{"use strict";dG.exports=Ht;Ht.Node=ec;Ht.create=Ht;function Ht(r){var e=this;if(e instanceof Ht||(e=new Ht),e.tail=null,e.head=null,e.length=0,r&&typeof r.forEach=="function")r.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var t=0,i=arguments.length;t1)t=e;else if(this.head)i=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)t=r(t,i.value,n),i=i.next;return t};Ht.prototype.reduceReverse=function(r,e){var t,i=this.tail;if(arguments.length>1)t=e;else if(this.tail)i=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)t=r(t,i.value,n),i=i.prev;return t};Ht.prototype.toArray=function(){for(var r=new Array(this.length),e=0,t=this.head;t!==null;e++)r[e]=t.value,t=t.next;return r};Ht.prototype.toArrayReverse=function(){for(var r=new Array(this.length),e=0,t=this.tail;t!==null;e++)r[e]=t.value,t=t.prev;return r};Ht.prototype.slice=function(r,e){e=e||this.length,e<0&&(e+=this.length),r=r||0,r<0&&(r+=this.length);var t=new Ht;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>r;i--,n=n.prev)t.push(n.value);return t};Ht.prototype.splice=function(r,e,...t){r>this.length&&(r=this.length-1),r<0&&(r=this.length+r);for(var i=0,n=this.head;n!==null&&i{"use strict";var RCe=sd(),tc=Symbol("max"),Ia=Symbol("length"),Og=Symbol("lengthCalculator"),ad=Symbol("allowStale"),rc=Symbol("maxAge"),Ea=Symbol("dispose"),CG=Symbol("noDisposeOnSet"),di=Symbol("lruList"),Ws=Symbol("cache"),EG=Symbol("updateAgeOnGet"),nv=()=>1,ov=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let t=this[tc]=e.max||1/0,i=e.length||nv;if(this[Og]=typeof i!="function"?nv:i,this[ad]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[rc]=e.maxAge||0,this[Ea]=e.dispose,this[CG]=e.noDisposeOnSet||!1,this[EG]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[tc]=e||1/0,od(this)}get max(){return this[tc]}set allowStale(e){this[ad]=!!e}get allowStale(){return this[ad]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[rc]=e,od(this)}get maxAge(){return this[rc]}set lengthCalculator(e){typeof e!="function"&&(e=nv),e!==this[Og]&&(this[Og]=e,this[Ia]=0,this[di].forEach(t=>{t.length=this[Og](t.value,t.key),this[Ia]+=t.length})),od(this)}get lengthCalculator(){return this[Og]}get length(){return this[Ia]}get itemCount(){return this[di].length}rforEach(e,t){t=t||this;for(let i=this[di].tail;i!==null;){let n=i.prev;mG(this,e,i,t),i=n}}forEach(e,t){t=t||this;for(let i=this[di].head;i!==null;){let n=i.next;mG(this,e,i,t),i=n}}keys(){return this[di].toArray().map(e=>e.key)}values(){return this[di].toArray().map(e=>e.value)}reset(){this[Ea]&&this[di]&&this[di].length&&this[di].forEach(e=>this[Ea](e.key,e.value)),this[Ws]=new Map,this[di]=new RCe,this[Ia]=0}dump(){return this[di].map(e=>LI(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[di]}set(e,t,i){if(i=i||this[rc],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[Og](t,e);if(this[Ws].has(e)){if(s>this[tc])return Mg(this,this[Ws].get(e)),!1;let l=this[Ws].get(e).value;return this[Ea]&&(this[CG]||this[Ea](e,l.value)),l.now=n,l.maxAge=i,l.value=t,this[Ia]+=s-l.length,l.length=s,this.get(e),od(this),!0}let o=new av(e,t,s,n,i);return o.length>this[tc]?(this[Ea]&&this[Ea](e,t),!1):(this[Ia]+=o.length,this[di].unshift(o),this[Ws].set(e,this[di].head),od(this),!0)}has(e){if(!this[Ws].has(e))return!1;let t=this[Ws].get(e).value;return!LI(this,t)}get(e){return sv(this,e,!0)}peek(e){return sv(this,e,!1)}pop(){let e=this[di].tail;return e?(Mg(this,e),e.value):null}del(e){Mg(this,this[Ws].get(e))}load(e){this.reset();let t=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-t;o>0&&this.set(n.k,n.v,o)}}}prune(){this[Ws].forEach((e,t)=>sv(this,t,!1))}},sv=(r,e,t)=>{let i=r[Ws].get(e);if(i){let n=i.value;if(LI(r,n)){if(Mg(r,i),!r[ad])return}else t&&(r[EG]&&(i.value.now=Date.now()),r[di].unshiftNode(i));return n.value}},LI=(r,e)=>{if(!e||!e.maxAge&&!r[rc])return!1;let t=Date.now()-e.now;return e.maxAge?t>e.maxAge:r[rc]&&t>r[rc]},od=r=>{if(r[Ia]>r[tc])for(let e=r[di].tail;r[Ia]>r[tc]&&e!==null;){let t=e.prev;Mg(r,e),e=t}},Mg=(r,e)=>{if(e){let t=e.value;r[Ea]&&r[Ea](t.key,t.value),r[Ia]-=t.length,r[Ws].delete(t.key),r[di].removeNode(e)}},av=class{constructor(e,t,i,n,s){this.key=e,this.value=t,this.length=i,this.now=n,this.maxAge=s||0}},mG=(r,e,t,i)=>{let n=t.value;LI(r,n)&&(Mg(r,t),r[ad]||(n=void 0)),n&&e.call(i,n.value,n.key,r)};IG.exports=ov});var os=w((PZe,bG)=>{var ic=class{constructor(e,t){if(t=NCe(t),e instanceof ic)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new ic(e.raw,t);if(e instanceof Av)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!BG(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&KCe(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=wG.get(i);if(n)return n;let s=this.options.loose,o=s?Ti[Bi.HYPHENRANGELOOSE]:Ti[Bi.HYPHENRANGE];e=e.replace(o,VCe(this.options.includePrerelease)),Gr("hyphen replace",e),e=e.replace(Ti[Bi.COMPARATORTRIM],TCe),Gr("comparator trim",e,Ti[Bi.COMPARATORTRIM]),e=e.replace(Ti[Bi.TILDETRIM],OCe),e=e.replace(Ti[Bi.CARETTRIM],MCe),e=e.split(/\s+/).join(" ");let a=s?Ti[Bi.COMPARATORLOOSE]:Ti[Bi.COMPARATOR],l=e.split(" ").map(f=>UCe(f,this.options)).join(" ").split(/\s+/).map(f=>zCe(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new Av(f,this.options)),c=l.length,u=new Map;for(let f of l){if(BG(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return wG.set(i,g),g}intersects(e,t){if(!(e instanceof ic))throw new TypeError("a Range is required");return this.set.some(i=>QG(i,t)&&e.set.some(n=>QG(n,t)&&i.every(s=>n.every(o=>s.intersects(o,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new LCe(e,this.options)}catch{return!1}for(let t=0;tr.value==="<0.0.0-0",KCe=r=>r.value==="",QG=(r,e)=>{let t=!0,i=r.slice(),n=i.pop();for(;t&&i.length;)t=i.every(s=>n.intersects(s,e)),n=i.pop();return t},UCe=(r,e)=>(Gr("comp",r,e),r=YCe(r,e),Gr("caret",r),r=HCe(r,e),Gr("tildes",r),r=qCe(r,e),Gr("xrange",r),r=WCe(r,e),Gr("stars",r),r),Vi=r=>!r||r.toLowerCase()==="x"||r==="*",HCe=(r,e)=>r.trim().split(/\s+/).map(t=>GCe(t,e)).join(" "),GCe=(r,e)=>{let t=e.loose?Ti[Bi.TILDELOOSE]:Ti[Bi.TILDE];return r.replace(t,(i,n,s,o,a)=>{Gr("tilde",r,i,n,s,o,a);let l;return Vi(n)?l="":Vi(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Vi(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(Gr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,Gr("tilde return",l),l})},YCe=(r,e)=>r.trim().split(/\s+/).map(t=>jCe(t,e)).join(" "),jCe=(r,e)=>{Gr("caret",r,e);let t=e.loose?Ti[Bi.CARETLOOSE]:Ti[Bi.CARET],i=e.includePrerelease?"-0":"";return r.replace(t,(n,s,o,a,l)=>{Gr("caret",r,n,s,o,a,l);let c;return Vi(s)?c="":Vi(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Vi(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(Gr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(Gr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),Gr("caret return",c),c})},qCe=(r,e)=>(Gr("replaceXRanges",r,e),r.split(/\s+/).map(t=>JCe(t,e)).join(" ")),JCe=(r,e)=>{r=r.trim();let t=e.loose?Ti[Bi.XRANGELOOSE]:Ti[Bi.XRANGE];return r.replace(t,(i,n,s,o,a,l)=>{Gr("xRange",r,i,n,s,o,a,l);let c=Vi(s),u=c||Vi(o),g=u||Vi(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),Gr("xRange return",i),i})},WCe=(r,e)=>(Gr("replaceStars",r,e),r.trim().replace(Ti[Bi.STAR],"")),zCe=(r,e)=>(Gr("replaceGTE0",r,e),r.trim().replace(Ti[e.includePrerelease?Bi.GTE0PRE:Bi.GTE0],"")),VCe=r=>(e,t,i,n,s,o,a,l,c,u,g,f,h)=>(Vi(i)?t="":Vi(n)?t=`>=${i}.0.0${r?"-0":""}`:Vi(s)?t=`>=${i}.${n}.0${r?"-0":""}`:o?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,Vi(c)?l="":Vi(u)?l=`<${+c+1}.0.0-0`:Vi(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:r?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${t} ${l}`.trim()),XCe=(r,e,t)=>{for(let i=0;i0){let n=r[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Ad=w((DZe,DG)=>{var ld=Symbol("SemVer ANY"),Kg=class{static get ANY(){return ld}constructor(e,t){if(t=_Ce(t),e instanceof Kg){if(e.loose===!!t.loose)return e;e=e.value}cv("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===ld?this.value="":this.value=this.operator+this.semver.version,cv("comp",this)}parse(e){let t=this.options.loose?SG[vG.COMPARATORLOOSE]:SG[vG.COMPARATOR],i=e.match(t);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new xG(i[2],this.options.loose):this.semver=ld}toString(){return this.value}test(e){if(cv("Comparator.test",e,this.options.loose),this.semver===ld||e===ld)return!0;if(typeof e=="string")try{e=new xG(e,this.options)}catch{return!1}return lv(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof Kg))throw new TypeError("a Comparator is required");if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new PG(e.value,t).test(this.value);if(e.operator==="")return e.value===""?!0:new PG(this.value,t).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=lv(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=lv(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};DG.exports=Kg;var _Ce=rd(),{re:SG,t:vG}=Zl(),lv=iv(),cv=td(),xG=Li(),PG=os()});var cd=w((kZe,kG)=>{var ZCe=os(),$Ce=(r,e,t)=>{try{e=new ZCe(e,t)}catch{return!1}return e.test(r)};kG.exports=$Ce});var FG=w((RZe,RG)=>{var eme=os(),tme=(r,e)=>new eme(r,e).set.map(t=>t.map(i=>i.value).join(" ").trim().split(" "));RG.exports=tme});var LG=w((FZe,NG)=>{var rme=Li(),ime=os(),nme=(r,e,t)=>{let i=null,n=null,s=null;try{s=new ime(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new rme(i,t))}),i};NG.exports=nme});var OG=w((NZe,TG)=>{var sme=Li(),ome=os(),ame=(r,e,t)=>{let i=null,n=null,s=null;try{s=new ome(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new sme(i,t))}),i};TG.exports=ame});var UG=w((LZe,KG)=>{var uv=Li(),Ame=os(),MG=nd(),lme=(r,e)=>{r=new Ame(r,e);let t=new uv("0.0.0");if(r.test(t)||(t=new uv("0.0.0-0"),r.test(t)))return t;t=null;for(let i=0;i{let a=new uv(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||MG(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!t||MG(t,s))&&(t=s)}return t&&r.test(t)?t:null};KG.exports=lme});var GG=w((TZe,HG)=>{var cme=os(),ume=(r,e)=>{try{return new cme(r,e).range||"*"}catch{return null}};HG.exports=ume});var TI=w((OZe,JG)=>{var gme=Li(),qG=Ad(),{ANY:fme}=qG,hme=os(),pme=cd(),YG=nd(),jG=DI(),dme=RI(),Cme=kI(),mme=(r,e,t,i)=>{r=new gme(r,i),e=new hme(e,i);let n,s,o,a,l;switch(t){case">":n=YG,s=dme,o=jG,a=">",l=">=";break;case"<":n=jG,s=Cme,o=YG,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(pme(r,e,i))return!1;for(let c=0;c{h.semver===fme&&(h=new qG(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(r,f.semver))return!1;if(f.operator===l&&o(r,f.semver))return!1}return!0};JG.exports=mme});var zG=w((MZe,WG)=>{var Eme=TI(),Ime=(r,e,t)=>Eme(r,e,">",t);WG.exports=Ime});var XG=w((KZe,VG)=>{var yme=TI(),wme=(r,e,t)=>yme(r,e,"<",t);VG.exports=wme});var $G=w((UZe,ZG)=>{var _G=os(),Bme=(r,e,t)=>(r=new _G(r,t),e=new _G(e,t),r.intersects(e));ZG.exports=Bme});var tY=w((HZe,eY)=>{var Qme=cd(),bme=ss();eY.exports=(r,e,t)=>{let i=[],n=null,s=null,o=r.sort((u,g)=>bme(u,g,t));for(let u of o)Qme(u,e,t)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var rY=os(),OI=Ad(),{ANY:gv}=OI,ud=cd(),fv=ss(),Sme=(r,e,t={})=>{if(r===e)return!0;r=new rY(r,t),e=new rY(e,t);let i=!1;e:for(let n of r.set){for(let s of e.set){let o=vme(n,s,t);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},vme=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===gv){if(e.length===1&&e[0].semver===gv)return!0;t.includePrerelease?r=[new OI(">=0.0.0-0")]:r=[new OI(">=0.0.0")]}if(e.length===1&&e[0].semver===gv){if(t.includePrerelease)return!0;e=[new OI(">=0.0.0")]}let i=new Set,n,s;for(let h of r)h.operator===">"||h.operator===">="?n=iY(n,h,t):h.operator==="<"||h.operator==="<="?s=nY(s,h,t):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=fv(n.semver,s.semver,t),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!ud(h,String(n),t)||s&&!ud(h,String(s),t))return null;for(let p of e)if(!ud(h,String(p),t))return!1;return!0}let a,l,c,u,g=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=iY(n,h,t),a===h&&a!==n)return!1}else if(n.operator===">="&&!ud(n.semver,String(h),t))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=nY(s,h,t),l===h&&l!==s)return!1}else if(s.operator==="<="&&!ud(s.semver,String(h),t))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},iY=(r,e,t)=>{if(!r)return e;let i=fv(r.semver,e.semver,t);return i>0?r:i<0||e.operator===">"&&r.operator===">="?e:r},nY=(r,e,t)=>{if(!r)return e;let i=fv(r.semver,e.semver,t);return i<0?r:i>0||e.operator==="<"&&r.operator==="<="?e:r};sY.exports=Sme});var Xr=w((YZe,aY)=>{var hv=Zl();aY.exports={re:hv.re,src:hv.src,tokens:hv.t,SEMVER_SPEC_VERSION:ed().SEMVER_SPEC_VERSION,SemVer:Li(),compareIdentifiers:bI().compareIdentifiers,rcompareIdentifiers:bI().rcompareIdentifiers,parse:$l(),valid:kH(),clean:FH(),inc:LH(),diff:HH(),major:YH(),minor:qH(),patch:WH(),prerelease:VH(),compare:ss(),rcompare:_H(),compareLoose:$H(),compareBuild:PI(),sort:iG(),rsort:sG(),gt:nd(),lt:DI(),eq:xI(),neq:rv(),gte:kI(),lte:RI(),cmp:iv(),coerce:fG(),Comparator:Ad(),Range:os(),satisfies:cd(),toComparators:FG(),maxSatisfying:LG(),minSatisfying:OG(),minVersion:UG(),validRange:GG(),outside:TI(),gtr:zG(),ltr:XG(),intersects:$G(),simplifyRange:tY(),subset:oY()}});var pv=w(MI=>{"use strict";Object.defineProperty(MI,"__esModule",{value:!0});MI.VERSION=void 0;MI.VERSION="9.1.0"});var Gt=w((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(r,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,s;i{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof KI=="object"&&KI.exports?KI.exports=e():r.regexpToAst=e()})(typeof self<"u"?self:AY,function(){function r(){}r.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},r.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},r.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var C=this.disjunction();this.consumeChar("/");for(var y={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(y,"global");break;case"i":o(y,"ignoreCase");break;case"m":o(y,"multiLine");break;case"u":o(y,"unicode");break;case"y":o(y,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:y,value:C,loc:this.loc(0)}},r.prototype.disjunction=function(){var p=[],C=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(C)}},r.prototype.alternative=function(){for(var p=[],C=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(C)}},r.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},r.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var C;switch(this.popChar()){case"=":C="Lookahead";break;case"!":C="NegativeLookahead";break}a(C);var y=this.disjunction();return this.consumeChar(")"),{type:C,value:y,loc:this.loc(p)}}l()},r.prototype.quantifier=function(p){var C,y=this.idx;switch(this.popChar()){case"*":C={atLeast:0,atMost:1/0};break;case"+":C={atLeast:1,atMost:1/0};break;case"?":C={atLeast:0,atMost:1};break;case"{":var B=this.integerIncludingZero();switch(this.popChar()){case"}":C={atLeast:B,atMost:B};break;case",":var v;this.isDigit()?(v=this.integerIncludingZero(),C={atLeast:B,atMost:v}):C={atLeast:B,atMost:1/0},this.consumeChar("}");break}if(p===!0&&C===void 0)return;a(C);break}if(!(p===!0&&C===void 0))return a(C),this.peekChar(0)==="?"?(this.consumeChar("?"),C.greedy=!1):C.greedy=!0,C.type="Quantifier",C.loc=this.loc(y),C},r.prototype.atom=function(){var p,C=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(C),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},r.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` -`),n("\r"),n("\u2028"),n("\u2029")]}},r.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},r.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},r.prototype.characterClassEscape=function(){var p,C=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,C=!0;break;case"s":p=f;break;case"S":p=f,C=!0;break;case"w":p=g;break;case"W":p=g,C=!0;break}return a(p),{type:"Set",value:p,complement:C}},r.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` -`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},r.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var C=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:C}},r.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},r.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},r.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},r.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},r.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},r.prototype.characterClass=function(){var p=[],C=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),C=!0);this.isClassAtom();){var y=this.classAtom(),B=y.type==="Character";if(B&&this.isRangeDash()){this.consumeChar("-");var v=this.classAtom(),D=v.type==="Character";if(D){if(v.value=this.input.length)throw Error("Unexpected end of input");this.idx++},r.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,t=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,C){p.length!==void 0?p.forEach(function(y){C.push(y)}):C.push(p)}function o(p,C){if(p[C]===!0)throw"duplicate flag "+C;p[C]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` -`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var C in p){var y=p[C];p.hasOwnProperty(C)&&(y.type!==void 0?this.visit(y):Array.isArray(y)&&y.forEach(function(B){this.visit(B)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:r,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var GI=w(Ug=>{"use strict";Object.defineProperty(Ug,"__esModule",{value:!0});Ug.clearRegExpParserCache=Ug.getRegExpAst=void 0;var xme=UI(),HI={},Pme=new xme.RegExpParser;function Dme(r){var e=r.toString();if(HI.hasOwnProperty(e))return HI[e];var t=Pme.pattern(e);return HI[e]=t,t}Ug.getRegExpAst=Dme;function kme(){HI={}}Ug.clearRegExpParserCache=kme});var fY=w(pn=>{"use strict";var Rme=pn&&pn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(pn,"__esModule",{value:!0});pn.canMatchCharCode=pn.firstCharOptimizedIndices=pn.getOptimizedStartCodesIndices=pn.failedOptimizationPrefixMsg=void 0;var cY=UI(),as=Gt(),uY=GI(),ya=Cv(),gY="Complement Sets are not supported for first char optimization";pn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: -`;function Fme(r,e){e===void 0&&(e=!1);try{var t=(0,uY.getRegExpAst)(r),i=jI(t.value,{},t.flags.ignoreCase);return i}catch(s){if(s.message===gY)e&&(0,as.PRINT_WARNING)(""+pn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+r.toString()+` > -`)+` Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,as.PRINT_ERROR)(pn.failedOptimizationPrefixMsg+` -`+(" Failed parsing: < "+r.toString()+` > -`)+(" Using the regexp-to-ast library version: "+cY.VERSION+` -`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}pn.getOptimizedStartCodesIndices=Fme;function jI(r,e,t){switch(r.type){case"Disjunction":for(var i=0;i=ya.minOptimizationVal)for(var f=u.from>=ya.minOptimizationVal?u.from:ya.minOptimizationVal,h=u.to,p=(0,ya.charCodeToOptimizedIndex)(f),C=(0,ya.charCodeToOptimizedIndex)(h),y=p;y<=C;y++)e[y]=y}}});break;case"Group":jI(o.value,e,t);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&dv(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,as.values)(e)}pn.firstCharOptimizedIndices=jI;function YI(r,e,t){var i=(0,ya.charCodeToOptimizedIndex)(r);e[i]=i,t===!0&&Nme(r,e)}function Nme(r,e){var t=String.fromCharCode(r),i=t.toUpperCase();if(i!==t){var n=(0,ya.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=t.toLowerCase();if(s!==t){var n=(0,ya.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function lY(r,e){return(0,as.find)(r.value,function(t){if(typeof t=="number")return(0,as.contains)(e,t);var i=t;return(0,as.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function dv(r){return r.quantifier&&r.quantifier.atLeast===0?!0:r.value?(0,as.isArray)(r.value)?(0,as.every)(r.value,dv):dv(r.value):!1}var Lme=function(r){Rme(e,r);function e(t){var i=r.call(this)||this;return i.targetCharCodes=t,i.found=!1,i}return e.prototype.visitChildren=function(t){if(this.found!==!0){switch(t.type){case"Lookahead":this.visitLookahead(t);return;case"NegativeLookahead":this.visitNegativeLookahead(t);return}r.prototype.visitChildren.call(this,t)}},e.prototype.visitCharacter=function(t){(0,as.contains)(this.targetCharCodes,t.value)&&(this.found=!0)},e.prototype.visitSet=function(t){t.complement?lY(t,this.targetCharCodes)===void 0&&(this.found=!0):lY(t,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(cY.BaseRegExpVisitor);function Tme(r,e){if(e instanceof RegExp){var t=(0,uY.getRegExpAst)(e),i=new Lme(r);return i.visit(t),i.found}else return(0,as.find)(e,function(n){return(0,as.contains)(r,n.charCodeAt(0))})!==void 0}pn.canMatchCharCode=Tme});var Cv=w(Ve=>{"use strict";var hY=Ve&&Ve.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Ve,"__esModule",{value:!0});Ve.charCodeToOptimizedIndex=Ve.minOptimizationVal=Ve.buildLineBreakIssueMessage=Ve.LineTerminatorOptimizedTester=Ve.isShortPattern=Ve.isCustomPattern=Ve.cloneEmptyGroups=Ve.performWarningRuntimeChecks=Ve.performRuntimeChecks=Ve.addStickyFlag=Ve.addStartOfInput=Ve.findUnreachablePatterns=Ve.findModesThatDoNotExist=Ve.findInvalidGroupType=Ve.findDuplicatePatterns=Ve.findUnsupportedFlags=Ve.findStartOfInputAnchor=Ve.findEmptyMatchRegExps=Ve.findEndOfInputAnchor=Ve.findInvalidPatterns=Ve.findMissingPatterns=Ve.validatePatterns=Ve.analyzeTokenTypes=Ve.enableSticky=Ve.disableSticky=Ve.SUPPORT_STICKY=Ve.MODES=Ve.DEFAULT_MODE=void 0;var pY=UI(),ir=gd(),xe=Gt(),Hg=fY(),dY=GI(),So="PATTERN";Ve.DEFAULT_MODE="defaultMode";Ve.MODES="modes";Ve.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function Ome(){Ve.SUPPORT_STICKY=!1}Ve.disableSticky=Ome;function Mme(){Ve.SUPPORT_STICKY=!0}Ve.enableSticky=Mme;function Kme(r,e){e=(0,xe.defaults)(e,{useSticky:Ve.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:function(v,D){return D()}});var t=e.tracer;t("initCharCodeToOptimizedIndexMap",function(){Vme()});var i;t("Reject Lexer.NA",function(){i=(0,xe.reject)(r,function(v){return v[So]===ir.Lexer.NA})});var n=!1,s;t("Transform Patterns",function(){n=!1,s=(0,xe.map)(i,function(v){var D=v[So];if((0,xe.isRegExp)(D)){var L=D.source;return L.length===1&&L!=="^"&&L!=="$"&&L!=="."&&!D.ignoreCase?L:L.length===2&&L[0]==="\\"&&!(0,xe.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],L[1])?L[1]:e.useSticky?Iv(D):Ev(D)}else{if((0,xe.isFunction)(D))return n=!0,{exec:D};if((0,xe.has)(D,"exec"))return n=!0,D;if(typeof D=="string"){if(D.length===1)return D;var H=D.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),j=new RegExp(H);return e.useSticky?Iv(j):Ev(j)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;t("misc mapping",function(){o=(0,xe.map)(i,function(v){return v.tokenTypeIdx}),a=(0,xe.map)(i,function(v){var D=v.GROUP;if(D!==ir.Lexer.SKIPPED){if((0,xe.isString)(D))return D;if((0,xe.isUndefined)(D))return!1;throw Error("non exhaustive match")}}),l=(0,xe.map)(i,function(v){var D=v.LONGER_ALT;if(D){var L=(0,xe.isArray)(D)?(0,xe.map)(D,function(H){return(0,xe.indexOf)(i,H)}):[(0,xe.indexOf)(i,D)];return L}}),c=(0,xe.map)(i,function(v){return v.PUSH_MODE}),u=(0,xe.map)(i,function(v){return(0,xe.has)(v,"POP_MODE")})});var g;t("Line Terminator Handling",function(){var v=DY(e.lineTerminatorCharacters);g=(0,xe.map)(i,function(D){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,xe.map)(i,function(D){if((0,xe.has)(D,"LINE_BREAKS"))return D.LINE_BREAKS;if(xY(D,v)===!1)return(0,Hg.canMatchCharCode)(v,D.PATTERN)}))});var f,h,p,C;t("Misc Mapping #2",function(){f=(0,xe.map)(i,wv),h=(0,xe.map)(s,vY),p=(0,xe.reduce)(i,function(v,D){var L=D.GROUP;return(0,xe.isString)(L)&&L!==ir.Lexer.SKIPPED&&(v[L]=[]),v},{}),C=(0,xe.map)(s,function(v,D){return{pattern:s[D],longerAlt:l[D],canLineTerminator:g[D],isCustom:f[D],short:h[D],group:a[D],push:c[D],pop:u[D],tokenTypeIdx:o[D],tokenType:i[D]}})});var y=!0,B=[];return e.safeMode||t("First Char Optimization",function(){B=(0,xe.reduce)(i,function(v,D,L){if(typeof D.PATTERN=="string"){var H=D.PATTERN.charCodeAt(0),j=yv(H);mv(v,j,C[L])}else if((0,xe.isArray)(D.START_CHARS_HINT)){var $;(0,xe.forEach)(D.START_CHARS_HINT,function(W){var Z=typeof W=="string"?W.charCodeAt(0):W,A=yv(Z);$!==A&&($=A,mv(v,A,C[L]))})}else if((0,xe.isRegExp)(D.PATTERN))if(D.PATTERN.unicode)y=!1,e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+Hg.failedOptimizationPrefixMsg+(" Unable to analyze < "+D.PATTERN.toString()+` > pattern. -`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var V=(0,Hg.getOptimizedStartCodesIndices)(D.PATTERN,e.ensureOptimizations);(0,xe.isEmpty)(V)&&(y=!1),(0,xe.forEach)(V,function(W){mv(v,W,C[L])})}else e.ensureOptimizations&&(0,xe.PRINT_ERROR)(""+Hg.failedOptimizationPrefixMsg+(" TokenType: <"+D.name+`> is using a custom token pattern without providing parameter. -`)+` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),y=!1;return v},[])}),t("ArrayPacking",function(){B=(0,xe.packArray)(B)}),{emptyGroups:p,patternIdxToConfig:C,charCodeToPatternIdxToConfig:B,hasCustom:n,canBeOptimized:y}}Ve.analyzeTokenTypes=Kme;function Ume(r,e){var t=[],i=CY(r);t=t.concat(i.errors);var n=mY(i.valid),s=n.valid;return t=t.concat(n.errors),t=t.concat(Hme(s)),t=t.concat(QY(s)),t=t.concat(bY(s,e)),t=t.concat(SY(s)),t}Ve.validatePatterns=Ume;function Hme(r){var e=[],t=(0,xe.filter)(r,function(i){return(0,xe.isRegExp)(i[So])});return e=e.concat(EY(t)),e=e.concat(yY(t)),e=e.concat(wY(t)),e=e.concat(BY(t)),e=e.concat(IY(t)),e}function CY(r){var e=(0,xe.filter)(r,function(n){return!(0,xe.has)(n,So)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:ir.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findMissingPatterns=CY;function mY(r){var e=(0,xe.filter)(r,function(n){var s=n[So];return!(0,xe.isRegExp)(s)&&!(0,xe.isFunction)(s)&&!(0,xe.has)(s,"exec")&&!(0,xe.isString)(s)}),t=(0,xe.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:ir.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,xe.difference)(r,e);return{errors:t,valid:i}}Ve.findInvalidPatterns=mY;var Gme=/[^\\][\$]/;function EY(r){var e=function(n){hY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(pY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[So];try{var o=(0,dY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return Gme.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findEndOfInputAnchor=EY;function IY(r){var e=(0,xe.filter)(r,function(i){var n=i[So];return n.test("")}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:ir.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return t}Ve.findEmptyMatchRegExps=IY;var Yme=/[^\\[][\^]|^\^/;function yY(r){var e=function(n){hY(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(pY.BaseRegExpVisitor),t=(0,xe.filter)(r,function(n){var s=n[So];try{var o=(0,dY.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return Yme.test(s.source)}}),i=(0,xe.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Ve.findStartOfInputAnchor=yY;function wY(r){var e=(0,xe.filter)(r,function(i){var n=i[So];return n instanceof RegExp&&(n.multiline||n.global)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:ir.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return t}Ve.findUnsupportedFlags=wY;function BY(r){var e=[],t=(0,xe.map)(r,function(s){return(0,xe.reduce)(r,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,xe.contains)(e,a)&&a.PATTERN!==ir.Lexer.NA&&(e.push(a),o.push(a)),o},[])});t=(0,xe.compact)(t);var i=(0,xe.filter)(t,function(s){return s.length>1}),n=(0,xe.map)(i,function(s){var o=(0,xe.map)(s,function(l){return l.name}),a=(0,xe.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:ir.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}Ve.findDuplicatePatterns=BY;function QY(r){var e=(0,xe.filter)(r,function(i){if(!(0,xe.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==ir.Lexer.SKIPPED&&n!==ir.Lexer.NA&&!(0,xe.isString)(n)}),t=(0,xe.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:ir.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return t}Ve.findInvalidGroupType=QY;function bY(r,e){var t=(0,xe.filter)(r,function(n){return n.PUSH_MODE!==void 0&&!(0,xe.contains)(e,n.PUSH_MODE)}),i=(0,xe.map)(t,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:ir.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}Ve.findModesThatDoNotExist=bY;function SY(r){var e=[],t=(0,xe.reduce)(r,function(i,n,s){var o=n.PATTERN;return o===ir.Lexer.NA||((0,xe.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,xe.isRegExp)(o)&&qme(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,xe.forEach)(r,function(i,n){(0,xe.forEach)(t,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:ir.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}Ve.findUnreachablePatterns=SY;function jme(r,e){if((0,xe.isRegExp)(e)){var t=e.exec(r);return t!==null&&t.index===0}else{if((0,xe.isFunction)(e))return e(r,0,[],{});if((0,xe.has)(e,"exec"))return e.exec(r,0,[],{});if(typeof e=="string")return e===r;throw Error("non exhaustive match")}}function qme(r){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,xe.find)(e,function(t){return r.source.indexOf(t)!==-1})===void 0}function Ev(r){var e=r.ignoreCase?"i":"";return new RegExp("^(?:"+r.source+")",e)}Ve.addStartOfInput=Ev;function Iv(r){var e=r.ignoreCase?"iy":"y";return new RegExp(""+r.source,e)}Ve.addStickyFlag=Iv;function Jme(r,e,t){var i=[];return(0,xe.has)(r,Ve.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.DEFAULT_MODE+`> property in its definition -`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,xe.has)(r,Ve.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Ve.MODES+`> property in its definition -`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,xe.has)(r,Ve.MODES)&&(0,xe.has)(r,Ve.DEFAULT_MODE)&&!(0,xe.has)(r.modes,r.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+Ve.DEFAULT_MODE+": <"+r.defaultMode+`>which does not exist -`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,xe.has)(r,Ve.MODES)&&(0,xe.forEach)(r.modes,function(n,s){(0,xe.forEach)(n,function(o,a){(0,xe.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> -`),type:ir.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}Ve.performRuntimeChecks=Jme;function Wme(r,e,t){var i=[],n=!1,s=(0,xe.compact)((0,xe.flatten)((0,xe.mapValues)(r.modes,function(l){return l}))),o=(0,xe.reject)(s,function(l){return l[So]===ir.Lexer.NA}),a=DY(t);return e&&(0,xe.forEach)(o,function(l){var c=xY(l,a);if(c!==!1){var u=PY(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,xe.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,Hg.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. - This Lexer has been defined to track line and column information, - But none of the Token Types can be identified as matching a line terminator. - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:ir.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}Ve.performWarningRuntimeChecks=Wme;function zme(r){var e={},t=(0,xe.keys)(r);return(0,xe.forEach)(t,function(i){var n=r[i];if((0,xe.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}Ve.cloneEmptyGroups=zme;function wv(r){var e=r.PATTERN;if((0,xe.isRegExp)(e))return!1;if((0,xe.isFunction)(e))return!0;if((0,xe.has)(e,"exec"))return!0;if((0,xe.isString)(e))return!1;throw Error("non exhaustive match")}Ve.isCustomPattern=wv;function vY(r){return(0,xe.isString)(r)&&r.length===1?r.charCodeAt(0):!1}Ve.isShortPattern=vY;Ve.LineTerminatorOptimizedTester={test:function(r){for(var e=r.length,t=this.lastIndex;t Token Type -`)+(" Root cause: "+e.errMsg+`. -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===ir.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. -`+(" The problem is in the <"+r.name+`> Token Type -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}Ve.buildLineBreakIssueMessage=PY;function DY(r){var e=(0,xe.map)(r,function(t){return(0,xe.isString)(t)&&t.length>0?t.charCodeAt(0):t});return e}function mv(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}Ve.minOptimizationVal=256;var qI=[];function yv(r){return r255?255+~~(r/255):r}}});var Gg=w(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.isTokenType=Nt.hasExtendingTokensTypesMapProperty=Nt.hasExtendingTokensTypesProperty=Nt.hasCategoriesProperty=Nt.hasShortKeyProperty=Nt.singleAssignCategoriesToksMap=Nt.assignCategoriesMapProp=Nt.assignCategoriesTokensProp=Nt.assignTokenDefaultProps=Nt.expandCategories=Nt.augmentTokenTypes=Nt.tokenIdxToClass=Nt.tokenShortNameIdx=Nt.tokenStructuredMatcherNoCategories=Nt.tokenStructuredMatcher=void 0;var _r=Gt();function Xme(r,e){var t=r.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}Nt.tokenStructuredMatcher=Xme;function _me(r,e){return r.tokenTypeIdx===e.tokenTypeIdx}Nt.tokenStructuredMatcherNoCategories=_me;Nt.tokenShortNameIdx=1;Nt.tokenIdxToClass={};function Zme(r){var e=kY(r);RY(e),NY(e),FY(e),(0,_r.forEach)(e,function(t){t.isParent=t.categoryMatches.length>0})}Nt.augmentTokenTypes=Zme;function kY(r){for(var e=(0,_r.cloneArr)(r),t=r,i=!0;i;){t=(0,_r.compact)((0,_r.flatten)((0,_r.map)(t,function(s){return s.CATEGORIES})));var n=(0,_r.difference)(t,e);e=e.concat(n),(0,_r.isEmpty)(n)?i=!1:t=n}return e}Nt.expandCategories=kY;function RY(r){(0,_r.forEach)(r,function(e){LY(e)||(Nt.tokenIdxToClass[Nt.tokenShortNameIdx]=e,e.tokenTypeIdx=Nt.tokenShortNameIdx++),Bv(e)&&!(0,_r.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Bv(e)||(e.CATEGORIES=[]),TY(e)||(e.categoryMatches=[]),OY(e)||(e.categoryMatchesMap={})})}Nt.assignTokenDefaultProps=RY;function FY(r){(0,_r.forEach)(r,function(e){e.categoryMatches=[],(0,_r.forEach)(e.categoryMatchesMap,function(t,i){e.categoryMatches.push(Nt.tokenIdxToClass[i].tokenTypeIdx)})})}Nt.assignCategoriesTokensProp=FY;function NY(r){(0,_r.forEach)(r,function(e){Qv([],e)})}Nt.assignCategoriesMapProp=NY;function Qv(r,e){(0,_r.forEach)(r,function(t){e.categoryMatchesMap[t.tokenTypeIdx]=!0}),(0,_r.forEach)(e.CATEGORIES,function(t){var i=r.concat(e);(0,_r.contains)(i,t)||Qv(i,t)})}Nt.singleAssignCategoriesToksMap=Qv;function LY(r){return(0,_r.has)(r,"tokenTypeIdx")}Nt.hasShortKeyProperty=LY;function Bv(r){return(0,_r.has)(r,"CATEGORIES")}Nt.hasCategoriesProperty=Bv;function TY(r){return(0,_r.has)(r,"categoryMatches")}Nt.hasExtendingTokensTypesProperty=TY;function OY(r){return(0,_r.has)(r,"categoryMatchesMap")}Nt.hasExtendingTokensTypesMapProperty=OY;function $me(r){return(0,_r.has)(r,"tokenTypeIdx")}Nt.isTokenType=$me});var bv=w(JI=>{"use strict";Object.defineProperty(JI,"__esModule",{value:!0});JI.defaultLexerErrorProvider=void 0;JI.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(r){return"Unable to pop Lexer Mode after encountering Token ->"+r.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(r,e,t,i,n){return"unexpected character: ->"+r.charAt(e)+"<- at offset: "+e+","+(" skipped "+t+" characters.")}}});var gd=w(nc=>{"use strict";Object.defineProperty(nc,"__esModule",{value:!0});nc.Lexer=nc.LexerDefinitionErrorType=void 0;var zs=Cv(),nr=Gt(),eEe=Gg(),tEe=bv(),rEe=GI(),iEe;(function(r){r[r.MISSING_PATTERN=0]="MISSING_PATTERN",r[r.INVALID_PATTERN=1]="INVALID_PATTERN",r[r.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",r[r.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",r[r.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",r[r.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",r[r.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",r[r.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",r[r.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",r[r.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",r[r.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",r[r.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",r[r.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",r[r.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",r[r.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",r[r.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",r[r.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(iEe=nc.LexerDefinitionErrorType||(nc.LexerDefinitionErrorType={}));var fd={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:tEe.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(fd);var nEe=function(){function r(e,t){var i=this;if(t===void 0&&(t=fd),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=(0,nr.merge)(fd,t);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===fd.lineTerminatorsPattern)i.config.lineTerminatorsPattern=zs.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===fd.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,nr.isArray)(e)?(s={modes:{}},s.modes[zs.DEFAULT_MODE]=(0,nr.cloneArr)(e),s[zs.DEFAULT_MODE]=zs.DEFAULT_MODE):(o=!1,s=(0,nr.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,zs.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,zs.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,nr.forEach)(s.modes,function(u,g){s.modes[g]=(0,nr.reject)(u,function(f){return(0,nr.isUndefined)(f)})});var a=(0,nr.keys)(s.modes);if((0,nr.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,zs.validatePatterns)(u,a))}),(0,nr.isEmpty)(i.lexerDefinitionErrors)){(0,eEe.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,zs.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,nr.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,nr.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,nr.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+c)}(0,nr.forEach)(i.lexerDefinitionWarning,function(u){(0,nr.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(zs.SUPPORT_STICKY?(i.chopInput=nr.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=nr.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=nr.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=nr.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=nr.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,nr.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(t.ensureOptimizations&&!(0,nr.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,rEe.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,nr.toFastProperties)(i)})})}return r.prototype.tokenize=function(e,t){if(t===void 0&&(t=this.defaultMode),!(0,nr.isEmpty)(this.lexerDefinitionErrors)){var i=(0,nr.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- -`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+n)}var s=this.tokenizeInternal(e,t);return s},r.prototype.tokenizeInternal=function(e,t){var i=this,n,s,o,a,l,c,u,g,f,h,p,C,y,B,v,D,L=e,H=L.length,j=0,$=0,V=this.hasCustom?0:Math.floor(e.length/10),W=new Array(V),Z=[],A=this.trackStartLines?1:void 0,ae=this.trackStartLines?1:void 0,ge=(0,zs.cloneEmptyGroups)(this.emptyGroups),re=this.trackStartLines,O=this.config.lineTerminatorsPattern,F=0,ue=[],he=[],ke=[],Fe=[];Object.freeze(Fe);var Ne=void 0;function oe(){return ue}function le(pr){var Ei=(0,zs.charCodeToOptimizedIndex)(pr),_n=he[Ei];return _n===void 0?Fe:_n}var we=function(pr){if(ke.length===1&&pr.tokenType.PUSH_MODE===void 0){var Ei=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(pr);Z.push({offset:pr.startOffset,line:pr.startLine!==void 0?pr.startLine:void 0,column:pr.startColumn!==void 0?pr.startColumn:void 0,length:pr.image.length,message:Ei})}else{ke.pop();var _n=(0,nr.last)(ke);ue=i.patternIdxToConfig[_n],he=i.charCodeToPatternIdxToConfig[_n],F=ue.length;var oa=i.canModeBeOptimized[_n]&&i.config.safeMode===!1;he&&oa?Ne=le:Ne=oe}};function fe(pr){ke.push(pr),he=this.charCodeToPatternIdxToConfig[pr],ue=this.patternIdxToConfig[pr],F=ue.length,F=ue.length;var Ei=this.canModeBeOptimized[pr]&&this.config.safeMode===!1;he&&Ei?Ne=le:Ne=oe}fe.call(this,t);for(var Ae;jc.length){c=a,u=g,Ae=tt;break}}}break}}if(c!==null){if(f=c.length,h=Ae.group,h!==void 0&&(p=Ae.tokenTypeIdx,C=this.createTokenInstance(c,j,p,Ae.tokenType,A,ae,f),this.handlePayload(C,u),h===!1?$=this.addToken(W,$,C):ge[h].push(C)),e=this.chopInput(e,f),j=j+f,ae=this.computeNewColumn(ae,f),re===!0&&Ae.canLineTerminator===!0){var It=0,Or=void 0,ii=void 0;O.lastIndex=0;do Or=O.test(c),Or===!0&&(ii=O.lastIndex-1,It++);while(Or===!0);It!==0&&(A=A+It,ae=f-ii,this.updateTokenEndLineColumnLocation(C,h,ii,It,A,ae,f))}this.handleModes(Ae,we,fe,C)}else{for(var gi=j,hr=A,fi=ae,ni=!1;!ni&&j <"+e+">");var n=(0,nr.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",r.NA=/NOT_APPLICABLE/,r}();nc.Lexer=nEe});var SA=w(Qi=>{"use strict";Object.defineProperty(Qi,"__esModule",{value:!0});Qi.tokenMatcher=Qi.createTokenInstance=Qi.EOF=Qi.createToken=Qi.hasTokenLabel=Qi.tokenName=Qi.tokenLabel=void 0;var Vs=Gt(),sEe=gd(),Sv=Gg();function oEe(r){return JY(r)?r.LABEL:r.name}Qi.tokenLabel=oEe;function aEe(r){return r.name}Qi.tokenName=aEe;function JY(r){return(0,Vs.isString)(r.LABEL)&&r.LABEL!==""}Qi.hasTokenLabel=JY;var AEe="parent",MY="categories",KY="label",UY="group",HY="push_mode",GY="pop_mode",YY="longer_alt",jY="line_breaks",qY="start_chars_hint";function WY(r){return lEe(r)}Qi.createToken=WY;function lEe(r){var e=r.pattern,t={};if(t.name=r.name,(0,Vs.isUndefined)(e)||(t.PATTERN=e),(0,Vs.has)(r,AEe))throw`The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Vs.has)(r,MY)&&(t.CATEGORIES=r[MY]),(0,Sv.augmentTokenTypes)([t]),(0,Vs.has)(r,KY)&&(t.LABEL=r[KY]),(0,Vs.has)(r,UY)&&(t.GROUP=r[UY]),(0,Vs.has)(r,GY)&&(t.POP_MODE=r[GY]),(0,Vs.has)(r,HY)&&(t.PUSH_MODE=r[HY]),(0,Vs.has)(r,YY)&&(t.LONGER_ALT=r[YY]),(0,Vs.has)(r,jY)&&(t.LINE_BREAKS=r[jY]),(0,Vs.has)(r,qY)&&(t.START_CHARS_HINT=r[qY]),t}Qi.EOF=WY({name:"EOF",pattern:sEe.Lexer.NA});(0,Sv.augmentTokenTypes)([Qi.EOF]);function cEe(r,e,t,i,n,s,o,a){return{image:e,startOffset:t,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:r.tokenTypeIdx,tokenType:r}}Qi.createTokenInstance=cEe;function uEe(r,e){return(0,Sv.tokenStructuredMatcher)(r,e)}Qi.tokenMatcher=uEe});var dn=w(Wt=>{"use strict";var wa=Wt&&Wt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Wt,"__esModule",{value:!0});Wt.serializeProduction=Wt.serializeGrammar=Wt.Terminal=Wt.Alternation=Wt.RepetitionWithSeparator=Wt.Repetition=Wt.RepetitionMandatoryWithSeparator=Wt.RepetitionMandatory=Wt.Option=Wt.Alternative=Wt.Rule=Wt.NonTerminal=Wt.AbstractProduction=void 0;var Ar=Gt(),gEe=SA(),vo=function(){function r(e){this._definition=e}return Object.defineProperty(r.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),r.prototype.accept=function(e){e.visit(this),(0,Ar.forEach)(this.definition,function(t){t.accept(e)})},r}();Wt.AbstractProduction=vo;var zY=function(r){wa(e,r);function e(t){var i=r.call(this,[])||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(t){},enumerable:!1,configurable:!0}),e.prototype.accept=function(t){t.visit(this)},e}(vo);Wt.NonTerminal=zY;var VY=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.orgText="",(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Rule=VY;var XY=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.ignoreAmbiguities=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Alternative=XY;var _Y=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Option=_Y;var ZY=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.RepetitionMandatory=ZY;var $Y=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.RepetitionMandatoryWithSeparator=$Y;var ej=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.Repetition=ej;var tj=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return e}(vo);Wt.RepetitionWithSeparator=tj;var rj=function(r){wa(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,Ar.assign)(i,(0,Ar.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(t){this._definition=t},enumerable:!1,configurable:!0}),e}(vo);Wt.Alternation=rj;var WI=function(){function r(e){this.idx=1,(0,Ar.assign)(this,(0,Ar.pick)(e,function(t){return t!==void 0}))}return r.prototype.accept=function(e){e.visit(this)},r}();Wt.Terminal=WI;function fEe(r){return(0,Ar.map)(r,hd)}Wt.serializeGrammar=fEe;function hd(r){function e(s){return(0,Ar.map)(s,hd)}if(r instanceof zY){var t={type:"NonTerminal",name:r.nonTerminalName,idx:r.idx};return(0,Ar.isString)(r.label)&&(t.label=r.label),t}else{if(r instanceof XY)return{type:"Alternative",definition:e(r.definition)};if(r instanceof _Y)return{type:"Option",idx:r.idx,definition:e(r.definition)};if(r instanceof ZY)return{type:"RepetitionMandatory",idx:r.idx,definition:e(r.definition)};if(r instanceof $Y)return{type:"RepetitionMandatoryWithSeparator",idx:r.idx,separator:hd(new WI({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof tj)return{type:"RepetitionWithSeparator",idx:r.idx,separator:hd(new WI({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof ej)return{type:"Repetition",idx:r.idx,definition:e(r.definition)};if(r instanceof rj)return{type:"Alternation",idx:r.idx,definition:e(r.definition)};if(r instanceof WI){var i={type:"Terminal",name:r.terminalType.name,label:(0,gEe.tokenLabel)(r.terminalType),idx:r.idx};(0,Ar.isString)(r.label)&&(i.terminalLabel=r.label);var n=r.terminalType.PATTERN;return r.terminalType.PATTERN&&(i.pattern=(0,Ar.isRegExp)(n)?n.source:n),i}else{if(r instanceof VY)return{type:"Rule",name:r.name,orgText:r.orgText,definition:e(r.definition)};throw Error("non exhaustive match")}}}Wt.serializeProduction=hd});var VI=w(zI=>{"use strict";Object.defineProperty(zI,"__esModule",{value:!0});zI.RestWalker=void 0;var vv=Gt(),Cn=dn(),hEe=function(){function r(){}return r.prototype.walk=function(e,t){var i=this;t===void 0&&(t=[]),(0,vv.forEach)(e.definition,function(n,s){var o=(0,vv.drop)(e.definition,s+1);if(n instanceof Cn.NonTerminal)i.walkProdRef(n,o,t);else if(n instanceof Cn.Terminal)i.walkTerminal(n,o,t);else if(n instanceof Cn.Alternative)i.walkFlat(n,o,t);else if(n instanceof Cn.Option)i.walkOption(n,o,t);else if(n instanceof Cn.RepetitionMandatory)i.walkAtLeastOne(n,o,t);else if(n instanceof Cn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,t);else if(n instanceof Cn.RepetitionWithSeparator)i.walkManySep(n,o,t);else if(n instanceof Cn.Repetition)i.walkMany(n,o,t);else if(n instanceof Cn.Alternation)i.walkOr(n,o,t);else throw Error("non exhaustive match")})},r.prototype.walkTerminal=function(e,t,i){},r.prototype.walkProdRef=function(e,t,i){},r.prototype.walkFlat=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkOption=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkAtLeastOne=function(e,t,i){var n=[new Cn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkAtLeastOneSep=function(e,t,i){var n=ij(e,t,i);this.walk(e,n)},r.prototype.walkMany=function(e,t,i){var n=[new Cn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkManySep=function(e,t,i){var n=ij(e,t,i);this.walk(e,n)},r.prototype.walkOr=function(e,t,i){var n=this,s=t.concat(i);(0,vv.forEach)(e.definition,function(o){var a=new Cn.Alternative({definition:[o]});n.walk(a,s)})},r}();zI.RestWalker=hEe;function ij(r,e,t){var i=[new Cn.Option({definition:[new Cn.Terminal({terminalType:r.separator})].concat(r.definition)})],n=i.concat(e,t);return n}});var Yg=w(XI=>{"use strict";Object.defineProperty(XI,"__esModule",{value:!0});XI.GAstVisitor=void 0;var xo=dn(),pEe=function(){function r(){}return r.prototype.visit=function(e){var t=e;switch(t.constructor){case xo.NonTerminal:return this.visitNonTerminal(t);case xo.Alternative:return this.visitAlternative(t);case xo.Option:return this.visitOption(t);case xo.RepetitionMandatory:return this.visitRepetitionMandatory(t);case xo.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(t);case xo.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(t);case xo.Repetition:return this.visitRepetition(t);case xo.Alternation:return this.visitAlternation(t);case xo.Terminal:return this.visitTerminal(t);case xo.Rule:return this.visitRule(t);default:throw Error("non exhaustive match")}},r.prototype.visitNonTerminal=function(e){},r.prototype.visitAlternative=function(e){},r.prototype.visitOption=function(e){},r.prototype.visitRepetition=function(e){},r.prototype.visitRepetitionMandatory=function(e){},r.prototype.visitRepetitionMandatoryWithSeparator=function(e){},r.prototype.visitRepetitionWithSeparator=function(e){},r.prototype.visitAlternation=function(e){},r.prototype.visitTerminal=function(e){},r.prototype.visitRule=function(e){},r}();XI.GAstVisitor=pEe});var dd=w(Oi=>{"use strict";var dEe=Oi&&Oi.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Oi,"__esModule",{value:!0});Oi.collectMethods=Oi.DslMethodsCollectorVisitor=Oi.getProductionDslName=Oi.isBranchingProd=Oi.isOptionalProd=Oi.isSequenceProd=void 0;var pd=Gt(),Qr=dn(),CEe=Yg();function mEe(r){return r instanceof Qr.Alternative||r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionMandatory||r instanceof Qr.RepetitionMandatoryWithSeparator||r instanceof Qr.RepetitionWithSeparator||r instanceof Qr.Terminal||r instanceof Qr.Rule}Oi.isSequenceProd=mEe;function xv(r,e){e===void 0&&(e=[]);var t=r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionWithSeparator;return t?!0:r instanceof Qr.Alternation?(0,pd.some)(r.definition,function(i){return xv(i,e)}):r instanceof Qr.NonTerminal&&(0,pd.contains)(e,r)?!1:r instanceof Qr.AbstractProduction?(r instanceof Qr.NonTerminal&&e.push(r),(0,pd.every)(r.definition,function(i){return xv(i,e)})):!1}Oi.isOptionalProd=xv;function EEe(r){return r instanceof Qr.Alternation}Oi.isBranchingProd=EEe;function IEe(r){if(r instanceof Qr.NonTerminal)return"SUBRULE";if(r instanceof Qr.Option)return"OPTION";if(r instanceof Qr.Alternation)return"OR";if(r instanceof Qr.RepetitionMandatory)return"AT_LEAST_ONE";if(r instanceof Qr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(r instanceof Qr.RepetitionWithSeparator)return"MANY_SEP";if(r instanceof Qr.Repetition)return"MANY";if(r instanceof Qr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Oi.getProductionDslName=IEe;var nj=function(r){dEe(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.separator="-",t.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},t}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(t){var i=t.terminalType.name+this.separator+"Terminal";(0,pd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitNonTerminal=function(t){var i=t.nonTerminalName+this.separator+"Terminal";(0,pd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitOption=function(t){this.dslMethods.option.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.dslMethods.repetitionWithSeparator.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.dslMethods.repetitionMandatory.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)},e.prototype.visitRepetition=function(t){this.dslMethods.repetition.push(t)},e.prototype.visitAlternation=function(t){this.dslMethods.alternation.push(t)},e}(CEe.GAstVisitor);Oi.DslMethodsCollectorVisitor=nj;var _I=new nj;function yEe(r){_I.reset(),r.accept(_I);var e=_I.dslMethods;return _I.reset(),e}Oi.collectMethods=yEe});var Dv=w(Po=>{"use strict";Object.defineProperty(Po,"__esModule",{value:!0});Po.firstForTerminal=Po.firstForBranching=Po.firstForSequence=Po.first=void 0;var ZI=Gt(),sj=dn(),Pv=dd();function $I(r){if(r instanceof sj.NonTerminal)return $I(r.referencedRule);if(r instanceof sj.Terminal)return Aj(r);if((0,Pv.isSequenceProd)(r))return oj(r);if((0,Pv.isBranchingProd)(r))return aj(r);throw Error("non exhaustive match")}Po.first=$I;function oj(r){for(var e=[],t=r.definition,i=0,n=t.length>i,s,o=!0;n&&o;)s=t[i],o=(0,Pv.isOptionalProd)(s),e=e.concat($I(s)),i=i+1,n=t.length>i;return(0,ZI.uniq)(e)}Po.firstForSequence=oj;function aj(r){var e=(0,ZI.map)(r.definition,function(t){return $I(t)});return(0,ZI.uniq)((0,ZI.flatten)(e))}Po.firstForBranching=aj;function Aj(r){return[r.terminalType]}Po.firstForTerminal=Aj});var kv=w(ey=>{"use strict";Object.defineProperty(ey,"__esModule",{value:!0});ey.IN=void 0;ey.IN="_~IN~_"});var fj=w(As=>{"use strict";var wEe=As&&As.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(As,"__esModule",{value:!0});As.buildInProdFollowPrefix=As.buildBetweenProdsFollowPrefix=As.computeAllProdsFollows=As.ResyncFollowsWalker=void 0;var BEe=VI(),QEe=Dv(),lj=Gt(),cj=kv(),bEe=dn(),uj=function(r){wEe(e,r);function e(t){var i=r.call(this)||this;return i.topProd=t,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(t,i,n){},e.prototype.walkProdRef=function(t,i,n){var s=gj(t.referencedRule,t.idx)+this.topProd.name,o=i.concat(n),a=new bEe.Alternative({definition:o}),l=(0,QEe.first)(a);this.follows[s]=l},e}(BEe.RestWalker);As.ResyncFollowsWalker=uj;function SEe(r){var e={};return(0,lj.forEach)(r,function(t){var i=new uj(t).startWalking();(0,lj.assign)(e,i)}),e}As.computeAllProdsFollows=SEe;function gj(r,e){return r.name+e+cj.IN}As.buildBetweenProdsFollowPrefix=gj;function vEe(r){var e=r.terminalType.name;return e+r.idx+cj.IN}As.buildInProdFollowPrefix=vEe});var Cd=w(Ba=>{"use strict";Object.defineProperty(Ba,"__esModule",{value:!0});Ba.defaultGrammarValidatorErrorProvider=Ba.defaultGrammarResolverErrorProvider=Ba.defaultParserErrorProvider=void 0;var jg=SA(),xEe=Gt(),Xs=Gt(),Rv=dn(),hj=dd();Ba.defaultParserErrorProvider={buildMismatchTokenMessage:function(r){var e=r.expected,t=r.actual,i=r.previous,n=r.ruleName,s=(0,jg.hasTokenLabel)(e),o=s?"--> "+(0,jg.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+t.image+"' <--";return a},buildNotAllInputParsedMessage:function(r){var e=r.firstRedundant,t=r.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(r){var e=r.expectedPathsPerAlt,t=r.actual,i=r.previous,n=r.customUserDescription,s=r.ruleName,o="Expecting: ",a=(0,Xs.first)(t).image,l=` -but found: '`+a+"'";if(n)return o+n+l;var c=(0,Xs.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,Xs.map)(c,function(h){return"["+(0,Xs.map)(h,function(p){return(0,jg.tokenLabel)(p)}).join(", ")+"]"}),g=(0,Xs.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: -`+g.join(` -`);return o+f+l},buildEarlyExitMessage:function(r){var e=r.expectedIterationPaths,t=r.actual,i=r.customUserDescription,n=r.ruleName,s="Expecting: ",o=(0,Xs.first)(t).image,a=` -but found: '`+o+"'";if(i)return s+i+a;var l=(0,Xs.map)(e,function(u){return"["+(0,Xs.map)(u,function(g){return(0,jg.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: - `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(Ba.defaultParserErrorProvider);Ba.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(r,e){var t="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+r.name+"<-";return t}};Ba.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(r,e){function t(u){return u instanceof Rv.Terminal?u.terminalType.name:u instanceof Rv.NonTerminal?u.nonTerminalName:""}var i=r.name,n=(0,Xs.first)(e),s=n.idx,o=(0,hj.getProductionDslName)(n),a=t(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` - appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` -`),c},buildNamespaceConflictError:function(r){var e=`Namespace conflict found in grammar. -`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+r.name+`>. -`)+`To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(r){var e=(0,Xs.map)(r.prefixPath,function(n){return(0,jg.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous alternatives: <"+r.ambiguityIndices.join(" ,")+`> due to common lookahead prefix -`+("in inside <"+r.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`;return i},buildAlternationAmbiguityError:function(r){var e=(0,Xs.map)(r.prefixPath,function(n){return(0,jg.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous Alternatives Detected: <"+r.ambiguityIndices.join(" ,")+"> in "+(" inside <"+r.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,i},buildEmptyRepetitionError:function(r){var e=(0,hj.getProductionDslName)(r.repetition);r.repetition.idx!==0&&(e+=r.repetition.idx);var t="The repetition <"+e+"> within Rule <"+r.topLevelRule.name+`> can never consume any tokens. -This could lead to an infinite loop.`;return t},buildTokenNameError:function(r){return"deprecated"},buildEmptyAlternationError:function(r){var e="Ambiguous empty alternative: <"+(r.emptyChoiceIdx+1)+">"+(" in inside <"+r.topLevelRule.name+`> Rule. -`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(r){var e=`An Alternation cannot have more than 256 alternatives: -`+(" inside <"+r.topLevelRule.name+`> Rule. - has `+(r.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(r){var e=r.topLevelRule.name,t=xEe.map(r.leftRecursionPath,function(s){return s.name}),i=e+" --> "+t.concat([e]).join(" --> "),n=`Left Recursion found in grammar. -`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) -`)+(`without consuming any Tokens. The grammar path that causes this is: - `+i+` -`)+` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(r){return"deprecated"},buildDuplicateRuleNameError:function(r){var e;r.topLevelRule instanceof Rv.Rule?e=r.topLevelRule.name:e=r.topLevelRule;var t="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+r.grammarName+"<-";return t}}});var Cj=w(vA=>{"use strict";var PEe=vA&&vA.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(vA,"__esModule",{value:!0});vA.GastRefResolverVisitor=vA.resolveGrammar=void 0;var DEe=Hn(),pj=Gt(),kEe=Yg();function REe(r,e){var t=new dj(r,e);return t.resolveRefs(),t.errors}vA.resolveGrammar=REe;var dj=function(r){PEe(e,r);function e(t,i){var n=r.call(this)||this;return n.nameToTopRule=t,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var t=this;(0,pj.forEach)((0,pj.values)(this.nameToTopRule),function(i){t.currTopLevel=i,i.accept(t)})},e.prototype.visitNonTerminal=function(t){var i=this.nameToTopRule[t.nonTerminalName];if(i)t.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:n,type:DEe.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}},e}(kEe.GAstVisitor);vA.GastRefResolverVisitor=dj});var Ed=w(Nr=>{"use strict";var sc=Nr&&Nr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Nr,"__esModule",{value:!0});Nr.nextPossibleTokensAfter=Nr.possiblePathsFrom=Nr.NextTerminalAfterAtLeastOneSepWalker=Nr.NextTerminalAfterAtLeastOneWalker=Nr.NextTerminalAfterManySepWalker=Nr.NextTerminalAfterManyWalker=Nr.AbstractNextTerminalAfterProductionWalker=Nr.NextAfterTokenWalker=Nr.AbstractNextPossibleTokensWalker=void 0;var mj=VI(),Kt=Gt(),FEe=Dv(),kt=dn(),Ej=function(r){sc(e,r);function e(t,i){var n=r.call(this)||this;return n.topProd=t,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,Kt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,Kt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(t,i){i===void 0&&(i=[]),this.found||r.prototype.walk.call(this,t,i)},e.prototype.walkProdRef=function(t,i,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,Kt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(mj.RestWalker);Nr.AbstractNextPossibleTokensWalker=Ej;var NEe=function(r){sc(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(t,i,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new kt.Alternative({definition:s});this.possibleTokTypes=(0,FEe.first)(o),this.found=!0}},e}(Ej);Nr.NextAfterTokenWalker=NEe;var md=function(r){sc(e,r);function e(t,i){var n=r.call(this)||this;return n.topRule=t,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(mj.RestWalker);Nr.AbstractNextTerminalAfterProductionWalker=md;var LEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkMany=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkMany.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterManyWalker=LEe;var TEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkManySep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkManySep.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterManySepWalker=TEe;var OEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOne.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterAtLeastOneWalker=OEe;var MEe=function(r){sc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof kt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOneSep.call(this,t,i,n)},e}(md);Nr.NextTerminalAfterAtLeastOneSepWalker=MEe;function Ij(r,e,t){t===void 0&&(t=[]),t=(0,Kt.cloneArr)(t);var i=[],n=0;function s(c){return c.concat((0,Kt.drop)(r,n+1))}function o(c){var u=Ij(s(c),e,t);return i.concat(u)}for(;t.length=0;ge--){var re=B.definition[ge],O={idx:p,def:re.definition.concat((0,Kt.drop)(h)),ruleStack:C,occurrenceStack:y};g.push(O),g.push(o)}else if(B instanceof kt.Alternative)g.push({idx:p,def:B.definition.concat((0,Kt.drop)(h)),ruleStack:C,occurrenceStack:y});else if(B instanceof kt.Rule)g.push(UEe(B,p,C,y));else throw Error("non exhaustive match")}}return u}Nr.nextPossibleTokensAfter=KEe;function UEe(r,e,t,i){var n=(0,Kt.cloneArr)(t);n.push(r.name);var s=(0,Kt.cloneArr)(i);return s.push(1),{idx:e,def:r.definition,ruleStack:n,occurrenceStack:s}}});var Id=w(_t=>{"use strict";var Bj=_t&&_t.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(_t,"__esModule",{value:!0});_t.areTokenCategoriesNotUsed=_t.isStrictPrefixOfPath=_t.containsPath=_t.getLookaheadPathsForOptionalProd=_t.getLookaheadPathsForOr=_t.lookAheadSequenceFromAlternatives=_t.buildSingleAlternativeLookaheadFunction=_t.buildAlternativesLookAheadFunc=_t.buildLookaheadFuncForOptionalProd=_t.buildLookaheadFuncForOr=_t.getProdType=_t.PROD_TYPE=void 0;var sr=Gt(),yj=Ed(),HEe=VI(),ty=Gg(),xA=dn(),GEe=Yg(),oi;(function(r){r[r.OPTION=0]="OPTION",r[r.REPETITION=1]="REPETITION",r[r.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",r[r.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",r[r.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",r[r.ALTERNATION=5]="ALTERNATION"})(oi=_t.PROD_TYPE||(_t.PROD_TYPE={}));function YEe(r){if(r instanceof xA.Option)return oi.OPTION;if(r instanceof xA.Repetition)return oi.REPETITION;if(r instanceof xA.RepetitionMandatory)return oi.REPETITION_MANDATORY;if(r instanceof xA.RepetitionMandatoryWithSeparator)return oi.REPETITION_MANDATORY_WITH_SEPARATOR;if(r instanceof xA.RepetitionWithSeparator)return oi.REPETITION_WITH_SEPARATOR;if(r instanceof xA.Alternation)return oi.ALTERNATION;throw Error("non exhaustive match")}_t.getProdType=YEe;function jEe(r,e,t,i,n,s){var o=bj(r,e,t),a=Lv(o)?ty.tokenStructuredMatcherNoCategories:ty.tokenStructuredMatcher;return s(o,i,a,n)}_t.buildLookaheadFuncForOr=jEe;function qEe(r,e,t,i,n,s){var o=Sj(r,e,n,t),a=Lv(o)?ty.tokenStructuredMatcherNoCategories:ty.tokenStructuredMatcher;return s(o[0],a,i)}_t.buildLookaheadFuncForOptionalProd=qEe;function JEe(r,e,t,i){var n=r.length,s=(0,sr.every)(r,function(l){return(0,sr.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,sr.map)(l,function(D){return D.GATE}),u=0;u{"use strict";var Tv=zt&&zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(zt,"__esModule",{value:!0});zt.checkPrefixAlternativesAmbiguities=zt.validateSomeNonEmptyLookaheadPath=zt.validateTooManyAlts=zt.RepetionCollector=zt.validateAmbiguousAlternationAlternatives=zt.validateEmptyOrAlternative=zt.getFirstNoneTerminal=zt.validateNoLeftRecursion=zt.validateRuleIsOverridden=zt.validateRuleDoesNotAlreadyExist=zt.OccurrenceValidationCollector=zt.identifyProductionForDuplicates=zt.validateGrammar=void 0;var er=Gt(),br=Gt(),Do=Hn(),Ov=dd(),qg=Id(),_Ee=Ed(),_s=dn(),Mv=Yg();function ZEe(r,e,t,i,n){var s=er.map(r,function(h){return $Ee(h,i)}),o=er.map(r,function(h){return Kv(h,h,i)}),a=[],l=[],c=[];(0,br.every)(o,br.isEmpty)&&(a=(0,br.map)(r,function(h){return Rj(h,i)}),l=(0,br.map)(r,function(h){return Fj(h,e,i)}),c=Tj(r,e,i));var u=rIe(r,t,i),g=(0,br.map)(r,function(h){return Lj(h,i)}),f=(0,br.map)(r,function(h){return kj(h,r,n,i)});return er.flatten(s.concat(c,o,a,l,u,g,f))}zt.validateGrammar=ZEe;function $Ee(r,e){var t=new Dj;r.accept(t);var i=t.allProductions,n=er.groupBy(i,xj),s=er.pick(n,function(a){return a.length>1}),o=er.map(er.values(s),function(a){var l=er.first(a),c=e.buildDuplicateFoundError(r,a),u=(0,Ov.getProductionDslName)(l),g={message:c,type:Do.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:r.name,dslName:u,occurrence:l.idx},f=Pj(l);return f&&(g.parameter=f),g});return o}function xj(r){return(0,Ov.getProductionDslName)(r)+"_#_"+r.idx+"_#_"+Pj(r)}zt.identifyProductionForDuplicates=xj;function Pj(r){return r instanceof _s.Terminal?r.terminalType.name:r instanceof _s.NonTerminal?r.nonTerminalName:""}var Dj=function(r){Tv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitNonTerminal=function(t){this.allProductions.push(t)},e.prototype.visitOption=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e.prototype.visitAlternation=function(t){this.allProductions.push(t)},e.prototype.visitTerminal=function(t){this.allProductions.push(t)},e}(Mv.GAstVisitor);zt.OccurrenceValidationCollector=Dj;function kj(r,e,t,i){var n=[],s=(0,br.reduce)(e,function(a,l){return l.name===r.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:r,grammarName:t});n.push({message:o,type:Do.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:r.name})}return n}zt.validateRuleDoesNotAlreadyExist=kj;function eIe(r,e,t){var i=[],n;return er.contains(e,r)||(n="Invalid rule override, rule: ->"+r+"<- cannot be overridden in the grammar: ->"+t+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:Do.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:r})),i}zt.validateRuleIsOverridden=eIe;function Kv(r,e,t,i){i===void 0&&(i=[]);var n=[],s=yd(e.definition);if(er.isEmpty(s))return[];var o=r.name,a=er.contains(s,r);a&&n.push({message:t.buildLeftRecursionError({topLevelRule:r,leftRecursionPath:i}),type:Do.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=er.difference(s,i.concat([r])),c=er.map(l,function(u){var g=er.cloneArr(i);return g.push(u),Kv(r,u,t,g)});return n.concat(er.flatten(c))}zt.validateNoLeftRecursion=Kv;function yd(r){var e=[];if(er.isEmpty(r))return e;var t=er.first(r);if(t instanceof _s.NonTerminal)e.push(t.referencedRule);else if(t instanceof _s.Alternative||t instanceof _s.Option||t instanceof _s.RepetitionMandatory||t instanceof _s.RepetitionMandatoryWithSeparator||t instanceof _s.RepetitionWithSeparator||t instanceof _s.Repetition)e=e.concat(yd(t.definition));else if(t instanceof _s.Alternation)e=er.flatten(er.map(t.definition,function(o){return yd(o.definition)}));else if(!(t instanceof _s.Terminal))throw Error("non exhaustive match");var i=(0,Ov.isOptionalProd)(t),n=r.length>1;if(i&&n){var s=er.drop(r);return e.concat(yd(s))}else return e}zt.getFirstNoneTerminal=yd;var Uv=function(r){Tv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.alternations=[],t}return e.prototype.visitAlternation=function(t){this.alternations.push(t)},e}(Mv.GAstVisitor);function Rj(r,e){var t=new Uv;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){var a=er.dropRight(o.definition),l=er.map(a,function(c,u){var g=(0,_Ee.nextPossibleTokensAfter)([c],[],null,1);return er.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:r,alternation:o,emptyChoiceIdx:u}),type:Do.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:r.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(er.compact(l))},[]);return n}zt.validateEmptyOrAlternative=Rj;function Fj(r,e,t){var i=new Uv;r.accept(i);var n=i.alternations;n=(0,br.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=er.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,qg.getLookaheadPathsForOr)(l,r,c,a),g=tIe(u,a,r,t),f=Oj(u,a,r,t);return o.concat(g,f)},[]);return s}zt.validateAmbiguousAlternationAlternatives=Fj;var Nj=function(r){Tv(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e}(Mv.GAstVisitor);zt.RepetionCollector=Nj;function Lj(r,e){var t=new Uv;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:r,alternation:o}),type:Do.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:r.name,occurrence:o.idx}),s},[]);return n}zt.validateTooManyAlts=Lj;function Tj(r,e,t){var i=[];return(0,br.forEach)(r,function(n){var s=new Nj;n.accept(s);var o=s.allProductions;(0,br.forEach)(o,function(a){var l=(0,qg.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,qg.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,br.isEmpty)((0,br.flatten)(f))){var h=t.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:Do.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}zt.validateSomeNonEmptyLookaheadPath=Tj;function tIe(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,br.forEach)(l,function(u){var g=[c];(0,br.forEach)(r,function(f,h){c!==h&&(0,qg.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,qg.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=er.map(s,function(a){var l=(0,br.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:Do.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:t.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function Oj(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(o,a,l){var c=(0,br.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,br.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,br.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(Jg,"__esModule",{value:!0});Jg.validateGrammar=Jg.resolveGrammar=void 0;var Gv=Gt(),iIe=Cj(),nIe=Hv(),Mj=Cd();function sIe(r){r=(0,Gv.defaults)(r,{errMsgProvider:Mj.defaultGrammarResolverErrorProvider});var e={};return(0,Gv.forEach)(r.rules,function(t){e[t.name]=t}),(0,iIe.resolveGrammar)(e,r.errMsgProvider)}Jg.resolveGrammar=sIe;function oIe(r){return r=(0,Gv.defaults)(r,{errMsgProvider:Mj.defaultGrammarValidatorErrorProvider}),(0,nIe.validateGrammar)(r.rules,r.maxLookahead,r.tokenTypes,r.errMsgProvider,r.grammarName)}Jg.validateGrammar=oIe});var Wg=w(mn=>{"use strict";var wd=mn&&mn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(mn,"__esModule",{value:!0});mn.EarlyExitException=mn.NotAllInputParsedException=mn.NoViableAltException=mn.MismatchedTokenException=mn.isRecognitionException=void 0;var aIe=Gt(),Uj="MismatchedTokenException",Hj="NoViableAltException",Gj="EarlyExitException",Yj="NotAllInputParsedException",jj=[Uj,Hj,Gj,Yj];Object.freeze(jj);function AIe(r){return(0,aIe.contains)(jj,r.name)}mn.isRecognitionException=AIe;var ry=function(r){wd(e,r);function e(t,i){var n=this.constructor,s=r.call(this,t)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),lIe=function(r){wd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Uj,s}return e}(ry);mn.MismatchedTokenException=lIe;var cIe=function(r){wd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Hj,s}return e}(ry);mn.NoViableAltException=cIe;var uIe=function(r){wd(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.name=Yj,n}return e}(ry);mn.NotAllInputParsedException=uIe;var gIe=function(r){wd(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=Gj,s}return e}(ry);mn.EarlyExitException=gIe});var jv=w(Mi=>{"use strict";Object.defineProperty(Mi,"__esModule",{value:!0});Mi.attemptInRepetitionRecovery=Mi.Recoverable=Mi.InRuleRecoveryException=Mi.IN_RULE_RECOVERY_EXCEPTION=Mi.EOF_FOLLOW_KEY=void 0;var iy=SA(),ls=Gt(),fIe=Wg(),hIe=kv(),pIe=Hn();Mi.EOF_FOLLOW_KEY={};Mi.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function Yv(r){this.name=Mi.IN_RULE_RECOVERY_EXCEPTION,this.message=r}Mi.InRuleRecoveryException=Yv;Yv.prototype=Error.prototype;var dIe=function(){function r(){}return r.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,ls.has)(e,"recoveryEnabled")?e.recoveryEnabled:pIe.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=qj)},r.prototype.getTokenToInsert=function(e){var t=(0,iy.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t},r.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},r.prototype.tryInRepetitionRecovery=function(e,t,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),C=new fIe.MismatchedTokenException(p,u,s.LA(0));C.resyncedTokens=(0,ls.dropRight)(l),s.SAVE_ERROR(C)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,t);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},r.prototype.shouldInRepetitionRecoveryBeTried=function(e,t,i){return!(i===!1||e===void 0||t===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))},r.prototype.getFollowsForInRuleRecovery=function(e,t){var i=this.getCurrentGrammarPath(e,t),n=this.getNextPossibleTokenTypes(i);return n},r.prototype.tryInRuleRecovery=function(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new Yv("sad sad panda")},r.prototype.canPerformInRuleRecovery=function(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)},r.prototype.canRecoverWithSingleTokenInsertion=function(e,t){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,ls.isEmpty)(t))return!1;var n=this.LA(1),s=(0,ls.find)(t,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},r.prototype.canRecoverWithSingleTokenDeletion=function(e){var t=this.tokenMatcher(this.LA(2),e);return t},r.prototype.isInCurrentRuleReSyncSet=function(e){var t=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(t);return(0,ls.contains)(i,e)},r.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),t=this.LA(1),i=2;;){var n=t.tokenType;if((0,ls.contains)(e,n))return n;t=this.LA(i),i++}},r.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return Mi.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(i)}},r.prototype.buildFullFollowKeyStack=function(){var e=this,t=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,ls.map)(t,function(n,s){return s===0?Mi.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(t[s-1])}})},r.prototype.flattenFollowSet=function(){var e=this,t=(0,ls.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,ls.flatten)(t)},r.prototype.getFollowSetFromFollowKey=function(e){if(e===Mi.EOF_FOLLOW_KEY)return[iy.EOF];var t=e.ruleName+e.idxInCallingRule+hIe.IN+e.inRule;return this.resyncFollows[t]},r.prototype.addToResyncTokens=function(e,t){return this.tokenMatcher(e,iy.EOF)||t.push(e),t},r.prototype.reSyncTo=function(e){for(var t=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,t);return(0,ls.dropRight)(t)},r.prototype.attemptInRepetitionRecovery=function(e,t,i,n,s,o,a){},r.prototype.getCurrentGrammarPath=function(e,t){var i=this.getHumanReadableRuleStack(),n=(0,ls.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:t};return s},r.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,ls.map)(this.RULE_STACK,function(t){return e.shortRuleNameToFullName(t)})},r}();Mi.Recoverable=dIe;function qj(r,e,t,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=iy.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(r,e,t,f)}Mi.attemptInRepetitionRecovery=qj});var ny=w(qt=>{"use strict";Object.defineProperty(qt,"__esModule",{value:!0});qt.getKeyForAutomaticLookahead=qt.AT_LEAST_ONE_SEP_IDX=qt.MANY_SEP_IDX=qt.AT_LEAST_ONE_IDX=qt.MANY_IDX=qt.OPTION_IDX=qt.OR_IDX=qt.BITS_FOR_ALT_IDX=qt.BITS_FOR_RULE_IDX=qt.BITS_FOR_OCCURRENCE_IDX=qt.BITS_FOR_METHOD_TYPE=void 0;qt.BITS_FOR_METHOD_TYPE=4;qt.BITS_FOR_OCCURRENCE_IDX=8;qt.BITS_FOR_RULE_IDX=12;qt.BITS_FOR_ALT_IDX=8;qt.OR_IDX=1<{"use strict";Object.defineProperty(sy,"__esModule",{value:!0});sy.LooksAhead=void 0;var Qa=Id(),Zs=Gt(),Jj=Hn(),ba=ny(),oc=dd(),mIe=function(){function r(){}return r.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,Zs.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Jj.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,Zs.has)(e,"maxLookahead")?e.maxLookahead:Jj.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,Zs.isES2015MapSupported)()?new Map:[],(0,Zs.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},r.prototype.preComputeLookaheadFunctions=function(e){var t=this;(0,Zs.forEach)(e,function(i){t.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,oc.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,Zs.forEach)(s,function(g){var f=g.idx===0?"":g.idx;t.TRACE_INIT(""+(0,oc.getProductionDslName)(g)+f,function(){var h=(0,Qa.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||t.maxLookahead,g.hasPredicates,t.dynamicTokensEnabled,t.lookAheadBuilderForAlternatives),p=(0,ba.getKeyForAutomaticLookahead)(t.fullRuleNameToShort[i.name],ba.OR_IDX,g.idx);t.setLaFuncCache(p,h)})}),(0,Zs.forEach)(o,function(g){t.computeLookaheadFunc(i,g.idx,ba.MANY_IDX,Qa.PROD_TYPE.REPETITION,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(a,function(g){t.computeLookaheadFunc(i,g.idx,ba.OPTION_IDX,Qa.PROD_TYPE.OPTION,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(l,function(g){t.computeLookaheadFunc(i,g.idx,ba.AT_LEAST_ONE_IDX,Qa.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(c,function(g){t.computeLookaheadFunc(i,g.idx,ba.AT_LEAST_ONE_SEP_IDX,Qa.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,oc.getProductionDslName)(g))}),(0,Zs.forEach)(u,function(g){t.computeLookaheadFunc(i,g.idx,ba.MANY_SEP_IDX,Qa.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,oc.getProductionDslName)(g))})})})},r.prototype.computeLookaheadFunc=function(e,t,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(t===0?"":t),function(){var l=(0,Qa.buildLookaheadFuncForOptionalProd)(t,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,ba.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,t);a.setLaFuncCache(c,l)})},r.prototype.lookAheadBuilderForOptional=function(e,t,i){return(0,Qa.buildSingleAlternativeLookaheadFunction)(e,t,i)},r.prototype.lookAheadBuilderForAlternatives=function(e,t,i,n){return(0,Qa.buildAlternativesLookAheadFunc)(e,t,i,n)},r.prototype.getKeyForAutomaticLookahead=function(e,t){var i=this.getLastExplicitRuleShortName();return(0,ba.getKeyForAutomaticLookahead)(i,e,t)},r.prototype.getLaFuncFromCache=function(e){},r.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},r.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},r.prototype.setLaFuncCache=function(e,t){},r.prototype.setLaFuncCacheUsingMap=function(e,t){this.lookAheadFuncsCache.set(e,t)},r.prototype.setLaFuncUsingObj=function(e,t){this.lookAheadFuncsCache[e]=t},r}();sy.LooksAhead=mIe});var zj=w(ko=>{"use strict";Object.defineProperty(ko,"__esModule",{value:!0});ko.addNoneTerminalToCst=ko.addTerminalToCst=ko.setNodeLocationFull=ko.setNodeLocationOnlyOffset=void 0;function EIe(r,e){isNaN(r.startOffset)===!0?(r.startOffset=e.startOffset,r.endOffset=e.endOffset):r.endOffset{"use strict";Object.defineProperty(PA,"__esModule",{value:!0});PA.defineNameProp=PA.functionName=PA.classNameFromInstance=void 0;var BIe=Gt();function QIe(r){return Xj(r.constructor)}PA.classNameFromInstance=QIe;var Vj="name";function Xj(r){var e=r.name;return e||"anonymous"}PA.functionName=Xj;function bIe(r,e){var t=Object.getOwnPropertyDescriptor(r,Vj);return(0,BIe.isUndefined)(t)||t.configurable?(Object.defineProperty(r,Vj,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}PA.defineNameProp=bIe});var tq=w(bi=>{"use strict";Object.defineProperty(bi,"__esModule",{value:!0});bi.validateRedundantMethods=bi.validateMissingCstMethods=bi.validateVisitor=bi.CstVisitorDefinitionError=bi.createBaseVisitorConstructorWithDefaults=bi.createBaseSemanticVisitorConstructor=bi.defaultVisit=void 0;var cs=Gt(),Bd=qv();function _j(r,e){for(var t=(0,cs.keys)(r),i=t.length,n=0;n: - `+(""+s.join(` - -`).replace(/\n/g,` - `)))}}};return t.prototype=i,t.prototype.constructor=t,t._RULE_NAMES=e,t}bi.createBaseSemanticVisitorConstructor=SIe;function vIe(r,e,t){var i=function(){};(0,Bd.defineNameProp)(i,r+"BaseSemanticsWithDefaults");var n=Object.create(t.prototype);return(0,cs.forEach)(e,function(s){n[s]=_j}),i.prototype=n,i.prototype.constructor=i,i}bi.createBaseVisitorConstructorWithDefaults=vIe;var Jv;(function(r){r[r.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",r[r.MISSING_METHOD=1]="MISSING_METHOD"})(Jv=bi.CstVisitorDefinitionError||(bi.CstVisitorDefinitionError={}));function Zj(r,e){var t=$j(r,e),i=eq(r,e);return t.concat(i)}bi.validateVisitor=Zj;function $j(r,e){var t=(0,cs.map)(e,function(i){if(!(0,cs.isFunction)(r[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,Bd.functionName)(r.constructor)+" CST Visitor.",type:Jv.MISSING_METHOD,methodName:i}});return(0,cs.compact)(t)}bi.validateMissingCstMethods=$j;var xIe=["constructor","visit","validateVisitor"];function eq(r,e){var t=[];for(var i in r)(0,cs.isFunction)(r[i])&&!(0,cs.contains)(xIe,i)&&!(0,cs.contains)(e,i)&&t.push({msg:"Redundant visitor method: <"+i+"> on "+(0,Bd.functionName)(r.constructor)+` CST Visitor -There is no Grammar Rule corresponding to this method's name. -`,type:Jv.REDUNDANT_METHOD,methodName:i});return t}bi.validateRedundantMethods=eq});var iq=w(oy=>{"use strict";Object.defineProperty(oy,"__esModule",{value:!0});oy.TreeBuilder=void 0;var zg=zj(),Zr=Gt(),rq=tq(),PIe=Hn(),DIe=function(){function r(){}return r.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,Zr.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:PIe.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Zr.NOOP,this.cstFinallyStateUpdate=Zr.NOOP,this.cstPostTerminal=Zr.NOOP,this.cstPostNonTerminal=Zr.NOOP,this.cstPostRule=Zr.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=zg.setNodeLocationFull,this.setNodeLocationFromNode=zg.setNodeLocationFull,this.cstPostRule=Zr.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Zr.NOOP,this.setNodeLocationFromNode=Zr.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=zg.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=zg.setNodeLocationOnlyOffset,this.cstPostRule=Zr.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Zr.NOOP,this.setNodeLocationFromNode=Zr.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Zr.NOOP,this.setNodeLocationFromNode=Zr.NOOP,this.cstPostRule=Zr.NOOP,this.setInitialNodeLocation=Zr.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},r.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},r.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},r.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.setInitialNodeLocationFullRegular=function(e){var t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.cstInvocationStateUpdate=function(e,t){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},r.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},r.prototype.cstPostRuleFull=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?(i.endOffset=t.endOffset,i.endLine=t.endLine,i.endColumn=t.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},r.prototype.cstPostRuleOnlyOffset=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?i.endOffset=t.endOffset:i.startOffset=NaN},r.prototype.cstPostTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,zg.addTerminalToCst)(i,t,e),this.setNodeLocationFromToken(i.location,t)},r.prototype.cstPostNonTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,zg.addNoneTerminalToCst)(i,t,e),this.setNodeLocationFromNode(i.location,e.location)},r.prototype.getBaseCstVisitorConstructor=function(){if((0,Zr.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,rq.createBaseSemanticVisitorConstructor)(this.className,(0,Zr.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},r.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,Zr.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,rq.createBaseVisitorConstructorWithDefaults)(this.className,(0,Zr.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},r.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},r.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},r.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},r}();oy.TreeBuilder=DIe});var sq=w(ay=>{"use strict";Object.defineProperty(ay,"__esModule",{value:!0});ay.LexerAdapter=void 0;var nq=Hn(),kIe=function(){function r(){}return r.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(r.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),r.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):nq.END_OF_FILE},r.prototype.LA=function(e){var t=this.currIdx+e;return t<0||this.tokVectorLength<=t?nq.END_OF_FILE:this.tokVector[t]},r.prototype.consumeToken=function(){this.currIdx++},r.prototype.exportLexerState=function(){return this.currIdx},r.prototype.importLexerState=function(e){this.currIdx=e},r.prototype.resetLexerState=function(){this.currIdx=-1},r.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},r.prototype.getLexerPosition=function(){return this.exportLexerState()},r}();ay.LexerAdapter=kIe});var aq=w(Ay=>{"use strict";Object.defineProperty(Ay,"__esModule",{value:!0});Ay.RecognizerApi=void 0;var oq=Gt(),RIe=Wg(),Wv=Hn(),FIe=Cd(),NIe=Hv(),LIe=dn(),TIe=function(){function r(){}return r.prototype.ACTION=function(e){return e.call(this)},r.prototype.consume=function(e,t,i){return this.consumeInternal(t,e,i)},r.prototype.subrule=function(e,t,i){return this.subruleInternal(t,e,i)},r.prototype.option=function(e,t){return this.optionInternal(t,e)},r.prototype.or=function(e,t){return this.orInternal(t,e)},r.prototype.many=function(e,t){return this.manyInternal(e,t)},r.prototype.atLeastOne=function(e,t){return this.atLeastOneInternal(e,t)},r.prototype.CONSUME=function(e,t){return this.consumeInternal(e,0,t)},r.prototype.CONSUME1=function(e,t){return this.consumeInternal(e,1,t)},r.prototype.CONSUME2=function(e,t){return this.consumeInternal(e,2,t)},r.prototype.CONSUME3=function(e,t){return this.consumeInternal(e,3,t)},r.prototype.CONSUME4=function(e,t){return this.consumeInternal(e,4,t)},r.prototype.CONSUME5=function(e,t){return this.consumeInternal(e,5,t)},r.prototype.CONSUME6=function(e,t){return this.consumeInternal(e,6,t)},r.prototype.CONSUME7=function(e,t){return this.consumeInternal(e,7,t)},r.prototype.CONSUME8=function(e,t){return this.consumeInternal(e,8,t)},r.prototype.CONSUME9=function(e,t){return this.consumeInternal(e,9,t)},r.prototype.SUBRULE=function(e,t){return this.subruleInternal(e,0,t)},r.prototype.SUBRULE1=function(e,t){return this.subruleInternal(e,1,t)},r.prototype.SUBRULE2=function(e,t){return this.subruleInternal(e,2,t)},r.prototype.SUBRULE3=function(e,t){return this.subruleInternal(e,3,t)},r.prototype.SUBRULE4=function(e,t){return this.subruleInternal(e,4,t)},r.prototype.SUBRULE5=function(e,t){return this.subruleInternal(e,5,t)},r.prototype.SUBRULE6=function(e,t){return this.subruleInternal(e,6,t)},r.prototype.SUBRULE7=function(e,t){return this.subruleInternal(e,7,t)},r.prototype.SUBRULE8=function(e,t){return this.subruleInternal(e,8,t)},r.prototype.SUBRULE9=function(e,t){return this.subruleInternal(e,9,t)},r.prototype.OPTION=function(e){return this.optionInternal(e,0)},r.prototype.OPTION1=function(e){return this.optionInternal(e,1)},r.prototype.OPTION2=function(e){return this.optionInternal(e,2)},r.prototype.OPTION3=function(e){return this.optionInternal(e,3)},r.prototype.OPTION4=function(e){return this.optionInternal(e,4)},r.prototype.OPTION5=function(e){return this.optionInternal(e,5)},r.prototype.OPTION6=function(e){return this.optionInternal(e,6)},r.prototype.OPTION7=function(e){return this.optionInternal(e,7)},r.prototype.OPTION8=function(e){return this.optionInternal(e,8)},r.prototype.OPTION9=function(e){return this.optionInternal(e,9)},r.prototype.OR=function(e){return this.orInternal(e,0)},r.prototype.OR1=function(e){return this.orInternal(e,1)},r.prototype.OR2=function(e){return this.orInternal(e,2)},r.prototype.OR3=function(e){return this.orInternal(e,3)},r.prototype.OR4=function(e){return this.orInternal(e,4)},r.prototype.OR5=function(e){return this.orInternal(e,5)},r.prototype.OR6=function(e){return this.orInternal(e,6)},r.prototype.OR7=function(e){return this.orInternal(e,7)},r.prototype.OR8=function(e){return this.orInternal(e,8)},r.prototype.OR9=function(e){return this.orInternal(e,9)},r.prototype.MANY=function(e){this.manyInternal(0,e)},r.prototype.MANY1=function(e){this.manyInternal(1,e)},r.prototype.MANY2=function(e){this.manyInternal(2,e)},r.prototype.MANY3=function(e){this.manyInternal(3,e)},r.prototype.MANY4=function(e){this.manyInternal(4,e)},r.prototype.MANY5=function(e){this.manyInternal(5,e)},r.prototype.MANY6=function(e){this.manyInternal(6,e)},r.prototype.MANY7=function(e){this.manyInternal(7,e)},r.prototype.MANY8=function(e){this.manyInternal(8,e)},r.prototype.MANY9=function(e){this.manyInternal(9,e)},r.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},r.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},r.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},r.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},r.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},r.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},r.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},r.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},r.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},r.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},r.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},r.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},r.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},r.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},r.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},r.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},r.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},r.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},r.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},r.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},r.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},r.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},r.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},r.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},r.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},r.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},r.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},r.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},r.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},r.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},r.prototype.RULE=function(e,t,i){if(i===void 0&&(i=Wv.DEFAULT_RULE_CONFIG),(0,oq.contains)(this.definedRulesNames,e)){var n=FIe.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:Wv.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,t,i);return this[e]=o,o},r.prototype.OVERRIDE_RULE=function(e,t,i){i===void 0&&(i=Wv.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,NIe.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,t,i);return this[e]=s,s},r.prototype.BACKTRACK=function(e,t){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if((0,RIe.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},r.prototype.getGAstProductions=function(){return this.gastProductionsCache},r.prototype.getSerializedGastProductions=function(){return(0,LIe.serializeGrammar)((0,oq.values)(this.gastProductionsCache))},r}();Ay.RecognizerApi=TIe});var uq=w(cy=>{"use strict";Object.defineProperty(cy,"__esModule",{value:!0});cy.RecognizerEngine=void 0;var Pr=Gt(),Gn=ny(),ly=Wg(),Aq=Id(),Vg=Ed(),lq=Hn(),OIe=jv(),cq=SA(),Qd=Gg(),MIe=qv(),KIe=function(){function r(){}return r.prototype.initRecognizerEngine=function(e,t){if(this.className=(0,MIe.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Qd.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Pr.has)(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if((0,Pr.isArray)(e)){if((0,Pr.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. - Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if((0,Pr.isArray)(e))this.tokensMap=(0,Pr.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Pr.has)(e,"modes")&&(0,Pr.every)((0,Pr.flatten)((0,Pr.values)(e.modes)),Qd.isTokenType)){var i=(0,Pr.flatten)((0,Pr.values)(e.modes)),n=(0,Pr.uniq)(i);this.tokensMap=(0,Pr.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Pr.isObject)(e))this.tokensMap=(0,Pr.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=cq.EOF;var s=(0,Pr.every)((0,Pr.values)(e),function(o){return(0,Pr.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?Qd.tokenStructuredMatcherNoCategories:Qd.tokenStructuredMatcher,(0,Qd.augmentTokenTypes)((0,Pr.values)(this.tokensMap))},r.prototype.defineRule=function(e,t,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Pr.has)(i,"resyncEnabled")?i.resyncEnabled:lq.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Pr.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:lq.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<t},r.prototype.orInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(Gn.OR_IDX,t),n=(0,Pr.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(t,e.ERR_MSG)},r.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new ly.NotAllInputParsedException(t,e))}},r.prototype.subruleInternal=function(e,t,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,t,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},r.prototype.subruleInternalError=function(e,t,i){throw(0,ly.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:i),delete e.partialCstResult),e},r.prototype.consumeInternal=function(e,t,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,t,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},r.prototype.consumeInternalError=function(e,t,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new ly.MismatchedTokenException(n,t,s))},r.prototype.consumeInternalRecovery=function(e,t,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===OIe.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},r.prototype.saveRecogState=function(){var e=this.errors,t=(0,Pr.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}},r.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},r.prototype.ruleInvocationStateUpdate=function(e,t,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t,e)},r.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},r.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},r.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},r.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),cq.EOF)},r.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},r}();cy.RecognizerEngine=KIe});var fq=w(uy=>{"use strict";Object.defineProperty(uy,"__esModule",{value:!0});uy.ErrorHandler=void 0;var zv=Wg(),Vv=Gt(),gq=Id(),UIe=Hn(),HIe=function(){function r(){}return r.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,Vv.has)(e,"errorMessageProvider")?e.errorMessageProvider:UIe.DEFAULT_PARSER_CONFIG.errorMessageProvider},r.prototype.SAVE_ERROR=function(e){if((0,zv.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,Vv.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(r.prototype,"errors",{get:function(){return(0,Vv.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),r.prototype.raiseEarlyExitException=function(e,t,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,gq.getLookaheadPathsForOptionalProd)(e,s,t,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new zv.EarlyExitException(u,this.LA(1),this.LA(0)))},r.prototype.raiseNoAltException=function(e,t){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,gq.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new zv.NoViableAltException(c,this.LA(1),l))},r}();uy.ErrorHandler=HIe});var dq=w(gy=>{"use strict";Object.defineProperty(gy,"__esModule",{value:!0});gy.ContentAssist=void 0;var hq=Ed(),pq=Gt(),GIe=function(){function r(){}return r.prototype.initContentAssist=function(){},r.prototype.computeContentAssist=function(e,t){var i=this.gastProductionsCache[e];if((0,pq.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,hq.nextPossibleTokensAfter)([i],t,this.tokenMatcher,this.maxLookahead)},r.prototype.getNextPossibleTokenTypes=function(e){var t=(0,pq.first)(e.ruleStack),i=this.getGAstProductions(),n=i[t],s=new hq.NextAfterTokenWalker(n,e).startWalking();return s},r}();gy.ContentAssist=GIe});var Qq=w(py=>{"use strict";Object.defineProperty(py,"__esModule",{value:!0});py.GastRecorder=void 0;var En=Gt(),Ro=dn(),YIe=gd(),Iq=Gg(),yq=SA(),jIe=Hn(),qIe=ny(),hy={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(hy);var Cq=!0,mq=Math.pow(2,qIe.BITS_FOR_OCCURRENCE_IDX)-1,wq=(0,yq.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:YIe.Lexer.NA});(0,Iq.augmentTokenTypes)([wq]);var Bq=(0,yq.createTokenInstance)(wq,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(Bq);var JIe={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},WIe=function(){function r(){}return r.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},r.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var t=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)t(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},r.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var t=0;t<10;t++){var i=t>0?t:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},r.prototype.ACTION_RECORD=function(e){},r.prototype.BACKTRACK_RECORD=function(e,t){return function(){return!0}},r.prototype.LA_RECORD=function(e){return jIe.END_OF_FILE},r.prototype.topLevelRuleRecord=function(e,t){try{var i=new Ro.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),t.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` - This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}},r.prototype.optionInternalRecord=function(e,t){return bd.call(this,Ro.Option,e,t)},r.prototype.atLeastOneInternalRecord=function(e,t){bd.call(this,Ro.RepetitionMandatory,t,e)},r.prototype.atLeastOneSepFirstInternalRecord=function(e,t){bd.call(this,Ro.RepetitionMandatoryWithSeparator,t,e,Cq)},r.prototype.manyInternalRecord=function(e,t){bd.call(this,Ro.Repetition,t,e)},r.prototype.manySepFirstInternalRecord=function(e,t){bd.call(this,Ro.RepetitionWithSeparator,t,e,Cq)},r.prototype.orInternalRecord=function(e,t){return zIe.call(this,e,t)},r.prototype.subruleInternalRecord=function(e,t,i){if(fy(t),!e||(0,En.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,En.peek)(this.recordingProdStack),o=e.ruleName,a=new Ro.NonTerminal({idx:t,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?JIe:hy},r.prototype.consumeInternalRecord=function(e,t,i){if(fy(t),!(0,Iq.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,En.peek)(this.recordingProdStack),o=new Ro.Terminal({idx:t,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),Bq},r}();py.GastRecorder=WIe;function bd(r,e,t,i){i===void 0&&(i=!1),fy(t);var n=(0,En.peek)(this.recordingProdStack),s=(0,En.isFunction)(e)?e:e.DEF,o=new r({definition:[],idx:t});return i&&(o.separator=e.SEP),(0,En.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),hy}function zIe(r,e){var t=this;fy(e);var i=(0,En.peek)(this.recordingProdStack),n=(0,En.isArray)(r)===!1,s=n===!1?r:r.DEF,o=new Ro.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&r.IGNORE_AMBIGUITIES===!0});(0,En.has)(r,"MAX_LOOKAHEAD")&&(o.maxLookahead=r.MAX_LOOKAHEAD);var a=(0,En.some)(s,function(l){return(0,En.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,En.forEach)(s,function(l){var c=new Ro.Alternative({definition:[]});o.definition.push(c),(0,En.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,En.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),t.recordingProdStack.push(c),l.ALT.call(t),t.recordingProdStack.pop()}),hy}function Eq(r){return r===0?"":""+r}function fy(r){if(r<0||r>mq){var e=new Error("Invalid DSL Method idx value: <"+r+`> - `+("Idx value must be a none negative value smaller than "+(mq+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var Sq=w(dy=>{"use strict";Object.defineProperty(dy,"__esModule",{value:!0});dy.PerformanceTracer=void 0;var bq=Gt(),VIe=Hn(),XIe=function(){function r(){}return r.prototype.initPerformanceTracer=function(e){if((0,bq.has)(e,"traceInitPerf")){var t=e.traceInitPerf,i=typeof t=="number";this.traceInitMaxIdent=i?t:1/0,this.traceInitPerf=i?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=VIe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},r.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,bq.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r}();dy.PerformanceTracer=XIe});var vq=w(Cy=>{"use strict";Object.defineProperty(Cy,"__esModule",{value:!0});Cy.applyMixins=void 0;function _Ie(r,e){e.forEach(function(t){var i=t.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(r.prototype,n,s):r.prototype[n]=t.prototype[n]}})})}Cy.applyMixins=_Ie});var Hn=w(dr=>{"use strict";var Dq=dr&&dr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(dr,"__esModule",{value:!0});dr.EmbeddedActionsParser=dr.CstParser=dr.Parser=dr.EMPTY_ALT=dr.ParserDefinitionErrorType=dr.DEFAULT_RULE_CONFIG=dr.DEFAULT_PARSER_CONFIG=dr.END_OF_FILE=void 0;var Xi=Gt(),ZIe=fj(),xq=SA(),kq=Cd(),Pq=Kj(),$Ie=jv(),eye=Wj(),tye=iq(),rye=sq(),iye=aq(),nye=uq(),sye=fq(),oye=dq(),aye=Qq(),Aye=Sq(),lye=vq();dr.END_OF_FILE=(0,xq.createTokenInstance)(xq.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(dr.END_OF_FILE);dr.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:kq.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});dr.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var cye;(function(r){r[r.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",r[r.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",r[r.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",r[r.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",r[r.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",r[r.LEFT_RECURSION=5]="LEFT_RECURSION",r[r.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",r[r.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",r[r.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",r[r.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",r[r.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",r[r.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",r[r.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(cye=dr.ParserDefinitionErrorType||(dr.ParserDefinitionErrorType={}));function uye(r){return r===void 0&&(r=void 0),function(){return r}}dr.EMPTY_ALT=uye;var my=function(){function r(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(t),i.initLexerAdapter(),i.initLooksAhead(t),i.initRecognizerEngine(e,t),i.initRecoverable(t),i.initTreeBuilder(t),i.initContentAssist(),i.initGastRecorder(t),i.initPerformanceTracer(t),(0,Xi.has)(t,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. - Please use the flag on the relevant DSL method instead. - See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=(0,Xi.has)(t,"skipValidations")?t.skipValidations:dr.DEFAULT_PARSER_CONFIG.skipValidations}return r.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},r.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var t;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,Xi.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,Xi.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,Pq.resolveGrammar)({rules:(0,Xi.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,Xi.isEmpty)(n)&&e.skipValidations===!1){var s=(0,Pq.validateGrammar)({rules:(0,Xi.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,Xi.values)(e.tokensMap),errMsgProvider:kq.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,Xi.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,ZIe.computeAllProdsFollows)((0,Xi.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,Xi.values)(e.gastProductionsCache))})),!r.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,Xi.isEmpty)(e.definitionErrors))throw t=(0,Xi.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: - `+t.join(` -------------------------------- -`))})},r.DEFER_DEFINITION_ERRORS_HANDLING=!1,r}();dr.Parser=my;(0,lye.applyMixins)(my,[$Ie.Recoverable,eye.LooksAhead,tye.TreeBuilder,rye.LexerAdapter,nye.RecognizerEngine,iye.RecognizerApi,sye.ErrorHandler,oye.ContentAssist,aye.GastRecorder,Aye.PerformanceTracer]);var gye=function(r){Dq(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Xi.cloneObj)(i);return s.outputCst=!0,n=r.call(this,t,s)||this,n}return e}(my);dr.CstParser=gye;var fye=function(r){Dq(e,r);function e(t,i){i===void 0&&(i=dr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,Xi.cloneObj)(i);return s.outputCst=!1,n=r.call(this,t,s)||this,n}return e}(my);dr.EmbeddedActionsParser=fye});var Fq=w(Ey=>{"use strict";Object.defineProperty(Ey,"__esModule",{value:!0});Ey.createSyntaxDiagramsCode=void 0;var Rq=pv();function hye(r,e){var t=e===void 0?{}:e,i=t.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+Rq.VERSION+"/diagrams/":i,s=t.css,o=s===void 0?"https://unpkg.com/chevrotain@"+Rq.VERSION+"/diagrams/diagrams.css":s,a=` - - - - - -`,l=` - -`,c=` - - - - diff --git a/pkg/ui/web/package-lock.json b/pkg/ui/web/package-lock.json deleted file mode 100644 index c0da9c10e..000000000 --- a/pkg/ui/web/package-lock.json +++ /dev/null @@ -1,1483 +0,0 @@ -{ - "name": "frontend", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "frontend", - "version": "0.0.0", - "dependencies": { - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@types/react": "^18.0.17", - "@types/react-dom": "^18.0.6", - "@vitejs/plugin-react": "^2.0.1", - "typescript": "^4.6.4", - "vite": "^3.0.7" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz", - "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.0", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.0", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.0", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.21.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz", - "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.21.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz", - "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", - "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz", - "integrity": "sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", - "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", - "dev": true, - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", - "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", - "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz", - "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.2", - "@babel/types": "^7.21.2", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz", - "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "node_modules/@types/react": { - "version": "18.0.28", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", - "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.0.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", - "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "dev": true - }, - "node_modules/@vitejs/plugin-react": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-2.2.0.tgz", - "integrity": "sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.19.6", - "@babel/plugin-transform-react-jsx": "^7.19.0", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-jsx-self": "^7.18.6", - "@babel/plugin-transform-react-jsx-source": "^7.19.6", - "magic-string": "^0.26.7", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^3.0.0" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001465", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001465.tgz", - "integrity": "sha512-HvjgL3MYAJjceTDCcjRnQGjwUz/5qec9n7JPOzUursUoOTIsYCSDOb1l7RsnZE8mjbxG78zVRCKfrBXyvChBag==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.328", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.328.tgz", - "integrity": "sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-refresh": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", - "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/vite": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.5.tgz", - "integrity": "sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==", - "dev": true, - "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } -} diff --git a/pkg/ui/web/package.json b/pkg/ui/web/package.json deleted file mode 100644 index 27d037e95..000000000 --- a/pkg/ui/web/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "frontend", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "lint": "yarn lint:ts", - "lint:ts": "eslint ./src", - "fix": "yarn fix:ts", - "fix:ts": "eslint ./src --fix", - "graphql:codegen": "graphql-codegen --config codegen.yml" - }, - "engines": { - "node": "18.12.1" - }, - "packageManager": "yarn@3.4.1", - "dependencies": { - "@absinthe/socket": "0.2.1", - "@absinthe/socket-apollo-link": "0.2.1", - "@apollo/client": "3.7.10", - "@emotion/react": "11.10.6", - "@emotion/styled": "11.10.6", - "@pluralsh/design-system": "1.334.0", - "grommet": "2.31.0", - "honorable": "0.194.0", - "honorable-theme-default": "0.77.0", - "lodash": "4.17.21", - "phoenix": "1.7.2", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-router-dom": "6.9.0", - "styled-components": "5.3.9" - }, - "devDependencies": { - "@graphql-codegen/add": "4.0.1", - "@graphql-codegen/cli": "3.2.2", - "@graphql-codegen/introspection": "3.0.1", - "@graphql-codegen/typescript": "3.0.2", - "@graphql-codegen/typescript-operations": "3.0.2", - "@graphql-codegen/typescript-react-apollo": "3.3.7", - "@pluralsh/eslint-config-typescript": "2.5.41", - "@types/absinthe__socket": "0.2.3", - "@types/absinthe__socket-apollo-link": "0.2.1", - "@types/phoenix": "1.5.5", - "@types/react": "18.0.28", - "@types/react-dom": "18.0.11", - "@types/styled-components": "5.1.26", - "@typescript-eslint/eslint-plugin": "5.56.0", - "@vitejs/plugin-react": "3.1.0", - "eslint": "8.33.0", - "eslint-plugin-import": "2.27.5", - "eslint-plugin-import-newlines": "1.3.1", - "eslint-plugin-jsx-a11y": "6.7.1", - "eslint-plugin-react": "7.32.2", - "eslint-plugin-react-hooks": "4.6.0", - "typescript": "5.0.2", - "vite": "4.2.1" - } -} diff --git a/pkg/ui/web/package.json.md5 b/pkg/ui/web/package.json.md5 deleted file mode 100755 index 3582d694a..000000000 --- a/pkg/ui/web/package.json.md5 +++ /dev/null @@ -1 +0,0 @@ -97ea82012b5185fffbbfdf3e3f33f8f9 \ No newline at end of file diff --git a/pkg/ui/web/public/favicon.ico b/pkg/ui/web/public/favicon.ico deleted file mode 100644 index e35d6828b..000000000 Binary files a/pkg/ui/web/public/favicon.ico and /dev/null differ diff --git a/pkg/ui/web/public/fonts/ABCMonumentGroteskMono-Heavy.woff b/pkg/ui/web/public/fonts/ABCMonumentGroteskMono-Heavy.woff deleted file mode 100644 index 0bed0cd50..000000000 Binary files a/pkg/ui/web/public/fonts/ABCMonumentGroteskMono-Heavy.woff and /dev/null differ diff --git a/pkg/ui/web/public/fonts/ABCMonumentGroteskMono-Medium.woff b/pkg/ui/web/public/fonts/ABCMonumentGroteskMono-Medium.woff deleted file mode 100644 index e7d78fae8..000000000 Binary files a/pkg/ui/web/public/fonts/ABCMonumentGroteskMono-Medium.woff and /dev/null differ diff --git a/pkg/ui/web/public/fonts/ABCMonumentGroteskMono-Regular.woff b/pkg/ui/web/public/fonts/ABCMonumentGroteskMono-Regular.woff deleted file mode 100644 index 1de4e88d7..000000000 Binary files a/pkg/ui/web/public/fonts/ABCMonumentGroteskMono-Regular.woff and /dev/null differ diff --git a/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Heavy.woff b/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Heavy.woff deleted file mode 100644 index 883f47a4a..000000000 Binary files a/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Heavy.woff and /dev/null differ diff --git a/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Medium.woff b/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Medium.woff deleted file mode 100644 index 5e7f07914..000000000 Binary files a/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Medium.woff and /dev/null differ diff --git a/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Regular.woff b/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Regular.woff deleted file mode 100644 index a1b692338..000000000 Binary files a/pkg/ui/web/public/fonts/ABCMonumentGroteskSemi-Mono-Regular.woff and /dev/null differ diff --git a/pkg/ui/web/public/fonts/monument-bold-italic.woff b/pkg/ui/web/public/fonts/monument-bold-italic.woff deleted file mode 100644 index b7ab6626d..000000000 Binary files a/pkg/ui/web/public/fonts/monument-bold-italic.woff and /dev/null differ diff --git a/pkg/ui/web/public/fonts/monument-bold.woff b/pkg/ui/web/public/fonts/monument-bold.woff deleted file mode 100644 index d80582c8f..000000000 Binary files a/pkg/ui/web/public/fonts/monument-bold.woff and /dev/null differ diff --git a/pkg/ui/web/public/fonts/monument-bold.woff2 b/pkg/ui/web/public/fonts/monument-bold.woff2 deleted file mode 100644 index 19f2cd519..000000000 Binary files a/pkg/ui/web/public/fonts/monument-bold.woff2 and /dev/null differ diff --git a/pkg/ui/web/public/fonts/monument-medium-italic.woff b/pkg/ui/web/public/fonts/monument-medium-italic.woff deleted file mode 100644 index 8bd7d21f6..000000000 Binary files a/pkg/ui/web/public/fonts/monument-medium-italic.woff and /dev/null differ diff --git a/pkg/ui/web/public/fonts/monument-medium.woff b/pkg/ui/web/public/fonts/monument-medium.woff deleted file mode 100644 index 2eb30c9e5..000000000 Binary files a/pkg/ui/web/public/fonts/monument-medium.woff and /dev/null differ diff --git a/pkg/ui/web/public/fonts/monument-regular-italic.woff b/pkg/ui/web/public/fonts/monument-regular-italic.woff deleted file mode 100644 index c7a7e77bb..000000000 Binary files a/pkg/ui/web/public/fonts/monument-regular-italic.woff and /dev/null differ diff --git a/pkg/ui/web/public/fonts/monument-regular.otf b/pkg/ui/web/public/fonts/monument-regular.otf deleted file mode 100644 index ea7d8858b..000000000 Binary files a/pkg/ui/web/public/fonts/monument-regular.otf and /dev/null differ diff --git a/pkg/ui/web/public/fonts/monument-regular.woff b/pkg/ui/web/public/fonts/monument-regular.woff deleted file mode 100644 index 1de4e88d7..000000000 Binary files a/pkg/ui/web/public/fonts/monument-regular.woff and /dev/null differ diff --git a/pkg/ui/web/public/logos/plural-full-logo-black.svg b/pkg/ui/web/public/logos/plural-full-logo-black.svg deleted file mode 100644 index 3e5be0a69..000000000 --- a/pkg/ui/web/public/logos/plural-full-logo-black.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pkg/ui/web/public/logos/plural-full-logo-white.svg b/pkg/ui/web/public/logos/plural-full-logo-white.svg deleted file mode 100644 index 8f5e8dcb0..000000000 --- a/pkg/ui/web/public/logos/plural-full-logo-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pkg/ui/web/public/logos/plural-logomark-only-black.svg b/pkg/ui/web/public/logos/plural-logomark-only-black.svg deleted file mode 100644 index 3b37f74c4..000000000 --- a/pkg/ui/web/public/logos/plural-logomark-only-black.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pkg/ui/web/public/logos/plural-logomark-only-white.svg b/pkg/ui/web/public/logos/plural-logomark-only-white.svg deleted file mode 100644 index b48e74798..000000000 --- a/pkg/ui/web/public/logos/plural-logomark-only-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pkg/ui/web/public/logos/plural-logotype-only-black.svg b/pkg/ui/web/public/logos/plural-logotype-only-black.svg deleted file mode 100644 index 53f8f47b6..000000000 --- a/pkg/ui/web/public/logos/plural-logotype-only-black.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pkg/ui/web/public/logos/plural-logotype-only-white.svg b/pkg/ui/web/public/logos/plural-logotype-only-white.svg deleted file mode 100644 index 68fb8f717..000000000 --- a/pkg/ui/web/public/logos/plural-logotype-only-white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/pkg/ui/web/schema/schema.graphql b/pkg/ui/web/schema/schema.graphql deleted file mode 100644 index 691d635d6..000000000 --- a/pkg/ui/web/schema/schema.graphql +++ /dev/null @@ -1,3144 +0,0 @@ -# This file was generated based on ".graphqlconfig". Do not edit manually. - -schema { - query: RootQueryType - mutation: RootMutationType - subscription: RootSubscriptionType -} - -type Account { - availableFeatures: PlanFeatures - backgroundColor: String - billingAddress: Address - billingCustomerId: String - clusterCount: String - delinquentAt: DateTime - domainMappings: [DomainMapping] - grandfatheredUntil: DateTime - icon: String - id: ID! - insertedAt: DateTime - name: String - rootUser: User - subscription: PlatformSubscription - updatedAt: DateTime - userCount: String - workosConnectionId: String -} - -type ActionItem { - link: String! - type: ActionItemType! -} - -type Address { - city: String - country: String - line1: String - line2: String - name: String - state: String - zip: String -} - -type ApplyLock { - id: ID! - insertedAt: DateTime - lock: String - owner: User - repository: Repository - updatedAt: DateTime -} - -type Artifact { - arch: String - blob: String - filesize: Int - id: ID - insertedAt: DateTime - name: String - platform: ArtifactPlatform - readme: String - sha: String - type: ArtifactType - updatedAt: DateTime -} - -type Audit { - action: String! - actor: User - city: String - country: String - group: Group - id: ID! - image: DockerImage - insertedAt: DateTime - integrationWebhook: IntegrationWebhook - ip: String - latitude: String - longitude: String - repository: Repository - role: Role - updatedAt: DateTime - user: User - version: Version -} - -type AuditConnection { - edges: [AuditEdge] - pageInfo: PageInfo! -} - -type AuditEdge { - cursor: String - node: Audit -} - -type AuthorizationUrl { - provider: ScmProvider! - url: String! -} - -type Card { - brand: String! - expMonth: Int! - expYear: Int! - id: ID! - last4: String! - name: String -} - -type CardConnection { - edges: [CardEdge] - pageInfo: PageInfo! -} - -type CardEdge { - cursor: String - node: Card -} - -type CategoryInfo { - category: Category - count: Int - tags(after: String, before: String, first: Int, last: Int, q: String): GroupedTagConnection -} - -type ChangeInstructions { - instructions: String - script: String -} - -type Chart { - dependencies: Dependencies - description: String - id: ID - insertedAt: DateTime - installation: ChartInstallation - latestVersion: String - name: String! - repository: Repository - tags: [VersionTag] - updatedAt: DateTime -} - -type ChartConnection { - edges: [ChartEdge] - pageInfo: PageInfo! -} - -type ChartEdge { - cursor: String - node: Chart -} - -type ChartInstallation { - chart: Chart - id: ID - insertedAt: DateTime - installation: Installation - updatedAt: DateTime - version: Version -} - -type ChartInstallationConnection { - edges: [ChartInstallationEdge] - pageInfo: PageInfo! -} - -type ChartInstallationEdge { - cursor: String - node: ChartInstallation -} - -type ClosureItem { - dep: Dependency - helm: Chart - terraform: Terraform -} - -type CloudShell { - aesKey: String! - alive: Boolean! - cluster: String! - gitUrl: String! - id: ID! - insertedAt: DateTime - missing: [String] - provider: Provider! - region: String! - status: ShellStatus - subdomain: String! - updatedAt: DateTime -} - -"A Kubernetes cluster that can be used to deploy applications on with Plural." -type Cluster { - "The account that the cluster belongs to." - account: Account - "The URL of the console running on the cluster." - consoleUrl: String - "The domain name used for applications deployed on the cluster." - domain: String - "The git repository URL for the cluster." - gitUrl: String - "The ID of the cluster." - id: ID! - insertedAt: DateTime - "The name of the cluster." - name: String! - "The user that owns the cluster." - owner: User - "The last time the cluster was pinged." - pingedAt: DateTime - "The cluster's cloud provider." - provider: Provider! - "The upgrade queue for applications running on the cluster." - queue: UpgradeQueue - "The source of the cluster." - source: Source - updatedAt: DateTime - "pending upgrades for each installed app" - upgradeInfo: [UpgradeInfo] -} - -type ClusterConnection { - edges: [ClusterEdge] - pageInfo: PageInfo! -} - -"A dependncy reference between clusters" -type ClusterDependency { - "the cluster holding this dependency" - cluster: Cluster - "the source cluster of this dependency" - dependency: Cluster - id: ID! - insertedAt: DateTime - updatedAt: DateTime -} - -type ClusterEdge { - cursor: String - node: Cluster -} - -type ClusterInformation { - gitCommit: String - id: ID! - insertedAt: DateTime - platform: String - updatedAt: DateTime - version: String -} - -type Community { - discord: String - gitUrl: String - homepage: String - slack: String - twitter: String - videos: [String] -} - -type ConsentRequest { - requestedScope: [String] - skip: Boolean -} - -type Crd { - blob: String - id: ID! - insertedAt: DateTime - name: String! - updatedAt: DateTime -} - -type Cvss { - attackComplexity: VulnGrade - attackVector: VulnVector - availability: VulnGrade - confidentiality: VulnGrade - integrity: VulnGrade - privilegesRequired: VulnGrade - userInteraction: VulnRequirement -} - -type DeferredReason { - message: String - package: String - repository: String -} - -type DeferredUpdate { - attempts: Int - chartInstallation: ChartInstallation - dequeueAt: DateTime - id: ID! - insertedAt: DateTime - messages: [DeferredReason] - pending: Boolean - terraformInstallation: TerraformInstallation - updatedAt: DateTime - version: Version -} - -type DeferredUpdateConnection { - edges: [DeferredUpdateEdge] - pageInfo: PageInfo! -} - -type DeferredUpdateEdge { - cursor: String - node: DeferredUpdate -} - -type DemoProject { - credentials: String - id: ID! - insertedAt: DateTime - projectId: String! - ready: Boolean - state: DemoProjectState - updatedAt: DateTime -} - -type Dependencies { - application: Boolean - breaking: Boolean - cliVsn: String - dependencies: [Dependency] - instructions: ChangeInstructions - outputs: Map - providerVsn: String - providerWirings: Map - providers: [Provider] - secrets: [String] - wait: Boolean - wirings: Wirings -} - -type Dependency { - name: String - optional: Boolean - repo: String - type: DependencyType - version: String -} - -type DeviceLogin { - deviceToken: String! - loginUrl: String! -} - -type DnsAccessPolicy { - bindings: [PolicyBinding] - id: ID! - insertedAt: DateTime - updatedAt: DateTime -} - -type DnsDomain { - accessPolicy: DnsAccessPolicy - account: Account - creator: User - dnsRecords(after: String, before: String, first: Int, last: Int): DnsRecordConnection - id: ID! - insertedAt: DateTime - name: String! - updatedAt: DateTime -} - -type DnsDomainConnection { - edges: [DnsDomainEdge] - pageInfo: PageInfo! -} - -type DnsDomainEdge { - cursor: String - node: DnsDomain -} - -type DnsRecord { - cluster: String! - creator: User - domain: DnsDomain - id: ID! - insertedAt: DateTime - name: String! - provider: Provider! - records: [String] - type: DnsRecordType! - updatedAt: DateTime -} - -type DnsRecordConnection { - edges: [DnsRecordEdge] - pageInfo: PageInfo! -} - -type DnsRecordEdge { - cursor: String - node: DnsRecord -} - -type DockerImage { - digest: String! - dockerRepository: DockerRepository - grade: ImageGrade - id: ID! - insertedAt: DateTime - scanCompletedAt: DateTime - scannedAt: DateTime - tag: String - updatedAt: DateTime - vulnerabilities: [Vulnerability] -} - -type DockerImageConnection { - edges: [DockerImageEdge] - pageInfo: PageInfo! -} - -type DockerImageEdge { - cursor: String - node: DockerImage -} - -type DockerRepository { - id: ID! - insertedAt: DateTime - metrics(offset: String, precision: String, tag: String): [Metric] - name: String! - public: Boolean - repository: Repository - updatedAt: DateTime -} - -type DockerRepositoryConnection { - edges: [DockerRepositoryEdge] - pageInfo: PageInfo! -} - -type DockerRepositoryEdge { - cursor: String - node: DockerRepository -} - -type DomainMapping { - account: Account - domain: String! - enableSso: Boolean - id: ID! - insertedAt: DateTime - updatedAt: DateTime -} - -type EabCredential { - cluster: String! - hmacKey: String! - id: ID! - insertedAt: DateTime - keyId: String! - provider: Provider! - updatedAt: DateTime -} - -type File { - blob: String! - contentType: String - filename: String - filesize: Int - height: Int - id: ID! - insertedAt: DateTime - mediaType: MediaType - message: IncidentMessage! - updatedAt: DateTime - width: Int -} - -type FileConnection { - edges: [FileEdge] - pageInfo: PageInfo! -} - -type FileContent { - content: String! - path: String! -} - -type FileEdge { - cursor: String - node: File -} - -type Follower { - id: ID! - incident: Incident - insertedAt: DateTime - preferences: NotificationPreferences - updatedAt: DateTime - user: User! -} - -type FollowerConnection { - edges: [FollowerEdge] - pageInfo: PageInfo! -} - -type FollowerEdge { - cursor: String - node: Follower -} - -type GeoMetric { - count: Int - country: String -} - -type GitConfiguration { - branch: String - name: String - root: String - url: String -} - -type Group { - description: String - global: Boolean - id: ID! - insertedAt: DateTime - name: String! - updatedAt: DateTime -} - -type GroupConnection { - edges: [GroupEdge] - pageInfo: PageInfo! -} - -type GroupEdge { - cursor: String - node: Group -} - -type GroupMember { - group: Group - id: ID! - insertedAt: DateTime - updatedAt: DateTime - user: User -} - -type GroupMemberConnection { - edges: [GroupMemberEdge] - pageInfo: PageInfo! -} - -type GroupMemberEdge { - cursor: String - node: GroupMember -} - -type GroupedTag { - count: Int! - tag: String! -} - -type GroupedTagConnection { - edges: [GroupedTagEdge] - pageInfo: PageInfo! -} - -type GroupedTagEdge { - cursor: String - node: GroupedTag -} - -type ImageDependency { - id: ID! - image: DockerImage! - insertedAt: DateTime - updatedAt: DateTime - version: Version! -} - -type ImageLayer { - diffId: String - digest: String -} - -type ImpersonationPolicy { - bindings: [ImpersonationPolicyBinding] - id: ID! - insertedAt: DateTime - updatedAt: DateTime -} - -type ImpersonationPolicyBinding { - group: Group - id: ID! - insertedAt: DateTime - updatedAt: DateTime - user: User -} - -type Incident { - clusterInformation: ClusterInformation - creator: User! - description: String - files(after: String, before: String, first: Int, last: Int): FileConnection - follower: Follower - followers(after: String, before: String, first: Int, last: Int): FollowerConnection - history(after: String, before: String, first: Int, last: Int): IncidentHistoryConnection - id: ID! - insertedAt: DateTime - messages(after: String, before: String, first: Int, last: Int): IncidentMessageConnection - nextResponseAt: DateTime - notificationCount: Int - owner: User - postmortem: Postmortem - repository: Repository! - severity: Int! - status: IncidentStatus! - subscription: SlimSubscription - tags: [Tag] - title: String! - updatedAt: DateTime -} - -type IncidentChange { - key: String! - next: String - prev: String -} - -type IncidentConnection { - edges: [IncidentEdge] - pageInfo: PageInfo! -} - -type IncidentDelta { - delta: Delta - payload: Incident -} - -type IncidentEdge { - cursor: String - node: Incident -} - -type IncidentHistory { - action: IncidentAction! - actor: User! - changes: [IncidentChange] - id: ID! - incident: Incident! - insertedAt: DateTime - updatedAt: DateTime -} - -type IncidentHistoryConnection { - edges: [IncidentHistoryEdge] - pageInfo: PageInfo! -} - -type IncidentHistoryEdge { - cursor: String - node: IncidentHistory -} - -type IncidentMessage { - creator: User! - entities: [MessageEntity] - file: File - id: ID! - incident: Incident! - insertedAt: DateTime - reactions: [Reaction] - text: String! - updatedAt: DateTime -} - -type IncidentMessageConnection { - edges: [IncidentMessageEdge] - pageInfo: PageInfo! -} - -type IncidentMessageDelta { - delta: Delta - payload: IncidentMessage -} - -type IncidentMessageEdge { - cursor: String - node: IncidentMessage -} - -"An installation of an application." -type Installation { - acmeKeyId: String - acmeSecret: String - "Whether the application should auto upgrade." - autoUpgrade: Boolean - "A YAML object of context." - context: Map - "The installation's ID." - id: ID! - insertedAt: DateTime - license: String - "The license key for the application." - licenseKey: String - "The OIDC provider for the application." - oidcProvider: OidcProvider - "The last ping time of an installed application." - pingedAt: DateTime - "The application that was installed." - repository: Repository - "The subscription for the application." - subscription: RepositorySubscription - "The tag to track for auto upgrades." - trackTag: String! - updatedAt: DateTime - "The user that installed the application." - user: User -} - -type InstallationConnection { - edges: [InstallationEdge] - pageInfo: PageInfo! -} - -type InstallationEdge { - cursor: String - node: Installation -} - -type Integration { - description: String - icon: String - id: ID! - insertedAt: DateTime - name: String! - publisher: Publisher - repository: Repository - sourceUrl: String - spec: Map - tags: [Tag] - type: String - updatedAt: DateTime -} - -type IntegrationConnection { - edges: [IntegrationEdge] - pageInfo: PageInfo! -} - -type IntegrationEdge { - cursor: String - node: Integration -} - -type IntegrationWebhook { - account: Account - actions: [String] - id: ID! - insertedAt: DateTime - logs(after: String, before: String, first: Int, last: Int): WebhookLogConnection - name: String! - secret: String! - updatedAt: DateTime - url: String! -} - -type IntegrationWebhookConnection { - edges: [IntegrationWebhookEdge] - pageInfo: PageInfo! -} - -type IntegrationWebhookEdge { - cursor: String - node: IntegrationWebhook -} - -type Invite { - account: Account - email: String - existing: Boolean! - expiresAt: DateTime - id: ID! - insertedAt: DateTime - secureId: String - updatedAt: DateTime - user: User -} - -type InviteConnection { - edges: [InviteEdge] - pageInfo: PageInfo! -} - -type InviteEdge { - cursor: String - node: Invite -} - -type Invoice { - amountDue: Int! - amountPaid: Int! - createdAt: DateTime - currency: String! - hostedInvoiceUrl: String - lines: [InvoiceItem] - number: String! - status: String -} - -type InvoiceConnection { - edges: [InvoiceEdge] - pageInfo: PageInfo! -} - -type InvoiceEdge { - cursor: String - node: Invoice -} - -type InvoiceItem { - amount: Int! - currency: String! - description: String -} - -type KeyBackup { - digest: String! - id: ID! - insertedAt: DateTime - name: String! - repositories: [String!] - updatedAt: DateTime - user: User! - value: String! -} - -type KeyBackupConnection { - edges: [KeyBackupEdge] - pageInfo: PageInfo! -} - -type KeyBackupEdge { - cursor: String - node: KeyBackup -} - -type License { - name: String - url: String -} - -type Limit { - dimension: String! - quantity: Int! -} - -type LineItem { - cost: Int! - dimension: String! - name: String! - period: String - type: PlanType -} - -type LoginMethodResponse { - authorizeUrl: String - loginMethod: LoginMethod! - token: String -} - -type LoginRequest { - requestedScope: [String] - subject: String -} - -type MessageEntity { - endIndex: Int - id: ID! - insertedAt: DateTime - startIndex: Int - text: String - type: MessageEntityType! - updatedAt: DateTime - user: User -} - -type Metric { - name: String! - tags: [MetricTag] - values: [MetricValue] -} - -type MetricTag { - name: String! - value: String! -} - -type MetricValue { - time: DateTime - value: Int -} - -type NetworkConfiguration { - pluralDns: Boolean - subdomain: String -} - -type Notification { - actor: User! - id: ID! - incident: Incident - insertedAt: DateTime - message: IncidentMessage - msg: String - repository: Repository - type: NotificationType! - updatedAt: DateTime - user: User! -} - -type NotificationConnection { - edges: [NotificationEdge] - pageInfo: PageInfo! -} - -type NotificationEdge { - cursor: String - node: Notification -} - -type NotificationPreferences { - incidentUpdate: Boolean - mention: Boolean - message: Boolean -} - -type OauthInfo { - authorizeUrl: String! - provider: OauthProvider! -} - -type OauthIntegration { - account: Account - id: ID! - insertedAt: DateTime - service: OauthService! - updatedAt: DateTime -} - -type OauthResponse { - redirectTo: String! -} - -type OauthSettings { - authMethod: OidcAuthMethod! - uriFormat: String! -} - -type OidcLogin { - city: String - country: String - id: ID! - insertedAt: DateTime - ip: String - latitude: String - longitude: String - owner: User - repository: Repository - updatedAt: DateTime - user: User -} - -type OidcLoginConnection { - edges: [OidcLoginEdge] - pageInfo: PageInfo! -} - -type OidcLoginEdge { - cursor: String - node: OidcLogin -} - -type OidcProvider { - authMethod: OidcAuthMethod! - bindings: [OidcProviderBinding] - clientId: String! - clientSecret: String! - configuration: OuathConfiguration - consent: ConsentRequest - id: ID! - insertedAt: DateTime - redirectUris: [String] - updatedAt: DateTime -} - -type OidcProviderBinding { - group: Group - id: ID! - insertedAt: DateTime - updatedAt: DateTime - user: User -} - -type OidcSettings { - authMethod: OidcAuthMethod! - domainKey: String - subdomain: Boolean - uriFormat: String - uriFormats: [String] -} - -type OidcStepResponse { - consent: ConsentRequest - login: LoginRequest - repository: Repository -} - -type OnboardingChecklist { - dismissed: Boolean - status: OnboardingChecklistState -} - -type OuathConfiguration { - authorizationEndpoint: String - issuer: String - jwksUri: String - tokenEndpoint: String - userinfoEndpoint: String -} - -type PackageScan { - errors: [ScanError] - grade: ImageGrade - id: ID! - insertedAt: DateTime - updatedAt: DateTime - violations: [ScanViolation] -} - -type PageInfo { - "When paginating forwards, the cursor to continue." - endCursor: String - "When paginating forwards, are there more items?" - hasNextPage: Boolean! - "When paginating backwards, are there more items?" - hasPreviousPage: Boolean! - "When paginating backwards, the cursor to continue." - startCursor: String -} - -type PersistedToken { - audits(after: String, before: String, first: Int, last: Int): PersistedTokenAuditConnection - id: ID - insertedAt: DateTime - metrics: [GeoMetric] - token: String - updatedAt: DateTime -} - -type PersistedTokenAudit { - city: String - count: Int - country: String - id: ID - insertedAt: DateTime - ip: String - latitude: String - longitude: String - timestamp: DateTime - updatedAt: DateTime -} - -type PersistedTokenAuditConnection { - edges: [PersistedTokenAuditEdge] - pageInfo: PageInfo! -} - -type PersistedTokenAuditEdge { - cursor: String - node: PersistedTokenAudit -} - -type PersistedTokenConnection { - edges: [PersistedTokenEdge] - pageInfo: PageInfo! -} - -type PersistedTokenEdge { - cursor: String - node: PersistedToken -} - -type Plan { - cost: Int! - default: Boolean - id: ID! - insertedAt: DateTime - lineItems: PlanLineItems - metadata: PlanMetadata - name: String! - period: String - serviceLevels: [ServiceLevel] - updatedAt: DateTime - visible: Boolean! -} - -type PlanFeature { - description: String! - name: String! -} - -type PlanFeatures { - audit: Boolean - userManagement: Boolean - vpn: Boolean -} - -type PlanLineItems { - included: [Limit] - items: [LineItem] -} - -type PlanMetadata { - features: [PlanFeature] - freeform: Map -} - -type PlatformMetrics { - clusters: Int - publishers: Int - repositories: Int - rollouts: Int -} - -type PlatformPlan { - cost: Int! - enterprise: Boolean - features: PlanFeatures - id: ID! - insertedAt: DateTime - lineItems: [PlatformPlanItem] - name: String! - period: PaymentPeriod! - updatedAt: DateTime - visible: Boolean! -} - -type PlatformPlanItem { - cost: Int! - dimension: LineItemDimension! - externalId: String - name: String! - period: PaymentPeriod! -} - -type PlatformSubscription { - externalId: String - id: ID! - lineItems: [PlatformSubscriptionLineItems] - plan: PlatformPlan -} - -type PlatformSubscriptionLineItems { - dimension: LineItemDimension! - externalId: String - quantity: Int! -} - -type PluralConfiguration { - gitCommit: String - registry: String - stripeConnectId: String - stripePublishableKey: String -} - -type PolicyBinding { - group: Group - id: ID! - insertedAt: DateTime - updatedAt: DateTime - user: User -} - -type Postmortem { - actionItems: [ActionItem] - content: String! - creator: User! - id: ID! - insertedAt: DateTime - updatedAt: DateTime -} - -type PublicKey { - content: String! - digest: String! - id: ID! - insertedAt: DateTime - name: String! - updatedAt: DateTime - user: User! -} - -type PublicKeyConnection { - edges: [PublicKeyEdge] - pageInfo: PageInfo! -} - -type PublicKeyEdge { - cursor: String - node: PublicKey -} - -type Publisher { - address: Address - avatar: String - backgroundColor: String - billingAccountId: String - community: Community - description: String - id: ID - insertedAt: DateTime - name: String! - owner: User - phone: String - repositories: [Repository] - updatedAt: DateTime -} - -type PublisherConnection { - edges: [PublisherEdge] - pageInfo: PageInfo! -} - -type PublisherEdge { - cursor: String - node: Publisher -} - -type Reaction { - creator: User! - insertedAt: DateTime - message: IncidentMessage! - name: String! - updatedAt: DateTime -} - -type Recipe { - description: String - id: ID! - insertedAt: DateTime - name: String! - oidcEnabled: Boolean - oidcSettings: OidcSettings - primary: Boolean - private: Boolean - provider: Provider - recipeDependencies: [Recipe] - recipeSections: [RecipeSection] - repository: Repository - restricted: Boolean - tests: [RecipeTest] - updatedAt: DateTime -} - -type RecipeCondition { - field: String! - operation: Operation! - value: String -} - -type RecipeConfiguration { - args: [String] - condition: RecipeCondition - default: String - documentation: String - functionName: String - longform: String - name: String - optional: Boolean - placeholder: String - type: Datatype - validation: RecipeValidation -} - -type RecipeConnection { - edges: [RecipeEdge] - pageInfo: PageInfo! -} - -type RecipeEdge { - cursor: String - node: Recipe -} - -type RecipeItem { - chart: Chart - configuration: [RecipeConfiguration] - id: ID - insertedAt: DateTime - recipeSection: RecipeSection - terraform: Terraform - updatedAt: DateTime -} - -type RecipeSection { - configuration: [RecipeConfiguration] - id: ID - index: Int - insertedAt: DateTime - recipe: Recipe - recipeItems: [RecipeItem] - repository: Repository - updatedAt: DateTime -} - -type RecipeTest { - args: [TestArgument] - message: String - name: String! - type: TestType! -} - -type RecipeValidation { - message: String! - regex: String - type: ValidationType! -} - -"Container for all resources to create an application." -type Repository { - "The artifacts of the application." - artifacts: [Artifact] - "The category of the application." - category: Category - "The community links of the application." - community: Community - darkIcon: String - "The default tag to deploy." - defaultTag: String - "The description of the application." - description: String - "The documentation of the application." - docs: [FileContent] - "The documentation of the application." - documentation: String - "If the application can be edited by the current user." - editable: Boolean - "The git URL of the application." - gitUrl: String - "The homepage of the application." - homepage: String - icon: String - "The application's ID." - id: ID! - insertedAt: DateTime - "The installation of the application by a user." - installation: Installation - "The license of the application." - license: License - "The main branch of the application." - mainBranch: String - "The name of the application." - name: String! - "Notes about the application rendered after deploying and displayed to the user." - notes: String - "The OAuth settings for the application." - oauthSettings: OauthSettings - "The available plans for the application." - plans: [Plan] - "Whether the application is private." - private: Boolean - "The application's public key." - publicKey: String - "The application publisher." - publisher: Publisher - "The README of the application." - readme: String - "The recipes used to install the application." - recipes: [Recipe] - "A map of secrets of the application." - secrets: Map - "The tags of the application." - tags: [Tag] - "Whether the application is trending." - trending: Boolean - updatedAt: DateTime - "Whether the application is verified." - verified: Boolean -} - -type RepositoryConnection { - edges: [RepositoryEdge] - pageInfo: PageInfo! -} - -type RepositoryEdge { - cursor: String - node: Repository -} - -type RepositorySubscription { - customerId: String - externalId: String - id: ID! - installation: Installation - invoices(after: String, before: String, first: Int, last: Int): InvoiceConnection - lineItems: SubscriptionLineItems - plan: Plan -} - -type RepositorySubscriptionConnection { - edges: [RepositorySubscriptionEdge] - pageInfo: PageInfo! -} - -type RepositorySubscriptionEdge { - cursor: String - node: RepositorySubscription -} - -type ResetToken { - email: String! - externalId: ID! - id: ID! - insertedAt: DateTime - type: ResetTokenType! - updatedAt: DateTime - user: User! -} - -type Role { - account: Account - description: String - id: ID! - insertedAt: DateTime - name: String! - permissions: [Permission] - repositories: [String] - roleBindings: [RoleBinding] - updatedAt: DateTime -} - -type RoleBinding { - group: Group - id: ID! - insertedAt: DateTime - updatedAt: DateTime - user: User -} - -type RoleConnection { - edges: [RoleEdge] - pageInfo: PageInfo! -} - -type RoleEdge { - cursor: String - node: Role -} - -type Roles { - admin: Boolean -} - -type Rollout { - count: Int - cursor: ID - event: String - heartbeat: DateTime - id: ID! - insertedAt: DateTime - repository: Repository - status: RolloutStatus! - updatedAt: DateTime -} - -type RolloutConnection { - edges: [RolloutEdge] - pageInfo: PageInfo! -} - -type RolloutDelta { - delta: Delta - payload: Rollout -} - -type RolloutEdge { - cursor: String - node: Rollout -} - -type RootMutationType { - acceptIncident(id: ID!): Incident - acceptLogin(challenge: String!): OauthResponse - acquireLock(repository: String!): ApplyLock - cancelPlatformSubscription: PlatformSubscription - completeIncident(id: ID!, postmortem: PostmortemAttributes!): Incident - createArtifact(attributes: ArtifactAttributes!, repositoryId: ID, repositoryName: String): Artifact - createCard(address: AddressAttributes, source: String!): Account - "Create a new cluster." - createCluster( - "The input attributes for the cluster that will be created." - attributes: ClusterAttributes! - ): Cluster - "adds a dependency for this cluster to gate future upgrades" - createClusterDependency(destId: ID!, sourceId: ID!): ClusterDependency - createCrd(attributes: CrdAttributes!, chartId: ID, chartName: ChartName): Crd - createDemoProject: DemoProject - createDnsRecord(attributes: DnsRecordAttributes!, cluster: String!, provider: Provider!): DnsRecord - createDomain(attributes: DnsDomainAttributes!): DnsDomain - createGroup(attributes: GroupAttributes!): Group - createGroupMember(groupId: ID!, userId: ID!): GroupMember - createIncident(attributes: IncidentAttributes!, repository: String, repositoryId: ID): Incident - createInstallation(repositoryId: ID!): Installation - createIntegration(attributes: IntegrationAttributes!, repositoryName: String!): Integration - createIntegrationWebhook(attributes: IntegrationWebhookAttributes!): IntegrationWebhook - createInvite(attributes: InviteAttributes!): Invite - createKeyBackup(attributes: KeyBackupAttributes!): KeyBackup - createMessage(attributes: IncidentMessageAttributes!, incidentId: ID!): IncidentMessage - createOauthIntegration(attributes: OauthAttributes!): OauthIntegration - createOidcProvider( - attributes: OidcAttributes!, - "The installation ID" - installationId: ID! - ): OidcProvider - createPlan(attributes: PlanAttributes!, repositoryId: ID!): Plan - createPlatformSubscription(planId: ID!): PlatformSubscription - createPublicKey(attributes: PublicKeyAttributes!): PublicKey - createPublisher(attributes: PublisherAttributes!): Publisher - createQueue(attributes: UpgradeQueueAttributes!): UpgradeQueue - createReaction(messageId: ID!, name: String!): IncidentMessage - createRecipe(attributes: RecipeAttributes!, repositoryId: String, repositoryName: String): Recipe - createRepository(attributes: RepositoryAttributes!, id: ID): Repository - createResetToken(attributes: ResetTokenAttributes!): Boolean - createRole(attributes: RoleAttributes!): Role - createServiceAccount(attributes: ServiceAccountAttributes!): User - createShell(attributes: CloudShellAttributes!): CloudShell - createStack(attributes: StackAttributes!): Stack - createSubscription(attributes: SubscriptionAttributes, installationId: ID!, planId: ID!): RepositorySubscription - createTerraform(attributes: TerraformAttributes!, repositoryId: ID!): Terraform - createTest(attributes: TestAttributes!, name: String, repositoryId: ID): Test - createToken: PersistedToken - createUserEvent(attributes: UserEventAttributes!): Boolean - createWebhook(attributes: WebhookAttributes!): Webhook - createZoom(attributes: MeetingAttributes!): ZoomMeeting - deleteCard(id: ID!): Account - deleteChartInstallation(id: ID!): ChartInstallation - "Delete a cluster." - deleteCluster( - "The name of the cluster." - name: String!, - "The cluster's cloud provider." - provider: Provider! - ): Cluster - deleteDemoProject: DemoProject - deleteDnsRecord(name: String!, type: DnsRecordType!): DnsRecord - deleteDomain(id: ID!): DnsDomain - deleteEabKey(cluster: String, id: ID, provider: Provider): EabCredential - deleteGroup(groupId: ID!): Group - deleteGroupMember(groupId: ID!, userId: ID!): GroupMember - deleteIncident(id: ID!): Incident - deleteInstallation(id: ID!): Installation - deleteIntegrationWebhook(id: ID!): IntegrationWebhook - deleteInvite(id: ID, secureId: String): Invite - deleteKeyBackup(name: String!): KeyBackup - deleteMessage(id: ID!): IncidentMessage - deletePlatformSubscription: Account - deletePublicKey(id: ID!): PublicKey - deleteReaction(messageId: ID!, name: String!): IncidentMessage - deleteRecipe(id: ID!): Recipe - deleteRepository(repositoryId: ID!): Repository - deleteRole(id: ID!): Role - deleteShell: CloudShell - deleteStack(name: String!): Stack - deleteTerraform(id: ID!): Terraform - deleteToken(id: ID!): PersistedToken - deleteUser(id: ID!): User - destroyCluster(domain: String!, name: String!, provider: Provider!): Boolean - deviceLogin: DeviceLogin - externalToken: String - followIncident(attributes: FollowerAttributes!, id: ID!): Follower - impersonateServiceAccount(email: String, id: ID): User - installBundle(context: ContextAttributes!, name: String!, oidc: Boolean!, repo: String!): [Installation] - installChart(attributes: ChartInstallationAttributes!, installationId: ID!): ChartInstallation - installRecipe(context: Map!, recipeId: ID!): [Installation] - installStack(name: String!, provider: Provider!): [Recipe] - installStackShell(context: ContextAttributes!, name: String!, oidc: Boolean!): [Recipe] - installTerraform(attributes: TerraformInstallationAttributes!, installationId: ID!): TerraformInstallation - linkPublisher(token: String!): Publisher - login(deviceToken: String, email: String!, password: String!): User - loginToken(deviceToken: String, token: String!): User - oauthCallback(code: String!, deviceToken: String, host: String, provider: OauthProvider!): User - oauthConsent(challenge: String!, scopes: [String]): OauthResponse - passwordlessLogin(token: String!): User - pingWebhook(id: ID!, message: String, repo: String!): WebhookResponse - "moves up the upgrade waterline for a user" - promote: User - provisionDomain(name: String!): DnsDomain - publishLogs(id: ID!, logs: String!): TestStep - quickStack(provider: Provider!, repositoryIds: [ID]): Stack - readNotifications(incidentId: ID): Int - realizeInvite(id: String!): User - realizeResetToken(attributes: ResetTokenRealization!, id: ID!): Boolean - rebootShell: CloudShell - releaseLock(attributes: LockAttributes!, repository: String!): ApplyLock - resetInstallations: Int - restartShell: Boolean - setupShell: CloudShell - signup(account: AccountAttributes, attributes: UserAttributes!, deviceToken: String, inviteId: String): User - ssoCallback(code: String!, deviceToken: String): User - stopShell: Boolean - transferDemoProject(organizationId: String!): DemoProject - unfollowIncident(id: ID!): Follower - uninstallTerraform(id: ID!): TerraformInstallation - unlockRepository(name: String!): Int - updateAccount(attributes: AccountAttributes!): Account - updateChart(attributes: ChartAttributes!, id: ID!): Chart - updateChartInstallation(attributes: ChartInstallationAttributes!, chartInstallationId: ID!): ChartInstallation - updateDockerRepository(attributes: DockerRepositoryAttributes!, id: ID!): DockerRepository - updateDomain(attributes: DnsDomainAttributes!, id: ID!): DnsDomain - updateGroup(attributes: GroupAttributes!, groupId: ID!): Group - updateIncident(attributes: IncidentAttributes!, id: ID!): Incident - updateInstallation(attributes: InstallationAttributes!, id: ID!): Installation - updateIntegrationWebhook(attributes: IntegrationWebhookAttributes!, id: ID!): IntegrationWebhook - updateLineItem(attributes: LimitAttributes!, subscriptionId: ID!): RepositorySubscription - updateMessage(attributes: IncidentMessageAttributes!, id: ID!): IncidentMessage - updateOidcProvider(attributes: OidcAttributes!, installationId: ID!): OidcProvider - updatePlan(planId: ID!, subscriptionId: ID!): RepositorySubscription - updatePlanAttributes(attributes: UpdatablePlanAttributes!, id: ID!): Plan - updatePlatformPlan(planId: ID!): PlatformSubscription - updatePublisher(attributes: PublisherAttributes!): Publisher - updateRepository(attributes: RepositoryAttributes!, repositoryId: ID, repositoryName: String): Repository - updateRole(attributes: RoleAttributes!, id: ID!): Role - updateServiceAccount(attributes: ServiceAccountAttributes!, id: ID!): User - updateShell(attributes: CloudShellAttributes!): CloudShell - updateShellConfiguration(context: Map!): Boolean - updateStep(attributes: TestStepAttributes!, id: ID!): TestStep - updateTerraform(attributes: TerraformAttributes!, id: ID!): Terraform - updateTest(attributes: TestAttributes!, id: ID!): Test - updateUser(attributes: UserAttributes!, id: ID): User - updateVersion(attributes: VersionAttributes!, id: ID, spec: VersionSpec): Version - uploadTerraform(attributes: TerraformAttributes!, name: String!, repositoryName: String!): Terraform - upsertOidcProvider(attributes: OidcAttributes!, installationId: ID!): OidcProvider - upsertRepository(attributes: RepositoryAttributes!, name: String!, publisher: String!): Repository -} - -type RootQueryType { - account: Account - auditMetrics: [GeoMetric] - audits(after: String, before: String, first: Int, last: Int): AuditConnection - categories: [CategoryInfo] - category(name: Category!): CategoryInfo - chart(id: ID!): Chart - chartInstallations(after: String, before: String, first: Int, last: Int, repositoryId: ID!): ChartInstallationConnection - charts(after: String, before: String, first: Int, last: Int, repositoryId: ID!): ChartConnection - closure(id: ID!, type: DependencyType!): [ClosureItem] - "Get a cluster by its ID." - cluster( - "The ID of the cluster." - id: ID! - ): Cluster - "Get a list of clusters owned by the current account." - clusters(after: String, before: String, first: Int, last: Int): ClusterConnection - configuration: PluralConfiguration - deferredUpdates(after: String, before: String, chartInstallationId: ID, first: Int, last: Int, terraformInstallationId: ID): DeferredUpdateConnection - demoProject(id: ID): DemoProject - dnsDomain(id: ID!): DnsDomain - dnsDomains(after: String, before: String, first: Int, last: Int, q: String): DnsDomainConnection - dnsRecords(after: String, before: String, cluster: String, domainId: ID, first: Int, last: Int, provider: Provider): DnsRecordConnection - dockerImage(id: ID!): DockerImage - dockerImages(after: String, before: String, dockerRepositoryId: ID!, first: Int, last: Int, q: String): DockerImageConnection - dockerRepositories(after: String, before: String, first: Int, last: Int, repositoryId: ID!): DockerRepositoryConnection - eabCredential(cluster: String!, provider: Provider!): EabCredential - eabCredentials: [EabCredential] - groupMembers(after: String, before: String, first: Int, groupId: ID!, last: Int): GroupMemberConnection - groups(after: String, before: String, first: Int, last: Int, q: String): GroupConnection - helpQuestion(prompt: String!): String - incident(id: ID!): Incident - incidents(after: String, before: String, filters: [IncidentFilter], first: Int, last: Int, order: Order, q: String, repositoryId: ID, sort: IncidentSort, supports: Boolean): IncidentConnection - installation(id: ID, name: String): Installation - installations(after: String, before: String, first: Int, last: Int): InstallationConnection - integrationWebhook(id: ID!): IntegrationWebhook - integrationWebhooks(after: String, before: String, first: Int, last: Int): IntegrationWebhookConnection - integrations(after: String, before: String, first: Int, last: Int, repositoryId: ID, repositoryName: String, tag: String, type: String): IntegrationConnection - invite(id: String!): Invite - invites(after: String, before: String, first: Int, last: Int): InviteConnection - invoices(after: String, before: String, first: Int, last: Int): InvoiceConnection - keyBackup(name: String!): KeyBackup - keyBackups(after: String, before: String, first: Int, last: Int): KeyBackupConnection - loginMethod(email: String!, host: String): LoginMethodResponse - loginMetrics: [GeoMetric] - me: User - notifications(after: String, before: String, cli: Boolean, first: Int, incidentId: ID, last: Int): NotificationConnection - oauthConsent(challenge: String!): Repository - oauthIntegrations: [OauthIntegration] - oauthLogin(challenge: String!): Repository - oauthUrls(host: String): [OauthInfo] - oidcConsent(challenge: String!): OidcStepResponse - oidcLogin(challenge: String!): OidcStepResponse - oidcLogins(after: String, before: String, first: Int, last: Int): OidcLoginConnection - platformMetrics: PlatformMetrics - platformPlans: [PlatformPlan] - platformSubscription: PlatformSubscription - publicKeys(after: String, before: String, emails: [String], first: Int, last: Int): PublicKeyConnection - publisher(id: ID): Publisher - publishers(accountId: ID, after: String, before: String, first: Int, last: Int, publishable: Boolean): PublisherConnection - recipe(id: ID, name: String, repo: String): Recipe - recipes(after: String, before: String, first: Int, last: Int, provider: Provider, repositoryId: ID, repositoryName: String): RecipeConnection - repositories(after: String, before: String, categories: [Category], category: Category, first: Int, installed: Boolean, last: Int, provider: Provider, publisherId: ID, publishers: [ID], q: String, supports: Boolean, tag: String, tags: [String]): RepositoryConnection - "Get an application by its ID or name." - repository( - "The ID of the application." - id: ID, - "The name of the application." - name: String - ): Repository - repositorySubscription(id: ID!): RepositorySubscription - resetToken(id: ID!): ResetToken - role(id: ID!): Role - roles(after: String, before: String, first: Int, last: Int, q: String, userId: ID): RoleConnection - rollouts(after: String, before: String, first: Int, last: Int, repositoryId: ID!): RolloutConnection - scaffold(application: String!, category: Category!, ingress: Boolean, postgres: Boolean, publisher: String!): [ScaffoldFile] - scmAuthorization: [AuthorizationUrl] - scmToken(code: String!, provider: ScmProvider!): String - searchRepositories(after: String, before: String, first: Int, last: Int, query: String!): RepositoryConnection - searchUsers(after: String, before: String, first: Int, incidentId: ID!, last: Int, q: String!): UserConnection - shell: CloudShell - shellConfiguration: ShellConfiguration - stack(name: String!, provider: Provider!): Stack - stacks(after: String, before: String, featured: Boolean, first: Int, last: Int): StackConnection - subscriptions(after: String, before: String, first: Int, last: Int): RepositorySubscriptionConnection - tags(after: String, before: String, first: Int, id: ID, last: Int, q: String, type: TagGroup!): GroupedTagConnection - terraform(after: String, before: String, first: Int, last: Int, repositoryId: ID!): TerraformConnection - terraformInstallations(after: String, before: String, first: Int, last: Int, repositoryId: ID!): TerraformInstallationConnection - terraformModule(id: ID!): Terraform - terraformProvider(name: Provider!, vsn: String): TerraformProvider - terraformProviders: [Provider] - test(id: ID!): Test - testLogs(id: ID!, step: ID!): String - tests(after: String, before: String, first: Int, last: Int, repositoryId: ID, versionId: ID): TestConnection - token(id: ID!): PersistedToken - tokens(after: String, before: String, first: Int, last: Int): PersistedTokenConnection - upgradeQueue(id: ID): UpgradeQueue - upgradeQueues: [UpgradeQueue] - users(after: String, all: Boolean, before: String, first: Int, last: Int, q: String, serviceAccount: Boolean): UserConnection - versions(after: String, before: String, chartId: ID, first: Int, last: Int, terraformId: ID): VersionConnection - webhooks(after: String, before: String, first: Int, last: Int): WebhookConnection -} - -type RootSubscriptionType { - incidentDelta(incidentId: ID, repositoryId: ID): IncidentDelta - incidentMessageDelta(incidentId: ID): IncidentMessageDelta - notification: Notification - rolloutDelta(repositoryId: ID!): RolloutDelta - testDelta(repositoryId: ID!): TestDelta - testLogs(testId: ID!): StepLogs - upgrade(id: ID): Upgrade - upgradeQueueDelta: UpgradeQueueDelta -} - -type ScaffoldFile { - content: String - path: String -} - -type ScanError { - message: String -} - -type ScanViolation { - category: String - description: String - file: String - insertedAt: DateTime - line: Int - resourceName: String - resourceType: String - ruleId: String - ruleName: String - severity: VulnGrade - updatedAt: DateTime -} - -type ServiceLevel { - maxSeverity: Int - minSeverity: Int - responseTime: Int -} - -type ShellConfiguration { - buckets: [String] - contextConfiguration: Map - domains: [String] - git: GitConfiguration - workspace: ShellWorkspace -} - -type ShellStatus { - containersReady: Boolean - initialized: Boolean - podScheduled: Boolean - ready: Boolean -} - -type ShellWorkspace { - bucketPrefix: String - cluster: String - network: NetworkConfiguration - region: String -} - -type SlimSubscription { - id: ID! - lineItems: SubscriptionLineItems - plan: Plan -} - -type Stack { - bundles: [Recipe] - collections: [StackCollection] - community: Community - creator: User - description: String - displayName: String - featured: Boolean - id: ID! - insertedAt: DateTime - name: String! - sections: [RecipeSection] - updatedAt: DateTime -} - -type StackCollection { - bundles: [StackRecipe] - id: ID! - insertedAt: DateTime - provider: Provider! - updatedAt: DateTime -} - -type StackConnection { - edges: [StackEdge] - pageInfo: PageInfo! -} - -type StackEdge { - cursor: String - node: Stack -} - -type StackRecipe { - id: ID! - insertedAt: DateTime - recipe: Recipe! - updatedAt: DateTime -} - -type StepLogs { - logs: [String] - step: TestStep -} - -type SubscriptionLineItems { - items: [Limit] -} - -type Tag { - id: ID! - tag: String! -} - -type Terraform { - dependencies: Dependencies - description: String - editable: Boolean - id: ID - insertedAt: DateTime - installation: TerraformInstallation - latestVersion: String - name: String - package: String - readme: String - repository: Repository - updatedAt: DateTime - valuesTemplate: String -} - -type TerraformConnection { - edges: [TerraformEdge] - pageInfo: PageInfo! -} - -type TerraformEdge { - cursor: String - node: Terraform -} - -type TerraformInstallation { - id: ID - insertedAt: DateTime - installation: Installation - terraform: Terraform - updatedAt: DateTime - version: Version -} - -type TerraformInstallationConnection { - edges: [TerraformInstallationEdge] - pageInfo: PageInfo! -} - -type TerraformInstallationEdge { - cursor: String - node: TerraformInstallation -} - -type TerraformProvider { - content: String - name: Provider -} - -type Test { - creator: User - id: ID! - insertedAt: DateTime - name: String - promoteTag: String! - repository: Repository - sourceTag: String! - status: TestStatus! - steps: [TestStep] - tags: [String!] - updatedAt: DateTime -} - -type TestArgument { - key: String! - name: String! - repo: String! -} - -type TestConnection { - edges: [TestEdge] - pageInfo: PageInfo! -} - -type TestDelta { - delta: Delta - payload: Test -} - -type TestEdge { - cursor: String - node: Test -} - -type TestStep { - description: String! - hasLogs: Boolean - id: ID! - insertedAt: DateTime - name: String! - status: TestStatus! - updatedAt: DateTime -} - -type Upgrade { - id: ID! - insertedAt: DateTime - message: String - repository: Repository - type: UpgradeType - updatedAt: DateTime -} - -type UpgradeConnection { - edges: [UpgradeEdge] - pageInfo: PageInfo! -} - -type UpgradeEdge { - cursor: String - node: Upgrade -} - -"The pending upgrades for a repository" -type UpgradeInfo { - count: Int - installation: Installation -} - -type UpgradeQueue { - acked: ID - domain: String - git: String - id: ID! - insertedAt: DateTime - name: String - pingedAt: DateTime - provider: Provider - updatedAt: DateTime - upgrades(after: String, before: String, first: Int, last: Int): UpgradeConnection - user: User! -} - -type UpgradeQueueDelta { - delta: Delta - payload: UpgradeQueue -} - -type User { - account: Account! - address: Address - avatar: String - backgroundColor: String - boundRoles: [Role] - cards(after: String, before: String, first: Int, last: Int): CardConnection - defaultQueueId: ID - "If a user has reached the demo project usage limit." - demoed: Boolean - demoing: Boolean - email: String! - emailConfirmBy: DateTime - emailConfirmed: Boolean - hasInstallations: Boolean - id: ID! - impersonationPolicy: ImpersonationPolicy - insertedAt: DateTime - jwt: String - loginMethod: LoginMethod - name: String! - onboarding: OnboardingState - onboardingChecklist: OnboardingChecklist - phone: String - provider: Provider - publisher: Publisher - roles: Roles - serviceAccount: Boolean - updatedAt: DateTime -} - -type UserConnection { - edges: [UserEdge] - pageInfo: PageInfo! -} - -type UserEdge { - cursor: String - node: User -} - -"The version of a package." -type Version { - chart: Chart - crds: [Crd] - dependencies: Dependencies - helm: Map - id: ID! - imageDependencies: [ImageDependency] - insertedAt: DateTime - package: String - readme: String - scan: PackageScan - tags: [VersionTag] - "The template engine used to render the valuesTemplate." - templateType: TemplateType - terraform: Terraform - updatedAt: DateTime - valuesTemplate: String - version: String! -} - -type VersionConnection { - edges: [VersionEdge] - pageInfo: PageInfo! -} - -type VersionEdge { - cursor: String - node: Version -} - -type VersionTag { - chart: Chart - id: ID! - insertedAt: DateTime - tag: String! - updatedAt: DateTime - version: Version -} - -type Vulnerability { - cvss: Cvss - description: String - fixedVersion: String - id: ID! - insertedAt: DateTime - installedVersion: String - layer: ImageLayer - package: String - score: Float - severity: VulnGrade - source: String - title: String - updatedAt: DateTime - url: String - vulnerabilityId: String -} - -type Webhook { - id: ID - insertedAt: DateTime - secret: String - updatedAt: DateTime - url: String - user: User -} - -type WebhookConnection { - edges: [WebhookEdge] - pageInfo: PageInfo! -} - -type WebhookEdge { - cursor: String - node: Webhook -} - -type WebhookLog { - id: ID! - insertedAt: DateTime - payload: Map - response: String - state: WebhookLogState! - status: Int - updatedAt: DateTime - webhook: IntegrationWebhook -} - -type WebhookLogConnection { - edges: [WebhookLogEdge] - pageInfo: PageInfo! -} - -type WebhookLogEdge { - cursor: String - node: WebhookLog -} - -type WebhookResponse { - body: String - headers: Map - statusCode: Int! -} - -type Wirings { - helm: Map - terraform: Map -} - -type ZoomMeeting { - joinUrl: String! - password: String -} - -enum ActionItemType { - BLOG - ISSUE - PULL -} - -enum ArtifactPlatform { - ANDROID - FREEBSD - LINUX - MAC - OPENBSD - SOLARIS - WINDOWS -} - -enum ArtifactType { - CLI - DESKTOP - MOBILE -} - -"Application categories." -enum Category { - DATA - DATABASE - DEVOPS - MESSAGING - NETWORK - PRODUCTIVITY - SECURITY - STORAGE -} - -enum Datatype { - BOOL - BUCKET - DOMAIN - FILE - FUNCTION - INT - PASSWORD - STRING -} - -enum Delta { - CREATE - DELETE - UPDATE -} - -enum DemoProjectState { - CREATED - ENABLED - READY -} - -enum DependencyType { - HELM - TERRAFORM -} - -enum DnsRecordType { - A - AAAA - CNAME - TXT -} - -enum ImageGrade { - A - B - C - D - F -} - -enum IncidentAction { - ACCEPT - COMPLETE - CREATE - EDIT - SEVERITY - STATUS -} - -enum IncidentFilterType { - FOLLOWING - NOTIFICATIONS - STATUS - TAG -} - -enum IncidentSort { - INSERTED_AT - SEVERITY - STATUS - TITLE -} - -enum IncidentStatus { - COMPLETE - IN_PROGRESS - OPEN - RESOLVED -} - -enum LineItemDimension { - CLUSTER - USER -} - -enum LoginMethod { - GITHUB - GOOGLE - PASSWORD - PASSWORDLESS - SSO -} - -enum MediaType { - AUDIO - IMAGE - OTHER - PDF - VIDEO -} - -enum MessageEntityType { - EMOJI - MENTION -} - -enum NotificationType { - INCIDENT_UPDATE - LOCKED - MENTION - MESSAGE -} - -enum OauthProvider { - GITHUB - GITLAB - GOOGLE -} - -enum OauthService { - ZOOM -} - -"Supported OIDC authentication methods." -enum OidcAuthMethod { - BASIC - POST -} - -enum OnboardingChecklistState { - CONFIGURED - CONSOLE_INSTALLED - FINISHED - NEW -} - -enum OnboardingState { - ACTIVE - INSTALLED - NEW - ONBOARDED -} - -enum Operation { - EQ - GT - GTE - LT - LTE - NOT - PREFIX - SUFFIX -} - -enum Order { - ASC - DESC -} - -enum PaymentPeriod { - MONTHLY - YEARLY -} - -enum Permission { - BILLING - INSTALL - INTEGRATIONS - PUBLISH - SUPPORT - USERS -} - -enum PlanType { - LICENSED - METERED -} - -enum Provider { - AWS - AZURE - CUSTOM - EQUINIX - GCP - GENERIC - KIND - KUBERNETES -} - -enum RecipeItemType { - HELM - TERRAFORM -} - -enum ResetTokenType { - EMAIL - PASSWORD -} - -enum RolloutStatus { - FINISHED - QUEUED - RUNNING -} - -enum ScmProvider { - DEMO - GITHUB - GITLAB - MANUAL -} - -"Possible cluster sources." -enum Source { - DEFAULT - DEMO - SHELL -} - -enum SpecDatatype { - BOOL - FLOAT - INT - LIST - OBJECT - STRING -} - -enum TagGroup { - INTEGRATIONS - REPOSITORIES -} - -"Template engines that can be used at build time." -enum TemplateType { - GOTEMPLATE - JAVASCRIPT - LUA -} - -enum TestStatus { - FAILED - QUEUED - RUNNING - SUCCEEDED -} - -enum TestType { - GIT -} - -enum UpgradeType { - APPROVAL - BOUNCE - DEDICATED - DEPLOY -} - -enum UserEventStatus { - ERROR - OK -} - -enum ValidationType { - REGEX -} - -enum VulnGrade { - CRITICAL - HIGH - LOW - MEDIUM - NONE -} - -enum VulnRequirement { - NONE - REQUIRED -} - -enum VulnVector { - ADJACENT - LOCAL - NETWORK - PHYSICAL -} - -enum WebhookLogState { - DELIVERED - FAILED - SENDING -} - -""" - -The `DateTime` scalar type represents a date and time in the UTC -timezone. The DateTime appears in a JSON response as an ISO8601 formatted -string, including UTC timezone ("Z"). The parsed date and time string will -be converted to UTC if there is an offset. -""" -scalar DateTime - -scalar Map - -scalar UploadOrUrl - -scalar Yaml - -input AccountAttributes { - billingAddress: AddressAttributes - domainMappings: [DomainMappingInput] - icon: UploadOrUrl - name: String -} - -input ActionItemAttributes { - link: String! - type: ActionItemType! -} - -input AddressAttributes { - city: String! - country: String! - line1: String! - line2: String! - name: String - state: String! - zip: String! -} - -input ArtifactAttributes { - arch: String - blob: UploadOrUrl - name: String! - platform: String! - readme: String! - type: String! -} - -input AwsShellCredentialsAttributes { - accessKeyId: String! - secretAccessKey: String! -} - -input AzureShellCredentialsAttributes { - clientId: String! - clientSecret: String! - storageAccount: String! - subscriptionId: String! - tenantId: String! -} - -input BindingAttributes { - groupId: ID - id: ID - userId: ID -} - -input ChartAttributes { - tags: [VersionTagAttributes] -} - -input ChartInstallationAttributes { - chartId: ID - versionId: ID -} - -input ChartName { - chart: String - repo: String -} - -input CloudShellAttributes { - credentials: ShellCredentialsAttributes! - demoId: ID - provider: Provider - scm: ScmAttributes - workspace: WorkspaceAttributes! -} - -"Input for creating or updating a cluster." -input ClusterAttributes { - "The URL of the console running on the cluster." - consoleUrl: String - "The domain name used for applications deployed on the cluster." - domain: String - "The git repository URL for the cluster." - gitUrl: String - "The name of the cluster." - name: String! - "The cluster's cloud provider." - provider: Provider! - "The source of the cluster." - source: Source -} - -input ClusterInformationAttributes { - gitCommit: String - platform: String - version: String -} - -"Input for creating or updating the community links of an application." -input CommunityAttributes { - "The application's Discord server." - discord: String - "The application's git URL." - gitUrl: String - "The application's homepage." - homepage: String - "The application's Slack channel." - slack: String - "The application's Twitter account." - twitter: String - "The videos of the application." - videos: [String] -} - -input ContextAttributes { - buckets: [String] - configuration: Map! - domains: [String] -} - -input CrdAttributes { - blob: UploadOrUrl - name: String! -} - -input DnsAccessPolicyAttributes { - bindings: [BindingAttributes] - id: ID -} - -input DnsDomainAttributes { - accessPolicy: DnsAccessPolicyAttributes - name: String -} - -input DnsRecordAttributes { - name: String! - records: [String] - type: DnsRecordType! -} - -input DockerRepositoryAttributes { - public: Boolean! -} - -input DomainMappingInput { - domain: String - enableSso: Boolean - id: ID -} - -input EntityAttributes { - endIndex: Int - startIndex: Int - text: String - type: MessageEntityType! - userId: ID -} - -input FileAttributes { - blob: UploadOrUrl -} - -input FollowerAttributes { - preferences: NotificationPreferencesAttributes -} - -input GcpShellCredentialsAttributes { - applicationCredentials: String! -} - -input GroupAttributes { - description: String - global: Boolean - name: String! -} - -input ImpersonationPolicyAttributes { - bindings: [ImpersonationPolicyBindingAttributes] - id: ID -} - -input ImpersonationPolicyBindingAttributes { - groupId: ID - id: ID - userId: ID -} - -input IncidentAttributes { - clusterInformation: ClusterInformationAttributes - description: String - severity: Int - status: IncidentStatus - tags: [TagAttributes] - title: String -} - -input IncidentFilter { - statuses: [IncidentStatus] - type: IncidentFilterType! - value: String -} - -input IncidentMessageAttributes { - entities: [EntityAttributes] - file: FileAttributes - text: String! -} - -"Input for creating or updating the tag attributes of an application installation." -input InstallationAttributes { - "Whether the application should auto upgrade." - autoUpgrade: Boolean - "A YAML object of context." - context: Yaml - "The tag to track for auto upgrades." - trackTag: String -} - -input IntegrationAttributes { - description: String - icon: UploadOrUrl - name: String! - sourceUrl: String - spec: Yaml - tags: [TagAttributes] - type: String -} - -input IntegrationWebhookAttributes { - actions: [String] - name: String! - url: String! -} - -input InviteAttributes { - email: String -} - -input KeyBackupAttributes { - key: String! - name: String! - repositories: [String] -} - -input LimitAttributes { - dimension: String! - quantity: Int! -} - -input LineItemAttributes { - cost: Int! - dimension: String! - name: String! - period: String! - type: PlanType -} - -input LockAttributes { - lock: String! -} - -input MeetingAttributes { - incidentId: ID - topic: String! -} - -input NotificationPreferencesAttributes { - incidentUpdate: Boolean! - mention: Boolean! - message: Boolean! -} - -input OauthAttributes { - code: String - redirectUri: String - service: OauthService -} - -"Input for the application's OAuth settings." -input OauthSettingsAttributes { - "The authentication method for the OAuth provider." - authMethod: OidcAuthMethod! - "The URI format for the OAuth provider." - uriFormat: String! -} - -"Input for creating or updating the OIDC attributes of an application installation." -input OidcAttributes { - "The authentication method for the OIDC provider." - authMethod: OidcAuthMethod! - "The users or groups that can login through the OIDC provider." - bindings: [BindingAttributes] - "The redirect URIs for the OIDC provider." - redirectUris: [String] -} - -input OidcSettingsAttributes { - authMethod: OidcAuthMethod! - domainKey: String - subdomain: Boolean - uriFormat: String - uriFormats: [String] -} - -input OnboardingChecklistAttributes { - dismissed: Boolean - status: OnboardingChecklistState -} - -input PlanAttributes { - cost: Int! - default: Boolean - lineItems: PlanLineItemAttributes - metadata: PlanMetadataAttributes - name: String! - period: String! - serviceLevels: [ServiceLevelAttributes] -} - -input PlanFeatureAttributes { - description: String! - name: String! -} - -input PlanLineItemAttributes { - included: [LimitAttributes] - items: [LineItemAttributes] -} - -input PlanMetadataAttributes { - features: [PlanFeatureAttributes] - freeform: Yaml -} - -input PostmortemAttributes { - actionItems: [ActionItemAttributes] - content: String! -} - -input PublicKeyAttributes { - content: String! - name: String! -} - -input PublisherAttributes { - address: AddressAttributes - avatar: UploadOrUrl - community: CommunityAttributes - description: String - name: String - phone: String -} - -input RecipeAttributes { - dependencies: [RecipeReference] - description: String - name: String! - oidcSettings: OidcSettingsAttributes - primary: Boolean - private: Boolean - provider: Provider - restricted: Boolean - sections: [RecipeSectionAttributes] - tests: [RecipeTestAttributes] -} - -input RecipeConditionAttributes { - field: String! - operation: Operation! - value: String -} - -input RecipeConfigurationAttributes { - condition: RecipeConditionAttributes - default: String - documentation: String - functionName: String - longform: String - name: String! - optional: Boolean - placeholder: String - type: Datatype! - validation: RecipeValidationAttributes -} - -input RecipeItemAttributes { - configuration: [RecipeConfigurationAttributes] - name: String! - type: RecipeItemType! -} - -input RecipeReference { - name: String! - repo: String! -} - -input RecipeSectionAttributes { - configuration: [RecipeConfigurationAttributes] - items: [RecipeItemAttributes] - name: String! -} - -input RecipeTestAttributes { - args: [TestArgumentAttributes] - message: String - name: String! - type: TestType! -} - -input RecipeValidationAttributes { - message: String! - regex: String - type: ValidationType! -} - -"Input for creating or updating an application's attributes." -input RepositoryAttributes { - "The category of the application." - category: Category - "The application's community links." - community: CommunityAttributes - "The application's dark icon." - darkIcon: UploadOrUrl - "The default tag to use when deploying the application." - defaultTag: String - "A short description of the application." - description: String - "The application's documentation." - docs: UploadOrUrl - "A link to the application's documentation." - documentation: String - "The application's git URL." - gitUrl: String - "The application's homepage." - homepage: String - "The application's icon." - icon: UploadOrUrl - "The application's integration resource definition." - integrationResourceDefinition: ResourceDefinitionAttributes - "The name of the application." - name: String - "Notes about the application rendered after deploying and displayed to the user." - notes: String - "The application's OAuth settings." - oauthSettings: OauthSettingsAttributes - "Whether the application is private." - private: Boolean - "The application's README." - readme: String - "A YAML object of secrets." - secrets: Yaml - "The application's tags." - tags: [TagAttributes] - "Whether the application is trending." - trending: Boolean - "Whether the application is verified." - verified: Boolean -} - -input ResetTokenAttributes { - email: String - type: ResetTokenType! -} - -input ResetTokenRealization { - password: String -} - -input ResourceDefinitionAttributes { - name: String! - spec: [SpecificationAttributes] -} - -input RoleAttributes { - description: String - name: String - permissions: [Permission] - repositories: [String] - roleBindings: [BindingAttributes] -} - -input RolesAttributes { - admin: Boolean -} - -input ScmAttributes { - gitUrl: String - name: String - org: String - privateKey: String - provider: ScmProvider - publicKey: String - token: String -} - -input ServiceAccountAttributes { - email: String - impersonationPolicy: ImpersonationPolicyAttributes - name: String -} - -input ServiceLevelAttributes { - maxSeverity: Int - minSeverity: Int - responseTime: Int -} - -input ShellCredentialsAttributes { - aws: AwsShellCredentialsAttributes - azure: AzureShellCredentialsAttributes - gcp: GcpShellCredentialsAttributes -} - -input SpecificationAttributes { - inner: SpecDatatype - name: String! - required: Boolean - spec: [SpecificationAttributes] - type: SpecDatatype! -} - -input StackAttributes { - collections: [StackCollectionAttributes] - community: CommunityAttributes - description: String - displayName: String - featured: Boolean - name: String! -} - -input StackCollectionAttributes { - bundles: [RecipeReference] - provider: Provider! -} - -input SubscriptionAttributes { - lineItems: SubscriptionLineItemAttributes -} - -input SubscriptionLineItemAttributes { - items: [LimitAttributes] -} - -input TagAttributes { - tag: String! -} - -input TerraformAttributes { - dependencies: Yaml - description: String - name: String - package: UploadOrUrl - version: String -} - -input TerraformInstallationAttributes { - terraformId: ID - versionId: ID -} - -input TestArgumentAttributes { - key: String! - name: String! - repo: String! -} - -input TestAttributes { - name: String - promoteTag: String - status: TestStatus - steps: [TestStepAttributes] - tags: [String] -} - -input TestStepAttributes { - description: String - id: ID - logs: UploadOrUrl - name: String - status: TestStatus -} - -input UpdatablePlanAttributes { - default: Boolean - serviceLevels: [ServiceLevelAttributes] -} - -input UpgradeQueueAttributes { - domain: String - git: String - name: String! - provider: Provider -} - -input UserAttributes { - avatar: UploadOrUrl - confirm: String - email: String - loginMethod: LoginMethod - name: String - onboarding: OnboardingState - onboardingChecklist: OnboardingChecklistAttributes - password: String - roles: RolesAttributes -} - -input UserEventAttributes { - data: String - event: String! - status: UserEventStatus -} - -input VersionAttributes { - tags: [VersionTagAttributes] -} - -input VersionSpec { - chart: String - repository: String - terraform: String - version: String -} - -input VersionTagAttributes { - tag: String! - versionId: ID -} - -input WebhookAttributes { - url: String! -} - -input WorkspaceAttributes { - bucketPrefix: String! - cluster: String! - project: String - region: String! - subdomain: String! -} diff --git a/pkg/ui/web/src/Plural.tsx b/pkg/ui/web/src/Plural.tsx deleted file mode 100644 index c655a27a6..000000000 --- a/pkg/ui/web/src/Plural.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { theme as honorableTheme } from '@pluralsh/design-system' -import { Grommet } from 'grommet' -import { ThemeProvider as HonorableThemeProvider } from 'honorable' -import React, { useMemo } from 'react' -import { RouterProvider } from 'react-router-dom' -import { ThemeProvider } from 'styled-components' - -import Loader from './components/loader/Loader' -import { WailsContext, WailsContextProps } from './context/wails' -import { Provider } from './graphql/generated/graphql' -import { grommetTheme } from './grommet/theme' -import { useWailsQuery } from './hooks/useWails' -import { router } from './routes/router' -import { Binding } from './services/wails' -import { FontStyles } from './styled/fonts' -import { GlobalStyles } from './styled/global' -import { ScrollbarStyles } from './styled/scrollbar' -import { styledTheme } from './styled/theme' -import { PluralProject } from './types/client' - -function Plural(): React.ReactElement { - const { data: context } = useWailsQuery(Binding.Context) - const { data: project = {} as PluralProject } = useWailsQuery(Binding.Project) - const { data: provider } = useWailsQuery(Binding.Provider) - const { data: token } = useWailsQuery(Binding.Token) - - const isReady = useMemo(() => !!context && !!project && !!token, [context, project, token]) - const wailsContext = useMemo(() => ({ - context, - project: { ...project, provider }, - token, - } as WailsContextProps), [context, project, provider, token]) - - return ( - - - - - - - - {isReady && } - {!isReady && } - - - - - ) -} - -export default Plural diff --git a/pkg/ui/web/src/components/loader/Loader.tsx b/pkg/ui/web/src/components/loader/Loader.tsx deleted file mode 100644 index 73c909c42..000000000 --- a/pkg/ui/web/src/components/loader/Loader.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { LoopingLogo } from '@pluralsh/design-system' -import React from 'react' -import styled from 'styled-components' - -const Loader = styled(LoaderUnstyled)(() => ({ - height: '100%', - display: 'flex', - justifyContent: 'center', - alignItems: 'center', -})) - -function LoaderUnstyled({ ...props }): React.ReactElement { - return ( -
- -
- ) -} - -export default Loader diff --git a/pkg/ui/web/src/context/wails.ts b/pkg/ui/web/src/context/wails.ts deleted file mode 100644 index aa965284f..000000000 --- a/pkg/ui/web/src/context/wails.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { createContext } from 'react' - -import { PluralContext, PluralProject } from '../types/client' - -interface WailsContextProps { - token: string; - project: PluralProject - context: PluralContext -} - -const WailsContext = createContext({ - project: {}, - context: {}, -} as WailsContextProps) - -export type { WailsContextProps, PluralContext } -export { WailsContext } diff --git a/pkg/ui/web/src/graphql/account.graphql b/pkg/ui/web/src/graphql/account.graphql deleted file mode 100644 index 837185b06..000000000 --- a/pkg/ui/web/src/graphql/account.graphql +++ /dev/null @@ -1,64 +0,0 @@ -fragment Audit on Audit { - id - action - ip - country - city - latitude - longitude - actor { ...User } - repository { ...Repo } - group { ...Group } - integrationWebhook { ...IntegrationWebhook } - role { ...Role } - version { ...Version } - image { id tag dockerRepository { name } } - insertedAt -} - -fragment PolicyBinding on PolicyBinding { - id - group { id name } - user { id name email } -} - -fragment DnsDomain on DnsDomain { - id - name - creator { ...User } - accessPolicy { - id - bindings { ...PolicyBinding } - } - insertedAt -} - -fragment Invite on Invite { - id - secureId - email - insertedAt -} - -fragment OidcLogin on OidcLogin { - ip - country - city - latitude - longitude - user { ...User } - owner { ...User } - repository { ...Repo } - insertedAt -} - -mutation UpdateAccount($attributes: AccountAttributes!) { - updateAccount(attributes: $attributes) { - ...Account - domainMappings { - id - domain - enableSso - } - } -} diff --git a/pkg/ui/web/src/graphql/artifacts.graphql b/pkg/ui/web/src/graphql/artifacts.graphql deleted file mode 100644 index da767f75d..000000000 --- a/pkg/ui/web/src/graphql/artifacts.graphql +++ /dev/null @@ -1,32 +0,0 @@ -fragment Artifact on Artifact { - id - name - blob - type - platform - arch - filesize - sha - readme - insertedAt - updatedAt -} - -query ListArtifacts($id: ID!) { - repository(id: $id) { - artifacts { ...Artifact } - } -} - -mutation CreateArtifact($repoName: String!, $name: String!, $readme: String!, $artifactType: String!, $platform: String!, $blob: UploadOrUrl!, $arch: String) { - createArtifact(repositoryName: $repoName, attributes: { - name: $name, - blob: $blob, - readme: $readme, - type: $artifactType, - platform: $platform, - arch: $arch - }) { - ...Artifact - } -} diff --git a/pkg/ui/web/src/graphql/charts.graphql b/pkg/ui/web/src/graphql/charts.graphql deleted file mode 100644 index 4b1fa61c6..000000000 --- a/pkg/ui/web/src/graphql/charts.graphql +++ /dev/null @@ -1,91 +0,0 @@ -fragment Chart on Chart { - id - name - description - latestVersion - dependencies { ...Dependencies } - insertedAt -} - -fragment Crd on Crd { - id - name - blob -} - -fragment ChartInstallation on ChartInstallation { - id - chart { - ...Chart - dependencies { ...Dependencies } - } - version { ...Version } -} - -fragment ScanViolation on ScanViolation { - ruleName - description - ruleId - severity - category - resourceName - resourceType - file - line -} - -fragment ScanError on ScanError { - message -} - -fragment PackageScan on PackageScan { - id - grade - violations { ...ScanViolation } - errors { ...ScanError } -} - -query GetCharts($id: ID!) { - charts(repositoryId: $id, first: 100) { - edges { - node { - ...Chart - } - } - } -} - -query GetVersions($id: ID!) { - versions(chartId: $id, first: 100) { - edges { - node { - ...Version - } - } - } -} - -query GetChartInstallations($id: ID!) { - chartInstallations(repositoryId: $id, first: 100) { - edges { node { ...ChartInstallation } } - } -} - -query GetPackageInstallations($id: ID!) { - chartInstallations(repositoryId: $id, first: 100) { - edges { node { ...ChartInstallation } } - } - terraformInstallations(repositoryId: $id, first: 100) { - edges { node { ...TerraformInstallation } } - } -} - -mutation CreateCrd($chartName: ChartName!, $name: String!, $blob: UploadOrUrl!) { - createCrd(chartName: $chartName, attributes: {name:$name, blob:$blob}) { - id - } -} - -mutation UninstallChart($id: ID!) { - deleteChartInstallation(id: $id) { id } -} diff --git a/pkg/ui/web/src/graphql/dns.graphql b/pkg/ui/web/src/graphql/dns.graphql deleted file mode 100644 index 08953c5e1..000000000 --- a/pkg/ui/web/src/graphql/dns.graphql +++ /dev/null @@ -1,28 +0,0 @@ -fragment DnsRecord on DnsRecord { - id - name - type - records - cluster - provider - creator { ...User } - insertedAt -} - -query GetDnsRecords($cluster: String!, $provider: Provider!) { - dnsRecords(cluster: $cluster, provider: $provider, first: 500) { - edges { node { ...DnsRecord } } - } -} - -mutation CreateDnsRecord($cluster: String!, $provider: Provider!, $attributes: DnsRecordAttributes!) { - createDnsRecord(cluster: $cluster, provider: $provider, attributes: $attributes) { - ...DnsRecord - } -} - -mutation DeleteDnsRecord($name: String!, $type: DnsRecordType!) { - deleteDnsRecord(name: $name, type: $type) { - ...DnsRecord - } -} diff --git a/pkg/ui/web/src/graphql/docker.graphql b/pkg/ui/web/src/graphql/docker.graphql deleted file mode 100644 index 5ccb13696..000000000 --- a/pkg/ui/web/src/graphql/docker.graphql +++ /dev/null @@ -1,44 +0,0 @@ -fragment DockerRepo on DockerRepository { - id - name - public - repository { id name } - insertedAt - updatedAt -} - -fragment DockerRepository on DockerRepository { - id - name - public - repository { id name editable } - insertedAt - updatedAt -} - -fragment DockerImage on DockerImage { - id - tag - digest - scannedAt - grade - insertedAt - updatedAt -} - - -fragment Vulnerability on Vulnerability { - id - title - description - vulnerabilityId - package - installedVersion - fixedVersion - source - url - severity - score - cvss { attackVector attackComplexity privilegesRequired userInteraction confidentiality integrity availability } - layer { digest diffId } -} diff --git a/pkg/ui/web/src/graphql/domains.graphql b/pkg/ui/web/src/graphql/domains.graphql deleted file mode 100644 index 9f002762a..000000000 --- a/pkg/ui/web/src/graphql/domains.graphql +++ /dev/null @@ -1,5 +0,0 @@ -mutation CreateDomain($name: String!) { - provisionDomain(name: $name) { - ...DnsDomain - } -} diff --git a/pkg/ui/web/src/graphql/generated/graphql.ts b/pkg/ui/web/src/graphql/generated/graphql.ts deleted file mode 100644 index 625a3aaf9..000000000 --- a/pkg/ui/web/src/graphql/generated/graphql.ts +++ /dev/null @@ -1,9949 +0,0 @@ -/* eslint-disable */ -import { gql } from '@apollo/client'; -import * as Apollo from '@apollo/client'; -export type Maybe = T | null; -export type InputMaybe = Maybe; -export type Exact = { [K in keyof T]: T[K] }; -export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; -export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; -const defaultOptions = {} as const; -/** All built-in and custom scalars, mapped to their actual values */ -export type Scalars = { - ID: string; - String: string; - Boolean: boolean; - Int: number; - Float: number; - /** - * The `DateTime` scalar type represents a date and time in the UTC - * timezone. The DateTime appears in a JSON response as an ISO8601 formatted - * string, including UTC timezone ("Z"). The parsed date and time string will - * be converted to UTC if there is an offset. - */ - DateTime: Date; - Map: Map; - UploadOrUrl: string; - Yaml: unknown; -}; - -export type RootQueryType = { - __typename?: 'RootQueryType'; - account?: Maybe; - auditMetrics?: Maybe>>; - audits?: Maybe; - categories?: Maybe>>; - category?: Maybe; - chart?: Maybe; - chartInstallations?: Maybe; - charts?: Maybe; - closure?: Maybe>>; - /** Get a cluster by its ID. */ - cluster?: Maybe; - /** Get a list of clusters owned by the current account. */ - clusters?: Maybe; - configuration?: Maybe; - deferredUpdates?: Maybe; - demoProject?: Maybe; - dnsDomain?: Maybe; - dnsDomains?: Maybe; - dnsRecords?: Maybe; - dockerImage?: Maybe; - dockerImages?: Maybe; - dockerRepositories?: Maybe; - eabCredential?: Maybe; - eabCredentials?: Maybe>>; - groupMembers?: Maybe; - groups?: Maybe; - helpQuestion?: Maybe; - incident?: Maybe; - incidents?: Maybe; - installation?: Maybe; - installations?: Maybe; - integrations?: Maybe; - integrationWebhook?: Maybe; - integrationWebhooks?: Maybe; - invite?: Maybe; - invites?: Maybe; - invoices?: Maybe; - keyBackup?: Maybe; - keyBackups?: Maybe; - loginMethod?: Maybe; - loginMetrics?: Maybe>>; - me?: Maybe; - notifications?: Maybe; - oauthConsent?: Maybe; - oauthIntegrations?: Maybe>>; - oauthLogin?: Maybe; - oauthUrls?: Maybe>>; - oidcConsent?: Maybe; - oidcLogin?: Maybe; - oidcLogins?: Maybe; - platformMetrics?: Maybe; - platformPlans?: Maybe>>; - platformSubscription?: Maybe; - publicKeys?: Maybe; - publisher?: Maybe; - publishers?: Maybe; - recipe?: Maybe; - recipes?: Maybe; - repositories?: Maybe; - /** Get an application by its ID or name. */ - repository?: Maybe; - repositorySubscription?: Maybe; - resetToken?: Maybe; - role?: Maybe; - roles?: Maybe; - rollouts?: Maybe; - scaffold?: Maybe>>; - scmAuthorization?: Maybe>>; - scmToken?: Maybe; - searchRepositories?: Maybe; - searchUsers?: Maybe; - shell?: Maybe; - shellConfiguration?: Maybe; - stack?: Maybe; - stacks?: Maybe; - subscriptions?: Maybe; - tags?: Maybe; - terraform?: Maybe; - terraformInstallations?: Maybe; - terraformModule?: Maybe; - terraformProvider?: Maybe; - terraformProviders?: Maybe>>; - test?: Maybe; - testLogs?: Maybe; - tests?: Maybe; - token?: Maybe; - tokens?: Maybe; - upgradeQueue?: Maybe; - upgradeQueues?: Maybe>>; - users?: Maybe; - versions?: Maybe; - webhooks?: Maybe; -}; - - -export type RootQueryTypeAuditsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypeCategoryArgs = { - name: Category; -}; - - -export type RootQueryTypeChartArgs = { - id: Scalars['ID']; -}; - - -export type RootQueryTypeChartInstallationsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - repositoryId: Scalars['ID']; -}; - - -export type RootQueryTypeChartsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - repositoryId: Scalars['ID']; -}; - - -export type RootQueryTypeClosureArgs = { - id: Scalars['ID']; - type: DependencyType; -}; - - -export type RootQueryTypeClusterArgs = { - id: Scalars['ID']; -}; - - -export type RootQueryTypeClustersArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypeDeferredUpdatesArgs = { - after?: InputMaybe; - before?: InputMaybe; - chartInstallationId?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - terraformInstallationId?: InputMaybe; -}; - - -export type RootQueryTypeDemoProjectArgs = { - id?: InputMaybe; -}; - - -export type RootQueryTypeDnsDomainArgs = { - id: Scalars['ID']; -}; - - -export type RootQueryTypeDnsDomainsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - q?: InputMaybe; -}; - - -export type RootQueryTypeDnsRecordsArgs = { - after?: InputMaybe; - before?: InputMaybe; - cluster?: InputMaybe; - domainId?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - provider?: InputMaybe; -}; - - -export type RootQueryTypeDockerImageArgs = { - id: Scalars['ID']; -}; - - -export type RootQueryTypeDockerImagesArgs = { - after?: InputMaybe; - before?: InputMaybe; - dockerRepositoryId: Scalars['ID']; - first?: InputMaybe; - last?: InputMaybe; - q?: InputMaybe; -}; - - -export type RootQueryTypeDockerRepositoriesArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - repositoryId: Scalars['ID']; -}; - - -export type RootQueryTypeEabCredentialArgs = { - cluster: Scalars['String']; - provider: Provider; -}; - - -export type RootQueryTypeGroupMembersArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - groupId: Scalars['ID']; - last?: InputMaybe; -}; - - -export type RootQueryTypeGroupsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - q?: InputMaybe; -}; - - -export type RootQueryTypeHelpQuestionArgs = { - prompt: Scalars['String']; -}; - - -export type RootQueryTypeIncidentArgs = { - id: Scalars['ID']; -}; - - -export type RootQueryTypeIncidentsArgs = { - after?: InputMaybe; - before?: InputMaybe; - filters?: InputMaybe>>; - first?: InputMaybe; - last?: InputMaybe; - order?: InputMaybe; - q?: InputMaybe; - repositoryId?: InputMaybe; - sort?: InputMaybe; - supports?: InputMaybe; -}; - - -export type RootQueryTypeInstallationArgs = { - id?: InputMaybe; - name?: InputMaybe; -}; - - -export type RootQueryTypeInstallationsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypeIntegrationsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - repositoryId?: InputMaybe; - repositoryName?: InputMaybe; - tag?: InputMaybe; - type?: InputMaybe; -}; - - -export type RootQueryTypeIntegrationWebhookArgs = { - id: Scalars['ID']; -}; - - -export type RootQueryTypeIntegrationWebhooksArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypeInviteArgs = { - id: Scalars['String']; -}; - - -export type RootQueryTypeInvitesArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypeInvoicesArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypeKeyBackupArgs = { - name: Scalars['String']; -}; - - -export type RootQueryTypeKeyBackupsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypeLoginMethodArgs = { - email: Scalars['String']; - host?: InputMaybe; -}; - - -export type RootQueryTypeNotificationsArgs = { - after?: InputMaybe; - before?: InputMaybe; - cli?: InputMaybe; - first?: InputMaybe; - incidentId?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypeOauthConsentArgs = { - challenge: Scalars['String']; -}; - - -export type RootQueryTypeOauthLoginArgs = { - challenge: Scalars['String']; -}; - - -export type RootQueryTypeOauthUrlsArgs = { - host?: InputMaybe; -}; - - -export type RootQueryTypeOidcConsentArgs = { - challenge: Scalars['String']; -}; - - -export type RootQueryTypeOidcLoginArgs = { - challenge: Scalars['String']; -}; - - -export type RootQueryTypeOidcLoginsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypePublicKeysArgs = { - after?: InputMaybe; - before?: InputMaybe; - emails?: InputMaybe>>; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypePublisherArgs = { - id?: InputMaybe; -}; - - -export type RootQueryTypePublishersArgs = { - accountId?: InputMaybe; - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - publishable?: InputMaybe; -}; - - -export type RootQueryTypeRecipeArgs = { - id?: InputMaybe; - name?: InputMaybe; - repo?: InputMaybe; -}; - - -export type RootQueryTypeRecipesArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - provider?: InputMaybe; - repositoryId?: InputMaybe; - repositoryName?: InputMaybe; -}; - - -export type RootQueryTypeRepositoriesArgs = { - after?: InputMaybe; - before?: InputMaybe; - categories?: InputMaybe>>; - category?: InputMaybe; - first?: InputMaybe; - installed?: InputMaybe; - last?: InputMaybe; - provider?: InputMaybe; - publisherId?: InputMaybe; - publishers?: InputMaybe>>; - q?: InputMaybe; - supports?: InputMaybe; - tag?: InputMaybe; - tags?: InputMaybe>>; -}; - - -export type RootQueryTypeRepositoryArgs = { - id?: InputMaybe; - name?: InputMaybe; -}; - - -export type RootQueryTypeRepositorySubscriptionArgs = { - id: Scalars['ID']; -}; - - -export type RootQueryTypeResetTokenArgs = { - id: Scalars['ID']; -}; - - -export type RootQueryTypeRoleArgs = { - id: Scalars['ID']; -}; - - -export type RootQueryTypeRolesArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - q?: InputMaybe; - userId?: InputMaybe; -}; - - -export type RootQueryTypeRolloutsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - repositoryId: Scalars['ID']; -}; - - -export type RootQueryTypeScaffoldArgs = { - application: Scalars['String']; - category: Category; - ingress?: InputMaybe; - postgres?: InputMaybe; - publisher: Scalars['String']; -}; - - -export type RootQueryTypeScmTokenArgs = { - code: Scalars['String']; - provider: ScmProvider; -}; - - -export type RootQueryTypeSearchRepositoriesArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - query: Scalars['String']; -}; - - -export type RootQueryTypeSearchUsersArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - incidentId: Scalars['ID']; - last?: InputMaybe; - q: Scalars['String']; -}; - - -export type RootQueryTypeStackArgs = { - name: Scalars['String']; - provider: Provider; -}; - - -export type RootQueryTypeStacksArgs = { - after?: InputMaybe; - before?: InputMaybe; - featured?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypeSubscriptionsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypeTagsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - id?: InputMaybe; - last?: InputMaybe; - q?: InputMaybe; - type: TagGroup; -}; - - -export type RootQueryTypeTerraformArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - repositoryId: Scalars['ID']; -}; - - -export type RootQueryTypeTerraformInstallationsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - repositoryId: Scalars['ID']; -}; - - -export type RootQueryTypeTerraformModuleArgs = { - id: Scalars['ID']; -}; - - -export type RootQueryTypeTerraformProviderArgs = { - name: Provider; - vsn?: InputMaybe; -}; - - -export type RootQueryTypeTestArgs = { - id: Scalars['ID']; -}; - - -export type RootQueryTypeTestLogsArgs = { - id: Scalars['ID']; - step: Scalars['ID']; -}; - - -export type RootQueryTypeTestsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - repositoryId?: InputMaybe; - versionId?: InputMaybe; -}; - - -export type RootQueryTypeTokenArgs = { - id: Scalars['ID']; -}; - - -export type RootQueryTypeTokensArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type RootQueryTypeUpgradeQueueArgs = { - id?: InputMaybe; -}; - - -export type RootQueryTypeUsersArgs = { - after?: InputMaybe; - all?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - q?: InputMaybe; - serviceAccount?: InputMaybe; -}; - - -export type RootQueryTypeVersionsArgs = { - after?: InputMaybe; - before?: InputMaybe; - chartId?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - terraformId?: InputMaybe; -}; - - -export type RootQueryTypeWebhooksArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - -export type Account = { - __typename?: 'Account'; - availableFeatures?: Maybe; - backgroundColor?: Maybe; - billingAddress?: Maybe
; - billingCustomerId?: Maybe; - clusterCount?: Maybe; - delinquentAt?: Maybe; - domainMappings?: Maybe>>; - grandfatheredUntil?: Maybe; - icon?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - name?: Maybe; - rootUser?: Maybe; - subscription?: Maybe; - updatedAt?: Maybe; - userCount?: Maybe; - workosConnectionId?: Maybe; -}; - -export type PlanFeatures = { - __typename?: 'PlanFeatures'; - audit?: Maybe; - userManagement?: Maybe; - vpn?: Maybe; -}; - -export type Address = { - __typename?: 'Address'; - city?: Maybe; - country?: Maybe; - line1?: Maybe; - line2?: Maybe; - name?: Maybe; - state?: Maybe; - zip?: Maybe; -}; - -export type DomainMapping = { - __typename?: 'DomainMapping'; - account?: Maybe; - domain: Scalars['String']; - enableSso?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - updatedAt?: Maybe; -}; - -export type User = { - __typename?: 'User'; - account: Account; - address?: Maybe
; - avatar?: Maybe; - backgroundColor?: Maybe; - boundRoles?: Maybe>>; - cards?: Maybe; - defaultQueueId?: Maybe; - /** If a user has reached the demo project usage limit. */ - demoed?: Maybe; - demoing?: Maybe; - email: Scalars['String']; - emailConfirmBy?: Maybe; - emailConfirmed?: Maybe; - hasInstallations?: Maybe; - id: Scalars['ID']; - impersonationPolicy?: Maybe; - insertedAt?: Maybe; - jwt?: Maybe; - loginMethod?: Maybe; - name: Scalars['String']; - onboarding?: Maybe; - onboardingChecklist?: Maybe; - phone?: Maybe; - provider?: Maybe; - publisher?: Maybe; - roles?: Maybe; - serviceAccount?: Maybe; - updatedAt?: Maybe; -}; - - -export type UserCardsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - -export type Role = { - __typename?: 'Role'; - account?: Maybe; - description?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - name: Scalars['String']; - permissions?: Maybe>>; - repositories?: Maybe>>; - roleBindings?: Maybe>>; - updatedAt?: Maybe; -}; - -export enum Permission { - Billing = 'BILLING', - Install = 'INSTALL', - Integrations = 'INTEGRATIONS', - Publish = 'PUBLISH', - Support = 'SUPPORT', - Users = 'USERS' -} - -export type RoleBinding = { - __typename?: 'RoleBinding'; - group?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - updatedAt?: Maybe; - user?: Maybe; -}; - -export type Group = { - __typename?: 'Group'; - description?: Maybe; - global?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - name: Scalars['String']; - updatedAt?: Maybe; -}; - -export type CardConnection = { - __typename?: 'CardConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type CardEdge = { - __typename?: 'CardEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type Card = { - __typename?: 'Card'; - brand: Scalars['String']; - expMonth: Scalars['Int']; - expYear: Scalars['Int']; - id: Scalars['ID']; - last4: Scalars['String']; - name?: Maybe; -}; - -export type PageInfo = { - __typename?: 'PageInfo'; - /** When paginating forwards, the cursor to continue. */ - endCursor?: Maybe; - /** When paginating forwards, are there more items? */ - hasNextPage: Scalars['Boolean']; - /** When paginating backwards, are there more items? */ - hasPreviousPage: Scalars['Boolean']; - /** When paginating backwards, the cursor to continue. */ - startCursor?: Maybe; -}; - -export type ImpersonationPolicy = { - __typename?: 'ImpersonationPolicy'; - bindings?: Maybe>>; - id: Scalars['ID']; - insertedAt?: Maybe; - updatedAt?: Maybe; -}; - -export type ImpersonationPolicyBinding = { - __typename?: 'ImpersonationPolicyBinding'; - group?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - updatedAt?: Maybe; - user?: Maybe; -}; - -export enum LoginMethod { - Github = 'GITHUB', - Google = 'GOOGLE', - Password = 'PASSWORD', - Passwordless = 'PASSWORDLESS', - Sso = 'SSO' -} - -export enum OnboardingState { - Active = 'ACTIVE', - Installed = 'INSTALLED', - New = 'NEW', - Onboarded = 'ONBOARDED' -} - -export type OnboardingChecklist = { - __typename?: 'OnboardingChecklist'; - dismissed?: Maybe; - status?: Maybe; -}; - -export enum OnboardingChecklistState { - Configured = 'CONFIGURED', - ConsoleInstalled = 'CONSOLE_INSTALLED', - Finished = 'FINISHED', - New = 'NEW' -} - -export enum Provider { - Aws = 'AWS', - Azure = 'AZURE', - Custom = 'CUSTOM', - Equinix = 'EQUINIX', - Gcp = 'GCP', - Generic = 'GENERIC', - Kind = 'KIND', - Kubernetes = 'KUBERNETES' -} - -export type Publisher = { - __typename?: 'Publisher'; - address?: Maybe
; - avatar?: Maybe; - backgroundColor?: Maybe; - billingAccountId?: Maybe; - community?: Maybe; - description?: Maybe; - id?: Maybe; - insertedAt?: Maybe; - name: Scalars['String']; - owner?: Maybe; - phone?: Maybe; - repositories?: Maybe>>; - updatedAt?: Maybe; -}; - -export type Community = { - __typename?: 'Community'; - discord?: Maybe; - gitUrl?: Maybe; - homepage?: Maybe; - slack?: Maybe; - twitter?: Maybe; - videos?: Maybe>>; -}; - -/** Container for all resources to create an application. */ -export type Repository = { - __typename?: 'Repository'; - /** The artifacts of the application. */ - artifacts?: Maybe>>; - /** The category of the application. */ - category?: Maybe; - /** The community links of the application. */ - community?: Maybe; - darkIcon?: Maybe; - /** The default tag to deploy. */ - defaultTag?: Maybe; - /** The description of the application. */ - description?: Maybe; - /** The documentation of the application. */ - docs?: Maybe>>; - /** The documentation of the application. */ - documentation?: Maybe; - /** If the application can be edited by the current user. */ - editable?: Maybe; - /** The git URL of the application. */ - gitUrl?: Maybe; - /** The homepage of the application. */ - homepage?: Maybe; - icon?: Maybe; - /** The application's ID. */ - id: Scalars['ID']; - insertedAt?: Maybe; - /** The installation of the application by a user. */ - installation?: Maybe; - /** The license of the application. */ - license?: Maybe; - /** The main branch of the application. */ - mainBranch?: Maybe; - /** The name of the application. */ - name: Scalars['String']; - /** Notes about the application rendered after deploying and displayed to the user. */ - notes?: Maybe; - /** The OAuth settings for the application. */ - oauthSettings?: Maybe; - /** The available plans for the application. */ - plans?: Maybe>>; - /** Whether the application is private. */ - private?: Maybe; - /** The application's public key. */ - publicKey?: Maybe; - /** The application publisher. */ - publisher?: Maybe; - /** The README of the application. */ - readme?: Maybe; - /** The recipes used to install the application. */ - recipes?: Maybe>>; - /** A map of secrets of the application. */ - secrets?: Maybe; - /** The tags of the application. */ - tags?: Maybe>>; - /** Whether the application is trending. */ - trending?: Maybe; - updatedAt?: Maybe; - /** Whether the application is verified. */ - verified?: Maybe; -}; - -export type Artifact = { - __typename?: 'Artifact'; - arch?: Maybe; - blob?: Maybe; - filesize?: Maybe; - id?: Maybe; - insertedAt?: Maybe; - name?: Maybe; - platform?: Maybe; - readme?: Maybe; - sha?: Maybe; - type?: Maybe; - updatedAt?: Maybe; -}; - -export enum ArtifactPlatform { - Android = 'ANDROID', - Freebsd = 'FREEBSD', - Linux = 'LINUX', - Mac = 'MAC', - Openbsd = 'OPENBSD', - Solaris = 'SOLARIS', - Windows = 'WINDOWS' -} - -export enum ArtifactType { - Cli = 'CLI', - Desktop = 'DESKTOP', - Mobile = 'MOBILE' -} - -/** Application categories. */ -export enum Category { - Data = 'DATA', - Database = 'DATABASE', - Devops = 'DEVOPS', - Messaging = 'MESSAGING', - Network = 'NETWORK', - Productivity = 'PRODUCTIVITY', - Security = 'SECURITY', - Storage = 'STORAGE' -} - -export type FileContent = { - __typename?: 'FileContent'; - content: Scalars['String']; - path: Scalars['String']; -}; - -/** An installation of an application. */ -export type Installation = { - __typename?: 'Installation'; - acmeKeyId?: Maybe; - acmeSecret?: Maybe; - /** Whether the application should auto upgrade. */ - autoUpgrade?: Maybe; - /** A YAML object of context. */ - context?: Maybe; - /** The installation's ID. */ - id: Scalars['ID']; - insertedAt?: Maybe; - license?: Maybe; - /** The license key for the application. */ - licenseKey?: Maybe; - /** The OIDC provider for the application. */ - oidcProvider?: Maybe; - /** The last ping time of an installed application. */ - pingedAt?: Maybe; - /** The application that was installed. */ - repository?: Maybe; - /** The subscription for the application. */ - subscription?: Maybe; - /** The tag to track for auto upgrades. */ - trackTag: Scalars['String']; - updatedAt?: Maybe; - /** The user that installed the application. */ - user?: Maybe; -}; - -export type OidcProvider = { - __typename?: 'OidcProvider'; - authMethod: OidcAuthMethod; - bindings?: Maybe>>; - clientId: Scalars['String']; - clientSecret: Scalars['String']; - configuration?: Maybe; - consent?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - redirectUris?: Maybe>>; - updatedAt?: Maybe; -}; - -/** Supported OIDC authentication methods. */ -export enum OidcAuthMethod { - Basic = 'BASIC', - Post = 'POST' -} - -export type OidcProviderBinding = { - __typename?: 'OidcProviderBinding'; - group?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - updatedAt?: Maybe; - user?: Maybe; -}; - -export type OuathConfiguration = { - __typename?: 'OuathConfiguration'; - authorizationEndpoint?: Maybe; - issuer?: Maybe; - jwksUri?: Maybe; - tokenEndpoint?: Maybe; - userinfoEndpoint?: Maybe; -}; - -export type ConsentRequest = { - __typename?: 'ConsentRequest'; - requestedScope?: Maybe>>; - skip?: Maybe; -}; - -export type RepositorySubscription = { - __typename?: 'RepositorySubscription'; - customerId?: Maybe; - externalId?: Maybe; - id: Scalars['ID']; - installation?: Maybe; - invoices?: Maybe; - lineItems?: Maybe; - plan?: Maybe; -}; - - -export type RepositorySubscriptionInvoicesArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - -export type InvoiceConnection = { - __typename?: 'InvoiceConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type InvoiceEdge = { - __typename?: 'InvoiceEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type Invoice = { - __typename?: 'Invoice'; - amountDue: Scalars['Int']; - amountPaid: Scalars['Int']; - createdAt?: Maybe; - currency: Scalars['String']; - hostedInvoiceUrl?: Maybe; - lines?: Maybe>>; - number: Scalars['String']; - status?: Maybe; -}; - -export type InvoiceItem = { - __typename?: 'InvoiceItem'; - amount: Scalars['Int']; - currency: Scalars['String']; - description?: Maybe; -}; - -export type SubscriptionLineItems = { - __typename?: 'SubscriptionLineItems'; - items?: Maybe>>; -}; - -export type Limit = { - __typename?: 'Limit'; - dimension: Scalars['String']; - quantity: Scalars['Int']; -}; - -export type Plan = { - __typename?: 'Plan'; - cost: Scalars['Int']; - default?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - lineItems?: Maybe; - metadata?: Maybe; - name: Scalars['String']; - period?: Maybe; - serviceLevels?: Maybe>>; - updatedAt?: Maybe; - visible: Scalars['Boolean']; -}; - -export type PlanLineItems = { - __typename?: 'PlanLineItems'; - included?: Maybe>>; - items?: Maybe>>; -}; - -export type LineItem = { - __typename?: 'LineItem'; - cost: Scalars['Int']; - dimension: Scalars['String']; - name: Scalars['String']; - period?: Maybe; - type?: Maybe; -}; - -export enum PlanType { - Licensed = 'LICENSED', - Metered = 'METERED' -} - -export type PlanMetadata = { - __typename?: 'PlanMetadata'; - features?: Maybe>>; - freeform?: Maybe; -}; - -export type PlanFeature = { - __typename?: 'PlanFeature'; - description: Scalars['String']; - name: Scalars['String']; -}; - -export type ServiceLevel = { - __typename?: 'ServiceLevel'; - maxSeverity?: Maybe; - minSeverity?: Maybe; - responseTime?: Maybe; -}; - -export type License = { - __typename?: 'License'; - name?: Maybe; - url?: Maybe; -}; - -export type OauthSettings = { - __typename?: 'OauthSettings'; - authMethod: OidcAuthMethod; - uriFormat: Scalars['String']; -}; - -export type Recipe = { - __typename?: 'Recipe'; - description?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - name: Scalars['String']; - oidcEnabled?: Maybe; - oidcSettings?: Maybe; - primary?: Maybe; - private?: Maybe; - provider?: Maybe; - recipeDependencies?: Maybe>>; - recipeSections?: Maybe>>; - repository?: Maybe; - restricted?: Maybe; - tests?: Maybe>>; - updatedAt?: Maybe; -}; - -export type OidcSettings = { - __typename?: 'OidcSettings'; - authMethod: OidcAuthMethod; - domainKey?: Maybe; - subdomain?: Maybe; - uriFormat?: Maybe; - uriFormats?: Maybe>>; -}; - -export type RecipeSection = { - __typename?: 'RecipeSection'; - configuration?: Maybe>>; - id?: Maybe; - index?: Maybe; - insertedAt?: Maybe; - recipe?: Maybe; - recipeItems?: Maybe>>; - repository?: Maybe; - updatedAt?: Maybe; -}; - -export type RecipeConfiguration = { - __typename?: 'RecipeConfiguration'; - args?: Maybe>>; - condition?: Maybe; - default?: Maybe; - documentation?: Maybe; - functionName?: Maybe; - longform?: Maybe; - name?: Maybe; - optional?: Maybe; - placeholder?: Maybe; - type?: Maybe; - validation?: Maybe; -}; - -export type RecipeCondition = { - __typename?: 'RecipeCondition'; - field: Scalars['String']; - operation: Operation; - value?: Maybe; -}; - -export enum Operation { - Eq = 'EQ', - Gt = 'GT', - Gte = 'GTE', - Lt = 'LT', - Lte = 'LTE', - Not = 'NOT', - Prefix = 'PREFIX', - Suffix = 'SUFFIX' -} - -export enum Datatype { - Bool = 'BOOL', - Bucket = 'BUCKET', - Domain = 'DOMAIN', - File = 'FILE', - Function = 'FUNCTION', - Int = 'INT', - Password = 'PASSWORD', - String = 'STRING' -} - -export type RecipeValidation = { - __typename?: 'RecipeValidation'; - message: Scalars['String']; - regex?: Maybe; - type: ValidationType; -}; - -export enum ValidationType { - Regex = 'REGEX' -} - -export type RecipeItem = { - __typename?: 'RecipeItem'; - chart?: Maybe; - configuration?: Maybe>>; - id?: Maybe; - insertedAt?: Maybe; - recipeSection?: Maybe; - terraform?: Maybe; - updatedAt?: Maybe; -}; - -export type Chart = { - __typename?: 'Chart'; - dependencies?: Maybe; - description?: Maybe; - id?: Maybe; - insertedAt?: Maybe; - installation?: Maybe; - latestVersion?: Maybe; - name: Scalars['String']; - repository?: Maybe; - tags?: Maybe>>; - updatedAt?: Maybe; -}; - -export type Dependencies = { - __typename?: 'Dependencies'; - application?: Maybe; - breaking?: Maybe; - cliVsn?: Maybe; - dependencies?: Maybe>>; - instructions?: Maybe; - outputs?: Maybe; - providers?: Maybe>>; - providerVsn?: Maybe; - providerWirings?: Maybe; - secrets?: Maybe>>; - wait?: Maybe; - wirings?: Maybe; -}; - -export type Dependency = { - __typename?: 'Dependency'; - name?: Maybe; - optional?: Maybe; - repo?: Maybe; - type?: Maybe; - version?: Maybe; -}; - -export enum DependencyType { - Helm = 'HELM', - Terraform = 'TERRAFORM' -} - -export type ChangeInstructions = { - __typename?: 'ChangeInstructions'; - instructions?: Maybe; - script?: Maybe; -}; - -export type Wirings = { - __typename?: 'Wirings'; - helm?: Maybe; - terraform?: Maybe; -}; - -export type ChartInstallation = { - __typename?: 'ChartInstallation'; - chart?: Maybe; - id?: Maybe; - insertedAt?: Maybe; - installation?: Maybe; - updatedAt?: Maybe; - version?: Maybe; -}; - -/** The version of a package. */ -export type Version = { - __typename?: 'Version'; - chart?: Maybe; - crds?: Maybe>>; - dependencies?: Maybe; - helm?: Maybe; - id: Scalars['ID']; - imageDependencies?: Maybe>>; - insertedAt?: Maybe; - package?: Maybe; - readme?: Maybe; - scan?: Maybe; - tags?: Maybe>>; - /** The template engine used to render the valuesTemplate. */ - templateType?: Maybe; - terraform?: Maybe; - updatedAt?: Maybe; - valuesTemplate?: Maybe; - version: Scalars['String']; -}; - -export type Crd = { - __typename?: 'Crd'; - blob?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - name: Scalars['String']; - updatedAt?: Maybe; -}; - -export type ImageDependency = { - __typename?: 'ImageDependency'; - id: Scalars['ID']; - image: DockerImage; - insertedAt?: Maybe; - updatedAt?: Maybe; - version: Version; -}; - -export type DockerImage = { - __typename?: 'DockerImage'; - digest: Scalars['String']; - dockerRepository?: Maybe; - grade?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - scanCompletedAt?: Maybe; - scannedAt?: Maybe; - tag?: Maybe; - updatedAt?: Maybe; - vulnerabilities?: Maybe>>; -}; - -export type DockerRepository = { - __typename?: 'DockerRepository'; - id: Scalars['ID']; - insertedAt?: Maybe; - metrics?: Maybe>>; - name: Scalars['String']; - public?: Maybe; - repository?: Maybe; - updatedAt?: Maybe; -}; - - -export type DockerRepositoryMetricsArgs = { - offset?: InputMaybe; - precision?: InputMaybe; - tag?: InputMaybe; -}; - -export type Metric = { - __typename?: 'Metric'; - name: Scalars['String']; - tags?: Maybe>>; - values?: Maybe>>; -}; - -export type MetricTag = { - __typename?: 'MetricTag'; - name: Scalars['String']; - value: Scalars['String']; -}; - -export type MetricValue = { - __typename?: 'MetricValue'; - time?: Maybe; - value?: Maybe; -}; - -export enum ImageGrade { - A = 'A', - B = 'B', - C = 'C', - D = 'D', - F = 'F' -} - -export type Vulnerability = { - __typename?: 'Vulnerability'; - cvss?: Maybe; - description?: Maybe; - fixedVersion?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - installedVersion?: Maybe; - layer?: Maybe; - package?: Maybe; - score?: Maybe; - severity?: Maybe; - source?: Maybe; - title?: Maybe; - updatedAt?: Maybe; - url?: Maybe; - vulnerabilityId?: Maybe; -}; - -export type Cvss = { - __typename?: 'Cvss'; - attackComplexity?: Maybe; - attackVector?: Maybe; - availability?: Maybe; - confidentiality?: Maybe; - integrity?: Maybe; - privilegesRequired?: Maybe; - userInteraction?: Maybe; -}; - -export enum VulnGrade { - Critical = 'CRITICAL', - High = 'HIGH', - Low = 'LOW', - Medium = 'MEDIUM', - None = 'NONE' -} - -export enum VulnVector { - Adjacent = 'ADJACENT', - Local = 'LOCAL', - Network = 'NETWORK', - Physical = 'PHYSICAL' -} - -export enum VulnRequirement { - None = 'NONE', - Required = 'REQUIRED' -} - -export type ImageLayer = { - __typename?: 'ImageLayer'; - diffId?: Maybe; - digest?: Maybe; -}; - -export type PackageScan = { - __typename?: 'PackageScan'; - errors?: Maybe>>; - grade?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - updatedAt?: Maybe; - violations?: Maybe>>; -}; - -export type ScanError = { - __typename?: 'ScanError'; - message?: Maybe; -}; - -export type ScanViolation = { - __typename?: 'ScanViolation'; - category?: Maybe; - description?: Maybe; - file?: Maybe; - insertedAt?: Maybe; - line?: Maybe; - resourceName?: Maybe; - resourceType?: Maybe; - ruleId?: Maybe; - ruleName?: Maybe; - severity?: Maybe; - updatedAt?: Maybe; -}; - -export type VersionTag = { - __typename?: 'VersionTag'; - chart?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - tag: Scalars['String']; - updatedAt?: Maybe; - version?: Maybe; -}; - -/** Template engines that can be used at build time. */ -export enum TemplateType { - Gotemplate = 'GOTEMPLATE', - Javascript = 'JAVASCRIPT', - Lua = 'LUA' -} - -export type Terraform = { - __typename?: 'Terraform'; - dependencies?: Maybe; - description?: Maybe; - editable?: Maybe; - id?: Maybe; - insertedAt?: Maybe; - installation?: Maybe; - latestVersion?: Maybe; - name?: Maybe; - package?: Maybe; - readme?: Maybe; - repository?: Maybe; - updatedAt?: Maybe; - valuesTemplate?: Maybe; -}; - -export type TerraformInstallation = { - __typename?: 'TerraformInstallation'; - id?: Maybe; - insertedAt?: Maybe; - installation?: Maybe; - terraform?: Maybe; - updatedAt?: Maybe; - version?: Maybe; -}; - -export type RecipeTest = { - __typename?: 'RecipeTest'; - args?: Maybe>>; - message?: Maybe; - name: Scalars['String']; - type: TestType; -}; - -export type TestArgument = { - __typename?: 'TestArgument'; - key: Scalars['String']; - name: Scalars['String']; - repo: Scalars['String']; -}; - -export enum TestType { - Git = 'GIT' -} - -export type Tag = { - __typename?: 'Tag'; - id: Scalars['ID']; - tag: Scalars['String']; -}; - -export type Roles = { - __typename?: 'Roles'; - admin?: Maybe; -}; - -export type PlatformSubscription = { - __typename?: 'PlatformSubscription'; - externalId?: Maybe; - id: Scalars['ID']; - lineItems?: Maybe>>; - plan?: Maybe; -}; - -export type PlatformSubscriptionLineItems = { - __typename?: 'PlatformSubscriptionLineItems'; - dimension: LineItemDimension; - externalId?: Maybe; - quantity: Scalars['Int']; -}; - -export enum LineItemDimension { - Cluster = 'CLUSTER', - User = 'USER' -} - -export type PlatformPlan = { - __typename?: 'PlatformPlan'; - cost: Scalars['Int']; - enterprise?: Maybe; - features?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - lineItems?: Maybe>>; - name: Scalars['String']; - period: PaymentPeriod; - updatedAt?: Maybe; - visible: Scalars['Boolean']; -}; - -export type PlatformPlanItem = { - __typename?: 'PlatformPlanItem'; - cost: Scalars['Int']; - dimension: LineItemDimension; - externalId?: Maybe; - name: Scalars['String']; - period: PaymentPeriod; -}; - -export enum PaymentPeriod { - Monthly = 'MONTHLY', - Yearly = 'YEARLY' -} - -export type GeoMetric = { - __typename?: 'GeoMetric'; - count?: Maybe; - country?: Maybe; -}; - -export type AuditConnection = { - __typename?: 'AuditConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type AuditEdge = { - __typename?: 'AuditEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type Audit = { - __typename?: 'Audit'; - action: Scalars['String']; - actor?: Maybe; - city?: Maybe; - country?: Maybe; - group?: Maybe; - id: Scalars['ID']; - image?: Maybe; - insertedAt?: Maybe; - integrationWebhook?: Maybe; - ip?: Maybe; - latitude?: Maybe; - longitude?: Maybe; - repository?: Maybe; - role?: Maybe; - updatedAt?: Maybe; - user?: Maybe; - version?: Maybe; -}; - -export type IntegrationWebhook = { - __typename?: 'IntegrationWebhook'; - account?: Maybe; - actions?: Maybe>>; - id: Scalars['ID']; - insertedAt?: Maybe; - logs?: Maybe; - name: Scalars['String']; - secret: Scalars['String']; - updatedAt?: Maybe; - url: Scalars['String']; -}; - - -export type IntegrationWebhookLogsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - -export type WebhookLogConnection = { - __typename?: 'WebhookLogConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type WebhookLogEdge = { - __typename?: 'WebhookLogEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type WebhookLog = { - __typename?: 'WebhookLog'; - id: Scalars['ID']; - insertedAt?: Maybe; - payload?: Maybe; - response?: Maybe; - state: WebhookLogState; - status?: Maybe; - updatedAt?: Maybe; - webhook?: Maybe; -}; - -export enum WebhookLogState { - Delivered = 'DELIVERED', - Failed = 'FAILED', - Sending = 'SENDING' -} - -export type CategoryInfo = { - __typename?: 'CategoryInfo'; - category?: Maybe; - count?: Maybe; - tags?: Maybe; -}; - - -export type CategoryInfoTagsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - q?: InputMaybe; -}; - -export type GroupedTagConnection = { - __typename?: 'GroupedTagConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type GroupedTagEdge = { - __typename?: 'GroupedTagEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type GroupedTag = { - __typename?: 'GroupedTag'; - count: Scalars['Int']; - tag: Scalars['String']; -}; - -export type ChartInstallationConnection = { - __typename?: 'ChartInstallationConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type ChartInstallationEdge = { - __typename?: 'ChartInstallationEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type ChartConnection = { - __typename?: 'ChartConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type ChartEdge = { - __typename?: 'ChartEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type ClosureItem = { - __typename?: 'ClosureItem'; - dep?: Maybe; - helm?: Maybe; - terraform?: Maybe; -}; - -/** A Kubernetes cluster that can be used to deploy applications on with Plural. */ -export type Cluster = { - __typename?: 'Cluster'; - /** The account that the cluster belongs to. */ - account?: Maybe; - /** The URL of the console running on the cluster. */ - consoleUrl?: Maybe; - /** The domain name used for applications deployed on the cluster. */ - domain?: Maybe; - /** The git repository URL for the cluster. */ - gitUrl?: Maybe; - /** The ID of the cluster. */ - id: Scalars['ID']; - insertedAt?: Maybe; - /** The name of the cluster. */ - name: Scalars['String']; - /** The user that owns the cluster. */ - owner?: Maybe; - /** The last time the cluster was pinged. */ - pingedAt?: Maybe; - /** The cluster's cloud provider. */ - provider: Provider; - /** The upgrade queue for applications running on the cluster. */ - queue?: Maybe; - /** The source of the cluster. */ - source?: Maybe; - updatedAt?: Maybe; - /** pending upgrades for each installed app */ - upgradeInfo?: Maybe>>; -}; - -export type UpgradeQueue = { - __typename?: 'UpgradeQueue'; - acked?: Maybe; - domain?: Maybe; - git?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - name?: Maybe; - pingedAt?: Maybe; - provider?: Maybe; - updatedAt?: Maybe; - upgrades?: Maybe; - user: User; -}; - - -export type UpgradeQueueUpgradesArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - -export type UpgradeConnection = { - __typename?: 'UpgradeConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type UpgradeEdge = { - __typename?: 'UpgradeEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type Upgrade = { - __typename?: 'Upgrade'; - id: Scalars['ID']; - insertedAt?: Maybe; - message?: Maybe; - repository?: Maybe; - type?: Maybe; - updatedAt?: Maybe; -}; - -export enum UpgradeType { - Approval = 'APPROVAL', - Bounce = 'BOUNCE', - Dedicated = 'DEDICATED', - Deploy = 'DEPLOY' -} - -/** Possible cluster sources. */ -export enum Source { - Default = 'DEFAULT', - Demo = 'DEMO', - Shell = 'SHELL' -} - -/** The pending upgrades for a repository */ -export type UpgradeInfo = { - __typename?: 'UpgradeInfo'; - count?: Maybe; - installation?: Maybe; -}; - -export type ClusterConnection = { - __typename?: 'ClusterConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type ClusterEdge = { - __typename?: 'ClusterEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type PluralConfiguration = { - __typename?: 'PluralConfiguration'; - gitCommit?: Maybe; - registry?: Maybe; - stripeConnectId?: Maybe; - stripePublishableKey?: Maybe; -}; - -export type DeferredUpdateConnection = { - __typename?: 'DeferredUpdateConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type DeferredUpdateEdge = { - __typename?: 'DeferredUpdateEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type DeferredUpdate = { - __typename?: 'DeferredUpdate'; - attempts?: Maybe; - chartInstallation?: Maybe; - dequeueAt?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - messages?: Maybe>>; - pending?: Maybe; - terraformInstallation?: Maybe; - updatedAt?: Maybe; - version?: Maybe; -}; - -export type DeferredReason = { - __typename?: 'DeferredReason'; - message?: Maybe; - package?: Maybe; - repository?: Maybe; -}; - -export type DemoProject = { - __typename?: 'DemoProject'; - credentials?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - projectId: Scalars['String']; - ready?: Maybe; - state?: Maybe; - updatedAt?: Maybe; -}; - -export enum DemoProjectState { - Created = 'CREATED', - Enabled = 'ENABLED', - Ready = 'READY' -} - -export type DnsDomain = { - __typename?: 'DnsDomain'; - accessPolicy?: Maybe; - account?: Maybe; - creator?: Maybe; - dnsRecords?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - name: Scalars['String']; - updatedAt?: Maybe; -}; - - -export type DnsDomainDnsRecordsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - -export type DnsAccessPolicy = { - __typename?: 'DnsAccessPolicy'; - bindings?: Maybe>>; - id: Scalars['ID']; - insertedAt?: Maybe; - updatedAt?: Maybe; -}; - -export type PolicyBinding = { - __typename?: 'PolicyBinding'; - group?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - updatedAt?: Maybe; - user?: Maybe; -}; - -export type DnsRecordConnection = { - __typename?: 'DnsRecordConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type DnsRecordEdge = { - __typename?: 'DnsRecordEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type DnsRecord = { - __typename?: 'DnsRecord'; - cluster: Scalars['String']; - creator?: Maybe; - domain?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - name: Scalars['String']; - provider: Provider; - records?: Maybe>>; - type: DnsRecordType; - updatedAt?: Maybe; -}; - -export enum DnsRecordType { - A = 'A', - Aaaa = 'AAAA', - Cname = 'CNAME', - Txt = 'TXT' -} - -export type DnsDomainConnection = { - __typename?: 'DnsDomainConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type DnsDomainEdge = { - __typename?: 'DnsDomainEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type DockerImageConnection = { - __typename?: 'DockerImageConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type DockerImageEdge = { - __typename?: 'DockerImageEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type DockerRepositoryConnection = { - __typename?: 'DockerRepositoryConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type DockerRepositoryEdge = { - __typename?: 'DockerRepositoryEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type EabCredential = { - __typename?: 'EabCredential'; - cluster: Scalars['String']; - hmacKey: Scalars['String']; - id: Scalars['ID']; - insertedAt?: Maybe; - keyId: Scalars['String']; - provider: Provider; - updatedAt?: Maybe; -}; - -export type GroupMemberConnection = { - __typename?: 'GroupMemberConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type GroupMemberEdge = { - __typename?: 'GroupMemberEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type GroupMember = { - __typename?: 'GroupMember'; - group?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - updatedAt?: Maybe; - user?: Maybe; -}; - -export type GroupConnection = { - __typename?: 'GroupConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type GroupEdge = { - __typename?: 'GroupEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type Incident = { - __typename?: 'Incident'; - clusterInformation?: Maybe; - creator: User; - description?: Maybe; - files?: Maybe; - follower?: Maybe; - followers?: Maybe; - history?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - messages?: Maybe; - nextResponseAt?: Maybe; - notificationCount?: Maybe; - owner?: Maybe; - postmortem?: Maybe; - repository: Repository; - severity: Scalars['Int']; - status: IncidentStatus; - subscription?: Maybe; - tags?: Maybe>>; - title: Scalars['String']; - updatedAt?: Maybe; -}; - - -export type IncidentFilesArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type IncidentFollowersArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type IncidentHistoryArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - - -export type IncidentMessagesArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - -export type ClusterInformation = { - __typename?: 'ClusterInformation'; - gitCommit?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - platform?: Maybe; - updatedAt?: Maybe; - version?: Maybe; -}; - -export type FileConnection = { - __typename?: 'FileConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type FileEdge = { - __typename?: 'FileEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type File = { - __typename?: 'File'; - blob: Scalars['String']; - contentType?: Maybe; - filename?: Maybe; - filesize?: Maybe; - height?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - mediaType?: Maybe; - message: IncidentMessage; - updatedAt?: Maybe; - width?: Maybe; -}; - -export enum MediaType { - Audio = 'AUDIO', - Image = 'IMAGE', - Other = 'OTHER', - Pdf = 'PDF', - Video = 'VIDEO' -} - -export type IncidentMessage = { - __typename?: 'IncidentMessage'; - creator: User; - entities?: Maybe>>; - file?: Maybe; - id: Scalars['ID']; - incident: Incident; - insertedAt?: Maybe; - reactions?: Maybe>>; - text: Scalars['String']; - updatedAt?: Maybe; -}; - -export type MessageEntity = { - __typename?: 'MessageEntity'; - endIndex?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - startIndex?: Maybe; - text?: Maybe; - type: MessageEntityType; - updatedAt?: Maybe; - user?: Maybe; -}; - -export enum MessageEntityType { - Emoji = 'EMOJI', - Mention = 'MENTION' -} - -export type Reaction = { - __typename?: 'Reaction'; - creator: User; - insertedAt?: Maybe; - message: IncidentMessage; - name: Scalars['String']; - updatedAt?: Maybe; -}; - -export type Follower = { - __typename?: 'Follower'; - id: Scalars['ID']; - incident?: Maybe; - insertedAt?: Maybe; - preferences?: Maybe; - updatedAt?: Maybe; - user: User; -}; - -export type NotificationPreferences = { - __typename?: 'NotificationPreferences'; - incidentUpdate?: Maybe; - mention?: Maybe; - message?: Maybe; -}; - -export type FollowerConnection = { - __typename?: 'FollowerConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type FollowerEdge = { - __typename?: 'FollowerEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type IncidentHistoryConnection = { - __typename?: 'IncidentHistoryConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type IncidentHistoryEdge = { - __typename?: 'IncidentHistoryEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type IncidentHistory = { - __typename?: 'IncidentHistory'; - action: IncidentAction; - actor: User; - changes?: Maybe>>; - id: Scalars['ID']; - incident: Incident; - insertedAt?: Maybe; - updatedAt?: Maybe; -}; - -export enum IncidentAction { - Accept = 'ACCEPT', - Complete = 'COMPLETE', - Create = 'CREATE', - Edit = 'EDIT', - Severity = 'SEVERITY', - Status = 'STATUS' -} - -export type IncidentChange = { - __typename?: 'IncidentChange'; - key: Scalars['String']; - next?: Maybe; - prev?: Maybe; -}; - -export type IncidentMessageConnection = { - __typename?: 'IncidentMessageConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type IncidentMessageEdge = { - __typename?: 'IncidentMessageEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type Postmortem = { - __typename?: 'Postmortem'; - actionItems?: Maybe>>; - content: Scalars['String']; - creator: User; - id: Scalars['ID']; - insertedAt?: Maybe; - updatedAt?: Maybe; -}; - -export type ActionItem = { - __typename?: 'ActionItem'; - link: Scalars['String']; - type: ActionItemType; -}; - -export enum ActionItemType { - Blog = 'BLOG', - Issue = 'ISSUE', - Pull = 'PULL' -} - -export enum IncidentStatus { - Complete = 'COMPLETE', - InProgress = 'IN_PROGRESS', - Open = 'OPEN', - Resolved = 'RESOLVED' -} - -export type SlimSubscription = { - __typename?: 'SlimSubscription'; - id: Scalars['ID']; - lineItems?: Maybe; - plan?: Maybe; -}; - -export type IncidentFilter = { - statuses?: InputMaybe>>; - type: IncidentFilterType; - value?: InputMaybe; -}; - -export enum IncidentFilterType { - Following = 'FOLLOWING', - Notifications = 'NOTIFICATIONS', - Status = 'STATUS', - Tag = 'TAG' -} - -export enum Order { - Asc = 'ASC', - Desc = 'DESC' -} - -export enum IncidentSort { - InsertedAt = 'INSERTED_AT', - Severity = 'SEVERITY', - Status = 'STATUS', - Title = 'TITLE' -} - -export type IncidentConnection = { - __typename?: 'IncidentConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type IncidentEdge = { - __typename?: 'IncidentEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type InstallationConnection = { - __typename?: 'InstallationConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type InstallationEdge = { - __typename?: 'InstallationEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type IntegrationConnection = { - __typename?: 'IntegrationConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type IntegrationEdge = { - __typename?: 'IntegrationEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type Integration = { - __typename?: 'Integration'; - description?: Maybe; - icon?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - name: Scalars['String']; - publisher?: Maybe; - repository?: Maybe; - sourceUrl?: Maybe; - spec?: Maybe; - tags?: Maybe>>; - type?: Maybe; - updatedAt?: Maybe; -}; - -export type IntegrationWebhookConnection = { - __typename?: 'IntegrationWebhookConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type IntegrationWebhookEdge = { - __typename?: 'IntegrationWebhookEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type Invite = { - __typename?: 'Invite'; - account?: Maybe; - email?: Maybe; - existing: Scalars['Boolean']; - expiresAt?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - secureId?: Maybe; - updatedAt?: Maybe; - user?: Maybe; -}; - -export type InviteConnection = { - __typename?: 'InviteConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type InviteEdge = { - __typename?: 'InviteEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type KeyBackup = { - __typename?: 'KeyBackup'; - digest: Scalars['String']; - id: Scalars['ID']; - insertedAt?: Maybe; - name: Scalars['String']; - repositories?: Maybe>; - updatedAt?: Maybe; - user: User; - value: Scalars['String']; -}; - -export type KeyBackupConnection = { - __typename?: 'KeyBackupConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type KeyBackupEdge = { - __typename?: 'KeyBackupEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type LoginMethodResponse = { - __typename?: 'LoginMethodResponse'; - authorizeUrl?: Maybe; - loginMethod: LoginMethod; - token?: Maybe; -}; - -export type NotificationConnection = { - __typename?: 'NotificationConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type NotificationEdge = { - __typename?: 'NotificationEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type Notification = { - __typename?: 'Notification'; - actor: User; - id: Scalars['ID']; - incident?: Maybe; - insertedAt?: Maybe; - message?: Maybe; - msg?: Maybe; - repository?: Maybe; - type: NotificationType; - updatedAt?: Maybe; - user: User; -}; - -export enum NotificationType { - IncidentUpdate = 'INCIDENT_UPDATE', - Locked = 'LOCKED', - Mention = 'MENTION', - Message = 'MESSAGE' -} - -export type OauthIntegration = { - __typename?: 'OauthIntegration'; - account?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - service: OauthService; - updatedAt?: Maybe; -}; - -export enum OauthService { - Zoom = 'ZOOM' -} - -export type OauthInfo = { - __typename?: 'OauthInfo'; - authorizeUrl: Scalars['String']; - provider: OauthProvider; -}; - -export enum OauthProvider { - Github = 'GITHUB', - Gitlab = 'GITLAB', - Google = 'GOOGLE' -} - -export type OidcStepResponse = { - __typename?: 'OidcStepResponse'; - consent?: Maybe; - login?: Maybe; - repository?: Maybe; -}; - -export type LoginRequest = { - __typename?: 'LoginRequest'; - requestedScope?: Maybe>>; - subject?: Maybe; -}; - -export type OidcLoginConnection = { - __typename?: 'OidcLoginConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type OidcLoginEdge = { - __typename?: 'OidcLoginEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type OidcLogin = { - __typename?: 'OidcLogin'; - city?: Maybe; - country?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - ip?: Maybe; - latitude?: Maybe; - longitude?: Maybe; - owner?: Maybe; - repository?: Maybe; - updatedAt?: Maybe; - user?: Maybe; -}; - -export type PlatformMetrics = { - __typename?: 'PlatformMetrics'; - clusters?: Maybe; - publishers?: Maybe; - repositories?: Maybe; - rollouts?: Maybe; -}; - -export type PublicKeyConnection = { - __typename?: 'PublicKeyConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type PublicKeyEdge = { - __typename?: 'PublicKeyEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type PublicKey = { - __typename?: 'PublicKey'; - content: Scalars['String']; - digest: Scalars['String']; - id: Scalars['ID']; - insertedAt?: Maybe; - name: Scalars['String']; - updatedAt?: Maybe; - user: User; -}; - -export type PublisherConnection = { - __typename?: 'PublisherConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type PublisherEdge = { - __typename?: 'PublisherEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type RecipeConnection = { - __typename?: 'RecipeConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type RecipeEdge = { - __typename?: 'RecipeEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type RepositoryConnection = { - __typename?: 'RepositoryConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type RepositoryEdge = { - __typename?: 'RepositoryEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type ResetToken = { - __typename?: 'ResetToken'; - email: Scalars['String']; - externalId: Scalars['ID']; - id: Scalars['ID']; - insertedAt?: Maybe; - type: ResetTokenType; - updatedAt?: Maybe; - user: User; -}; - -export enum ResetTokenType { - Email = 'EMAIL', - Password = 'PASSWORD' -} - -export type RoleConnection = { - __typename?: 'RoleConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type RoleEdge = { - __typename?: 'RoleEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type RolloutConnection = { - __typename?: 'RolloutConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type RolloutEdge = { - __typename?: 'RolloutEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type Rollout = { - __typename?: 'Rollout'; - count?: Maybe; - cursor?: Maybe; - event?: Maybe; - heartbeat?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - repository?: Maybe; - status: RolloutStatus; - updatedAt?: Maybe; -}; - -export enum RolloutStatus { - Finished = 'FINISHED', - Queued = 'QUEUED', - Running = 'RUNNING' -} - -export type ScaffoldFile = { - __typename?: 'ScaffoldFile'; - content?: Maybe; - path?: Maybe; -}; - -export type AuthorizationUrl = { - __typename?: 'AuthorizationUrl'; - provider: ScmProvider; - url: Scalars['String']; -}; - -export enum ScmProvider { - Demo = 'DEMO', - Github = 'GITHUB', - Gitlab = 'GITLAB', - Manual = 'MANUAL' -} - -export type UserConnection = { - __typename?: 'UserConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type UserEdge = { - __typename?: 'UserEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type CloudShell = { - __typename?: 'CloudShell'; - aesKey: Scalars['String']; - alive: Scalars['Boolean']; - cluster: Scalars['String']; - gitUrl: Scalars['String']; - id: Scalars['ID']; - insertedAt?: Maybe; - missing?: Maybe>>; - provider: Provider; - region: Scalars['String']; - status?: Maybe; - subdomain: Scalars['String']; - updatedAt?: Maybe; -}; - -export type ShellStatus = { - __typename?: 'ShellStatus'; - containersReady?: Maybe; - initialized?: Maybe; - podScheduled?: Maybe; - ready?: Maybe; -}; - -export type ShellConfiguration = { - __typename?: 'ShellConfiguration'; - buckets?: Maybe>>; - contextConfiguration?: Maybe; - domains?: Maybe>>; - git?: Maybe; - workspace?: Maybe; -}; - -export type GitConfiguration = { - __typename?: 'GitConfiguration'; - branch?: Maybe; - name?: Maybe; - root?: Maybe; - url?: Maybe; -}; - -export type ShellWorkspace = { - __typename?: 'ShellWorkspace'; - bucketPrefix?: Maybe; - cluster?: Maybe; - network?: Maybe; - region?: Maybe; -}; - -export type NetworkConfiguration = { - __typename?: 'NetworkConfiguration'; - pluralDns?: Maybe; - subdomain?: Maybe; -}; - -export type Stack = { - __typename?: 'Stack'; - bundles?: Maybe>>; - collections?: Maybe>>; - community?: Maybe; - creator?: Maybe; - description?: Maybe; - displayName?: Maybe; - featured?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - name: Scalars['String']; - sections?: Maybe>>; - updatedAt?: Maybe; -}; - -export type StackCollection = { - __typename?: 'StackCollection'; - bundles?: Maybe>>; - id: Scalars['ID']; - insertedAt?: Maybe; - provider: Provider; - updatedAt?: Maybe; -}; - -export type StackRecipe = { - __typename?: 'StackRecipe'; - id: Scalars['ID']; - insertedAt?: Maybe; - recipe: Recipe; - updatedAt?: Maybe; -}; - -export type StackConnection = { - __typename?: 'StackConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type StackEdge = { - __typename?: 'StackEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type RepositorySubscriptionConnection = { - __typename?: 'RepositorySubscriptionConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type RepositorySubscriptionEdge = { - __typename?: 'RepositorySubscriptionEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export enum TagGroup { - Integrations = 'INTEGRATIONS', - Repositories = 'REPOSITORIES' -} - -export type TerraformConnection = { - __typename?: 'TerraformConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type TerraformEdge = { - __typename?: 'TerraformEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type TerraformInstallationConnection = { - __typename?: 'TerraformInstallationConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type TerraformInstallationEdge = { - __typename?: 'TerraformInstallationEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type TerraformProvider = { - __typename?: 'TerraformProvider'; - content?: Maybe; - name?: Maybe; -}; - -export type Test = { - __typename?: 'Test'; - creator?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - name?: Maybe; - promoteTag: Scalars['String']; - repository?: Maybe; - sourceTag: Scalars['String']; - status: TestStatus; - steps?: Maybe>>; - tags?: Maybe>; - updatedAt?: Maybe; -}; - -export enum TestStatus { - Failed = 'FAILED', - Queued = 'QUEUED', - Running = 'RUNNING', - Succeeded = 'SUCCEEDED' -} - -export type TestStep = { - __typename?: 'TestStep'; - description: Scalars['String']; - hasLogs?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - name: Scalars['String']; - status: TestStatus; - updatedAt?: Maybe; -}; - -export type TestConnection = { - __typename?: 'TestConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type TestEdge = { - __typename?: 'TestEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type PersistedToken = { - __typename?: 'PersistedToken'; - audits?: Maybe; - id?: Maybe; - insertedAt?: Maybe; - metrics?: Maybe>>; - token?: Maybe; - updatedAt?: Maybe; -}; - - -export type PersistedTokenAuditsArgs = { - after?: InputMaybe; - before?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; -}; - -export type PersistedTokenAuditConnection = { - __typename?: 'PersistedTokenAuditConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type PersistedTokenAuditEdge = { - __typename?: 'PersistedTokenAuditEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type PersistedTokenAudit = { - __typename?: 'PersistedTokenAudit'; - city?: Maybe; - count?: Maybe; - country?: Maybe; - id?: Maybe; - insertedAt?: Maybe; - ip?: Maybe; - latitude?: Maybe; - longitude?: Maybe; - timestamp?: Maybe; - updatedAt?: Maybe; -}; - -export type PersistedTokenConnection = { - __typename?: 'PersistedTokenConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type PersistedTokenEdge = { - __typename?: 'PersistedTokenEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type VersionConnection = { - __typename?: 'VersionConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type VersionEdge = { - __typename?: 'VersionEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type WebhookConnection = { - __typename?: 'WebhookConnection'; - edges?: Maybe>>; - pageInfo: PageInfo; -}; - -export type WebhookEdge = { - __typename?: 'WebhookEdge'; - cursor?: Maybe; - node?: Maybe; -}; - -export type Webhook = { - __typename?: 'Webhook'; - id?: Maybe; - insertedAt?: Maybe; - secret?: Maybe; - updatedAt?: Maybe; - url?: Maybe; - user?: Maybe; -}; - -export type RootMutationType = { - __typename?: 'RootMutationType'; - acceptIncident?: Maybe; - acceptLogin?: Maybe; - acquireLock?: Maybe; - cancelPlatformSubscription?: Maybe; - completeIncident?: Maybe; - createArtifact?: Maybe; - createCard?: Maybe; - /** Create a new cluster. */ - createCluster?: Maybe; - /** adds a dependency for this cluster to gate future upgrades */ - createClusterDependency?: Maybe; - createCrd?: Maybe; - createDemoProject?: Maybe; - createDnsRecord?: Maybe; - createDomain?: Maybe; - createGroup?: Maybe; - createGroupMember?: Maybe; - createIncident?: Maybe; - createInstallation?: Maybe; - createIntegration?: Maybe; - createIntegrationWebhook?: Maybe; - createInvite?: Maybe; - createKeyBackup?: Maybe; - createMessage?: Maybe; - createOauthIntegration?: Maybe; - createOidcProvider?: Maybe; - createPlan?: Maybe; - createPlatformSubscription?: Maybe; - createPublicKey?: Maybe; - createPublisher?: Maybe; - createQueue?: Maybe; - createReaction?: Maybe; - createRecipe?: Maybe; - createRepository?: Maybe; - createResetToken?: Maybe; - createRole?: Maybe; - createServiceAccount?: Maybe; - createShell?: Maybe; - createStack?: Maybe; - createSubscription?: Maybe; - createTerraform?: Maybe; - createTest?: Maybe; - createToken?: Maybe; - createUserEvent?: Maybe; - createWebhook?: Maybe; - createZoom?: Maybe; - deleteCard?: Maybe; - deleteChartInstallation?: Maybe; - /** Delete a cluster. */ - deleteCluster?: Maybe; - deleteDemoProject?: Maybe; - deleteDnsRecord?: Maybe; - deleteDomain?: Maybe; - deleteEabKey?: Maybe; - deleteGroup?: Maybe; - deleteGroupMember?: Maybe; - deleteIncident?: Maybe; - deleteInstallation?: Maybe; - deleteIntegrationWebhook?: Maybe; - deleteInvite?: Maybe; - deleteKeyBackup?: Maybe; - deleteMessage?: Maybe; - deletePlatformSubscription?: Maybe; - deletePublicKey?: Maybe; - deleteReaction?: Maybe; - deleteRecipe?: Maybe; - deleteRepository?: Maybe; - deleteRole?: Maybe; - deleteShell?: Maybe; - deleteStack?: Maybe; - deleteTerraform?: Maybe; - deleteToken?: Maybe; - deleteUser?: Maybe; - destroyCluster?: Maybe; - deviceLogin?: Maybe; - externalToken?: Maybe; - followIncident?: Maybe; - impersonateServiceAccount?: Maybe; - installBundle?: Maybe>>; - installChart?: Maybe; - installRecipe?: Maybe>>; - installStack?: Maybe>>; - installStackShell?: Maybe>>; - installTerraform?: Maybe; - linkPublisher?: Maybe; - login?: Maybe; - loginToken?: Maybe; - oauthCallback?: Maybe; - oauthConsent?: Maybe; - passwordlessLogin?: Maybe; - pingWebhook?: Maybe; - /** moves up the upgrade waterline for a user */ - promote?: Maybe; - provisionDomain?: Maybe; - publishLogs?: Maybe; - quickStack?: Maybe; - readNotifications?: Maybe; - realizeInvite?: Maybe; - realizeResetToken?: Maybe; - rebootShell?: Maybe; - releaseLock?: Maybe; - resetInstallations?: Maybe; - restartShell?: Maybe; - setupShell?: Maybe; - signup?: Maybe; - ssoCallback?: Maybe; - stopShell?: Maybe; - transferDemoProject?: Maybe; - unfollowIncident?: Maybe; - uninstallTerraform?: Maybe; - unlockRepository?: Maybe; - updateAccount?: Maybe; - updateChart?: Maybe; - updateChartInstallation?: Maybe; - updateDockerRepository?: Maybe; - updateDomain?: Maybe; - updateGroup?: Maybe; - updateIncident?: Maybe; - updateInstallation?: Maybe; - updateIntegrationWebhook?: Maybe; - updateLineItem?: Maybe; - updateMessage?: Maybe; - updateOidcProvider?: Maybe; - updatePlan?: Maybe; - updatePlanAttributes?: Maybe; - updatePlatformPlan?: Maybe; - updatePublisher?: Maybe; - updateRepository?: Maybe; - updateRole?: Maybe; - updateServiceAccount?: Maybe; - updateShell?: Maybe; - updateShellConfiguration?: Maybe; - updateStep?: Maybe; - updateTerraform?: Maybe; - updateTest?: Maybe; - updateUser?: Maybe; - updateVersion?: Maybe; - uploadTerraform?: Maybe; - upsertOidcProvider?: Maybe; - upsertRepository?: Maybe; -}; - - -export type RootMutationTypeAcceptIncidentArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeAcceptLoginArgs = { - challenge: Scalars['String']; -}; - - -export type RootMutationTypeAcquireLockArgs = { - repository: Scalars['String']; -}; - - -export type RootMutationTypeCompleteIncidentArgs = { - id: Scalars['ID']; - postmortem: PostmortemAttributes; -}; - - -export type RootMutationTypeCreateArtifactArgs = { - attributes: ArtifactAttributes; - repositoryId?: InputMaybe; - repositoryName?: InputMaybe; -}; - - -export type RootMutationTypeCreateCardArgs = { - address?: InputMaybe; - source: Scalars['String']; -}; - - -export type RootMutationTypeCreateClusterArgs = { - attributes: ClusterAttributes; -}; - - -export type RootMutationTypeCreateClusterDependencyArgs = { - destId: Scalars['ID']; - sourceId: Scalars['ID']; -}; - - -export type RootMutationTypeCreateCrdArgs = { - attributes: CrdAttributes; - chartId?: InputMaybe; - chartName?: InputMaybe; -}; - - -export type RootMutationTypeCreateDnsRecordArgs = { - attributes: DnsRecordAttributes; - cluster: Scalars['String']; - provider: Provider; -}; - - -export type RootMutationTypeCreateDomainArgs = { - attributes: DnsDomainAttributes; -}; - - -export type RootMutationTypeCreateGroupArgs = { - attributes: GroupAttributes; -}; - - -export type RootMutationTypeCreateGroupMemberArgs = { - groupId: Scalars['ID']; - userId: Scalars['ID']; -}; - - -export type RootMutationTypeCreateIncidentArgs = { - attributes: IncidentAttributes; - repository?: InputMaybe; - repositoryId?: InputMaybe; -}; - - -export type RootMutationTypeCreateInstallationArgs = { - repositoryId: Scalars['ID']; -}; - - -export type RootMutationTypeCreateIntegrationArgs = { - attributes: IntegrationAttributes; - repositoryName: Scalars['String']; -}; - - -export type RootMutationTypeCreateIntegrationWebhookArgs = { - attributes: IntegrationWebhookAttributes; -}; - - -export type RootMutationTypeCreateInviteArgs = { - attributes: InviteAttributes; -}; - - -export type RootMutationTypeCreateKeyBackupArgs = { - attributes: KeyBackupAttributes; -}; - - -export type RootMutationTypeCreateMessageArgs = { - attributes: IncidentMessageAttributes; - incidentId: Scalars['ID']; -}; - - -export type RootMutationTypeCreateOauthIntegrationArgs = { - attributes: OauthAttributes; -}; - - -export type RootMutationTypeCreateOidcProviderArgs = { - attributes: OidcAttributes; - installationId: Scalars['ID']; -}; - - -export type RootMutationTypeCreatePlanArgs = { - attributes: PlanAttributes; - repositoryId: Scalars['ID']; -}; - - -export type RootMutationTypeCreatePlatformSubscriptionArgs = { - planId: Scalars['ID']; -}; - - -export type RootMutationTypeCreatePublicKeyArgs = { - attributes: PublicKeyAttributes; -}; - - -export type RootMutationTypeCreatePublisherArgs = { - attributes: PublisherAttributes; -}; - - -export type RootMutationTypeCreateQueueArgs = { - attributes: UpgradeQueueAttributes; -}; - - -export type RootMutationTypeCreateReactionArgs = { - messageId: Scalars['ID']; - name: Scalars['String']; -}; - - -export type RootMutationTypeCreateRecipeArgs = { - attributes: RecipeAttributes; - repositoryId?: InputMaybe; - repositoryName?: InputMaybe; -}; - - -export type RootMutationTypeCreateRepositoryArgs = { - attributes: RepositoryAttributes; - id?: InputMaybe; -}; - - -export type RootMutationTypeCreateResetTokenArgs = { - attributes: ResetTokenAttributes; -}; - - -export type RootMutationTypeCreateRoleArgs = { - attributes: RoleAttributes; -}; - - -export type RootMutationTypeCreateServiceAccountArgs = { - attributes: ServiceAccountAttributes; -}; - - -export type RootMutationTypeCreateShellArgs = { - attributes: CloudShellAttributes; -}; - - -export type RootMutationTypeCreateStackArgs = { - attributes: StackAttributes; -}; - - -export type RootMutationTypeCreateSubscriptionArgs = { - attributes?: InputMaybe; - installationId: Scalars['ID']; - planId: Scalars['ID']; -}; - - -export type RootMutationTypeCreateTerraformArgs = { - attributes: TerraformAttributes; - repositoryId: Scalars['ID']; -}; - - -export type RootMutationTypeCreateTestArgs = { - attributes: TestAttributes; - name?: InputMaybe; - repositoryId?: InputMaybe; -}; - - -export type RootMutationTypeCreateUserEventArgs = { - attributes: UserEventAttributes; -}; - - -export type RootMutationTypeCreateWebhookArgs = { - attributes: WebhookAttributes; -}; - - -export type RootMutationTypeCreateZoomArgs = { - attributes: MeetingAttributes; -}; - - -export type RootMutationTypeDeleteCardArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteChartInstallationArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteClusterArgs = { - name: Scalars['String']; - provider: Provider; -}; - - -export type RootMutationTypeDeleteDnsRecordArgs = { - name: Scalars['String']; - type: DnsRecordType; -}; - - -export type RootMutationTypeDeleteDomainArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteEabKeyArgs = { - cluster?: InputMaybe; - id?: InputMaybe; - provider?: InputMaybe; -}; - - -export type RootMutationTypeDeleteGroupArgs = { - groupId: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteGroupMemberArgs = { - groupId: Scalars['ID']; - userId: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteIncidentArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteInstallationArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteIntegrationWebhookArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteInviteArgs = { - id?: InputMaybe; - secureId?: InputMaybe; -}; - - -export type RootMutationTypeDeleteKeyBackupArgs = { - name: Scalars['String']; -}; - - -export type RootMutationTypeDeleteMessageArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDeletePublicKeyArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteReactionArgs = { - messageId: Scalars['ID']; - name: Scalars['String']; -}; - - -export type RootMutationTypeDeleteRecipeArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteRepositoryArgs = { - repositoryId: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteRoleArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteStackArgs = { - name: Scalars['String']; -}; - - -export type RootMutationTypeDeleteTerraformArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteTokenArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDeleteUserArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeDestroyClusterArgs = { - domain: Scalars['String']; - name: Scalars['String']; - provider: Provider; -}; - - -export type RootMutationTypeFollowIncidentArgs = { - attributes: FollowerAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeImpersonateServiceAccountArgs = { - email?: InputMaybe; - id?: InputMaybe; -}; - - -export type RootMutationTypeInstallBundleArgs = { - context: ContextAttributes; - name: Scalars['String']; - oidc: Scalars['Boolean']; - repo: Scalars['String']; -}; - - -export type RootMutationTypeInstallChartArgs = { - attributes: ChartInstallationAttributes; - installationId: Scalars['ID']; -}; - - -export type RootMutationTypeInstallRecipeArgs = { - context: Scalars['Map']; - recipeId: Scalars['ID']; -}; - - -export type RootMutationTypeInstallStackArgs = { - name: Scalars['String']; - provider: Provider; -}; - - -export type RootMutationTypeInstallStackShellArgs = { - context: ContextAttributes; - name: Scalars['String']; - oidc: Scalars['Boolean']; -}; - - -export type RootMutationTypeInstallTerraformArgs = { - attributes: TerraformInstallationAttributes; - installationId: Scalars['ID']; -}; - - -export type RootMutationTypeLinkPublisherArgs = { - token: Scalars['String']; -}; - - -export type RootMutationTypeLoginArgs = { - deviceToken?: InputMaybe; - email: Scalars['String']; - password: Scalars['String']; -}; - - -export type RootMutationTypeLoginTokenArgs = { - deviceToken?: InputMaybe; - token: Scalars['String']; -}; - - -export type RootMutationTypeOauthCallbackArgs = { - code: Scalars['String']; - deviceToken?: InputMaybe; - host?: InputMaybe; - provider: OauthProvider; -}; - - -export type RootMutationTypeOauthConsentArgs = { - challenge: Scalars['String']; - scopes?: InputMaybe>>; -}; - - -export type RootMutationTypePasswordlessLoginArgs = { - token: Scalars['String']; -}; - - -export type RootMutationTypePingWebhookArgs = { - id: Scalars['ID']; - message?: InputMaybe; - repo: Scalars['String']; -}; - - -export type RootMutationTypeProvisionDomainArgs = { - name: Scalars['String']; -}; - - -export type RootMutationTypePublishLogsArgs = { - id: Scalars['ID']; - logs: Scalars['String']; -}; - - -export type RootMutationTypeQuickStackArgs = { - provider: Provider; - repositoryIds?: InputMaybe>>; -}; - - -export type RootMutationTypeReadNotificationsArgs = { - incidentId?: InputMaybe; -}; - - -export type RootMutationTypeRealizeInviteArgs = { - id: Scalars['String']; -}; - - -export type RootMutationTypeRealizeResetTokenArgs = { - attributes: ResetTokenRealization; - id: Scalars['ID']; -}; - - -export type RootMutationTypeReleaseLockArgs = { - attributes: LockAttributes; - repository: Scalars['String']; -}; - - -export type RootMutationTypeSignupArgs = { - account?: InputMaybe; - attributes: UserAttributes; - deviceToken?: InputMaybe; - inviteId?: InputMaybe; -}; - - -export type RootMutationTypeSsoCallbackArgs = { - code: Scalars['String']; - deviceToken?: InputMaybe; -}; - - -export type RootMutationTypeTransferDemoProjectArgs = { - organizationId: Scalars['String']; -}; - - -export type RootMutationTypeUnfollowIncidentArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeUninstallTerraformArgs = { - id: Scalars['ID']; -}; - - -export type RootMutationTypeUnlockRepositoryArgs = { - name: Scalars['String']; -}; - - -export type RootMutationTypeUpdateAccountArgs = { - attributes: AccountAttributes; -}; - - -export type RootMutationTypeUpdateChartArgs = { - attributes: ChartAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateChartInstallationArgs = { - attributes: ChartInstallationAttributes; - chartInstallationId: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateDockerRepositoryArgs = { - attributes: DockerRepositoryAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateDomainArgs = { - attributes: DnsDomainAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateGroupArgs = { - attributes: GroupAttributes; - groupId: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateIncidentArgs = { - attributes: IncidentAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateInstallationArgs = { - attributes: InstallationAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateIntegrationWebhookArgs = { - attributes: IntegrationWebhookAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateLineItemArgs = { - attributes: LimitAttributes; - subscriptionId: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateMessageArgs = { - attributes: IncidentMessageAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateOidcProviderArgs = { - attributes: OidcAttributes; - installationId: Scalars['ID']; -}; - - -export type RootMutationTypeUpdatePlanArgs = { - planId: Scalars['ID']; - subscriptionId: Scalars['ID']; -}; - - -export type RootMutationTypeUpdatePlanAttributesArgs = { - attributes: UpdatablePlanAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdatePlatformPlanArgs = { - planId: Scalars['ID']; -}; - - -export type RootMutationTypeUpdatePublisherArgs = { - attributes: PublisherAttributes; -}; - - -export type RootMutationTypeUpdateRepositoryArgs = { - attributes: RepositoryAttributes; - repositoryId?: InputMaybe; - repositoryName?: InputMaybe; -}; - - -export type RootMutationTypeUpdateRoleArgs = { - attributes: RoleAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateServiceAccountArgs = { - attributes: ServiceAccountAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateShellArgs = { - attributes: CloudShellAttributes; -}; - - -export type RootMutationTypeUpdateShellConfigurationArgs = { - context: Scalars['Map']; -}; - - -export type RootMutationTypeUpdateStepArgs = { - attributes: TestStepAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateTerraformArgs = { - attributes: TerraformAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateTestArgs = { - attributes: TestAttributes; - id: Scalars['ID']; -}; - - -export type RootMutationTypeUpdateUserArgs = { - attributes: UserAttributes; - id?: InputMaybe; -}; - - -export type RootMutationTypeUpdateVersionArgs = { - attributes: VersionAttributes; - id?: InputMaybe; - spec?: InputMaybe; -}; - - -export type RootMutationTypeUploadTerraformArgs = { - attributes: TerraformAttributes; - name: Scalars['String']; - repositoryName: Scalars['String']; -}; - - -export type RootMutationTypeUpsertOidcProviderArgs = { - attributes: OidcAttributes; - installationId: Scalars['ID']; -}; - - -export type RootMutationTypeUpsertRepositoryArgs = { - attributes: RepositoryAttributes; - name: Scalars['String']; - publisher: Scalars['String']; -}; - -export type OauthResponse = { - __typename?: 'OauthResponse'; - redirectTo: Scalars['String']; -}; - -export type ApplyLock = { - __typename?: 'ApplyLock'; - id: Scalars['ID']; - insertedAt?: Maybe; - lock?: Maybe; - owner?: Maybe; - repository?: Maybe; - updatedAt?: Maybe; -}; - -export type PostmortemAttributes = { - actionItems?: InputMaybe>>; - content: Scalars['String']; -}; - -export type ActionItemAttributes = { - link: Scalars['String']; - type: ActionItemType; -}; - -export type ArtifactAttributes = { - arch?: InputMaybe; - blob?: InputMaybe; - name: Scalars['String']; - platform: Scalars['String']; - readme: Scalars['String']; - type: Scalars['String']; -}; - -export type AddressAttributes = { - city: Scalars['String']; - country: Scalars['String']; - line1: Scalars['String']; - line2: Scalars['String']; - name?: InputMaybe; - state: Scalars['String']; - zip: Scalars['String']; -}; - -/** Input for creating or updating a cluster. */ -export type ClusterAttributes = { - /** The URL of the console running on the cluster. */ - consoleUrl?: InputMaybe; - /** The domain name used for applications deployed on the cluster. */ - domain?: InputMaybe; - /** The git repository URL for the cluster. */ - gitUrl?: InputMaybe; - /** The name of the cluster. */ - name: Scalars['String']; - /** The cluster's cloud provider. */ - provider: Provider; - /** The source of the cluster. */ - source?: InputMaybe; -}; - -/** A dependncy reference between clusters */ -export type ClusterDependency = { - __typename?: 'ClusterDependency'; - /** the cluster holding this dependency */ - cluster?: Maybe; - /** the source cluster of this dependency */ - dependency?: Maybe; - id: Scalars['ID']; - insertedAt?: Maybe; - updatedAt?: Maybe; -}; - -export type CrdAttributes = { - blob?: InputMaybe; - name: Scalars['String']; -}; - -export type ChartName = { - chart?: InputMaybe; - repo?: InputMaybe; -}; - -export type DnsRecordAttributes = { - name: Scalars['String']; - records?: InputMaybe>>; - type: DnsRecordType; -}; - -export type DnsDomainAttributes = { - accessPolicy?: InputMaybe; - name?: InputMaybe; -}; - -export type DnsAccessPolicyAttributes = { - bindings?: InputMaybe>>; - id?: InputMaybe; -}; - -export type BindingAttributes = { - groupId?: InputMaybe; - id?: InputMaybe; - userId?: InputMaybe; -}; - -export type GroupAttributes = { - description?: InputMaybe; - global?: InputMaybe; - name: Scalars['String']; -}; - -export type IncidentAttributes = { - clusterInformation?: InputMaybe; - description?: InputMaybe; - severity?: InputMaybe; - status?: InputMaybe; - tags?: InputMaybe>>; - title?: InputMaybe; -}; - -export type ClusterInformationAttributes = { - gitCommit?: InputMaybe; - platform?: InputMaybe; - version?: InputMaybe; -}; - -export type TagAttributes = { - tag: Scalars['String']; -}; - -export type IntegrationAttributes = { - description?: InputMaybe; - icon?: InputMaybe; - name: Scalars['String']; - sourceUrl?: InputMaybe; - spec?: InputMaybe; - tags?: InputMaybe>>; - type?: InputMaybe; -}; - -export type IntegrationWebhookAttributes = { - actions?: InputMaybe>>; - name: Scalars['String']; - url: Scalars['String']; -}; - -export type InviteAttributes = { - email?: InputMaybe; -}; - -export type KeyBackupAttributes = { - key: Scalars['String']; - name: Scalars['String']; - repositories?: InputMaybe>>; -}; - -export type IncidentMessageAttributes = { - entities?: InputMaybe>>; - file?: InputMaybe; - text: Scalars['String']; -}; - -export type EntityAttributes = { - endIndex?: InputMaybe; - startIndex?: InputMaybe; - text?: InputMaybe; - type: MessageEntityType; - userId?: InputMaybe; -}; - -export type FileAttributes = { - blob?: InputMaybe; -}; - -export type OauthAttributes = { - code?: InputMaybe; - redirectUri?: InputMaybe; - service?: InputMaybe; -}; - -/** Input for creating or updating the OIDC attributes of an application installation. */ -export type OidcAttributes = { - /** The authentication method for the OIDC provider. */ - authMethod: OidcAuthMethod; - /** The users or groups that can login through the OIDC provider. */ - bindings?: InputMaybe>>; - /** The redirect URIs for the OIDC provider. */ - redirectUris?: InputMaybe>>; -}; - -export type PlanAttributes = { - cost: Scalars['Int']; - default?: InputMaybe; - lineItems?: InputMaybe; - metadata?: InputMaybe; - name: Scalars['String']; - period: Scalars['String']; - serviceLevels?: InputMaybe>>; -}; - -export type PlanLineItemAttributes = { - included?: InputMaybe>>; - items?: InputMaybe>>; -}; - -export type LimitAttributes = { - dimension: Scalars['String']; - quantity: Scalars['Int']; -}; - -export type LineItemAttributes = { - cost: Scalars['Int']; - dimension: Scalars['String']; - name: Scalars['String']; - period: Scalars['String']; - type?: InputMaybe; -}; - -export type PlanMetadataAttributes = { - features?: InputMaybe>>; - freeform?: InputMaybe; -}; - -export type PlanFeatureAttributes = { - description: Scalars['String']; - name: Scalars['String']; -}; - -export type ServiceLevelAttributes = { - maxSeverity?: InputMaybe; - minSeverity?: InputMaybe; - responseTime?: InputMaybe; -}; - -export type PublicKeyAttributes = { - content: Scalars['String']; - name: Scalars['String']; -}; - -export type PublisherAttributes = { - address?: InputMaybe; - avatar?: InputMaybe; - community?: InputMaybe; - description?: InputMaybe; - name?: InputMaybe; - phone?: InputMaybe; -}; - -/** Input for creating or updating the community links of an application. */ -export type CommunityAttributes = { - /** The application's Discord server. */ - discord?: InputMaybe; - /** The application's git URL. */ - gitUrl?: InputMaybe; - /** The application's homepage. */ - homepage?: InputMaybe; - /** The application's Slack channel. */ - slack?: InputMaybe; - /** The application's Twitter account. */ - twitter?: InputMaybe; - /** The videos of the application. */ - videos?: InputMaybe>>; -}; - -export type UpgradeQueueAttributes = { - domain?: InputMaybe; - git?: InputMaybe; - name: Scalars['String']; - provider?: InputMaybe; -}; - -export type RecipeAttributes = { - dependencies?: InputMaybe>>; - description?: InputMaybe; - name: Scalars['String']; - oidcSettings?: InputMaybe; - primary?: InputMaybe; - private?: InputMaybe; - provider?: InputMaybe; - restricted?: InputMaybe; - sections?: InputMaybe>>; - tests?: InputMaybe>>; -}; - -export type RecipeReference = { - name: Scalars['String']; - repo: Scalars['String']; -}; - -export type OidcSettingsAttributes = { - authMethod: OidcAuthMethod; - domainKey?: InputMaybe; - subdomain?: InputMaybe; - uriFormat?: InputMaybe; - uriFormats?: InputMaybe>>; -}; - -export type RecipeSectionAttributes = { - configuration?: InputMaybe>>; - items?: InputMaybe>>; - name: Scalars['String']; -}; - -export type RecipeConfigurationAttributes = { - condition?: InputMaybe; - default?: InputMaybe; - documentation?: InputMaybe; - functionName?: InputMaybe; - longform?: InputMaybe; - name: Scalars['String']; - optional?: InputMaybe; - placeholder?: InputMaybe; - type: Datatype; - validation?: InputMaybe; -}; - -export type RecipeConditionAttributes = { - field: Scalars['String']; - operation: Operation; - value?: InputMaybe; -}; - -export type RecipeValidationAttributes = { - message: Scalars['String']; - regex?: InputMaybe; - type: ValidationType; -}; - -export type RecipeItemAttributes = { - configuration?: InputMaybe>>; - name: Scalars['String']; - type: RecipeItemType; -}; - -export enum RecipeItemType { - Helm = 'HELM', - Terraform = 'TERRAFORM' -} - -export type RecipeTestAttributes = { - args?: InputMaybe>>; - message?: InputMaybe; - name: Scalars['String']; - type: TestType; -}; - -export type TestArgumentAttributes = { - key: Scalars['String']; - name: Scalars['String']; - repo: Scalars['String']; -}; - -/** Input for creating or updating an application's attributes. */ -export type RepositoryAttributes = { - /** The category of the application. */ - category?: InputMaybe; - /** The application's community links. */ - community?: InputMaybe; - /** The application's dark icon. */ - darkIcon?: InputMaybe; - /** The default tag to use when deploying the application. */ - defaultTag?: InputMaybe; - /** A short description of the application. */ - description?: InputMaybe; - /** The application's documentation. */ - docs?: InputMaybe; - /** A link to the application's documentation. */ - documentation?: InputMaybe; - /** The application's git URL. */ - gitUrl?: InputMaybe; - /** The application's homepage. */ - homepage?: InputMaybe; - /** The application's icon. */ - icon?: InputMaybe; - /** The application's integration resource definition. */ - integrationResourceDefinition?: InputMaybe; - /** The name of the application. */ - name?: InputMaybe; - /** Notes about the application rendered after deploying and displayed to the user. */ - notes?: InputMaybe; - /** The application's OAuth settings. */ - oauthSettings?: InputMaybe; - /** Whether the application is private. */ - private?: InputMaybe; - /** The application's README. */ - readme?: InputMaybe; - /** A YAML object of secrets. */ - secrets?: InputMaybe; - /** The application's tags. */ - tags?: InputMaybe>>; - /** Whether the application is trending. */ - trending?: InputMaybe; - /** Whether the application is verified. */ - verified?: InputMaybe; -}; - -export type ResourceDefinitionAttributes = { - name: Scalars['String']; - spec?: InputMaybe>>; -}; - -export type SpecificationAttributes = { - inner?: InputMaybe; - name: Scalars['String']; - required?: InputMaybe; - spec?: InputMaybe>>; - type: SpecDatatype; -}; - -export enum SpecDatatype { - Bool = 'BOOL', - Float = 'FLOAT', - Int = 'INT', - List = 'LIST', - Object = 'OBJECT', - String = 'STRING' -} - -/** Input for the application's OAuth settings. */ -export type OauthSettingsAttributes = { - /** The authentication method for the OAuth provider. */ - authMethod: OidcAuthMethod; - /** The URI format for the OAuth provider. */ - uriFormat: Scalars['String']; -}; - -export type ResetTokenAttributes = { - email?: InputMaybe; - type: ResetTokenType; -}; - -export type RoleAttributes = { - description?: InputMaybe; - name?: InputMaybe; - permissions?: InputMaybe>>; - repositories?: InputMaybe>>; - roleBindings?: InputMaybe>>; -}; - -export type ServiceAccountAttributes = { - email?: InputMaybe; - impersonationPolicy?: InputMaybe; - name?: InputMaybe; -}; - -export type ImpersonationPolicyAttributes = { - bindings?: InputMaybe>>; - id?: InputMaybe; -}; - -export type ImpersonationPolicyBindingAttributes = { - groupId?: InputMaybe; - id?: InputMaybe; - userId?: InputMaybe; -}; - -export type CloudShellAttributes = { - credentials: ShellCredentialsAttributes; - demoId?: InputMaybe; - provider?: InputMaybe; - scm?: InputMaybe; - workspace: WorkspaceAttributes; -}; - -export type ShellCredentialsAttributes = { - aws?: InputMaybe; - azure?: InputMaybe; - gcp?: InputMaybe; -}; - -export type AwsShellCredentialsAttributes = { - accessKeyId: Scalars['String']; - secretAccessKey: Scalars['String']; -}; - -export type AzureShellCredentialsAttributes = { - clientId: Scalars['String']; - clientSecret: Scalars['String']; - storageAccount: Scalars['String']; - subscriptionId: Scalars['String']; - tenantId: Scalars['String']; -}; - -export type GcpShellCredentialsAttributes = { - applicationCredentials: Scalars['String']; -}; - -export type ScmAttributes = { - gitUrl?: InputMaybe; - name?: InputMaybe; - org?: InputMaybe; - privateKey?: InputMaybe; - provider?: InputMaybe; - publicKey?: InputMaybe; - token?: InputMaybe; -}; - -export type WorkspaceAttributes = { - bucketPrefix: Scalars['String']; - cluster: Scalars['String']; - project?: InputMaybe; - region: Scalars['String']; - subdomain: Scalars['String']; -}; - -export type StackAttributes = { - collections?: InputMaybe>>; - community?: InputMaybe; - description?: InputMaybe; - displayName?: InputMaybe; - featured?: InputMaybe; - name: Scalars['String']; -}; - -export type StackCollectionAttributes = { - bundles?: InputMaybe>>; - provider: Provider; -}; - -export type SubscriptionAttributes = { - lineItems?: InputMaybe; -}; - -export type SubscriptionLineItemAttributes = { - items?: InputMaybe>>; -}; - -export type TerraformAttributes = { - dependencies?: InputMaybe; - description?: InputMaybe; - name?: InputMaybe; - package?: InputMaybe; - version?: InputMaybe; -}; - -export type TestAttributes = { - name?: InputMaybe; - promoteTag?: InputMaybe; - status?: InputMaybe; - steps?: InputMaybe>>; - tags?: InputMaybe>>; -}; - -export type TestStepAttributes = { - description?: InputMaybe; - id?: InputMaybe; - logs?: InputMaybe; - name?: InputMaybe; - status?: InputMaybe; -}; - -export type UserEventAttributes = { - data?: InputMaybe; - event: Scalars['String']; - status?: InputMaybe; -}; - -export enum UserEventStatus { - Error = 'ERROR', - Ok = 'OK' -} - -export type WebhookAttributes = { - url: Scalars['String']; -}; - -export type MeetingAttributes = { - incidentId?: InputMaybe; - topic: Scalars['String']; -}; - -export type ZoomMeeting = { - __typename?: 'ZoomMeeting'; - joinUrl: Scalars['String']; - password?: Maybe; -}; - -export type DeviceLogin = { - __typename?: 'DeviceLogin'; - deviceToken: Scalars['String']; - loginUrl: Scalars['String']; -}; - -export type FollowerAttributes = { - preferences?: InputMaybe; -}; - -export type NotificationPreferencesAttributes = { - incidentUpdate: Scalars['Boolean']; - mention: Scalars['Boolean']; - message: Scalars['Boolean']; -}; - -export type ContextAttributes = { - buckets?: InputMaybe>>; - configuration: Scalars['Map']; - domains?: InputMaybe>>; -}; - -export type ChartInstallationAttributes = { - chartId?: InputMaybe; - versionId?: InputMaybe; -}; - -export type TerraformInstallationAttributes = { - terraformId?: InputMaybe; - versionId?: InputMaybe; -}; - -export type WebhookResponse = { - __typename?: 'WebhookResponse'; - body?: Maybe; - headers?: Maybe; - statusCode: Scalars['Int']; -}; - -export type ResetTokenRealization = { - password?: InputMaybe; -}; - -export type LockAttributes = { - lock: Scalars['String']; -}; - -export type AccountAttributes = { - billingAddress?: InputMaybe; - domainMappings?: InputMaybe>>; - icon?: InputMaybe; - name?: InputMaybe; -}; - -export type DomainMappingInput = { - domain?: InputMaybe; - enableSso?: InputMaybe; - id?: InputMaybe; -}; - -export type UserAttributes = { - avatar?: InputMaybe; - confirm?: InputMaybe; - email?: InputMaybe; - loginMethod?: InputMaybe; - name?: InputMaybe; - onboarding?: InputMaybe; - onboardingChecklist?: InputMaybe; - password?: InputMaybe; - roles?: InputMaybe; -}; - -export type OnboardingChecklistAttributes = { - dismissed?: InputMaybe; - status?: InputMaybe; -}; - -export type RolesAttributes = { - admin?: InputMaybe; -}; - -export type ChartAttributes = { - tags?: InputMaybe>>; -}; - -export type VersionTagAttributes = { - tag: Scalars['String']; - versionId?: InputMaybe; -}; - -export type DockerRepositoryAttributes = { - public: Scalars['Boolean']; -}; - -/** Input for creating or updating the tag attributes of an application installation. */ -export type InstallationAttributes = { - /** Whether the application should auto upgrade. */ - autoUpgrade?: InputMaybe; - /** A YAML object of context. */ - context?: InputMaybe; - /** The tag to track for auto upgrades. */ - trackTag?: InputMaybe; -}; - -export type UpdatablePlanAttributes = { - default?: InputMaybe; - serviceLevels?: InputMaybe>>; -}; - -export type VersionAttributes = { - tags?: InputMaybe>>; -}; - -export type VersionSpec = { - chart?: InputMaybe; - repository?: InputMaybe; - terraform?: InputMaybe; - version?: InputMaybe; -}; - -export type RootSubscriptionType = { - __typename?: 'RootSubscriptionType'; - incidentDelta?: Maybe; - incidentMessageDelta?: Maybe; - notification?: Maybe; - rolloutDelta?: Maybe; - testDelta?: Maybe; - testLogs?: Maybe; - upgrade?: Maybe; - upgradeQueueDelta?: Maybe; -}; - - -export type RootSubscriptionTypeIncidentDeltaArgs = { - incidentId?: InputMaybe; - repositoryId?: InputMaybe; -}; - - -export type RootSubscriptionTypeIncidentMessageDeltaArgs = { - incidentId?: InputMaybe; -}; - - -export type RootSubscriptionTypeRolloutDeltaArgs = { - repositoryId: Scalars['ID']; -}; - - -export type RootSubscriptionTypeTestDeltaArgs = { - repositoryId: Scalars['ID']; -}; - - -export type RootSubscriptionTypeTestLogsArgs = { - testId: Scalars['ID']; -}; - - -export type RootSubscriptionTypeUpgradeArgs = { - id?: InputMaybe; -}; - -export type IncidentDelta = { - __typename?: 'IncidentDelta'; - delta?: Maybe; - payload?: Maybe; -}; - -export enum Delta { - Create = 'CREATE', - Delete = 'DELETE', - Update = 'UPDATE' -} - -export type IncidentMessageDelta = { - __typename?: 'IncidentMessageDelta'; - delta?: Maybe; - payload?: Maybe; -}; - -export type RolloutDelta = { - __typename?: 'RolloutDelta'; - delta?: Maybe; - payload?: Maybe; -}; - -export type TestDelta = { - __typename?: 'TestDelta'; - delta?: Maybe; - payload?: Maybe; -}; - -export type StepLogs = { - __typename?: 'StepLogs'; - logs?: Maybe>>; - step?: Maybe; -}; - -export type UpgradeQueueDelta = { - __typename?: 'UpgradeQueueDelta'; - delta?: Maybe; - payload?: Maybe; -}; - -export type AuditFragment = { __typename?: 'Audit', id: string, action: string, ip?: string | null, country?: string | null, city?: string | null, latitude?: string | null, longitude?: string | null, insertedAt?: Date | null, actor?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null, integrationWebhook?: { __typename?: 'IntegrationWebhook', id: string, name: string, url: string, secret: string, actions?: Array | null } | null, role?: { __typename?: 'Role', id: string, name: string, description?: string | null, repositories?: Array | null, permissions?: Array | null, roleBindings?: Array<{ __typename?: 'RoleBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, image?: { __typename?: 'DockerImage', id: string, tag?: string | null, dockerRepository?: { __typename?: 'DockerRepository', name: string } | null } | null }; - -export type PolicyBindingFragment = { __typename?: 'PolicyBinding', id: string, group?: { __typename?: 'Group', id: string, name: string } | null, user?: { __typename?: 'User', id: string, name: string, email: string } | null }; - -export type DnsDomainFragment = { __typename?: 'DnsDomain', id: string, name: string, insertedAt?: Date | null, creator?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, accessPolicy?: { __typename?: 'DnsAccessPolicy', id: string, bindings?: Array<{ __typename?: 'PolicyBinding', id: string, group?: { __typename?: 'Group', id: string, name: string } | null, user?: { __typename?: 'User', id: string, name: string, email: string } | null } | null> | null } | null }; - -export type InviteFragment = { __typename?: 'Invite', id: string, secureId?: string | null, email?: string | null, insertedAt?: Date | null }; - -export type OidcLoginFragment = { __typename?: 'OidcLogin', ip?: string | null, country?: string | null, city?: string | null, latitude?: string | null, longitude?: string | null, insertedAt?: Date | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null }; - -export type UpdateAccountMutationVariables = Exact<{ - attributes: AccountAttributes; -}>; - - -export type UpdateAccountMutation = { __typename?: 'RootMutationType', updateAccount?: { __typename?: 'Account', id: string, name?: string | null, billingCustomerId?: string | null, backgroundColor?: string | null, domainMappings?: Array<{ __typename?: 'DomainMapping', id: string, domain: string, enableSso?: boolean | null } | null> | null } | null }; - -export type ArtifactFragment = { __typename?: 'Artifact', id?: string | null, name?: string | null, blob?: string | null, type?: ArtifactType | null, platform?: ArtifactPlatform | null, arch?: string | null, filesize?: number | null, sha?: string | null, readme?: string | null, insertedAt?: Date | null, updatedAt?: Date | null }; - -export type ListArtifactsQueryVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type ListArtifactsQuery = { __typename?: 'RootQueryType', repository?: { __typename?: 'Repository', artifacts?: Array<{ __typename?: 'Artifact', id?: string | null, name?: string | null, blob?: string | null, type?: ArtifactType | null, platform?: ArtifactPlatform | null, arch?: string | null, filesize?: number | null, sha?: string | null, readme?: string | null, insertedAt?: Date | null, updatedAt?: Date | null } | null> | null } | null }; - -export type CreateArtifactMutationVariables = Exact<{ - repoName: Scalars['String']; - name: Scalars['String']; - readme: Scalars['String']; - artifactType: Scalars['String']; - platform: Scalars['String']; - blob: Scalars['UploadOrUrl']; - arch?: InputMaybe; -}>; - - -export type CreateArtifactMutation = { __typename?: 'RootMutationType', createArtifact?: { __typename?: 'Artifact', id?: string | null, name?: string | null, blob?: string | null, type?: ArtifactType | null, platform?: ArtifactPlatform | null, arch?: string | null, filesize?: number | null, sha?: string | null, readme?: string | null, insertedAt?: Date | null, updatedAt?: Date | null } | null }; - -export type ChartFragment = { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null }; - -export type CrdFragment = { __typename?: 'Crd', id: string, name: string, blob?: string | null }; - -export type ChartInstallationFragment = { __typename?: 'ChartInstallation', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null }; - -export type ScanViolationFragment = { __typename?: 'ScanViolation', ruleName?: string | null, description?: string | null, ruleId?: string | null, severity?: VulnGrade | null, category?: string | null, resourceName?: string | null, resourceType?: string | null, file?: string | null, line?: number | null }; - -export type ScanErrorFragment = { __typename?: 'ScanError', message?: string | null }; - -export type PackageScanFragment = { __typename?: 'PackageScan', id: string, grade?: ImageGrade | null, violations?: Array<{ __typename?: 'ScanViolation', ruleName?: string | null, description?: string | null, ruleId?: string | null, severity?: VulnGrade | null, category?: string | null, resourceName?: string | null, resourceType?: string | null, file?: string | null, line?: number | null } | null> | null, errors?: Array<{ __typename?: 'ScanError', message?: string | null } | null> | null }; - -export type GetChartsQueryVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type GetChartsQuery = { __typename?: 'RootQueryType', charts?: { __typename?: 'ChartConnection', edges?: Array<{ __typename?: 'ChartEdge', node?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null> | null } | null }; - -export type GetVersionsQueryVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type GetVersionsQuery = { __typename?: 'RootQueryType', versions?: { __typename?: 'VersionConnection', edges?: Array<{ __typename?: 'VersionEdge', node?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null> | null } | null }; - -export type GetChartInstallationsQueryVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type GetChartInstallationsQuery = { __typename?: 'RootQueryType', chartInstallations?: { __typename?: 'ChartInstallationConnection', edges?: Array<{ __typename?: 'ChartInstallationEdge', node?: { __typename?: 'ChartInstallation', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null } | null> | null } | null }; - -export type GetPackageInstallationsQueryVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type GetPackageInstallationsQuery = { __typename?: 'RootQueryType', chartInstallations?: { __typename?: 'ChartInstallationConnection', edges?: Array<{ __typename?: 'ChartInstallationEdge', node?: { __typename?: 'ChartInstallation', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null } | null> | null } | null, terraformInstallations?: { __typename?: 'TerraformInstallationConnection', edges?: Array<{ __typename?: 'TerraformInstallationEdge', node?: { __typename?: 'TerraformInstallation', id?: string | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null } | null> | null } | null }; - -export type CreateCrdMutationVariables = Exact<{ - chartName: ChartName; - name: Scalars['String']; - blob: Scalars['UploadOrUrl']; -}>; - - -export type CreateCrdMutation = { __typename?: 'RootMutationType', createCrd?: { __typename?: 'Crd', id: string } | null }; - -export type UninstallChartMutationVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type UninstallChartMutation = { __typename?: 'RootMutationType', deleteChartInstallation?: { __typename?: 'ChartInstallation', id?: string | null } | null }; - -export type DnsRecordFragment = { __typename?: 'DnsRecord', id: string, name: string, type: DnsRecordType, records?: Array | null, cluster: string, provider: Provider, insertedAt?: Date | null, creator?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null }; - -export type GetDnsRecordsQueryVariables = Exact<{ - cluster: Scalars['String']; - provider: Provider; -}>; - - -export type GetDnsRecordsQuery = { __typename?: 'RootQueryType', dnsRecords?: { __typename?: 'DnsRecordConnection', edges?: Array<{ __typename?: 'DnsRecordEdge', node?: { __typename?: 'DnsRecord', id: string, name: string, type: DnsRecordType, records?: Array | null, cluster: string, provider: Provider, insertedAt?: Date | null, creator?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null } | null> | null } | null }; - -export type CreateDnsRecordMutationVariables = Exact<{ - cluster: Scalars['String']; - provider: Provider; - attributes: DnsRecordAttributes; -}>; - - -export type CreateDnsRecordMutation = { __typename?: 'RootMutationType', createDnsRecord?: { __typename?: 'DnsRecord', id: string, name: string, type: DnsRecordType, records?: Array | null, cluster: string, provider: Provider, insertedAt?: Date | null, creator?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null }; - -export type DeleteDnsRecordMutationVariables = Exact<{ - name: Scalars['String']; - type: DnsRecordType; -}>; - - -export type DeleteDnsRecordMutation = { __typename?: 'RootMutationType', deleteDnsRecord?: { __typename?: 'DnsRecord', id: string, name: string, type: DnsRecordType, records?: Array | null, cluster: string, provider: Provider, insertedAt?: Date | null, creator?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null }; - -export type DockerRepoFragment = { __typename?: 'DockerRepository', id: string, name: string, public?: boolean | null, insertedAt?: Date | null, updatedAt?: Date | null, repository?: { __typename?: 'Repository', id: string, name: string } | null }; - -export type DockerRepositoryFragment = { __typename?: 'DockerRepository', id: string, name: string, public?: boolean | null, insertedAt?: Date | null, updatedAt?: Date | null, repository?: { __typename?: 'Repository', id: string, name: string, editable?: boolean | null } | null }; - -export type DockerImageFragment = { __typename?: 'DockerImage', id: string, tag?: string | null, digest: string, scannedAt?: Date | null, grade?: ImageGrade | null, insertedAt?: Date | null, updatedAt?: Date | null }; - -export type VulnerabilityFragment = { __typename?: 'Vulnerability', id: string, title?: string | null, description?: string | null, vulnerabilityId?: string | null, package?: string | null, installedVersion?: string | null, fixedVersion?: string | null, source?: string | null, url?: string | null, severity?: VulnGrade | null, score?: number | null, cvss?: { __typename?: 'Cvss', attackVector?: VulnVector | null, attackComplexity?: VulnGrade | null, privilegesRequired?: VulnGrade | null, userInteraction?: VulnRequirement | null, confidentiality?: VulnGrade | null, integrity?: VulnGrade | null, availability?: VulnGrade | null } | null, layer?: { __typename?: 'ImageLayer', digest?: string | null, diffId?: string | null } | null }; - -export type CreateDomainMutationVariables = Exact<{ - name: Scalars['String']; -}>; - - -export type CreateDomainMutation = { __typename?: 'RootMutationType', provisionDomain?: { __typename?: 'DnsDomain', id: string, name: string, insertedAt?: Date | null, creator?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, accessPolicy?: { __typename?: 'DnsAccessPolicy', id: string, bindings?: Array<{ __typename?: 'PolicyBinding', id: string, group?: { __typename?: 'Group', id: string, name: string } | null, user?: { __typename?: 'User', id: string, name: string, email: string } | null } | null> | null } | null } | null }; - -export type GroupMembersQueryVariables = Exact<{ - cursor?: InputMaybe; - id: Scalars['ID']; -}>; - - -export type GroupMembersQuery = { __typename?: 'RootQueryType', groupMembers?: { __typename?: 'GroupMemberConnection', pageInfo: { __typename?: 'PageInfo', endCursor?: string | null, hasNextPage: boolean }, edges?: Array<{ __typename?: 'GroupMemberEdge', node?: { __typename?: 'GroupMember', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null } | null> | null } | null }; - -export type CreateGroupMemberMutationVariables = Exact<{ - groupId: Scalars['ID']; - userId: Scalars['ID']; -}>; - - -export type CreateGroupMemberMutation = { __typename?: 'RootMutationType', createGroupMember?: { __typename?: 'GroupMember', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null }; - -export type DeleteGroupMemberMutationVariables = Exact<{ - groupId: Scalars['ID']; - userId: Scalars['ID']; -}>; - - -export type DeleteGroupMemberMutation = { __typename?: 'RootMutationType', deleteGroupMember?: { __typename?: 'GroupMember', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null }; - -export type CreateGroupMutationVariables = Exact<{ - attributes: GroupAttributes; -}>; - - -export type CreateGroupMutation = { __typename?: 'RootMutationType', createGroup?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null }; - -export type UpdateGroupMutationVariables = Exact<{ - id: Scalars['ID']; - attributes: GroupAttributes; -}>; - - -export type UpdateGroupMutation = { __typename?: 'RootMutationType', updateGroup?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null }; - -export type DeleteGroupMutationVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type DeleteGroupMutation = { __typename?: 'RootMutationType', deleteGroup?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null }; - -export type GroupsQueryVariables = Exact<{ - q?: InputMaybe; - cursor?: InputMaybe; -}>; - - -export type GroupsQuery = { __typename?: 'RootQueryType', groups?: { __typename?: 'GroupConnection', pageInfo: { __typename?: 'PageInfo', endCursor?: string | null, hasNextPage: boolean }, edges?: Array<{ __typename?: 'GroupEdge', node?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null } | null }; - -export type PostmortemFragment = { __typename?: 'Postmortem', id: string, content: string, actionItems?: Array<{ __typename?: 'ActionItem', type: ActionItemType, link: string } | null> | null }; - -export type FollowerFragment = { __typename?: 'Follower', id: string, incident?: { __typename?: 'Incident', id: string } | null, user: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null }, preferences?: { __typename?: 'NotificationPreferences', message?: boolean | null, incidentUpdate?: boolean | null, mention?: boolean | null } | null }; - -export type SlimSubscriptionFragment = { __typename?: 'SlimSubscription', id: string, lineItems?: { __typename?: 'SubscriptionLineItems', items?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null } | null, plan?: { __typename?: 'Plan', id: string, name: string, cost: number, period?: string | null, serviceLevels?: Array<{ __typename?: 'ServiceLevel', minSeverity?: number | null, maxSeverity?: number | null, responseTime?: number | null } | null> | null, lineItems?: { __typename?: 'PlanLineItems', included?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null, items?: Array<{ __typename?: 'LineItem', name: string, dimension: string, cost: number, period?: string | null, type?: PlanType | null } | null> | null } | null, metadata?: { __typename?: 'PlanMetadata', features?: Array<{ __typename?: 'PlanFeature', name: string, description: string } | null> | null } | null } | null }; - -export type ClusterInformationFragment = { __typename?: 'ClusterInformation', version?: string | null, gitCommit?: string | null, platform?: string | null }; - -export type IncidentFragment = { __typename?: 'Incident', id: string, title: string, description?: string | null, severity: number, status: IncidentStatus, notificationCount?: number | null, nextResponseAt?: Date | null, insertedAt?: Date | null, creator: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null }, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, repository: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null }, subscription?: { __typename?: 'SlimSubscription', id: string, lineItems?: { __typename?: 'SubscriptionLineItems', items?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null } | null, plan?: { __typename?: 'Plan', id: string, name: string, cost: number, period?: string | null, serviceLevels?: Array<{ __typename?: 'ServiceLevel', minSeverity?: number | null, maxSeverity?: number | null, responseTime?: number | null } | null> | null, lineItems?: { __typename?: 'PlanLineItems', included?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null, items?: Array<{ __typename?: 'LineItem', name: string, dimension: string, cost: number, period?: string | null, type?: PlanType | null } | null> | null } | null, metadata?: { __typename?: 'PlanMetadata', features?: Array<{ __typename?: 'PlanFeature', name: string, description: string } | null> | null } | null } | null } | null, clusterInformation?: { __typename?: 'ClusterInformation', version?: string | null, gitCommit?: string | null, platform?: string | null } | null, tags?: Array<{ __typename?: 'Tag', tag: string } | null> | null }; - -export type IncidentHistoryFragment = { __typename?: 'IncidentHistory', id: string, action: IncidentAction, insertedAt?: Date | null, changes?: Array<{ __typename?: 'IncidentChange', key: string, prev?: string | null, next?: string | null } | null> | null, actor: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } }; - -export type FileFragment = { __typename?: 'File', id: string, blob: string, mediaType?: MediaType | null, contentType?: string | null, filesize?: number | null, filename?: string | null }; - -export type IncidentMessageFragment = { __typename?: 'IncidentMessage', id: string, text: string, insertedAt?: Date | null, creator: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null }, reactions?: Array<{ __typename?: 'Reaction', name: string, creator: { __typename?: 'User', id: string, email: string } } | null> | null, file?: { __typename?: 'File', id: string, blob: string, mediaType?: MediaType | null, contentType?: string | null, filesize?: number | null, filename?: string | null } | null, entities?: Array<{ __typename?: 'MessageEntity', type: MessageEntityType, text?: string | null, startIndex?: number | null, endIndex?: number | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null> | null }; - -export type NotificationFragment = { __typename?: 'Notification', id: string, type: NotificationType, msg?: string | null, insertedAt?: Date | null, actor: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null }, incident?: { __typename?: 'Incident', id: string, title: string, repository: { __typename?: 'Repository', id: string, name: string, icon?: string | null, darkIcon?: string | null } } | null, message?: { __typename?: 'IncidentMessage', text: string } | null, repository?: { __typename?: 'Repository', id: string, name: string, icon?: string | null, darkIcon?: string | null } | null }; - -export type InstallationFragment = { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null }; - -export type GetInstallationQueryVariables = Exact<{ - name?: InputMaybe; -}>; - - -export type GetInstallationQuery = { __typename?: 'RootQueryType', installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null }; - -export type GetInstallationByIdQueryVariables = Exact<{ - id?: InputMaybe; -}>; - - -export type GetInstallationByIdQuery = { __typename?: 'RootQueryType', installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null }; - -export type GetInstallationsQueryVariables = Exact<{ - first?: InputMaybe; -}>; - - -export type GetInstallationsQuery = { __typename?: 'RootQueryType', installations?: { __typename?: 'InstallationConnection', edges?: Array<{ __typename?: 'InstallationEdge', node?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null } | null> | null } | null }; - -export type UpsertOidcProviderMutationVariables = Exact<{ - id: Scalars['ID']; - attributes: OidcAttributes; -}>; - - -export type UpsertOidcProviderMutation = { __typename?: 'RootMutationType', upsertOidcProvider?: { __typename?: 'OidcProvider', id: string } | null }; - -export type IntegrationWebhookFragment = { __typename?: 'IntegrationWebhook', id: string, name: string, url: string, secret: string, actions?: Array | null }; - -export type WebhookLogFragment = { __typename?: 'WebhookLog', id: string, state: WebhookLogState, status?: number | null, payload?: Map | null, response?: string | null, insertedAt?: Date | null }; - -export type OauthIntegrationFragment = { __typename?: 'OauthIntegration', id: string, service: OauthService, insertedAt?: Date | null }; - -export type ZoomMeetingFragment = { __typename?: 'ZoomMeeting', joinUrl: string, password?: string | null }; - -export type SignupInviteMutationVariables = Exact<{ - attributes: UserAttributes; - inviteId: Scalars['String']; -}>; - - -export type SignupInviteMutation = { __typename?: 'RootMutationType', signup?: { __typename?: 'User', jwt?: string | null } | null }; - -export type RealizeInviteMutationVariables = Exact<{ - id: Scalars['String']; -}>; - - -export type RealizeInviteMutation = { __typename?: 'RootMutationType', realizeInvite?: { __typename?: 'User', jwt?: string | null } | null }; - -export type InviteQueryVariables = Exact<{ - id: Scalars['String']; -}>; - - -export type InviteQuery = { __typename?: 'RootQueryType', invite?: { __typename?: 'Invite', id: string, email?: string | null, existing: boolean, account?: { __typename?: 'Account', id: string, name?: string | null, billingCustomerId?: string | null, backgroundColor?: string | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, account: { __typename?: 'Account', id: string, name?: string | null, billingCustomerId?: string | null, backgroundColor?: string | null }, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null }; - -export type MetricFragment = { __typename?: 'Metric', name: string, tags?: Array<{ __typename?: 'MetricTag', name: string, value: string } | null> | null, values?: Array<{ __typename?: 'MetricValue', time?: Date | null, value?: number | null } | null> | null }; - -export type PageInfoFragment = { __typename?: 'PageInfo', endCursor?: string | null, hasNextPage: boolean }; - -export type OidcProviderFragment = { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null }; - -export type OAuthInfoFragment = { __typename?: 'OauthInfo', provider: OauthProvider, authorizeUrl: string }; - -export type LimitFragment = { __typename?: 'Limit', dimension: string, quantity: number }; - -export type LineItemFragment = { __typename?: 'LineItem', name: string, dimension: string, cost: number, period?: string | null, type?: PlanType | null }; - -export type ServiceLevelFragment = { __typename?: 'ServiceLevel', minSeverity?: number | null, maxSeverity?: number | null, responseTime?: number | null }; - -export type PlanFragment = { __typename?: 'Plan', id: string, name: string, cost: number, period?: string | null, serviceLevels?: Array<{ __typename?: 'ServiceLevel', minSeverity?: number | null, maxSeverity?: number | null, responseTime?: number | null } | null> | null, lineItems?: { __typename?: 'PlanLineItems', included?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null, items?: Array<{ __typename?: 'LineItem', name: string, dimension: string, cost: number, period?: string | null, type?: PlanType | null } | null> | null } | null, metadata?: { __typename?: 'PlanMetadata', features?: Array<{ __typename?: 'PlanFeature', name: string, description: string } | null> | null } | null }; - -export type SubscriptionFragment = { __typename?: 'RepositorySubscription', id: string, plan?: { __typename?: 'Plan', id: string, name: string, cost: number, period?: string | null, serviceLevels?: Array<{ __typename?: 'ServiceLevel', minSeverity?: number | null, maxSeverity?: number | null, responseTime?: number | null } | null> | null, lineItems?: { __typename?: 'PlanLineItems', included?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null, items?: Array<{ __typename?: 'LineItem', name: string, dimension: string, cost: number, period?: string | null, type?: PlanType | null } | null> | null } | null, metadata?: { __typename?: 'PlanMetadata', features?: Array<{ __typename?: 'PlanFeature', name: string, description: string } | null> | null } | null } | null, lineItems?: { __typename?: 'SubscriptionLineItems', items?: Array<{ __typename?: 'Limit', dimension: string, quantity: number } | null> | null } | null }; - -export type InvoiceItemFragment = { __typename?: 'InvoiceItem', amount: number, currency: string, description?: string | null }; - -export type InvoiceFragment = { __typename?: 'Invoice', number: string, amountDue: number, amountPaid: number, currency: string, status?: string | null, createdAt?: Date | null, hostedInvoiceUrl?: string | null, lines?: Array<{ __typename?: 'InvoiceItem', amount: number, currency: string, description?: string | null } | null> | null }; - -export type CardFragment = { __typename?: 'Card', id: string, last4: string, expMonth: number, expYear: number, name?: string | null, brand: string }; - -export type SubscriptionQueryVariables = Exact<{ [key: string]: never; }>; - - -export type SubscriptionQuery = { __typename?: 'RootQueryType', account?: { __typename?: 'Account', billingCustomerId?: string | null, grandfatheredUntil?: Date | null, delinquentAt?: Date | null, userCount?: string | null, clusterCount?: string | null, availableFeatures?: { __typename?: 'PlanFeatures', userManagement?: boolean | null, audit?: boolean | null } | null, subscription?: { __typename?: 'PlatformSubscription', id: string, plan?: { __typename?: 'PlatformPlan', id: string, period: PaymentPeriod, lineItems?: Array<{ __typename?: 'PlatformPlanItem', dimension: LineItemDimension, cost: number } | null> | null } | null } | null, billingAddress?: { __typename?: 'Address', name?: string | null, line1?: string | null, line2?: string | null, zip?: string | null, state?: string | null, city?: string | null, country?: string | null } | null } | null }; - -export type UpdateAccountBillingMutationVariables = Exact<{ - attributes: AccountAttributes; -}>; - - -export type UpdateAccountBillingMutation = { __typename?: 'RootMutationType', updateAccount?: { __typename?: 'Account', id: string } | null }; - -export type UpgradeToProfessionalPlanMutationVariables = Exact<{ - planId: Scalars['ID']; -}>; - - -export type UpgradeToProfessionalPlanMutation = { __typename?: 'RootMutationType', createPlatformSubscription?: { __typename?: 'PlatformSubscription', id: string } | null }; - -export type DowngradeToFreePlanMutationMutationVariables = Exact<{ [key: string]: never; }>; - - -export type DowngradeToFreePlanMutationMutation = { __typename?: 'RootMutationType', deletePlatformSubscription?: { __typename?: 'Account', id: string } | null }; - -export type CardsQueryVariables = Exact<{ [key: string]: never; }>; - - -export type CardsQuery = { __typename?: 'RootQueryType', me?: { __typename?: 'User', id: string, cards?: { __typename?: 'CardConnection', edges?: Array<{ __typename?: 'CardEdge', node?: { __typename?: 'Card', id: string, last4: string, expMonth: number, expYear: number, name?: string | null, brand: string } | null } | null> | null } | null } | null }; - -export type CreateCardMutationVariables = Exact<{ - source: Scalars['String']; - address?: InputMaybe; -}>; - - -export type CreateCardMutation = { __typename?: 'RootMutationType', createCard?: { __typename?: 'Account', id: string } | null }; - -export type DeleteCardMutationVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type DeleteCardMutation = { __typename?: 'RootMutationType', deleteCard?: { __typename?: 'Account', id: string } | null }; - -export type RecipeFragment = { __typename?: 'Recipe', id: string, name: string, description?: string | null, restricted?: boolean | null, provider?: Provider | null, tests?: Array<{ __typename?: 'RecipeTest', type: TestType, name: string, message?: string | null, args?: Array<{ __typename?: 'TestArgument', name: string, repo: string, key: string } | null> | null } | null> | null, repository?: { __typename?: 'Repository', id: string, name: string } | null, oidcSettings?: { __typename?: 'OidcSettings', uriFormat?: string | null, uriFormats?: Array | null, authMethod: OidcAuthMethod, domainKey?: string | null, subdomain?: boolean | null } | null, recipeSections?: Array<{ __typename?: 'RecipeSection', index?: number | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, recipeItems?: Array<{ __typename?: 'RecipeItem', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null }; - -export type RecipeItemFragment = { __typename?: 'RecipeItem', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null }; - -export type RecipeSectionFragment = { __typename?: 'RecipeSection', index?: number | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, recipeItems?: Array<{ __typename?: 'RecipeItem', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null }; - -export type RecipeConfigurationFragment = { __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null }; - -export type StackFragment = { __typename?: 'Stack', id: string, name: string, displayName?: string | null, description?: string | null, featured?: boolean | null, creator?: { __typename?: 'User', id: string, name: string } | null, collections?: Array<{ __typename?: 'StackCollection', id: string, provider: Provider, bundles?: Array<{ __typename?: 'StackRecipe', recipe: { __typename?: 'Recipe', repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, tags?: Array<{ __typename?: 'Tag', tag: string } | null> | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null } } | null> | null } | null> | null }; - -export type GetRecipeQueryVariables = Exact<{ - repo?: InputMaybe; - name?: InputMaybe; - id?: InputMaybe; -}>; - - -export type GetRecipeQuery = { __typename?: 'RootQueryType', recipe?: { __typename?: 'Recipe', id: string, name: string, description?: string | null, restricted?: boolean | null, provider?: Provider | null, recipeDependencies?: Array<{ __typename?: 'Recipe', id: string, name: string, description?: string | null, restricted?: boolean | null, provider?: Provider | null, tests?: Array<{ __typename?: 'RecipeTest', type: TestType, name: string, message?: string | null, args?: Array<{ __typename?: 'TestArgument', name: string, repo: string, key: string } | null> | null } | null> | null, repository?: { __typename?: 'Repository', id: string, name: string } | null, oidcSettings?: { __typename?: 'OidcSettings', uriFormat?: string | null, uriFormats?: Array | null, authMethod: OidcAuthMethod, domainKey?: string | null, subdomain?: boolean | null } | null, recipeSections?: Array<{ __typename?: 'RecipeSection', index?: number | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, recipeItems?: Array<{ __typename?: 'RecipeItem', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null } | null> | null, tests?: Array<{ __typename?: 'RecipeTest', type: TestType, name: string, message?: string | null, args?: Array<{ __typename?: 'TestArgument', name: string, repo: string, key: string } | null> | null } | null> | null, repository?: { __typename?: 'Repository', id: string, name: string } | null, oidcSettings?: { __typename?: 'OidcSettings', uriFormat?: string | null, uriFormats?: Array | null, authMethod: OidcAuthMethod, domainKey?: string | null, subdomain?: boolean | null } | null, recipeSections?: Array<{ __typename?: 'RecipeSection', index?: number | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, recipeItems?: Array<{ __typename?: 'RecipeItem', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null } | null }; - -export type ListRecipesQueryVariables = Exact<{ - repositoryName?: InputMaybe; - repositoryId?: InputMaybe; - provider?: InputMaybe; -}>; - - -export type ListRecipesQuery = { __typename?: 'RootQueryType', recipes?: { __typename?: 'RecipeConnection', edges?: Array<{ __typename?: 'RecipeEdge', node?: { __typename?: 'Recipe', id: string, name: string, description?: string | null, restricted?: boolean | null, provider?: Provider | null, tests?: Array<{ __typename?: 'RecipeTest', type: TestType, name: string, message?: string | null, args?: Array<{ __typename?: 'TestArgument', name: string, repo: string, key: string } | null> | null } | null> | null, repository?: { __typename?: 'Repository', id: string, name: string } | null, oidcSettings?: { __typename?: 'OidcSettings', uriFormat?: string | null, uriFormats?: Array | null, authMethod: OidcAuthMethod, domainKey?: string | null, subdomain?: boolean | null } | null, recipeSections?: Array<{ __typename?: 'RecipeSection', index?: number | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null } | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, recipeItems?: Array<{ __typename?: 'RecipeItem', id?: string | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null, configuration?: Array<{ __typename?: 'RecipeConfiguration', name?: string | null, type?: Datatype | null, default?: string | null, documentation?: string | null, optional?: boolean | null, placeholder?: string | null, functionName?: string | null, condition?: { __typename?: 'RecipeCondition', field: string, operation: Operation, value?: string | null } | null, validation?: { __typename?: 'RecipeValidation', type: ValidationType, regex?: string | null, message: string } | null } | null> | null } | null> | null } | null } | null> | null } | null }; - -export type CreateRecipeMutationVariables = Exact<{ - name: Scalars['String']; - attributes: RecipeAttributes; -}>; - - -export type CreateRecipeMutation = { __typename?: 'RootMutationType', createRecipe?: { __typename?: 'Recipe', id: string } | null }; - -export type InstallRecipeMutationVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type InstallRecipeMutation = { __typename?: 'RootMutationType', installRecipe?: Array<{ __typename?: 'Installation', id: string } | null> | null }; - -export type CreateStackMutationVariables = Exact<{ - attributes: StackAttributes; -}>; - - -export type CreateStackMutation = { __typename?: 'RootMutationType', createStack?: { __typename?: 'Stack', id: string } | null }; - -export type GetStackQueryVariables = Exact<{ - name: Scalars['String']; - provider: Provider; -}>; - - -export type GetStackQuery = { __typename?: 'RootQueryType', stack?: { __typename?: 'Stack', id: string, name: string, displayName?: string | null, description?: string | null, featured?: boolean | null, creator?: { __typename?: 'User', id: string, name: string } | null, collections?: Array<{ __typename?: 'StackCollection', id: string, provider: Provider, bundles?: Array<{ __typename?: 'StackRecipe', recipe: { __typename?: 'Recipe', repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, tags?: Array<{ __typename?: 'Tag', tag: string } | null> | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null } } | null> | null } | null> | null } | null }; - -export type ListStacksQueryVariables = Exact<{ - featured?: InputMaybe; - cursor?: InputMaybe; -}>; - - -export type ListStacksQuery = { __typename?: 'RootQueryType', stacks?: { __typename?: 'StackConnection', edges?: Array<{ __typename?: 'StackEdge', node?: { __typename?: 'Stack', id: string, name: string, displayName?: string | null, description?: string | null, featured?: boolean | null, creator?: { __typename?: 'User', id: string, name: string } | null, collections?: Array<{ __typename?: 'StackCollection', id: string, provider: Provider, bundles?: Array<{ __typename?: 'StackRecipe', recipe: { __typename?: 'Recipe', repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, tags?: Array<{ __typename?: 'Tag', tag: string } | null> | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null } } | null> | null } | null> | null } | null } | null> | null } | null }; - -export type CreateQuickStackMutationVariables = Exact<{ - applicationIds?: InputMaybe> | InputMaybe>; - provider: Provider; -}>; - - -export type CreateQuickStackMutation = { __typename?: 'RootMutationType', quickStack?: { __typename?: 'Stack', id: string, name: string } | null }; - -export type InstallStackShellMutationVariables = Exact<{ - name: Scalars['String']; - context: ContextAttributes; - oidc: Scalars['Boolean']; -}>; - - -export type InstallStackShellMutation = { __typename?: 'RootMutationType', installStackShell?: Array<{ __typename?: 'Recipe', id: string, name: string } | null> | null }; - -export type ApplyLockFragment = { __typename?: 'ApplyLock', id: string, lock?: string | null }; - -export type CategoryFragment = { __typename?: 'CategoryInfo', category?: Category | null, count?: number | null }; - -export type RepoFragment = { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null }; - -export type RepositoryFragment = { __typename?: 'Repository', id: string, name: string, notes?: string | null, icon?: string | null, darkIcon?: string | null, description?: string | null, publisher?: { __typename?: 'Publisher', name: string } | null, recipes?: Array<{ __typename?: 'Recipe', name: string } | null> | null }; - -export type DependenciesFragment = { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null }; - -export type IntegrationFragment = { __typename?: 'Integration', id: string, name: string, icon?: string | null, sourceUrl?: string | null, description?: string | null, tags?: Array<{ __typename?: 'Tag', tag: string } | null> | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null }; - -export type RepositoryQueryVariables = Exact<{ - id?: InputMaybe; - name?: InputMaybe; -}>; - - -export type RepositoryQuery = { __typename?: 'RootQueryType', repository?: { __typename?: 'Repository', editable?: boolean | null, publicKey?: string | null, secrets?: Map | null, readme?: string | null, mainBranch?: string | null, gitUrl?: string | null, homepage?: string | null, documentation?: string | null, id: string, name: string, notes?: string | null, description?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, artifacts?: Array<{ __typename?: 'Artifact', id?: string | null, name?: string | null, blob?: string | null, type?: ArtifactType | null, platform?: ArtifactPlatform | null, arch?: string | null, filesize?: number | null, sha?: string | null, readme?: string | null, insertedAt?: Date | null, updatedAt?: Date | null } | null> | null, installation?: { __typename?: 'Installation', id: string, context?: Map | null, license?: string | null, licenseKey?: string | null, acmeKeyId?: string | null, acmeSecret?: string | null, autoUpgrade?: boolean | null, trackTag: string, oidcProvider?: { __typename?: 'OidcProvider', id: string, clientId: string, authMethod: OidcAuthMethod, clientSecret: string, redirectUris?: Array | null, bindings?: Array<{ __typename?: 'OidcProviderBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null, configuration?: { __typename?: 'OuathConfiguration', issuer?: string | null, authorizationEndpoint?: string | null, tokenEndpoint?: string | null, jwksUri?: string | null, userinfoEndpoint?: string | null } | null } | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null } | null, tags?: Array<{ __typename?: 'Tag', tag: string } | null> | null, license?: { __typename?: 'License', name?: string | null, url?: string | null } | null, community?: { __typename?: 'Community', discord?: string | null, slack?: string | null, homepage?: string | null, gitUrl?: string | null, twitter?: string | null } | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null }; - -export type CreateResourceDefinitionMutationVariables = Exact<{ - name: Scalars['String']; - input: ResourceDefinitionAttributes; -}>; - - -export type CreateResourceDefinitionMutation = { __typename?: 'RootMutationType', updateRepository?: { __typename?: 'Repository', id: string } | null }; - -export type CreateIntegrationMutationVariables = Exact<{ - name: Scalars['String']; - attrs: IntegrationAttributes; -}>; - - -export type CreateIntegrationMutation = { __typename?: 'RootMutationType', createIntegration?: { __typename?: 'Integration', id: string } | null }; - -export type UpdateRepositoryMutationVariables = Exact<{ - name: Scalars['String']; - attrs: RepositoryAttributes; -}>; - - -export type UpdateRepositoryMutation = { __typename?: 'RootMutationType', updateRepository?: { __typename?: 'Repository', id: string } | null }; - -export type CreateRepositoryMutationVariables = Exact<{ - name: Scalars['String']; - publisher: Scalars['String']; - attributes: RepositoryAttributes; -}>; - - -export type CreateRepositoryMutation = { __typename?: 'RootMutationType', upsertRepository?: { __typename?: 'Repository', id: string } | null }; - -export type AcquireLockMutationVariables = Exact<{ - name: Scalars['String']; -}>; - - -export type AcquireLockMutation = { __typename?: 'RootMutationType', acquireLock?: { __typename?: 'ApplyLock', id: string, lock?: string | null } | null }; - -export type ReleaseLockMutationVariables = Exact<{ - name: Scalars['String']; - attrs: LockAttributes; -}>; - - -export type ReleaseLockMutation = { __typename?: 'RootMutationType', releaseLock?: { __typename?: 'ApplyLock', id: string, lock?: string | null } | null }; - -export type UnlockRepositoryMutationVariables = Exact<{ - name: Scalars['String']; -}>; - - -export type UnlockRepositoryMutation = { __typename?: 'RootMutationType', unlockRepository?: number | null }; - -export type ListRepositoriesQueryVariables = Exact<{ - q?: InputMaybe; - installed?: InputMaybe; - first?: InputMaybe; - provider?: InputMaybe; -}>; - - -export type ListRepositoriesQuery = { __typename?: 'RootQueryType', repositories?: { __typename?: 'RepositoryConnection', edges?: Array<{ __typename?: 'RepositoryEdge', node?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, icon?: string | null, darkIcon?: string | null, description?: string | null, publisher?: { __typename?: 'Publisher', name: string } | null, recipes?: Array<{ __typename?: 'Recipe', name: string } | null> | null } | null } | null> | null } | null }; - -export type ScaffoldsQueryVariables = Exact<{ - app: Scalars['String']; - pub: Scalars['String']; - cat: Category; - ing?: InputMaybe; - pg?: InputMaybe; -}>; - - -export type ScaffoldsQuery = { __typename?: 'RootQueryType', scaffold?: Array<{ __typename?: 'ScaffoldFile', path?: string | null, content?: string | null } | null> | null }; - -export type DeleteRepositoryMutationVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type DeleteRepositoryMutation = { __typename?: 'RootMutationType', deleteRepository?: { __typename?: 'Repository', id: string } | null }; - -export type GetTfProvidersQueryVariables = Exact<{ [key: string]: never; }>; - - -export type GetTfProvidersQuery = { __typename?: 'RootQueryType', terraformProviders?: Array | null }; - -export type GetTfProviderScaffoldQueryVariables = Exact<{ - name: Provider; - vsn?: InputMaybe; -}>; - - -export type GetTfProviderScaffoldQuery = { __typename?: 'RootQueryType', terraformProvider?: { __typename?: 'TerraformProvider', name?: Provider | null, content?: string | null } | null }; - -export type CloudShellFragment = { __typename?: 'CloudShell', id: string, aesKey: string, gitUrl: string, alive: boolean, provider: Provider, subdomain: string, cluster: string, status?: { __typename?: 'ShellStatus', ready?: boolean | null, initialized?: boolean | null, containersReady?: boolean | null, podScheduled?: boolean | null } | null }; - -export type DemoProjectFragment = { __typename?: 'DemoProject', id: string, projectId: string, credentials?: string | null, ready?: boolean | null, state?: DemoProjectState | null }; - -export type GetShellQueryVariables = Exact<{ [key: string]: never; }>; - - -export type GetShellQuery = { __typename?: 'RootQueryType', shell?: { __typename?: 'CloudShell', id: string, aesKey: string, gitUrl: string, alive: boolean, provider: Provider, subdomain: string, cluster: string, status?: { __typename?: 'ShellStatus', ready?: boolean | null, initialized?: boolean | null, containersReady?: boolean | null, podScheduled?: boolean | null } | null } | null }; - -export type DeleteShellMutationVariables = Exact<{ [key: string]: never; }>; - - -export type DeleteShellMutation = { __typename?: 'RootMutationType', deleteShell?: { __typename?: 'CloudShell', id: string, aesKey: string, gitUrl: string, alive: boolean, provider: Provider, subdomain: string, cluster: string, status?: { __typename?: 'ShellStatus', ready?: boolean | null, initialized?: boolean | null, containersReady?: boolean | null, podScheduled?: boolean | null } | null } | null }; - -export type TerraformFragment = { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null }; - -export type TerraformInstallationFragment = { __typename?: 'TerraformInstallation', id?: string | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null }; - -export type GetTerraformQueryVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type GetTerraformQuery = { __typename?: 'RootQueryType', terraform?: { __typename?: 'TerraformConnection', edges?: Array<{ __typename?: 'TerraformEdge', node?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null> | null } | null }; - -export type GetTerraformInstallationsQueryVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type GetTerraformInstallationsQuery = { __typename?: 'RootQueryType', terraformInstallations?: { __typename?: 'TerraformInstallationConnection', edges?: Array<{ __typename?: 'TerraformInstallationEdge', node?: { __typename?: 'TerraformInstallation', id?: string | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, version?: { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null } | null } | null> | null } | null }; - -export type UploadTerraformMutationVariables = Exact<{ - repoName: Scalars['String']; - name: Scalars['String']; - uploadOrUrl: Scalars['UploadOrUrl']; -}>; - - -export type UploadTerraformMutation = { __typename?: 'RootMutationType', uploadTerraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null, readme?: string | null, package?: string | null, description?: string | null, latestVersion?: string | null, valuesTemplate?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null }; - -export type UninstallTerraformMutationVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type UninstallTerraformMutation = { __typename?: 'RootMutationType', uninstallTerraform?: { __typename?: 'TerraformInstallation', id?: string | null } | null }; - -export type StepFragment = { __typename?: 'TestStep', id: string, name: string, status: TestStatus, hasLogs?: boolean | null, description: string, insertedAt?: Date | null, updatedAt?: Date | null }; - -export type TestFragment = { __typename?: 'Test', id: string, name?: string | null, promoteTag: string, status: TestStatus, insertedAt?: Date | null, updatedAt?: Date | null, steps?: Array<{ __typename?: 'TestStep', id: string, name: string, status: TestStatus, hasLogs?: boolean | null, description: string, insertedAt?: Date | null, updatedAt?: Date | null } | null> | null }; - -export type CreateTestMutationVariables = Exact<{ - name: Scalars['String']; - attrs: TestAttributes; -}>; - - -export type CreateTestMutation = { __typename?: 'RootMutationType', createTest?: { __typename?: 'Test', id: string, name?: string | null, promoteTag: string, status: TestStatus, insertedAt?: Date | null, updatedAt?: Date | null, steps?: Array<{ __typename?: 'TestStep', id: string, name: string, status: TestStatus, hasLogs?: boolean | null, description: string, insertedAt?: Date | null, updatedAt?: Date | null } | null> | null } | null }; - -export type UpdateTestMutationVariables = Exact<{ - id: Scalars['ID']; - attrs: TestAttributes; -}>; - - -export type UpdateTestMutation = { __typename?: 'RootMutationType', updateTest?: { __typename?: 'Test', id: string, name?: string | null, promoteTag: string, status: TestStatus, insertedAt?: Date | null, updatedAt?: Date | null, steps?: Array<{ __typename?: 'TestStep', id: string, name: string, status: TestStatus, hasLogs?: boolean | null, description: string, insertedAt?: Date | null, updatedAt?: Date | null } | null> | null } | null }; - -export type UpdateStepMutationVariables = Exact<{ - id: Scalars['ID']; - logs: Scalars['UploadOrUrl']; -}>; - - -export type UpdateStepMutation = { __typename?: 'RootMutationType', updateStep?: { __typename?: 'TestStep', id: string } | null }; - -export type PublishLogsMutationVariables = Exact<{ - id: Scalars['ID']; - logs: Scalars['String']; -}>; - - -export type PublishLogsMutation = { __typename?: 'RootMutationType', publishLogs?: { __typename?: 'TestStep', id: string } | null }; - -export type UpgradeQueueFragment = { __typename?: 'UpgradeQueue', id: string, acked?: string | null, name?: string | null, domain?: string | null, git?: string | null, pingedAt?: Date | null, provider?: Provider | null }; - -export type RolloutFragment = { __typename?: 'Rollout', id: string, event?: string | null, cursor?: string | null, count?: number | null, status: RolloutStatus, heartbeat?: Date | null }; - -export type UpgradeFragment = { __typename?: 'Upgrade', id: string, message?: string | null, insertedAt?: Date | null, repository?: { __typename?: 'Repository', id: string, name: string, notes?: string | null, description?: string | null, documentation?: string | null, icon?: string | null, darkIcon?: string | null, private?: boolean | null, trending?: boolean | null, verified?: boolean | null, category?: Category | null, oauthSettings?: { __typename?: 'OauthSettings', uriFormat: string, authMethod: OidcAuthMethod } | null, publisher?: { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, recipes?: Array<{ __typename?: 'Recipe', name: string, provider?: Provider | null, description?: string | null } | null> | null } | null }; - -export type DeferredUpdateFragment = { __typename?: 'DeferredUpdate', id: string, dequeueAt?: Date | null, attempts?: number | null, insertedAt?: Date | null, version?: { __typename?: 'Version', version: string } | null }; - -export type AccountFragment = { __typename?: 'Account', id: string, name?: string | null, billingCustomerId?: string | null, backgroundColor?: string | null }; - -export type GroupFragment = { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null }; - -export type UserFragment = { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null }; - -export type ImpersonationPolicyFragment = { __typename?: 'ImpersonationPolicy', id: string, bindings?: Array<{ __typename?: 'ImpersonationPolicyBinding', id: string, group?: { __typename?: 'Group', id: string, name: string } | null, user?: { __typename?: 'User', id: string, name: string, email: string } | null } | null> | null }; - -export type GroupMemberFragment = { __typename?: 'GroupMember', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null }; - -export type TokenFragment = { __typename?: 'PersistedToken', id?: string | null, token?: string | null, insertedAt?: Date | null }; - -export type TokenAuditFragment = { __typename?: 'PersistedTokenAudit', ip?: string | null, timestamp?: Date | null, count?: number | null, country?: string | null, city?: string | null, latitude?: string | null, longitude?: string | null }; - -export type AddressFragment = { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null }; - -export type PublisherFragment = { __typename?: 'Publisher', id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null }; - -export type WebhookFragment = { __typename?: 'Webhook', id?: string | null, url?: string | null, secret?: string | null, insertedAt?: Date | null }; - -export type RoleBindingFragment = { __typename?: 'RoleBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null }; - -export type RoleFragment = { __typename?: 'Role', id: string, name: string, description?: string | null, repositories?: Array | null, permissions?: Array | null, roleBindings?: Array<{ __typename?: 'RoleBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null }; - -export type PublicKeyFragment = { __typename?: 'PublicKey', id: string, name: string, digest: string, insertedAt?: Date | null, content: string, user: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } }; - -export type EabCredentialFragment = { __typename?: 'EabCredential', id: string, keyId: string, hmacKey: string, cluster: string, provider: Provider, insertedAt?: Date | null }; - -export type MeQueryVariables = Exact<{ [key: string]: never; }>; - - -export type MeQuery = { __typename?: 'RootQueryType', me?: { __typename?: 'User', loginMethod?: LoginMethod | null, hasInstallations?: boolean | null, id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, account: { __typename?: 'Account', id: string, name?: string | null, billingCustomerId?: string | null, backgroundColor?: string | null, rootUser?: { __typename?: 'User', id: string, name: string, email: string } | null, domainMappings?: Array<{ __typename?: 'DomainMapping', id: string, domain: string, enableSso?: boolean | null } | null> | null }, publisher?: { __typename?: 'Publisher', billingAccountId?: string | null, id?: string | null, name: string, phone?: string | null, avatar?: string | null, description?: string | null, backgroundColor?: string | null, owner?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, address?: { __typename?: 'Address', line1?: string | null, line2?: string | null, city?: string | null, country?: string | null, state?: string | null, zip?: string | null } | null } | null, boundRoles?: Array<{ __typename?: 'Role', id: string, name: string, description?: string | null, repositories?: Array | null, permissions?: Array | null, roleBindings?: Array<{ __typename?: 'RoleBinding', id: string, user?: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, group?: { __typename?: 'Group', id: string, name: string, global?: boolean | null, description?: string | null } | null } | null> | null } | null> | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } | null, configuration?: { __typename?: 'PluralConfiguration', stripeConnectId?: string | null, stripePublishableKey?: string | null, registry?: string | null, gitCommit?: string | null } | null }; - -export type GetLoginMethodQueryVariables = Exact<{ - email: Scalars['String']; -}>; - - -export type GetLoginMethodQuery = { __typename?: 'RootQueryType', loginMethod?: { __typename?: 'LoginMethodResponse', loginMethod: LoginMethod, token?: string | null } | null }; - -export type ListTokensQueryVariables = Exact<{ [key: string]: never; }>; - - -export type ListTokensQuery = { __typename?: 'RootQueryType', tokens?: { __typename?: 'PersistedTokenConnection', edges?: Array<{ __typename?: 'PersistedTokenEdge', node?: { __typename?: 'PersistedToken', token?: string | null } | null } | null> | null } | null }; - -export type ListKeysQueryVariables = Exact<{ - emails?: InputMaybe> | InputMaybe>; -}>; - - -export type ListKeysQuery = { __typename?: 'RootQueryType', publicKeys?: { __typename?: 'PublicKeyConnection', edges?: Array<{ __typename?: 'PublicKeyEdge', node?: { __typename?: 'PublicKey', id: string, name: string, digest: string, insertedAt?: Date | null, content: string, user: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } } | null } | null> | null } | null }; - -export type GetEabCredentialQueryVariables = Exact<{ - cluster: Scalars['String']; - provider: Provider; -}>; - - -export type GetEabCredentialQuery = { __typename?: 'RootQueryType', eabCredential?: { __typename?: 'EabCredential', id: string, keyId: string, hmacKey: string, cluster: string, provider: Provider, insertedAt?: Date | null } | null }; - -export type DevLoginMutationVariables = Exact<{ [key: string]: never; }>; - - -export type DevLoginMutation = { __typename?: 'RootMutationType', deviceLogin?: { __typename?: 'DeviceLogin', loginUrl: string, deviceToken: string } | null }; - -export type LoginMutationVariables = Exact<{ - email: Scalars['String']; - password: Scalars['String']; - deviceToken?: InputMaybe; -}>; - - -export type LoginMutation = { __typename?: 'RootMutationType', login?: { __typename?: 'User', jwt?: string | null } | null }; - -export type ImpersonateServiceAccountMutationVariables = Exact<{ - email?: InputMaybe; -}>; - - -export type ImpersonateServiceAccountMutation = { __typename?: 'RootMutationType', impersonateServiceAccount?: { __typename?: 'User', jwt?: string | null, email: string } | null }; - -export type CreateAccessTokenMutationVariables = Exact<{ [key: string]: never; }>; - - -export type CreateAccessTokenMutation = { __typename?: 'RootMutationType', createToken?: { __typename?: 'PersistedToken', token?: string | null } | null }; - -export type CreateKeyMutationVariables = Exact<{ - key: Scalars['String']; - name: Scalars['String']; -}>; - - -export type CreateKeyMutation = { __typename?: 'RootMutationType', createPublicKey?: { __typename?: 'PublicKey', id: string } | null }; - -export type DeleteEabCredentialMutationVariables = Exact<{ - cluster: Scalars['String']; - provider: Provider; -}>; - - -export type DeleteEabCredentialMutation = { __typename?: 'RootMutationType', deleteEabKey?: { __typename?: 'EabCredential', id: string } | null }; - -export type CreateEventMutationVariables = Exact<{ - attrs: UserEventAttributes; -}>; - - -export type CreateEventMutation = { __typename?: 'RootMutationType', createUserEvent?: boolean | null }; - -export type LoginMethodQueryVariables = Exact<{ - email: Scalars['String']; - host?: InputMaybe; -}>; - - -export type LoginMethodQuery = { __typename?: 'RootQueryType', loginMethod?: { __typename?: 'LoginMethodResponse', loginMethod: LoginMethod, token?: string | null, authorizeUrl?: string | null } | null }; - -export type SignupMutationVariables = Exact<{ - attributes: UserAttributes; - account?: InputMaybe; - deviceToken?: InputMaybe; -}>; - - -export type SignupMutation = { __typename?: 'RootMutationType', signup?: { __typename?: 'User', jwt?: string | null, onboarding?: OnboardingState | null } | null }; - -export type PasswordlessLoginMutationVariables = Exact<{ - token: Scalars['String']; -}>; - - -export type PasswordlessLoginMutation = { __typename?: 'RootMutationType', passwordlessLogin?: { __typename?: 'User', jwt?: string | null } | null }; - -export type PollLoginTokenMutationVariables = Exact<{ - token: Scalars['String']; - deviceToken?: InputMaybe; -}>; - - -export type PollLoginTokenMutation = { __typename?: 'RootMutationType', loginToken?: { __typename?: 'User', jwt?: string | null } | null }; - -export type OauthUrlsQueryVariables = Exact<{ - host?: InputMaybe; -}>; - - -export type OauthUrlsQuery = { __typename?: 'RootQueryType', oauthUrls?: Array<{ __typename?: 'OauthInfo', provider: OauthProvider, authorizeUrl: string } | null> | null }; - -export type AcceptLoginMutationVariables = Exact<{ - challenge: Scalars['String']; -}>; - - -export type AcceptLoginMutation = { __typename?: 'RootMutationType', acceptLogin?: { __typename?: 'OauthResponse', redirectTo: string } | null }; - -export type CreateResetTokenMutationVariables = Exact<{ - attributes: ResetTokenAttributes; -}>; - - -export type CreateResetTokenMutation = { __typename?: 'RootMutationType', createResetToken?: boolean | null }; - -export type RealizeResetTokenMutationVariables = Exact<{ - id: Scalars['ID']; - attributes: ResetTokenRealization; -}>; - - -export type RealizeResetTokenMutation = { __typename?: 'RootMutationType', realizeResetToken?: boolean | null }; - -export type ResetTokenQueryVariables = Exact<{ - id: Scalars['ID']; -}>; - - -export type ResetTokenQuery = { __typename?: 'RootQueryType', resetToken?: { __typename?: 'ResetToken', type: ResetTokenType, user: { __typename?: 'User', id: string, name: string, email: string, avatar?: string | null, provider?: Provider | null, demoing?: boolean | null, demoed?: boolean | null, onboarding?: OnboardingState | null, emailConfirmed?: boolean | null, emailConfirmBy?: Date | null, backgroundColor?: string | null, serviceAccount?: boolean | null, onboardingChecklist?: { __typename?: 'OnboardingChecklist', dismissed?: boolean | null, status?: OnboardingChecklistState | null } | null, roles?: { __typename?: 'Roles', admin?: boolean | null } | null } } | null }; - -export type VersionTagFragment = { __typename?: 'VersionTag', id: string, tag: string, version?: { __typename?: 'Version', id: string } | null }; - -export type VersionFragment = { __typename?: 'Version', id: string, helm?: Map | null, readme?: string | null, valuesTemplate?: string | null, version: string, insertedAt?: Date | null, package?: string | null, crds?: Array<{ __typename?: 'Crd', id: string, name: string, blob?: string | null } | null> | null, chart?: { __typename?: 'Chart', id?: string | null, name: string, description?: string | null, latestVersion?: string | null, insertedAt?: Date | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null } | null, terraform?: { __typename?: 'Terraform', id?: string | null, name?: string | null } | null, dependencies?: { __typename?: 'Dependencies', wait?: boolean | null, application?: boolean | null, providers?: Array | null, secrets?: Array | null, providerWirings?: Map | null, outputs?: Map | null, dependencies?: Array<{ __typename?: 'Dependency', name?: string | null, repo?: string | null, type?: DependencyType | null, version?: string | null, optional?: boolean | null } | null> | null, wirings?: { __typename?: 'Wirings', terraform?: Map | null, helm?: Map | null } | null } | null }; - -export type UpdateVersionMutationVariables = Exact<{ - spec?: InputMaybe; - attributes: VersionAttributes; -}>; - - -export type UpdateVersionMutation = { __typename?: 'RootMutationType', updateVersion?: { __typename?: 'Version', id: string } | null }; - -export const UserFragmentDoc = gql` - fragment User on User { - id - name - email - avatar - provider - demoing - demoed - onboarding - onboardingChecklist { - dismissed - status - } - emailConfirmed - emailConfirmBy - backgroundColor - serviceAccount - roles { - admin - } -} - `; -export const AddressFragmentDoc = gql` - fragment Address on Address { - line1 - line2 - city - country - state - zip -} - `; -export const PublisherFragmentDoc = gql` - fragment Publisher on Publisher { - id - name - phone - avatar - description - backgroundColor - owner { - ...User - } - address { - ...Address - } -} - ${UserFragmentDoc} -${AddressFragmentDoc}`; -export const RepoFragmentDoc = gql` - fragment Repo on Repository { - id - name - notes - description - documentation - icon - darkIcon - private - trending - verified - category - oauthSettings { - uriFormat - authMethod - } - publisher { - ...Publisher - } - recipes { - name - provider - description - } -} - ${PublisherFragmentDoc}`; -export const GroupFragmentDoc = gql` - fragment Group on Group { - id - name - global - description -} - `; -export const IntegrationWebhookFragmentDoc = gql` - fragment IntegrationWebhook on IntegrationWebhook { - id - name - url - secret - actions -} - `; -export const RoleBindingFragmentDoc = gql` - fragment RoleBinding on RoleBinding { - id - user { - ...User - } - group { - ...Group - } -} - ${UserFragmentDoc} -${GroupFragmentDoc}`; -export const RoleFragmentDoc = gql` - fragment Role on Role { - id - name - description - repositories - permissions - roleBindings { - ...RoleBinding - } -} - ${RoleBindingFragmentDoc}`; -export const CrdFragmentDoc = gql` - fragment Crd on Crd { - id - name - blob -} - `; -export const DependenciesFragmentDoc = gql` - fragment Dependencies on Dependencies { - dependencies { - name - repo - type - version - optional - } - wait - application - providers - secrets - wirings { - terraform - helm - } - providerWirings - outputs -} - `; -export const ChartFragmentDoc = gql` - fragment Chart on Chart { - id - name - description - latestVersion - dependencies { - ...Dependencies - } - insertedAt -} - ${DependenciesFragmentDoc}`; -export const VersionFragmentDoc = gql` - fragment Version on Version { - id - helm - readme - valuesTemplate - version - insertedAt - package - crds { - ...Crd - } - chart { - ...Chart - } - terraform { - id - name - } - dependencies { - ...Dependencies - } -} - ${CrdFragmentDoc} -${ChartFragmentDoc} -${DependenciesFragmentDoc}`; -export const AuditFragmentDoc = gql` - fragment Audit on Audit { - id - action - ip - country - city - latitude - longitude - actor { - ...User - } - repository { - ...Repo - } - group { - ...Group - } - integrationWebhook { - ...IntegrationWebhook - } - role { - ...Role - } - version { - ...Version - } - image { - id - tag - dockerRepository { - name - } - } - insertedAt -} - ${UserFragmentDoc} -${RepoFragmentDoc} -${GroupFragmentDoc} -${IntegrationWebhookFragmentDoc} -${RoleFragmentDoc} -${VersionFragmentDoc}`; -export const PolicyBindingFragmentDoc = gql` - fragment PolicyBinding on PolicyBinding { - id - group { - id - name - } - user { - id - name - email - } -} - `; -export const DnsDomainFragmentDoc = gql` - fragment DnsDomain on DnsDomain { - id - name - creator { - ...User - } - accessPolicy { - id - bindings { - ...PolicyBinding - } - } - insertedAt -} - ${UserFragmentDoc} -${PolicyBindingFragmentDoc}`; -export const InviteFragmentDoc = gql` - fragment Invite on Invite { - id - secureId - email - insertedAt -} - `; -export const OidcLoginFragmentDoc = gql` - fragment OidcLogin on OidcLogin { - ip - country - city - latitude - longitude - user { - ...User - } - owner { - ...User - } - repository { - ...Repo - } - insertedAt -} - ${UserFragmentDoc} -${RepoFragmentDoc}`; -export const ArtifactFragmentDoc = gql` - fragment Artifact on Artifact { - id - name - blob - type - platform - arch - filesize - sha - readme - insertedAt - updatedAt -} - `; -export const ChartInstallationFragmentDoc = gql` - fragment ChartInstallation on ChartInstallation { - id - chart { - ...Chart - dependencies { - ...Dependencies - } - } - version { - ...Version - } -} - ${ChartFragmentDoc} -${DependenciesFragmentDoc} -${VersionFragmentDoc}`; -export const ScanViolationFragmentDoc = gql` - fragment ScanViolation on ScanViolation { - ruleName - description - ruleId - severity - category - resourceName - resourceType - file - line -} - `; -export const ScanErrorFragmentDoc = gql` - fragment ScanError on ScanError { - message -} - `; -export const PackageScanFragmentDoc = gql` - fragment PackageScan on PackageScan { - id - grade - violations { - ...ScanViolation - } - errors { - ...ScanError - } -} - ${ScanViolationFragmentDoc} -${ScanErrorFragmentDoc}`; -export const DnsRecordFragmentDoc = gql` - fragment DnsRecord on DnsRecord { - id - name - type - records - cluster - provider - creator { - ...User - } - insertedAt -} - ${UserFragmentDoc}`; -export const DockerRepoFragmentDoc = gql` - fragment DockerRepo on DockerRepository { - id - name - public - repository { - id - name - } - insertedAt - updatedAt -} - `; -export const DockerRepositoryFragmentDoc = gql` - fragment DockerRepository on DockerRepository { - id - name - public - repository { - id - name - editable - } - insertedAt - updatedAt -} - `; -export const DockerImageFragmentDoc = gql` - fragment DockerImage on DockerImage { - id - tag - digest - scannedAt - grade - insertedAt - updatedAt -} - `; -export const VulnerabilityFragmentDoc = gql` - fragment Vulnerability on Vulnerability { - id - title - description - vulnerabilityId - package - installedVersion - fixedVersion - source - url - severity - score - cvss { - attackVector - attackComplexity - privilegesRequired - userInteraction - confidentiality - integrity - availability - } - layer { - digest - diffId - } -} - `; -export const PostmortemFragmentDoc = gql` - fragment Postmortem on Postmortem { - id - content - actionItems { - type - link - } -} - `; -export const FollowerFragmentDoc = gql` - fragment Follower on Follower { - id - incident { - id - } - user { - ...User - } - preferences { - message - incidentUpdate - mention - } -} - ${UserFragmentDoc}`; -export const ServiceLevelFragmentDoc = gql` - fragment ServiceLevel on ServiceLevel { - minSeverity - maxSeverity - responseTime -} - `; -export const LimitFragmentDoc = gql` - fragment Limit on Limit { - dimension - quantity -} - `; -export const LineItemFragmentDoc = gql` - fragment LineItem on LineItem { - name - dimension - cost - period - type -} - `; -export const PlanFragmentDoc = gql` - fragment Plan on Plan { - id - name - cost - period - serviceLevels { - ...ServiceLevel - } - lineItems { - included { - ...Limit - } - items { - ...LineItem - } - } - metadata { - features { - name - description - } - } -} - ${ServiceLevelFragmentDoc} -${LimitFragmentDoc} -${LineItemFragmentDoc}`; -export const SlimSubscriptionFragmentDoc = gql` - fragment SlimSubscription on SlimSubscription { - id - lineItems { - items { - dimension - quantity - } - } - plan { - ...Plan - } -} - ${PlanFragmentDoc}`; -export const ClusterInformationFragmentDoc = gql` - fragment ClusterInformation on ClusterInformation { - version - gitCommit - platform -} - `; -export const IncidentFragmentDoc = gql` - fragment Incident on Incident { - id - title - description - severity - status - notificationCount - nextResponseAt - creator { - ...User - } - owner { - ...User - } - repository { - ...Repo - } - subscription { - ...SlimSubscription - } - clusterInformation { - ...ClusterInformation - } - tags { - tag - } - insertedAt -} - ${UserFragmentDoc} -${RepoFragmentDoc} -${SlimSubscriptionFragmentDoc} -${ClusterInformationFragmentDoc}`; -export const IncidentHistoryFragmentDoc = gql` - fragment IncidentHistory on IncidentHistory { - id - action - changes { - key - prev - next - } - actor { - ...User - } - insertedAt -} - ${UserFragmentDoc}`; -export const FileFragmentDoc = gql` - fragment File on File { - id - blob - mediaType - contentType - filesize - filename -} - `; -export const IncidentMessageFragmentDoc = gql` - fragment IncidentMessage on IncidentMessage { - id - text - creator { - ...User - } - reactions { - name - creator { - id - email - } - } - file { - ...File - } - entities { - type - user { - ...User - } - text - startIndex - endIndex - } - insertedAt -} - ${UserFragmentDoc} -${FileFragmentDoc}`; -export const NotificationFragmentDoc = gql` - fragment Notification on Notification { - id - type - msg - actor { - ...User - } - incident { - id - title - repository { - id - name - icon - darkIcon - } - } - message { - text - } - repository { - id - name - icon - darkIcon - } - insertedAt -} - ${UserFragmentDoc}`; -export const WebhookLogFragmentDoc = gql` - fragment WebhookLog on WebhookLog { - id - state - status - payload - response - insertedAt -} - `; -export const OauthIntegrationFragmentDoc = gql` - fragment OauthIntegration on OauthIntegration { - id - service - insertedAt -} - `; -export const ZoomMeetingFragmentDoc = gql` - fragment ZoomMeeting on ZoomMeeting { - joinUrl - password -} - `; -export const MetricFragmentDoc = gql` - fragment Metric on Metric { - name - tags { - name - value - } - values { - time - value - } -} - `; -export const PageInfoFragmentDoc = gql` - fragment PageInfo on PageInfo { - endCursor - hasNextPage -} - `; -export const OAuthInfoFragmentDoc = gql` - fragment OAuthInfo on OauthInfo { - provider - authorizeUrl -} - `; -export const SubscriptionFragmentDoc = gql` - fragment Subscription on RepositorySubscription { - id - plan { - ...Plan - } - lineItems { - items { - ...Limit - } - } -} - ${PlanFragmentDoc} -${LimitFragmentDoc}`; -export const InvoiceItemFragmentDoc = gql` - fragment InvoiceItem on InvoiceItem { - amount - currency - description -} - `; -export const InvoiceFragmentDoc = gql` - fragment Invoice on Invoice { - number - amountDue - amountPaid - currency - status - createdAt - hostedInvoiceUrl - lines { - ...InvoiceItem - } -} - ${InvoiceItemFragmentDoc}`; -export const CardFragmentDoc = gql` - fragment Card on Card { - id - last4 - expMonth - expYear - name - brand -} - `; -export const OidcProviderFragmentDoc = gql` - fragment OIDCProvider on OidcProvider { - id - clientId - authMethod - clientSecret - redirectUris - bindings { - id - user { - ...User - } - group { - ...Group - } - } - configuration { - issuer - authorizationEndpoint - tokenEndpoint - jwksUri - userinfoEndpoint - } -} - ${UserFragmentDoc} -${GroupFragmentDoc}`; -export const InstallationFragmentDoc = gql` - fragment Installation on Installation { - id - context - license - licenseKey - acmeKeyId - acmeSecret - autoUpgrade - trackTag - repository { - ...Repo - } - user { - ...User - } - oidcProvider { - ...OIDCProvider - } -} - ${RepoFragmentDoc} -${UserFragmentDoc} -${OidcProviderFragmentDoc}`; -export const TerraformFragmentDoc = gql` - fragment Terraform on Terraform { - id - name - readme - package - description - latestVersion - dependencies { - ...Dependencies - } - valuesTemplate - insertedAt -} - ${DependenciesFragmentDoc}`; -export const RecipeConfigurationFragmentDoc = gql` - fragment RecipeConfiguration on RecipeConfiguration { - name - type - default - documentation - optional - placeholder - functionName - condition { - field - operation - value - } - validation { - type - regex - message - } -} - `; -export const RecipeItemFragmentDoc = gql` - fragment RecipeItem on RecipeItem { - id - chart { - ...Chart - } - terraform { - ...Terraform - } - configuration { - ...RecipeConfiguration - } -} - ${ChartFragmentDoc} -${TerraformFragmentDoc} -${RecipeConfigurationFragmentDoc}`; -export const RecipeSectionFragmentDoc = gql` - fragment RecipeSection on RecipeSection { - index - repository { - ...Repo - installation { - ...Installation - } - } - recipeItems { - ...RecipeItem - } - configuration { - ...RecipeConfiguration - } -} - ${RepoFragmentDoc} -${InstallationFragmentDoc} -${RecipeItemFragmentDoc} -${RecipeConfigurationFragmentDoc}`; -export const RecipeFragmentDoc = gql` - fragment Recipe on Recipe { - id - name - description - restricted - provider - tests { - type - name - message - args { - name - repo - key - } - } - repository { - id - name - } - oidcSettings { - uriFormat - uriFormats - authMethod - domainKey - subdomain - } - recipeSections { - ...RecipeSection - } -} - ${RecipeSectionFragmentDoc}`; -export const StackFragmentDoc = gql` - fragment Stack on Stack { - id - name - displayName - description - featured - creator { - id - name - } - collections { - id - provider - bundles { - recipe { - repository { - ...Repo - tags { - tag - } - } - } - } - } -} - ${RepoFragmentDoc}`; -export const ApplyLockFragmentDoc = gql` - fragment ApplyLock on ApplyLock { - id - lock -} - `; -export const CategoryFragmentDoc = gql` - fragment Category on CategoryInfo { - category - count -} - `; -export const RepositoryFragmentDoc = gql` - fragment Repository on Repository { - id - name - notes - icon - darkIcon - description - publisher { - name - } - recipes { - name - } -} - `; -export const IntegrationFragmentDoc = gql` - fragment Integration on Integration { - id - name - icon - sourceUrl - description - tags { - tag - } - publisher { - ...Publisher - } -} - ${PublisherFragmentDoc}`; -export const CloudShellFragmentDoc = gql` - fragment CloudShell on CloudShell { - id - aesKey - gitUrl - alive - provider - subdomain - cluster - status { - ready - initialized - containersReady - podScheduled - } -} - `; -export const DemoProjectFragmentDoc = gql` - fragment DemoProject on DemoProject { - id - projectId - credentials - ready - state -} - `; -export const TerraformInstallationFragmentDoc = gql` - fragment TerraformInstallation on TerraformInstallation { - id - terraform { - ...Terraform - } - version { - ...Version - } -} - ${TerraformFragmentDoc} -${VersionFragmentDoc}`; -export const StepFragmentDoc = gql` - fragment Step on TestStep { - id - name - status - hasLogs - description - insertedAt - updatedAt -} - `; -export const TestFragmentDoc = gql` - fragment Test on Test { - id - name - promoteTag - status - insertedAt - updatedAt - steps { - ...Step - } -} - ${StepFragmentDoc}`; -export const UpgradeQueueFragmentDoc = gql` - fragment UpgradeQueue on UpgradeQueue { - id - acked - name - domain - git - pingedAt - provider -} - `; -export const RolloutFragmentDoc = gql` - fragment Rollout on Rollout { - id - event - cursor - count - status - heartbeat -} - `; -export const UpgradeFragmentDoc = gql` - fragment Upgrade on Upgrade { - id - message - repository { - ...Repo - } - insertedAt -} - ${RepoFragmentDoc}`; -export const DeferredUpdateFragmentDoc = gql` - fragment DeferredUpdate on DeferredUpdate { - id - dequeueAt - attempts - version { - version - } - insertedAt -} - `; -export const AccountFragmentDoc = gql` - fragment Account on Account { - id - name - billingCustomerId - backgroundColor -} - `; -export const ImpersonationPolicyFragmentDoc = gql` - fragment ImpersonationPolicy on ImpersonationPolicy { - id - bindings { - id - group { - id - name - } - user { - id - name - email - } - } -} - `; -export const GroupMemberFragmentDoc = gql` - fragment GroupMember on GroupMember { - id - user { - ...User - } -} - ${UserFragmentDoc}`; -export const TokenFragmentDoc = gql` - fragment Token on PersistedToken { - id - token - insertedAt -} - `; -export const TokenAuditFragmentDoc = gql` - fragment TokenAudit on PersistedTokenAudit { - ip - timestamp - count - country - city - latitude - longitude -} - `; -export const WebhookFragmentDoc = gql` - fragment Webhook on Webhook { - id - url - secret - insertedAt -} - `; -export const PublicKeyFragmentDoc = gql` - fragment PublicKey on PublicKey { - id - name - digest - insertedAt - content - user { - ...User - } -} - ${UserFragmentDoc}`; -export const EabCredentialFragmentDoc = gql` - fragment EabCredential on EabCredential { - id - keyId - hmacKey - cluster - provider - insertedAt -} - `; -export const VersionTagFragmentDoc = gql` - fragment VersionTag on VersionTag { - id - tag - version { - id - } -} - `; -export const UpdateAccountDocument = gql` - mutation UpdateAccount($attributes: AccountAttributes!) { - updateAccount(attributes: $attributes) { - ...Account - domainMappings { - id - domain - enableSso - } - } -} - ${AccountFragmentDoc}`; -export type UpdateAccountMutationFn = Apollo.MutationFunction; - -/** - * __useUpdateAccountMutation__ - * - * To run a mutation, you first call `useUpdateAccountMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpdateAccountMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [updateAccountMutation, { data, loading, error }] = useUpdateAccountMutation({ - * variables: { - * attributes: // value for 'attributes' - * }, - * }); - */ -export function useUpdateAccountMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UpdateAccountDocument, options); - } -export type UpdateAccountMutationHookResult = ReturnType; -export type UpdateAccountMutationResult = Apollo.MutationResult; -export type UpdateAccountMutationOptions = Apollo.BaseMutationOptions; -export const ListArtifactsDocument = gql` - query ListArtifacts($id: ID!) { - repository(id: $id) { - artifacts { - ...Artifact - } - } -} - ${ArtifactFragmentDoc}`; - -/** - * __useListArtifactsQuery__ - * - * To run a query within a React component, call `useListArtifactsQuery` and pass it any options that fit your needs. - * When your component renders, `useListArtifactsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useListArtifactsQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useListArtifactsQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(ListArtifactsDocument, options); - } -export function useListArtifactsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(ListArtifactsDocument, options); - } -export type ListArtifactsQueryHookResult = ReturnType; -export type ListArtifactsLazyQueryHookResult = ReturnType; -export type ListArtifactsQueryResult = Apollo.QueryResult; -export const CreateArtifactDocument = gql` - mutation CreateArtifact($repoName: String!, $name: String!, $readme: String!, $artifactType: String!, $platform: String!, $blob: UploadOrUrl!, $arch: String) { - createArtifact(repositoryName: $repoName, attributes: {name: $name, blob: $blob, readme: $readme, type: $artifactType, platform: $platform, arch: $arch}) { - ...Artifact - } -} - ${ArtifactFragmentDoc}`; -export type CreateArtifactMutationFn = Apollo.MutationFunction; - -/** - * __useCreateArtifactMutation__ - * - * To run a mutation, you first call `useCreateArtifactMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateArtifactMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createArtifactMutation, { data, loading, error }] = useCreateArtifactMutation({ - * variables: { - * repoName: // value for 'repoName' - * name: // value for 'name' - * readme: // value for 'readme' - * artifactType: // value for 'artifactType' - * platform: // value for 'platform' - * blob: // value for 'blob' - * arch: // value for 'arch' - * }, - * }); - */ -export function useCreateArtifactMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateArtifactDocument, options); - } -export type CreateArtifactMutationHookResult = ReturnType; -export type CreateArtifactMutationResult = Apollo.MutationResult; -export type CreateArtifactMutationOptions = Apollo.BaseMutationOptions; -export const GetChartsDocument = gql` - query GetCharts($id: ID!) { - charts(repositoryId: $id, first: 100) { - edges { - node { - ...Chart - } - } - } -} - ${ChartFragmentDoc}`; - -/** - * __useGetChartsQuery__ - * - * To run a query within a React component, call `useGetChartsQuery` and pass it any options that fit your needs. - * When your component renders, `useGetChartsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetChartsQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useGetChartsQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetChartsDocument, options); - } -export function useGetChartsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetChartsDocument, options); - } -export type GetChartsQueryHookResult = ReturnType; -export type GetChartsLazyQueryHookResult = ReturnType; -export type GetChartsQueryResult = Apollo.QueryResult; -export const GetVersionsDocument = gql` - query GetVersions($id: ID!) { - versions(chartId: $id, first: 100) { - edges { - node { - ...Version - } - } - } -} - ${VersionFragmentDoc}`; - -/** - * __useGetVersionsQuery__ - * - * To run a query within a React component, call `useGetVersionsQuery` and pass it any options that fit your needs. - * When your component renders, `useGetVersionsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetVersionsQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useGetVersionsQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetVersionsDocument, options); - } -export function useGetVersionsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetVersionsDocument, options); - } -export type GetVersionsQueryHookResult = ReturnType; -export type GetVersionsLazyQueryHookResult = ReturnType; -export type GetVersionsQueryResult = Apollo.QueryResult; -export const GetChartInstallationsDocument = gql` - query GetChartInstallations($id: ID!) { - chartInstallations(repositoryId: $id, first: 100) { - edges { - node { - ...ChartInstallation - } - } - } -} - ${ChartInstallationFragmentDoc}`; - -/** - * __useGetChartInstallationsQuery__ - * - * To run a query within a React component, call `useGetChartInstallationsQuery` and pass it any options that fit your needs. - * When your component renders, `useGetChartInstallationsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetChartInstallationsQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useGetChartInstallationsQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetChartInstallationsDocument, options); - } -export function useGetChartInstallationsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetChartInstallationsDocument, options); - } -export type GetChartInstallationsQueryHookResult = ReturnType; -export type GetChartInstallationsLazyQueryHookResult = ReturnType; -export type GetChartInstallationsQueryResult = Apollo.QueryResult; -export const GetPackageInstallationsDocument = gql` - query GetPackageInstallations($id: ID!) { - chartInstallations(repositoryId: $id, first: 100) { - edges { - node { - ...ChartInstallation - } - } - } - terraformInstallations(repositoryId: $id, first: 100) { - edges { - node { - ...TerraformInstallation - } - } - } -} - ${ChartInstallationFragmentDoc} -${TerraformInstallationFragmentDoc}`; - -/** - * __useGetPackageInstallationsQuery__ - * - * To run a query within a React component, call `useGetPackageInstallationsQuery` and pass it any options that fit your needs. - * When your component renders, `useGetPackageInstallationsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetPackageInstallationsQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useGetPackageInstallationsQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetPackageInstallationsDocument, options); - } -export function useGetPackageInstallationsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetPackageInstallationsDocument, options); - } -export type GetPackageInstallationsQueryHookResult = ReturnType; -export type GetPackageInstallationsLazyQueryHookResult = ReturnType; -export type GetPackageInstallationsQueryResult = Apollo.QueryResult; -export const CreateCrdDocument = gql` - mutation CreateCrd($chartName: ChartName!, $name: String!, $blob: UploadOrUrl!) { - createCrd(chartName: $chartName, attributes: {name: $name, blob: $blob}) { - id - } -} - `; -export type CreateCrdMutationFn = Apollo.MutationFunction; - -/** - * __useCreateCrdMutation__ - * - * To run a mutation, you first call `useCreateCrdMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateCrdMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createCrdMutation, { data, loading, error }] = useCreateCrdMutation({ - * variables: { - * chartName: // value for 'chartName' - * name: // value for 'name' - * blob: // value for 'blob' - * }, - * }); - */ -export function useCreateCrdMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateCrdDocument, options); - } -export type CreateCrdMutationHookResult = ReturnType; -export type CreateCrdMutationResult = Apollo.MutationResult; -export type CreateCrdMutationOptions = Apollo.BaseMutationOptions; -export const UninstallChartDocument = gql` - mutation UninstallChart($id: ID!) { - deleteChartInstallation(id: $id) { - id - } -} - `; -export type UninstallChartMutationFn = Apollo.MutationFunction; - -/** - * __useUninstallChartMutation__ - * - * To run a mutation, you first call `useUninstallChartMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUninstallChartMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [uninstallChartMutation, { data, loading, error }] = useUninstallChartMutation({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useUninstallChartMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UninstallChartDocument, options); - } -export type UninstallChartMutationHookResult = ReturnType; -export type UninstallChartMutationResult = Apollo.MutationResult; -export type UninstallChartMutationOptions = Apollo.BaseMutationOptions; -export const GetDnsRecordsDocument = gql` - query GetDnsRecords($cluster: String!, $provider: Provider!) { - dnsRecords(cluster: $cluster, provider: $provider, first: 500) { - edges { - node { - ...DnsRecord - } - } - } -} - ${DnsRecordFragmentDoc}`; - -/** - * __useGetDnsRecordsQuery__ - * - * To run a query within a React component, call `useGetDnsRecordsQuery` and pass it any options that fit your needs. - * When your component renders, `useGetDnsRecordsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetDnsRecordsQuery({ - * variables: { - * cluster: // value for 'cluster' - * provider: // value for 'provider' - * }, - * }); - */ -export function useGetDnsRecordsQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetDnsRecordsDocument, options); - } -export function useGetDnsRecordsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetDnsRecordsDocument, options); - } -export type GetDnsRecordsQueryHookResult = ReturnType; -export type GetDnsRecordsLazyQueryHookResult = ReturnType; -export type GetDnsRecordsQueryResult = Apollo.QueryResult; -export const CreateDnsRecordDocument = gql` - mutation CreateDnsRecord($cluster: String!, $provider: Provider!, $attributes: DnsRecordAttributes!) { - createDnsRecord(cluster: $cluster, provider: $provider, attributes: $attributes) { - ...DnsRecord - } -} - ${DnsRecordFragmentDoc}`; -export type CreateDnsRecordMutationFn = Apollo.MutationFunction; - -/** - * __useCreateDnsRecordMutation__ - * - * To run a mutation, you first call `useCreateDnsRecordMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateDnsRecordMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createDnsRecordMutation, { data, loading, error }] = useCreateDnsRecordMutation({ - * variables: { - * cluster: // value for 'cluster' - * provider: // value for 'provider' - * attributes: // value for 'attributes' - * }, - * }); - */ -export function useCreateDnsRecordMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateDnsRecordDocument, options); - } -export type CreateDnsRecordMutationHookResult = ReturnType; -export type CreateDnsRecordMutationResult = Apollo.MutationResult; -export type CreateDnsRecordMutationOptions = Apollo.BaseMutationOptions; -export const DeleteDnsRecordDocument = gql` - mutation DeleteDnsRecord($name: String!, $type: DnsRecordType!) { - deleteDnsRecord(name: $name, type: $type) { - ...DnsRecord - } -} - ${DnsRecordFragmentDoc}`; -export type DeleteDnsRecordMutationFn = Apollo.MutationFunction; - -/** - * __useDeleteDnsRecordMutation__ - * - * To run a mutation, you first call `useDeleteDnsRecordMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useDeleteDnsRecordMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [deleteDnsRecordMutation, { data, loading, error }] = useDeleteDnsRecordMutation({ - * variables: { - * name: // value for 'name' - * type: // value for 'type' - * }, - * }); - */ -export function useDeleteDnsRecordMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(DeleteDnsRecordDocument, options); - } -export type DeleteDnsRecordMutationHookResult = ReturnType; -export type DeleteDnsRecordMutationResult = Apollo.MutationResult; -export type DeleteDnsRecordMutationOptions = Apollo.BaseMutationOptions; -export const CreateDomainDocument = gql` - mutation CreateDomain($name: String!) { - provisionDomain(name: $name) { - ...DnsDomain - } -} - ${DnsDomainFragmentDoc}`; -export type CreateDomainMutationFn = Apollo.MutationFunction; - -/** - * __useCreateDomainMutation__ - * - * To run a mutation, you first call `useCreateDomainMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateDomainMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createDomainMutation, { data, loading, error }] = useCreateDomainMutation({ - * variables: { - * name: // value for 'name' - * }, - * }); - */ -export function useCreateDomainMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateDomainDocument, options); - } -export type CreateDomainMutationHookResult = ReturnType; -export type CreateDomainMutationResult = Apollo.MutationResult; -export type CreateDomainMutationOptions = Apollo.BaseMutationOptions; -export const GroupMembersDocument = gql` - query GroupMembers($cursor: String, $id: ID!) { - groupMembers(groupId: $id, after: $cursor, first: 20) { - pageInfo { - ...PageInfo - } - edges { - node { - ...GroupMember - } - } - } -} - ${PageInfoFragmentDoc} -${GroupMemberFragmentDoc}`; - -/** - * __useGroupMembersQuery__ - * - * To run a query within a React component, call `useGroupMembersQuery` and pass it any options that fit your needs. - * When your component renders, `useGroupMembersQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGroupMembersQuery({ - * variables: { - * cursor: // value for 'cursor' - * id: // value for 'id' - * }, - * }); - */ -export function useGroupMembersQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GroupMembersDocument, options); - } -export function useGroupMembersLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GroupMembersDocument, options); - } -export type GroupMembersQueryHookResult = ReturnType; -export type GroupMembersLazyQueryHookResult = ReturnType; -export type GroupMembersQueryResult = Apollo.QueryResult; -export const CreateGroupMemberDocument = gql` - mutation CreateGroupMember($groupId: ID!, $userId: ID!) { - createGroupMember(groupId: $groupId, userId: $userId) { - ...GroupMember - } -} - ${GroupMemberFragmentDoc}`; -export type CreateGroupMemberMutationFn = Apollo.MutationFunction; - -/** - * __useCreateGroupMemberMutation__ - * - * To run a mutation, you first call `useCreateGroupMemberMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateGroupMemberMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createGroupMemberMutation, { data, loading, error }] = useCreateGroupMemberMutation({ - * variables: { - * groupId: // value for 'groupId' - * userId: // value for 'userId' - * }, - * }); - */ -export function useCreateGroupMemberMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateGroupMemberDocument, options); - } -export type CreateGroupMemberMutationHookResult = ReturnType; -export type CreateGroupMemberMutationResult = Apollo.MutationResult; -export type CreateGroupMemberMutationOptions = Apollo.BaseMutationOptions; -export const DeleteGroupMemberDocument = gql` - mutation DeleteGroupMember($groupId: ID!, $userId: ID!) { - deleteGroupMember(groupId: $groupId, userId: $userId) { - ...GroupMember - } -} - ${GroupMemberFragmentDoc}`; -export type DeleteGroupMemberMutationFn = Apollo.MutationFunction; - -/** - * __useDeleteGroupMemberMutation__ - * - * To run a mutation, you first call `useDeleteGroupMemberMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useDeleteGroupMemberMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [deleteGroupMemberMutation, { data, loading, error }] = useDeleteGroupMemberMutation({ - * variables: { - * groupId: // value for 'groupId' - * userId: // value for 'userId' - * }, - * }); - */ -export function useDeleteGroupMemberMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(DeleteGroupMemberDocument, options); - } -export type DeleteGroupMemberMutationHookResult = ReturnType; -export type DeleteGroupMemberMutationResult = Apollo.MutationResult; -export type DeleteGroupMemberMutationOptions = Apollo.BaseMutationOptions; -export const CreateGroupDocument = gql` - mutation CreateGroup($attributes: GroupAttributes!) { - createGroup(attributes: $attributes) { - ...Group - } -} - ${GroupFragmentDoc}`; -export type CreateGroupMutationFn = Apollo.MutationFunction; - -/** - * __useCreateGroupMutation__ - * - * To run a mutation, you first call `useCreateGroupMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateGroupMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createGroupMutation, { data, loading, error }] = useCreateGroupMutation({ - * variables: { - * attributes: // value for 'attributes' - * }, - * }); - */ -export function useCreateGroupMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateGroupDocument, options); - } -export type CreateGroupMutationHookResult = ReturnType; -export type CreateGroupMutationResult = Apollo.MutationResult; -export type CreateGroupMutationOptions = Apollo.BaseMutationOptions; -export const UpdateGroupDocument = gql` - mutation UpdateGroup($id: ID!, $attributes: GroupAttributes!) { - updateGroup(groupId: $id, attributes: $attributes) { - ...Group - } -} - ${GroupFragmentDoc}`; -export type UpdateGroupMutationFn = Apollo.MutationFunction; - -/** - * __useUpdateGroupMutation__ - * - * To run a mutation, you first call `useUpdateGroupMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpdateGroupMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [updateGroupMutation, { data, loading, error }] = useUpdateGroupMutation({ - * variables: { - * id: // value for 'id' - * attributes: // value for 'attributes' - * }, - * }); - */ -export function useUpdateGroupMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UpdateGroupDocument, options); - } -export type UpdateGroupMutationHookResult = ReturnType; -export type UpdateGroupMutationResult = Apollo.MutationResult; -export type UpdateGroupMutationOptions = Apollo.BaseMutationOptions; -export const DeleteGroupDocument = gql` - mutation DeleteGroup($id: ID!) { - deleteGroup(groupId: $id) { - ...Group - } -} - ${GroupFragmentDoc}`; -export type DeleteGroupMutationFn = Apollo.MutationFunction; - -/** - * __useDeleteGroupMutation__ - * - * To run a mutation, you first call `useDeleteGroupMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useDeleteGroupMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [deleteGroupMutation, { data, loading, error }] = useDeleteGroupMutation({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useDeleteGroupMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(DeleteGroupDocument, options); - } -export type DeleteGroupMutationHookResult = ReturnType; -export type DeleteGroupMutationResult = Apollo.MutationResult; -export type DeleteGroupMutationOptions = Apollo.BaseMutationOptions; -export const GroupsDocument = gql` - query Groups($q: String, $cursor: String) { - groups(q: $q, first: 20, after: $cursor) { - pageInfo { - ...PageInfo - } - edges { - node { - ...Group - } - } - } -} - ${PageInfoFragmentDoc} -${GroupFragmentDoc}`; - -/** - * __useGroupsQuery__ - * - * To run a query within a React component, call `useGroupsQuery` and pass it any options that fit your needs. - * When your component renders, `useGroupsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGroupsQuery({ - * variables: { - * q: // value for 'q' - * cursor: // value for 'cursor' - * }, - * }); - */ -export function useGroupsQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GroupsDocument, options); - } -export function useGroupsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GroupsDocument, options); - } -export type GroupsQueryHookResult = ReturnType; -export type GroupsLazyQueryHookResult = ReturnType; -export type GroupsQueryResult = Apollo.QueryResult; -export const GetInstallationDocument = gql` - query GetInstallation($name: String) { - installation(name: $name) { - ...Installation - } -} - ${InstallationFragmentDoc}`; - -/** - * __useGetInstallationQuery__ - * - * To run a query within a React component, call `useGetInstallationQuery` and pass it any options that fit your needs. - * When your component renders, `useGetInstallationQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetInstallationQuery({ - * variables: { - * name: // value for 'name' - * }, - * }); - */ -export function useGetInstallationQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetInstallationDocument, options); - } -export function useGetInstallationLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetInstallationDocument, options); - } -export type GetInstallationQueryHookResult = ReturnType; -export type GetInstallationLazyQueryHookResult = ReturnType; -export type GetInstallationQueryResult = Apollo.QueryResult; -export const GetInstallationByIdDocument = gql` - query GetInstallationById($id: ID) { - installation(id: $id) { - ...Installation - } -} - ${InstallationFragmentDoc}`; - -/** - * __useGetInstallationByIdQuery__ - * - * To run a query within a React component, call `useGetInstallationByIdQuery` and pass it any options that fit your needs. - * When your component renders, `useGetInstallationByIdQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetInstallationByIdQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useGetInstallationByIdQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetInstallationByIdDocument, options); - } -export function useGetInstallationByIdLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetInstallationByIdDocument, options); - } -export type GetInstallationByIdQueryHookResult = ReturnType; -export type GetInstallationByIdLazyQueryHookResult = ReturnType; -export type GetInstallationByIdQueryResult = Apollo.QueryResult; -export const GetInstallationsDocument = gql` - query GetInstallations($first: Int) { - installations(first: $first) { - edges { - node { - ...Installation - } - } - } -} - ${InstallationFragmentDoc}`; - -/** - * __useGetInstallationsQuery__ - * - * To run a query within a React component, call `useGetInstallationsQuery` and pass it any options that fit your needs. - * When your component renders, `useGetInstallationsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetInstallationsQuery({ - * variables: { - * first: // value for 'first' - * }, - * }); - */ -export function useGetInstallationsQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetInstallationsDocument, options); - } -export function useGetInstallationsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetInstallationsDocument, options); - } -export type GetInstallationsQueryHookResult = ReturnType; -export type GetInstallationsLazyQueryHookResult = ReturnType; -export type GetInstallationsQueryResult = Apollo.QueryResult; -export const UpsertOidcProviderDocument = gql` - mutation UpsertOidcProvider($id: ID!, $attributes: OidcAttributes!) { - upsertOidcProvider(installationId: $id, attributes: $attributes) { - id - } -} - `; -export type UpsertOidcProviderMutationFn = Apollo.MutationFunction; - -/** - * __useUpsertOidcProviderMutation__ - * - * To run a mutation, you first call `useUpsertOidcProviderMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpsertOidcProviderMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [upsertOidcProviderMutation, { data, loading, error }] = useUpsertOidcProviderMutation({ - * variables: { - * id: // value for 'id' - * attributes: // value for 'attributes' - * }, - * }); - */ -export function useUpsertOidcProviderMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UpsertOidcProviderDocument, options); - } -export type UpsertOidcProviderMutationHookResult = ReturnType; -export type UpsertOidcProviderMutationResult = Apollo.MutationResult; -export type UpsertOidcProviderMutationOptions = Apollo.BaseMutationOptions; -export const SignupInviteDocument = gql` - mutation SignupInvite($attributes: UserAttributes!, $inviteId: String!) { - signup(attributes: $attributes, inviteId: $inviteId) { - jwt - } -} - `; -export type SignupInviteMutationFn = Apollo.MutationFunction; - -/** - * __useSignupInviteMutation__ - * - * To run a mutation, you first call `useSignupInviteMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useSignupInviteMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [signupInviteMutation, { data, loading, error }] = useSignupInviteMutation({ - * variables: { - * attributes: // value for 'attributes' - * inviteId: // value for 'inviteId' - * }, - * }); - */ -export function useSignupInviteMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(SignupInviteDocument, options); - } -export type SignupInviteMutationHookResult = ReturnType; -export type SignupInviteMutationResult = Apollo.MutationResult; -export type SignupInviteMutationOptions = Apollo.BaseMutationOptions; -export const RealizeInviteDocument = gql` - mutation RealizeInvite($id: String!) { - realizeInvite(id: $id) { - jwt - } -} - `; -export type RealizeInviteMutationFn = Apollo.MutationFunction; - -/** - * __useRealizeInviteMutation__ - * - * To run a mutation, you first call `useRealizeInviteMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useRealizeInviteMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [realizeInviteMutation, { data, loading, error }] = useRealizeInviteMutation({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useRealizeInviteMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(RealizeInviteDocument, options); - } -export type RealizeInviteMutationHookResult = ReturnType; -export type RealizeInviteMutationResult = Apollo.MutationResult; -export type RealizeInviteMutationOptions = Apollo.BaseMutationOptions; -export const InviteDocument = gql` - query Invite($id: String!) { - invite(id: $id) { - id - email - existing - account { - ...Account - } - user { - ...User - account { - ...Account - } - } - } -} - ${AccountFragmentDoc} -${UserFragmentDoc}`; - -/** - * __useInviteQuery__ - * - * To run a query within a React component, call `useInviteQuery` and pass it any options that fit your needs. - * When your component renders, `useInviteQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useInviteQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useInviteQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(InviteDocument, options); - } -export function useInviteLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(InviteDocument, options); - } -export type InviteQueryHookResult = ReturnType; -export type InviteLazyQueryHookResult = ReturnType; -export type InviteQueryResult = Apollo.QueryResult; -export const SubscriptionDocument = gql` - query Subscription { - account { - billingCustomerId - grandfatheredUntil - delinquentAt - userCount - clusterCount - availableFeatures { - userManagement - audit - } - subscription { - id - plan { - id - period - lineItems { - dimension - cost - } - } - } - billingAddress { - name - line1 - line2 - zip - state - city - country - } - } -} - `; - -/** - * __useSubscriptionQuery__ - * - * To run a query within a React component, call `useSubscriptionQuery` and pass it any options that fit your needs. - * When your component renders, `useSubscriptionQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useSubscriptionQuery({ - * variables: { - * }, - * }); - */ -export function useSubscriptionQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(SubscriptionDocument, options); - } -export function useSubscriptionLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(SubscriptionDocument, options); - } -export type SubscriptionQueryHookResult = ReturnType; -export type SubscriptionLazyQueryHookResult = ReturnType; -export type SubscriptionQueryResult = Apollo.QueryResult; -export const UpdateAccountBillingDocument = gql` - mutation UpdateAccountBilling($attributes: AccountAttributes!) { - updateAccount(attributes: $attributes) { - id - } -} - `; -export type UpdateAccountBillingMutationFn = Apollo.MutationFunction; - -/** - * __useUpdateAccountBillingMutation__ - * - * To run a mutation, you first call `useUpdateAccountBillingMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpdateAccountBillingMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [updateAccountBillingMutation, { data, loading, error }] = useUpdateAccountBillingMutation({ - * variables: { - * attributes: // value for 'attributes' - * }, - * }); - */ -export function useUpdateAccountBillingMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UpdateAccountBillingDocument, options); - } -export type UpdateAccountBillingMutationHookResult = ReturnType; -export type UpdateAccountBillingMutationResult = Apollo.MutationResult; -export type UpdateAccountBillingMutationOptions = Apollo.BaseMutationOptions; -export const UpgradeToProfessionalPlanDocument = gql` - mutation UpgradeToProfessionalPlan($planId: ID!) { - createPlatformSubscription(planId: $planId) { - id - } -} - `; -export type UpgradeToProfessionalPlanMutationFn = Apollo.MutationFunction; - -/** - * __useUpgradeToProfessionalPlanMutation__ - * - * To run a mutation, you first call `useUpgradeToProfessionalPlanMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpgradeToProfessionalPlanMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [upgradeToProfessionalPlanMutation, { data, loading, error }] = useUpgradeToProfessionalPlanMutation({ - * variables: { - * planId: // value for 'planId' - * }, - * }); - */ -export function useUpgradeToProfessionalPlanMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UpgradeToProfessionalPlanDocument, options); - } -export type UpgradeToProfessionalPlanMutationHookResult = ReturnType; -export type UpgradeToProfessionalPlanMutationResult = Apollo.MutationResult; -export type UpgradeToProfessionalPlanMutationOptions = Apollo.BaseMutationOptions; -export const DowngradeToFreePlanMutationDocument = gql` - mutation DowngradeToFreePlanMutation { - deletePlatformSubscription { - id - } -} - `; -export type DowngradeToFreePlanMutationMutationFn = Apollo.MutationFunction; - -/** - * __useDowngradeToFreePlanMutationMutation__ - * - * To run a mutation, you first call `useDowngradeToFreePlanMutationMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useDowngradeToFreePlanMutationMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [downgradeToFreePlanMutationMutation, { data, loading, error }] = useDowngradeToFreePlanMutationMutation({ - * variables: { - * }, - * }); - */ -export function useDowngradeToFreePlanMutationMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(DowngradeToFreePlanMutationDocument, options); - } -export type DowngradeToFreePlanMutationMutationHookResult = ReturnType; -export type DowngradeToFreePlanMutationMutationResult = Apollo.MutationResult; -export type DowngradeToFreePlanMutationMutationOptions = Apollo.BaseMutationOptions; -export const CardsDocument = gql` - query Cards { - me { - id - cards(first: 100) { - edges { - node { - ...Card - } - } - } - } -} - ${CardFragmentDoc}`; - -/** - * __useCardsQuery__ - * - * To run a query within a React component, call `useCardsQuery` and pass it any options that fit your needs. - * When your component renders, `useCardsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useCardsQuery({ - * variables: { - * }, - * }); - */ -export function useCardsQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(CardsDocument, options); - } -export function useCardsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(CardsDocument, options); - } -export type CardsQueryHookResult = ReturnType; -export type CardsLazyQueryHookResult = ReturnType; -export type CardsQueryResult = Apollo.QueryResult; -export const CreateCardDocument = gql` - mutation CreateCard($source: String!, $address: AddressAttributes) { - createCard(source: $source, address: $address) { - id - } -} - `; -export type CreateCardMutationFn = Apollo.MutationFunction; - -/** - * __useCreateCardMutation__ - * - * To run a mutation, you first call `useCreateCardMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateCardMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createCardMutation, { data, loading, error }] = useCreateCardMutation({ - * variables: { - * source: // value for 'source' - * address: // value for 'address' - * }, - * }); - */ -export function useCreateCardMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateCardDocument, options); - } -export type CreateCardMutationHookResult = ReturnType; -export type CreateCardMutationResult = Apollo.MutationResult; -export type CreateCardMutationOptions = Apollo.BaseMutationOptions; -export const DeleteCardDocument = gql` - mutation DeleteCard($id: ID!) { - deleteCard(id: $id) { - id - } -} - `; -export type DeleteCardMutationFn = Apollo.MutationFunction; - -/** - * __useDeleteCardMutation__ - * - * To run a mutation, you first call `useDeleteCardMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useDeleteCardMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [deleteCardMutation, { data, loading, error }] = useDeleteCardMutation({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useDeleteCardMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(DeleteCardDocument, options); - } -export type DeleteCardMutationHookResult = ReturnType; -export type DeleteCardMutationResult = Apollo.MutationResult; -export type DeleteCardMutationOptions = Apollo.BaseMutationOptions; -export const GetRecipeDocument = gql` - query GetRecipe($repo: String, $name: String, $id: ID) { - recipe(repo: $repo, name: $name, id: $id) { - ...Recipe - recipeDependencies { - ...Recipe - } - } -} - ${RecipeFragmentDoc}`; - -/** - * __useGetRecipeQuery__ - * - * To run a query within a React component, call `useGetRecipeQuery` and pass it any options that fit your needs. - * When your component renders, `useGetRecipeQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetRecipeQuery({ - * variables: { - * repo: // value for 'repo' - * name: // value for 'name' - * id: // value for 'id' - * }, - * }); - */ -export function useGetRecipeQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetRecipeDocument, options); - } -export function useGetRecipeLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetRecipeDocument, options); - } -export type GetRecipeQueryHookResult = ReturnType; -export type GetRecipeLazyQueryHookResult = ReturnType; -export type GetRecipeQueryResult = Apollo.QueryResult; -export const ListRecipesDocument = gql` - query ListRecipes($repositoryName: String, $repositoryId: ID, $provider: Provider) { - recipes(repositoryName: $repositoryName, provider: $provider, first: 500, repositoryId: $repositoryId) { - edges { - node { - ...Recipe - } - } - } -} - ${RecipeFragmentDoc}`; - -/** - * __useListRecipesQuery__ - * - * To run a query within a React component, call `useListRecipesQuery` and pass it any options that fit your needs. - * When your component renders, `useListRecipesQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useListRecipesQuery({ - * variables: { - * repositoryName: // value for 'repositoryName' - * repositoryId: // value for 'repositoryId' - * provider: // value for 'provider' - * }, - * }); - */ -export function useListRecipesQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(ListRecipesDocument, options); - } -export function useListRecipesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(ListRecipesDocument, options); - } -export type ListRecipesQueryHookResult = ReturnType; -export type ListRecipesLazyQueryHookResult = ReturnType; -export type ListRecipesQueryResult = Apollo.QueryResult; -export const CreateRecipeDocument = gql` - mutation CreateRecipe($name: String!, $attributes: RecipeAttributes!) { - createRecipe(repositoryName: $name, attributes: $attributes) { - id - } -} - `; -export type CreateRecipeMutationFn = Apollo.MutationFunction; - -/** - * __useCreateRecipeMutation__ - * - * To run a mutation, you first call `useCreateRecipeMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateRecipeMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createRecipeMutation, { data, loading, error }] = useCreateRecipeMutation({ - * variables: { - * name: // value for 'name' - * attributes: // value for 'attributes' - * }, - * }); - */ -export function useCreateRecipeMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateRecipeDocument, options); - } -export type CreateRecipeMutationHookResult = ReturnType; -export type CreateRecipeMutationResult = Apollo.MutationResult; -export type CreateRecipeMutationOptions = Apollo.BaseMutationOptions; -export const InstallRecipeDocument = gql` - mutation InstallRecipe($id: ID!) { - installRecipe(recipeId: $id, context: "{}") { - id - } -} - `; -export type InstallRecipeMutationFn = Apollo.MutationFunction; - -/** - * __useInstallRecipeMutation__ - * - * To run a mutation, you first call `useInstallRecipeMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useInstallRecipeMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [installRecipeMutation, { data, loading, error }] = useInstallRecipeMutation({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useInstallRecipeMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(InstallRecipeDocument, options); - } -export type InstallRecipeMutationHookResult = ReturnType; -export type InstallRecipeMutationResult = Apollo.MutationResult; -export type InstallRecipeMutationOptions = Apollo.BaseMutationOptions; -export const CreateStackDocument = gql` - mutation CreateStack($attributes: StackAttributes!) { - createStack(attributes: $attributes) { - id - } -} - `; -export type CreateStackMutationFn = Apollo.MutationFunction; - -/** - * __useCreateStackMutation__ - * - * To run a mutation, you first call `useCreateStackMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateStackMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createStackMutation, { data, loading, error }] = useCreateStackMutation({ - * variables: { - * attributes: // value for 'attributes' - * }, - * }); - */ -export function useCreateStackMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateStackDocument, options); - } -export type CreateStackMutationHookResult = ReturnType; -export type CreateStackMutationResult = Apollo.MutationResult; -export type CreateStackMutationOptions = Apollo.BaseMutationOptions; -export const GetStackDocument = gql` - query GetStack($name: String!, $provider: Provider!) { - stack(name: $name, provider: $provider) { - ...Stack - } -} - ${StackFragmentDoc}`; - -/** - * __useGetStackQuery__ - * - * To run a query within a React component, call `useGetStackQuery` and pass it any options that fit your needs. - * When your component renders, `useGetStackQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetStackQuery({ - * variables: { - * name: // value for 'name' - * provider: // value for 'provider' - * }, - * }); - */ -export function useGetStackQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetStackDocument, options); - } -export function useGetStackLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetStackDocument, options); - } -export type GetStackQueryHookResult = ReturnType; -export type GetStackLazyQueryHookResult = ReturnType; -export type GetStackQueryResult = Apollo.QueryResult; -export const ListStacksDocument = gql` - query ListStacks($featured: Boolean, $cursor: String) { - stacks(first: 100, after: $cursor, featured: $featured) { - edges { - node { - ...Stack - } - } - } -} - ${StackFragmentDoc}`; - -/** - * __useListStacksQuery__ - * - * To run a query within a React component, call `useListStacksQuery` and pass it any options that fit your needs. - * When your component renders, `useListStacksQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useListStacksQuery({ - * variables: { - * featured: // value for 'featured' - * cursor: // value for 'cursor' - * }, - * }); - */ -export function useListStacksQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(ListStacksDocument, options); - } -export function useListStacksLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(ListStacksDocument, options); - } -export type ListStacksQueryHookResult = ReturnType; -export type ListStacksLazyQueryHookResult = ReturnType; -export type ListStacksQueryResult = Apollo.QueryResult; -export const CreateQuickStackDocument = gql` - mutation CreateQuickStack($applicationIds: [ID], $provider: Provider!) { - quickStack(repositoryIds: $applicationIds, provider: $provider) { - id - name - } -} - `; -export type CreateQuickStackMutationFn = Apollo.MutationFunction; - -/** - * __useCreateQuickStackMutation__ - * - * To run a mutation, you first call `useCreateQuickStackMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateQuickStackMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createQuickStackMutation, { data, loading, error }] = useCreateQuickStackMutation({ - * variables: { - * applicationIds: // value for 'applicationIds' - * provider: // value for 'provider' - * }, - * }); - */ -export function useCreateQuickStackMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateQuickStackDocument, options); - } -export type CreateQuickStackMutationHookResult = ReturnType; -export type CreateQuickStackMutationResult = Apollo.MutationResult; -export type CreateQuickStackMutationOptions = Apollo.BaseMutationOptions; -export const InstallStackShellDocument = gql` - mutation InstallStackShell($name: String!, $context: ContextAttributes!, $oidc: Boolean!) { - installStackShell(name: $name, context: $context, oidc: $oidc) { - id - name - } -} - `; -export type InstallStackShellMutationFn = Apollo.MutationFunction; - -/** - * __useInstallStackShellMutation__ - * - * To run a mutation, you first call `useInstallStackShellMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useInstallStackShellMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [installStackShellMutation, { data, loading, error }] = useInstallStackShellMutation({ - * variables: { - * name: // value for 'name' - * context: // value for 'context' - * oidc: // value for 'oidc' - * }, - * }); - */ -export function useInstallStackShellMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(InstallStackShellDocument, options); - } -export type InstallStackShellMutationHookResult = ReturnType; -export type InstallStackShellMutationResult = Apollo.MutationResult; -export type InstallStackShellMutationOptions = Apollo.BaseMutationOptions; -export const RepositoryDocument = gql` - query Repository($id: ID, $name: String) { - repository(id: $id, name: $name) { - ...Repo - editable - publicKey - secrets - artifacts { - ...Artifact - } - installation { - ...Installation - oidcProvider { - ...OIDCProvider - } - } - tags { - tag - } - readme - mainBranch - gitUrl - homepage - license { - name - url - } - documentation - community { - discord - slack - homepage - gitUrl - twitter - } - } -} - ${RepoFragmentDoc} -${ArtifactFragmentDoc} -${InstallationFragmentDoc} -${OidcProviderFragmentDoc}`; - -/** - * __useRepositoryQuery__ - * - * To run a query within a React component, call `useRepositoryQuery` and pass it any options that fit your needs. - * When your component renders, `useRepositoryQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useRepositoryQuery({ - * variables: { - * id: // value for 'id' - * name: // value for 'name' - * }, - * }); - */ -export function useRepositoryQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(RepositoryDocument, options); - } -export function useRepositoryLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(RepositoryDocument, options); - } -export type RepositoryQueryHookResult = ReturnType; -export type RepositoryLazyQueryHookResult = ReturnType; -export type RepositoryQueryResult = Apollo.QueryResult; -export const CreateResourceDefinitionDocument = gql` - mutation CreateResourceDefinition($name: String!, $input: ResourceDefinitionAttributes!) { - updateRepository(repositoryName: $name, attributes: {integrationResourceDefinition: $input}) { - id - } -} - `; -export type CreateResourceDefinitionMutationFn = Apollo.MutationFunction; - -/** - * __useCreateResourceDefinitionMutation__ - * - * To run a mutation, you first call `useCreateResourceDefinitionMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateResourceDefinitionMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createResourceDefinitionMutation, { data, loading, error }] = useCreateResourceDefinitionMutation({ - * variables: { - * name: // value for 'name' - * input: // value for 'input' - * }, - * }); - */ -export function useCreateResourceDefinitionMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateResourceDefinitionDocument, options); - } -export type CreateResourceDefinitionMutationHookResult = ReturnType; -export type CreateResourceDefinitionMutationResult = Apollo.MutationResult; -export type CreateResourceDefinitionMutationOptions = Apollo.BaseMutationOptions; -export const CreateIntegrationDocument = gql` - mutation CreateIntegration($name: String!, $attrs: IntegrationAttributes!) { - createIntegration(repositoryName: $name, attributes: $attrs) { - id - } -} - `; -export type CreateIntegrationMutationFn = Apollo.MutationFunction; - -/** - * __useCreateIntegrationMutation__ - * - * To run a mutation, you first call `useCreateIntegrationMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateIntegrationMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createIntegrationMutation, { data, loading, error }] = useCreateIntegrationMutation({ - * variables: { - * name: // value for 'name' - * attrs: // value for 'attrs' - * }, - * }); - */ -export function useCreateIntegrationMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateIntegrationDocument, options); - } -export type CreateIntegrationMutationHookResult = ReturnType; -export type CreateIntegrationMutationResult = Apollo.MutationResult; -export type CreateIntegrationMutationOptions = Apollo.BaseMutationOptions; -export const UpdateRepositoryDocument = gql` - mutation UpdateRepository($name: String!, $attrs: RepositoryAttributes!) { - updateRepository(repositoryName: $name, attributes: $attrs) { - id - } -} - `; -export type UpdateRepositoryMutationFn = Apollo.MutationFunction; - -/** - * __useUpdateRepositoryMutation__ - * - * To run a mutation, you first call `useUpdateRepositoryMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpdateRepositoryMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [updateRepositoryMutation, { data, loading, error }] = useUpdateRepositoryMutation({ - * variables: { - * name: // value for 'name' - * attrs: // value for 'attrs' - * }, - * }); - */ -export function useUpdateRepositoryMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UpdateRepositoryDocument, options); - } -export type UpdateRepositoryMutationHookResult = ReturnType; -export type UpdateRepositoryMutationResult = Apollo.MutationResult; -export type UpdateRepositoryMutationOptions = Apollo.BaseMutationOptions; -export const CreateRepositoryDocument = gql` - mutation CreateRepository($name: String!, $publisher: String!, $attributes: RepositoryAttributes!) { - upsertRepository(name: $name, publisher: $publisher, attributes: $attributes) { - id - } -} - `; -export type CreateRepositoryMutationFn = Apollo.MutationFunction; - -/** - * __useCreateRepositoryMutation__ - * - * To run a mutation, you first call `useCreateRepositoryMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateRepositoryMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createRepositoryMutation, { data, loading, error }] = useCreateRepositoryMutation({ - * variables: { - * name: // value for 'name' - * publisher: // value for 'publisher' - * attributes: // value for 'attributes' - * }, - * }); - */ -export function useCreateRepositoryMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateRepositoryDocument, options); - } -export type CreateRepositoryMutationHookResult = ReturnType; -export type CreateRepositoryMutationResult = Apollo.MutationResult; -export type CreateRepositoryMutationOptions = Apollo.BaseMutationOptions; -export const AcquireLockDocument = gql` - mutation AcquireLock($name: String!) { - acquireLock(repository: $name) { - ...ApplyLock - } -} - ${ApplyLockFragmentDoc}`; -export type AcquireLockMutationFn = Apollo.MutationFunction; - -/** - * __useAcquireLockMutation__ - * - * To run a mutation, you first call `useAcquireLockMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useAcquireLockMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [acquireLockMutation, { data, loading, error }] = useAcquireLockMutation({ - * variables: { - * name: // value for 'name' - * }, - * }); - */ -export function useAcquireLockMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(AcquireLockDocument, options); - } -export type AcquireLockMutationHookResult = ReturnType; -export type AcquireLockMutationResult = Apollo.MutationResult; -export type AcquireLockMutationOptions = Apollo.BaseMutationOptions; -export const ReleaseLockDocument = gql` - mutation ReleaseLock($name: String!, $attrs: LockAttributes!) { - releaseLock(repository: $name, attributes: $attrs) { - ...ApplyLock - } -} - ${ApplyLockFragmentDoc}`; -export type ReleaseLockMutationFn = Apollo.MutationFunction; - -/** - * __useReleaseLockMutation__ - * - * To run a mutation, you first call `useReleaseLockMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useReleaseLockMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [releaseLockMutation, { data, loading, error }] = useReleaseLockMutation({ - * variables: { - * name: // value for 'name' - * attrs: // value for 'attrs' - * }, - * }); - */ -export function useReleaseLockMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(ReleaseLockDocument, options); - } -export type ReleaseLockMutationHookResult = ReturnType; -export type ReleaseLockMutationResult = Apollo.MutationResult; -export type ReleaseLockMutationOptions = Apollo.BaseMutationOptions; -export const UnlockRepositoryDocument = gql` - mutation UnlockRepository($name: String!) { - unlockRepository(name: $name) -} - `; -export type UnlockRepositoryMutationFn = Apollo.MutationFunction; - -/** - * __useUnlockRepositoryMutation__ - * - * To run a mutation, you first call `useUnlockRepositoryMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUnlockRepositoryMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [unlockRepositoryMutation, { data, loading, error }] = useUnlockRepositoryMutation({ - * variables: { - * name: // value for 'name' - * }, - * }); - */ -export function useUnlockRepositoryMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UnlockRepositoryDocument, options); - } -export type UnlockRepositoryMutationHookResult = ReturnType; -export type UnlockRepositoryMutationResult = Apollo.MutationResult; -export type UnlockRepositoryMutationOptions = Apollo.BaseMutationOptions; -export const ListRepositoriesDocument = gql` - query ListRepositories($q: String, $installed: Boolean, $first: Int = 100, $provider: Provider = null) { - repositories(q: $q, first: $first, installed: $installed, provider: $provider) { - edges { - node { - ...Repository - } - } - } -} - ${RepositoryFragmentDoc}`; - -/** - * __useListRepositoriesQuery__ - * - * To run a query within a React component, call `useListRepositoriesQuery` and pass it any options that fit your needs. - * When your component renders, `useListRepositoriesQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useListRepositoriesQuery({ - * variables: { - * q: // value for 'q' - * installed: // value for 'installed' - * first: // value for 'first' - * provider: // value for 'provider' - * }, - * }); - */ -export function useListRepositoriesQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(ListRepositoriesDocument, options); - } -export function useListRepositoriesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(ListRepositoriesDocument, options); - } -export type ListRepositoriesQueryHookResult = ReturnType; -export type ListRepositoriesLazyQueryHookResult = ReturnType; -export type ListRepositoriesQueryResult = Apollo.QueryResult; -export const ScaffoldsDocument = gql` - query Scaffolds($app: String!, $pub: String!, $cat: Category!, $ing: Boolean, $pg: Boolean) { - scaffold(application: $app, publisher: $pub, category: $cat, ingress: $ing, postgres: $pg) { - path - content - } -} - `; - -/** - * __useScaffoldsQuery__ - * - * To run a query within a React component, call `useScaffoldsQuery` and pass it any options that fit your needs. - * When your component renders, `useScaffoldsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useScaffoldsQuery({ - * variables: { - * app: // value for 'app' - * pub: // value for 'pub' - * cat: // value for 'cat' - * ing: // value for 'ing' - * pg: // value for 'pg' - * }, - * }); - */ -export function useScaffoldsQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(ScaffoldsDocument, options); - } -export function useScaffoldsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(ScaffoldsDocument, options); - } -export type ScaffoldsQueryHookResult = ReturnType; -export type ScaffoldsLazyQueryHookResult = ReturnType; -export type ScaffoldsQueryResult = Apollo.QueryResult; -export const DeleteRepositoryDocument = gql` - mutation DeleteRepository($id: ID!) { - deleteRepository(repositoryId: $id) { - id - } -} - `; -export type DeleteRepositoryMutationFn = Apollo.MutationFunction; - -/** - * __useDeleteRepositoryMutation__ - * - * To run a mutation, you first call `useDeleteRepositoryMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useDeleteRepositoryMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [deleteRepositoryMutation, { data, loading, error }] = useDeleteRepositoryMutation({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useDeleteRepositoryMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(DeleteRepositoryDocument, options); - } -export type DeleteRepositoryMutationHookResult = ReturnType; -export type DeleteRepositoryMutationResult = Apollo.MutationResult; -export type DeleteRepositoryMutationOptions = Apollo.BaseMutationOptions; -export const GetTfProvidersDocument = gql` - query GetTfProviders { - terraformProviders -} - `; - -/** - * __useGetTfProvidersQuery__ - * - * To run a query within a React component, call `useGetTfProvidersQuery` and pass it any options that fit your needs. - * When your component renders, `useGetTfProvidersQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetTfProvidersQuery({ - * variables: { - * }, - * }); - */ -export function useGetTfProvidersQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetTfProvidersDocument, options); - } -export function useGetTfProvidersLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetTfProvidersDocument, options); - } -export type GetTfProvidersQueryHookResult = ReturnType; -export type GetTfProvidersLazyQueryHookResult = ReturnType; -export type GetTfProvidersQueryResult = Apollo.QueryResult; -export const GetTfProviderScaffoldDocument = gql` - query GetTfProviderScaffold($name: Provider!, $vsn: String) { - terraformProvider(name: $name, vsn: $vsn) { - name - content - } -} - `; - -/** - * __useGetTfProviderScaffoldQuery__ - * - * To run a query within a React component, call `useGetTfProviderScaffoldQuery` and pass it any options that fit your needs. - * When your component renders, `useGetTfProviderScaffoldQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetTfProviderScaffoldQuery({ - * variables: { - * name: // value for 'name' - * vsn: // value for 'vsn' - * }, - * }); - */ -export function useGetTfProviderScaffoldQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetTfProviderScaffoldDocument, options); - } -export function useGetTfProviderScaffoldLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetTfProviderScaffoldDocument, options); - } -export type GetTfProviderScaffoldQueryHookResult = ReturnType; -export type GetTfProviderScaffoldLazyQueryHookResult = ReturnType; -export type GetTfProviderScaffoldQueryResult = Apollo.QueryResult; -export const GetShellDocument = gql` - query GetShell { - shell { - ...CloudShell - } -} - ${CloudShellFragmentDoc}`; - -/** - * __useGetShellQuery__ - * - * To run a query within a React component, call `useGetShellQuery` and pass it any options that fit your needs. - * When your component renders, `useGetShellQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetShellQuery({ - * variables: { - * }, - * }); - */ -export function useGetShellQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetShellDocument, options); - } -export function useGetShellLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetShellDocument, options); - } -export type GetShellQueryHookResult = ReturnType; -export type GetShellLazyQueryHookResult = ReturnType; -export type GetShellQueryResult = Apollo.QueryResult; -export const DeleteShellDocument = gql` - mutation DeleteShell { - deleteShell { - ...CloudShell - } -} - ${CloudShellFragmentDoc}`; -export type DeleteShellMutationFn = Apollo.MutationFunction; - -/** - * __useDeleteShellMutation__ - * - * To run a mutation, you first call `useDeleteShellMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useDeleteShellMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [deleteShellMutation, { data, loading, error }] = useDeleteShellMutation({ - * variables: { - * }, - * }); - */ -export function useDeleteShellMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(DeleteShellDocument, options); - } -export type DeleteShellMutationHookResult = ReturnType; -export type DeleteShellMutationResult = Apollo.MutationResult; -export type DeleteShellMutationOptions = Apollo.BaseMutationOptions; -export const GetTerraformDocument = gql` - query GetTerraform($id: ID!) { - terraform(repositoryId: $id, first: 100) { - edges { - node { - ...Terraform - } - } - } -} - ${TerraformFragmentDoc}`; - -/** - * __useGetTerraformQuery__ - * - * To run a query within a React component, call `useGetTerraformQuery` and pass it any options that fit your needs. - * When your component renders, `useGetTerraformQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetTerraformQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useGetTerraformQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetTerraformDocument, options); - } -export function useGetTerraformLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetTerraformDocument, options); - } -export type GetTerraformQueryHookResult = ReturnType; -export type GetTerraformLazyQueryHookResult = ReturnType; -export type GetTerraformQueryResult = Apollo.QueryResult; -export const GetTerraformInstallationsDocument = gql` - query GetTerraformInstallations($id: ID!) { - terraformInstallations(repositoryId: $id, first: 100) { - edges { - node { - ...TerraformInstallation - } - } - } -} - ${TerraformInstallationFragmentDoc}`; - -/** - * __useGetTerraformInstallationsQuery__ - * - * To run a query within a React component, call `useGetTerraformInstallationsQuery` and pass it any options that fit your needs. - * When your component renders, `useGetTerraformInstallationsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetTerraformInstallationsQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useGetTerraformInstallationsQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetTerraformInstallationsDocument, options); - } -export function useGetTerraformInstallationsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetTerraformInstallationsDocument, options); - } -export type GetTerraformInstallationsQueryHookResult = ReturnType; -export type GetTerraformInstallationsLazyQueryHookResult = ReturnType; -export type GetTerraformInstallationsQueryResult = Apollo.QueryResult; -export const UploadTerraformDocument = gql` - mutation UploadTerraform($repoName: String!, $name: String!, $uploadOrUrl: UploadOrUrl!) { - uploadTerraform(repositoryName: $repoName, name: $name, attributes: {name: $name, package: $uploadOrUrl}) { - ...Terraform - } -} - ${TerraformFragmentDoc}`; -export type UploadTerraformMutationFn = Apollo.MutationFunction; - -/** - * __useUploadTerraformMutation__ - * - * To run a mutation, you first call `useUploadTerraformMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUploadTerraformMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [uploadTerraformMutation, { data, loading, error }] = useUploadTerraformMutation({ - * variables: { - * repoName: // value for 'repoName' - * name: // value for 'name' - * uploadOrUrl: // value for 'uploadOrUrl' - * }, - * }); - */ -export function useUploadTerraformMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UploadTerraformDocument, options); - } -export type UploadTerraformMutationHookResult = ReturnType; -export type UploadTerraformMutationResult = Apollo.MutationResult; -export type UploadTerraformMutationOptions = Apollo.BaseMutationOptions; -export const UninstallTerraformDocument = gql` - mutation UninstallTerraform($id: ID!) { - uninstallTerraform(id: $id) { - id - } -} - `; -export type UninstallTerraformMutationFn = Apollo.MutationFunction; - -/** - * __useUninstallTerraformMutation__ - * - * To run a mutation, you first call `useUninstallTerraformMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUninstallTerraformMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [uninstallTerraformMutation, { data, loading, error }] = useUninstallTerraformMutation({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useUninstallTerraformMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UninstallTerraformDocument, options); - } -export type UninstallTerraformMutationHookResult = ReturnType; -export type UninstallTerraformMutationResult = Apollo.MutationResult; -export type UninstallTerraformMutationOptions = Apollo.BaseMutationOptions; -export const CreateTestDocument = gql` - mutation CreateTest($name: String!, $attrs: TestAttributes!) { - createTest(name: $name, attributes: $attrs) { - ...Test - } -} - ${TestFragmentDoc}`; -export type CreateTestMutationFn = Apollo.MutationFunction; - -/** - * __useCreateTestMutation__ - * - * To run a mutation, you first call `useCreateTestMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateTestMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createTestMutation, { data, loading, error }] = useCreateTestMutation({ - * variables: { - * name: // value for 'name' - * attrs: // value for 'attrs' - * }, - * }); - */ -export function useCreateTestMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateTestDocument, options); - } -export type CreateTestMutationHookResult = ReturnType; -export type CreateTestMutationResult = Apollo.MutationResult; -export type CreateTestMutationOptions = Apollo.BaseMutationOptions; -export const UpdateTestDocument = gql` - mutation UpdateTest($id: ID!, $attrs: TestAttributes!) { - updateTest(id: $id, attributes: $attrs) { - ...Test - } -} - ${TestFragmentDoc}`; -export type UpdateTestMutationFn = Apollo.MutationFunction; - -/** - * __useUpdateTestMutation__ - * - * To run a mutation, you first call `useUpdateTestMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpdateTestMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [updateTestMutation, { data, loading, error }] = useUpdateTestMutation({ - * variables: { - * id: // value for 'id' - * attrs: // value for 'attrs' - * }, - * }); - */ -export function useUpdateTestMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UpdateTestDocument, options); - } -export type UpdateTestMutationHookResult = ReturnType; -export type UpdateTestMutationResult = Apollo.MutationResult; -export type UpdateTestMutationOptions = Apollo.BaseMutationOptions; -export const UpdateStepDocument = gql` - mutation UpdateStep($id: ID!, $logs: UploadOrUrl!) { - updateStep(id: $id, attributes: {logs: $logs}) { - id - } -} - `; -export type UpdateStepMutationFn = Apollo.MutationFunction; - -/** - * __useUpdateStepMutation__ - * - * To run a mutation, you first call `useUpdateStepMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpdateStepMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [updateStepMutation, { data, loading, error }] = useUpdateStepMutation({ - * variables: { - * id: // value for 'id' - * logs: // value for 'logs' - * }, - * }); - */ -export function useUpdateStepMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UpdateStepDocument, options); - } -export type UpdateStepMutationHookResult = ReturnType; -export type UpdateStepMutationResult = Apollo.MutationResult; -export type UpdateStepMutationOptions = Apollo.BaseMutationOptions; -export const PublishLogsDocument = gql` - mutation PublishLogs($id: ID!, $logs: String!) { - publishLogs(id: $id, logs: $logs) { - id - } -} - `; -export type PublishLogsMutationFn = Apollo.MutationFunction; - -/** - * __usePublishLogsMutation__ - * - * To run a mutation, you first call `usePublishLogsMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `usePublishLogsMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [publishLogsMutation, { data, loading, error }] = usePublishLogsMutation({ - * variables: { - * id: // value for 'id' - * logs: // value for 'logs' - * }, - * }); - */ -export function usePublishLogsMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(PublishLogsDocument, options); - } -export type PublishLogsMutationHookResult = ReturnType; -export type PublishLogsMutationResult = Apollo.MutationResult; -export type PublishLogsMutationOptions = Apollo.BaseMutationOptions; -export const MeDocument = gql` - query Me { - me { - ...User - loginMethod - hasInstallations - account { - ...Account - rootUser { - id - name - email - } - domainMappings { - id - domain - enableSso - } - } - publisher { - ...Publisher - billingAccountId - } - boundRoles { - ...Role - } - } - configuration { - stripeConnectId - stripePublishableKey - registry - gitCommit - } -} - ${UserFragmentDoc} -${AccountFragmentDoc} -${PublisherFragmentDoc} -${RoleFragmentDoc}`; - -/** - * __useMeQuery__ - * - * To run a query within a React component, call `useMeQuery` and pass it any options that fit your needs. - * When your component renders, `useMeQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useMeQuery({ - * variables: { - * }, - * }); - */ -export function useMeQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(MeDocument, options); - } -export function useMeLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(MeDocument, options); - } -export type MeQueryHookResult = ReturnType; -export type MeLazyQueryHookResult = ReturnType; -export type MeQueryResult = Apollo.QueryResult; -export const GetLoginMethodDocument = gql` - query GetLoginMethod($email: String!) { - loginMethod(email: $email) { - loginMethod - token - } -} - `; - -/** - * __useGetLoginMethodQuery__ - * - * To run a query within a React component, call `useGetLoginMethodQuery` and pass it any options that fit your needs. - * When your component renders, `useGetLoginMethodQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetLoginMethodQuery({ - * variables: { - * email: // value for 'email' - * }, - * }); - */ -export function useGetLoginMethodQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetLoginMethodDocument, options); - } -export function useGetLoginMethodLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetLoginMethodDocument, options); - } -export type GetLoginMethodQueryHookResult = ReturnType; -export type GetLoginMethodLazyQueryHookResult = ReturnType; -export type GetLoginMethodQueryResult = Apollo.QueryResult; -export const ListTokensDocument = gql` - query ListTokens { - tokens(first: 3) { - edges { - node { - token - } - } - } -} - `; - -/** - * __useListTokensQuery__ - * - * To run a query within a React component, call `useListTokensQuery` and pass it any options that fit your needs. - * When your component renders, `useListTokensQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useListTokensQuery({ - * variables: { - * }, - * }); - */ -export function useListTokensQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(ListTokensDocument, options); - } -export function useListTokensLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(ListTokensDocument, options); - } -export type ListTokensQueryHookResult = ReturnType; -export type ListTokensLazyQueryHookResult = ReturnType; -export type ListTokensQueryResult = Apollo.QueryResult; -export const ListKeysDocument = gql` - query ListKeys($emails: [String]) { - publicKeys(emails: $emails, first: 1000) { - edges { - node { - ...PublicKey - } - } - } -} - ${PublicKeyFragmentDoc}`; - -/** - * __useListKeysQuery__ - * - * To run a query within a React component, call `useListKeysQuery` and pass it any options that fit your needs. - * When your component renders, `useListKeysQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useListKeysQuery({ - * variables: { - * emails: // value for 'emails' - * }, - * }); - */ -export function useListKeysQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(ListKeysDocument, options); - } -export function useListKeysLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(ListKeysDocument, options); - } -export type ListKeysQueryHookResult = ReturnType; -export type ListKeysLazyQueryHookResult = ReturnType; -export type ListKeysQueryResult = Apollo.QueryResult; -export const GetEabCredentialDocument = gql` - query GetEabCredential($cluster: String!, $provider: Provider!) { - eabCredential(cluster: $cluster, provider: $provider) { - ...EabCredential - } -} - ${EabCredentialFragmentDoc}`; - -/** - * __useGetEabCredentialQuery__ - * - * To run a query within a React component, call `useGetEabCredentialQuery` and pass it any options that fit your needs. - * When your component renders, `useGetEabCredentialQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useGetEabCredentialQuery({ - * variables: { - * cluster: // value for 'cluster' - * provider: // value for 'provider' - * }, - * }); - */ -export function useGetEabCredentialQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(GetEabCredentialDocument, options); - } -export function useGetEabCredentialLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(GetEabCredentialDocument, options); - } -export type GetEabCredentialQueryHookResult = ReturnType; -export type GetEabCredentialLazyQueryHookResult = ReturnType; -export type GetEabCredentialQueryResult = Apollo.QueryResult; -export const DevLoginDocument = gql` - mutation DevLogin { - deviceLogin { - loginUrl - deviceToken - } -} - `; -export type DevLoginMutationFn = Apollo.MutationFunction; - -/** - * __useDevLoginMutation__ - * - * To run a mutation, you first call `useDevLoginMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useDevLoginMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [devLoginMutation, { data, loading, error }] = useDevLoginMutation({ - * variables: { - * }, - * }); - */ -export function useDevLoginMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(DevLoginDocument, options); - } -export type DevLoginMutationHookResult = ReturnType; -export type DevLoginMutationResult = Apollo.MutationResult; -export type DevLoginMutationOptions = Apollo.BaseMutationOptions; -export const LoginDocument = gql` - mutation Login($email: String!, $password: String!, $deviceToken: String) { - login(email: $email, password: $password, deviceToken: $deviceToken) { - jwt - } -} - `; -export type LoginMutationFn = Apollo.MutationFunction; - -/** - * __useLoginMutation__ - * - * To run a mutation, you first call `useLoginMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useLoginMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [loginMutation, { data, loading, error }] = useLoginMutation({ - * variables: { - * email: // value for 'email' - * password: // value for 'password' - * deviceToken: // value for 'deviceToken' - * }, - * }); - */ -export function useLoginMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(LoginDocument, options); - } -export type LoginMutationHookResult = ReturnType; -export type LoginMutationResult = Apollo.MutationResult; -export type LoginMutationOptions = Apollo.BaseMutationOptions; -export const ImpersonateServiceAccountDocument = gql` - mutation ImpersonateServiceAccount($email: String) { - impersonateServiceAccount(email: $email) { - jwt - email - } -} - `; -export type ImpersonateServiceAccountMutationFn = Apollo.MutationFunction; - -/** - * __useImpersonateServiceAccountMutation__ - * - * To run a mutation, you first call `useImpersonateServiceAccountMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useImpersonateServiceAccountMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [impersonateServiceAccountMutation, { data, loading, error }] = useImpersonateServiceAccountMutation({ - * variables: { - * email: // value for 'email' - * }, - * }); - */ -export function useImpersonateServiceAccountMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(ImpersonateServiceAccountDocument, options); - } -export type ImpersonateServiceAccountMutationHookResult = ReturnType; -export type ImpersonateServiceAccountMutationResult = Apollo.MutationResult; -export type ImpersonateServiceAccountMutationOptions = Apollo.BaseMutationOptions; -export const CreateAccessTokenDocument = gql` - mutation CreateAccessToken { - createToken { - token - } -} - `; -export type CreateAccessTokenMutationFn = Apollo.MutationFunction; - -/** - * __useCreateAccessTokenMutation__ - * - * To run a mutation, you first call `useCreateAccessTokenMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateAccessTokenMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createAccessTokenMutation, { data, loading, error }] = useCreateAccessTokenMutation({ - * variables: { - * }, - * }); - */ -export function useCreateAccessTokenMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateAccessTokenDocument, options); - } -export type CreateAccessTokenMutationHookResult = ReturnType; -export type CreateAccessTokenMutationResult = Apollo.MutationResult; -export type CreateAccessTokenMutationOptions = Apollo.BaseMutationOptions; -export const CreateKeyDocument = gql` - mutation CreateKey($key: String!, $name: String!) { - createPublicKey(attributes: {content: $key, name: $name}) { - id - } -} - `; -export type CreateKeyMutationFn = Apollo.MutationFunction; - -/** - * __useCreateKeyMutation__ - * - * To run a mutation, you first call `useCreateKeyMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateKeyMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createKeyMutation, { data, loading, error }] = useCreateKeyMutation({ - * variables: { - * key: // value for 'key' - * name: // value for 'name' - * }, - * }); - */ -export function useCreateKeyMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateKeyDocument, options); - } -export type CreateKeyMutationHookResult = ReturnType; -export type CreateKeyMutationResult = Apollo.MutationResult; -export type CreateKeyMutationOptions = Apollo.BaseMutationOptions; -export const DeleteEabCredentialDocument = gql` - mutation DeleteEabCredential($cluster: String!, $provider: Provider!) { - deleteEabKey(cluster: $cluster, provider: $provider) { - id - } -} - `; -export type DeleteEabCredentialMutationFn = Apollo.MutationFunction; - -/** - * __useDeleteEabCredentialMutation__ - * - * To run a mutation, you first call `useDeleteEabCredentialMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useDeleteEabCredentialMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [deleteEabCredentialMutation, { data, loading, error }] = useDeleteEabCredentialMutation({ - * variables: { - * cluster: // value for 'cluster' - * provider: // value for 'provider' - * }, - * }); - */ -export function useDeleteEabCredentialMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(DeleteEabCredentialDocument, options); - } -export type DeleteEabCredentialMutationHookResult = ReturnType; -export type DeleteEabCredentialMutationResult = Apollo.MutationResult; -export type DeleteEabCredentialMutationOptions = Apollo.BaseMutationOptions; -export const CreateEventDocument = gql` - mutation CreateEvent($attrs: UserEventAttributes!) { - createUserEvent(attributes: $attrs) -} - `; -export type CreateEventMutationFn = Apollo.MutationFunction; - -/** - * __useCreateEventMutation__ - * - * To run a mutation, you first call `useCreateEventMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateEventMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createEventMutation, { data, loading, error }] = useCreateEventMutation({ - * variables: { - * attrs: // value for 'attrs' - * }, - * }); - */ -export function useCreateEventMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateEventDocument, options); - } -export type CreateEventMutationHookResult = ReturnType; -export type CreateEventMutationResult = Apollo.MutationResult; -export type CreateEventMutationOptions = Apollo.BaseMutationOptions; -export const LoginMethodDocument = gql` - query LoginMethod($email: String!, $host: String) { - loginMethod(email: $email, host: $host) { - loginMethod - token - authorizeUrl - } -} - `; - -/** - * __useLoginMethodQuery__ - * - * To run a query within a React component, call `useLoginMethodQuery` and pass it any options that fit your needs. - * When your component renders, `useLoginMethodQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useLoginMethodQuery({ - * variables: { - * email: // value for 'email' - * host: // value for 'host' - * }, - * }); - */ -export function useLoginMethodQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(LoginMethodDocument, options); - } -export function useLoginMethodLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(LoginMethodDocument, options); - } -export type LoginMethodQueryHookResult = ReturnType; -export type LoginMethodLazyQueryHookResult = ReturnType; -export type LoginMethodQueryResult = Apollo.QueryResult; -export const SignupDocument = gql` - mutation Signup($attributes: UserAttributes!, $account: AccountAttributes, $deviceToken: String) { - signup(attributes: $attributes, account: $account, deviceToken: $deviceToken) { - jwt - onboarding - } -} - `; -export type SignupMutationFn = Apollo.MutationFunction; - -/** - * __useSignupMutation__ - * - * To run a mutation, you first call `useSignupMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useSignupMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [signupMutation, { data, loading, error }] = useSignupMutation({ - * variables: { - * attributes: // value for 'attributes' - * account: // value for 'account' - * deviceToken: // value for 'deviceToken' - * }, - * }); - */ -export function useSignupMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(SignupDocument, options); - } -export type SignupMutationHookResult = ReturnType; -export type SignupMutationResult = Apollo.MutationResult; -export type SignupMutationOptions = Apollo.BaseMutationOptions; -export const PasswordlessLoginDocument = gql` - mutation PasswordlessLogin($token: String!) { - passwordlessLogin(token: $token) { - jwt - } -} - `; -export type PasswordlessLoginMutationFn = Apollo.MutationFunction; - -/** - * __usePasswordlessLoginMutation__ - * - * To run a mutation, you first call `usePasswordlessLoginMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `usePasswordlessLoginMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [passwordlessLoginMutation, { data, loading, error }] = usePasswordlessLoginMutation({ - * variables: { - * token: // value for 'token' - * }, - * }); - */ -export function usePasswordlessLoginMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(PasswordlessLoginDocument, options); - } -export type PasswordlessLoginMutationHookResult = ReturnType; -export type PasswordlessLoginMutationResult = Apollo.MutationResult; -export type PasswordlessLoginMutationOptions = Apollo.BaseMutationOptions; -export const PollLoginTokenDocument = gql` - mutation PollLoginToken($token: String!, $deviceToken: String) { - loginToken(token: $token, deviceToken: $deviceToken) { - jwt - } -} - `; -export type PollLoginTokenMutationFn = Apollo.MutationFunction; - -/** - * __usePollLoginTokenMutation__ - * - * To run a mutation, you first call `usePollLoginTokenMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `usePollLoginTokenMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [pollLoginTokenMutation, { data, loading, error }] = usePollLoginTokenMutation({ - * variables: { - * token: // value for 'token' - * deviceToken: // value for 'deviceToken' - * }, - * }); - */ -export function usePollLoginTokenMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(PollLoginTokenDocument, options); - } -export type PollLoginTokenMutationHookResult = ReturnType; -export type PollLoginTokenMutationResult = Apollo.MutationResult; -export type PollLoginTokenMutationOptions = Apollo.BaseMutationOptions; -export const OauthUrlsDocument = gql` - query OauthUrls($host: String) { - oauthUrls(host: $host) { - provider - authorizeUrl - } -} - `; - -/** - * __useOauthUrlsQuery__ - * - * To run a query within a React component, call `useOauthUrlsQuery` and pass it any options that fit your needs. - * When your component renders, `useOauthUrlsQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useOauthUrlsQuery({ - * variables: { - * host: // value for 'host' - * }, - * }); - */ -export function useOauthUrlsQuery(baseOptions?: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(OauthUrlsDocument, options); - } -export function useOauthUrlsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(OauthUrlsDocument, options); - } -export type OauthUrlsQueryHookResult = ReturnType; -export type OauthUrlsLazyQueryHookResult = ReturnType; -export type OauthUrlsQueryResult = Apollo.QueryResult; -export const AcceptLoginDocument = gql` - mutation AcceptLogin($challenge: String!) { - acceptLogin(challenge: $challenge) { - redirectTo - } -} - `; -export type AcceptLoginMutationFn = Apollo.MutationFunction; - -/** - * __useAcceptLoginMutation__ - * - * To run a mutation, you first call `useAcceptLoginMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useAcceptLoginMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [acceptLoginMutation, { data, loading, error }] = useAcceptLoginMutation({ - * variables: { - * challenge: // value for 'challenge' - * }, - * }); - */ -export function useAcceptLoginMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(AcceptLoginDocument, options); - } -export type AcceptLoginMutationHookResult = ReturnType; -export type AcceptLoginMutationResult = Apollo.MutationResult; -export type AcceptLoginMutationOptions = Apollo.BaseMutationOptions; -export const CreateResetTokenDocument = gql` - mutation CreateResetToken($attributes: ResetTokenAttributes!) { - createResetToken(attributes: $attributes) -} - `; -export type CreateResetTokenMutationFn = Apollo.MutationFunction; - -/** - * __useCreateResetTokenMutation__ - * - * To run a mutation, you first call `useCreateResetTokenMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useCreateResetTokenMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [createResetTokenMutation, { data, loading, error }] = useCreateResetTokenMutation({ - * variables: { - * attributes: // value for 'attributes' - * }, - * }); - */ -export function useCreateResetTokenMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(CreateResetTokenDocument, options); - } -export type CreateResetTokenMutationHookResult = ReturnType; -export type CreateResetTokenMutationResult = Apollo.MutationResult; -export type CreateResetTokenMutationOptions = Apollo.BaseMutationOptions; -export const RealizeResetTokenDocument = gql` - mutation RealizeResetToken($id: ID!, $attributes: ResetTokenRealization!) { - realizeResetToken(id: $id, attributes: $attributes) -} - `; -export type RealizeResetTokenMutationFn = Apollo.MutationFunction; - -/** - * __useRealizeResetTokenMutation__ - * - * To run a mutation, you first call `useRealizeResetTokenMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useRealizeResetTokenMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [realizeResetTokenMutation, { data, loading, error }] = useRealizeResetTokenMutation({ - * variables: { - * id: // value for 'id' - * attributes: // value for 'attributes' - * }, - * }); - */ -export function useRealizeResetTokenMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(RealizeResetTokenDocument, options); - } -export type RealizeResetTokenMutationHookResult = ReturnType; -export type RealizeResetTokenMutationResult = Apollo.MutationResult; -export type RealizeResetTokenMutationOptions = Apollo.BaseMutationOptions; -export const ResetTokenDocument = gql` - query ResetToken($id: ID!) { - resetToken(id: $id) { - type - user { - ...User - } - } -} - ${UserFragmentDoc}`; - -/** - * __useResetTokenQuery__ - * - * To run a query within a React component, call `useResetTokenQuery` and pass it any options that fit your needs. - * When your component renders, `useResetTokenQuery` returns an object from Apollo Client that contains loading, error, and data properties - * you can use to render your UI. - * - * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options; - * - * @example - * const { data, loading, error } = useResetTokenQuery({ - * variables: { - * id: // value for 'id' - * }, - * }); - */ -export function useResetTokenQuery(baseOptions: Apollo.QueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useQuery(ResetTokenDocument, options); - } -export function useResetTokenLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useLazyQuery(ResetTokenDocument, options); - } -export type ResetTokenQueryHookResult = ReturnType; -export type ResetTokenLazyQueryHookResult = ReturnType; -export type ResetTokenQueryResult = Apollo.QueryResult; -export const UpdateVersionDocument = gql` - mutation UpdateVersion($spec: VersionSpec, $attributes: VersionAttributes!) { - updateVersion(spec: $spec, attributes: $attributes) { - id - } -} - `; -export type UpdateVersionMutationFn = Apollo.MutationFunction; - -/** - * __useUpdateVersionMutation__ - * - * To run a mutation, you first call `useUpdateVersionMutation` within a React component and pass it any options that fit your needs. - * When your component renders, `useUpdateVersionMutation` returns a tuple that includes: - * - A mutate function that you can call at any time to execute the mutation - * - An object with fields that represent the current status of the mutation's execution - * - * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; - * - * @example - * const [updateVersionMutation, { data, loading, error }] = useUpdateVersionMutation({ - * variables: { - * spec: // value for 'spec' - * attributes: // value for 'attributes' - * }, - * }); - */ -export function useUpdateVersionMutation(baseOptions?: Apollo.MutationHookOptions) { - const options = {...defaultOptions, ...baseOptions} - return Apollo.useMutation(UpdateVersionDocument, options); - } -export type UpdateVersionMutationHookResult = ReturnType; -export type UpdateVersionMutationResult = Apollo.MutationResult; -export type UpdateVersionMutationOptions = Apollo.BaseMutationOptions; \ No newline at end of file diff --git a/pkg/ui/web/src/graphql/groups.graphql b/pkg/ui/web/src/graphql/groups.graphql deleted file mode 100644 index 1363fb51d..000000000 --- a/pkg/ui/web/src/graphql/groups.graphql +++ /dev/null @@ -1,55 +0,0 @@ -query GroupMembers($cursor: String, $id: ID!) { - groupMembers(groupId: $id, after: $cursor, first: 20) { - pageInfo { - ...PageInfo - } - edges { - node { - ...GroupMember - } - } - } -} - -mutation CreateGroupMember($groupId: ID!, $userId: ID!) { - createGroupMember(groupId: $groupId, userId: $userId) { - ...GroupMember - } -} - -mutation DeleteGroupMember($groupId: ID!, $userId: ID!) { - deleteGroupMember(groupId: $groupId, userId: $userId) { - ...GroupMember - } -} - -mutation CreateGroup($attributes: GroupAttributes!) { - createGroup(attributes: $attributes) { - ...Group - } -} - -mutation UpdateGroup($id: ID!, $attributes: GroupAttributes!) { - updateGroup(groupId: $id, attributes: $attributes) { - ...Group - } -} - -mutation DeleteGroup($id: ID!) { - deleteGroup(groupId: $id) { - ...Group - } -} - -query Groups($q: String, $cursor: String) { - groups(q: $q, first: 20, after: $cursor) { - pageInfo { - ...PageInfo - } - edges { - node { - ...Group - } - } - } -} diff --git a/pkg/ui/web/src/graphql/incidents.graphql b/pkg/ui/web/src/graphql/incidents.graphql deleted file mode 100644 index c9b0fd620..000000000 --- a/pkg/ui/web/src/graphql/incidents.graphql +++ /dev/null @@ -1,82 +0,0 @@ -fragment Postmortem on Postmortem { - id - content - actionItems { type link } -} - -fragment Follower on Follower { - id - incident { id } - user { ...User } - preferences { message incidentUpdate mention } -} - -#TODO: not that this was changed as it needs to be unique. Whatever queries/mutations use this fragment needs to be updated -fragment SlimSubscription on SlimSubscription { - id - lineItems { items { dimension quantity } } - plan { ...Plan } -} - - -fragment ClusterInformation on ClusterInformation { - version - gitCommit - platform -} - - -fragment Incident on Incident { - id - title - description - severity - status - notificationCount - nextResponseAt - creator { ...User } - owner { ...User } - repository { ...Repo } - subscription { ...SlimSubscription } - clusterInformation { ...ClusterInformation } - tags { tag } - insertedAt -} - -fragment IncidentHistory on IncidentHistory { - id - action - changes { key prev next } - actor { ...User } - insertedAt -} - -fragment File on File { - id - blob - mediaType - contentType - filesize - filename -} - -fragment IncidentMessage on IncidentMessage { - id - text - creator { ...User } - reactions { name creator { id email } } - file { ...File } - entities { type user { ...User } text startIndex endIndex } - insertedAt -} - -fragment Notification on Notification { - id - type - msg - actor { ...User } - incident { id title repository { id name icon darkIcon } } - message { text } - repository { id name icon darkIcon } - insertedAt -} diff --git a/pkg/ui/web/src/graphql/installations.graphql b/pkg/ui/web/src/graphql/installations.graphql deleted file mode 100644 index e3a0873d9..000000000 --- a/pkg/ui/web/src/graphql/installations.graphql +++ /dev/null @@ -1,38 +0,0 @@ -fragment Installation on Installation { - id - context - license - licenseKey - acmeKeyId - acmeSecret - autoUpgrade - trackTag - repository { ...Repo } - # repository { ...Repository } - user { ...User } - oidcProvider { ...OIDCProvider } -} - -query GetInstallation($name: String) { - installation(name: $name) { - ...Installation - } -} - -query GetInstallationById($id: ID) { - installation(id: $id) { - ...Installation - } -} - -query GetInstallations($first: Int) { - installations(first: $first) { - edges { node { ...Installation } } - } -} - -mutation UpsertOidcProvider($id: ID!, $attributes: OidcAttributes!) { - upsertOidcProvider(installationId: $id, attributes: $attributes) { - id - } -} diff --git a/pkg/ui/web/src/graphql/integrations.graphql b/pkg/ui/web/src/graphql/integrations.graphql deleted file mode 100644 index 9e0d57fef..000000000 --- a/pkg/ui/web/src/graphql/integrations.graphql +++ /dev/null @@ -1,27 +0,0 @@ -fragment IntegrationWebhook on IntegrationWebhook { - id - name - url - secret - actions -} - -fragment WebhookLog on WebhookLog { - id - state - status - payload - response - insertedAt -} - -fragment OauthIntegration on OauthIntegration { - id - service - insertedAt -} - -fragment ZoomMeeting on ZoomMeeting { - joinUrl - password -} diff --git a/pkg/ui/web/src/graphql/invite.graphql b/pkg/ui/web/src/graphql/invite.graphql deleted file mode 100644 index ece3e5e40..000000000 --- a/pkg/ui/web/src/graphql/invite.graphql +++ /dev/null @@ -1,28 +0,0 @@ -mutation SignupInvite($attributes: UserAttributes!, $inviteId: String!) { - signup(attributes: $attributes, inviteId: $inviteId) { - jwt - } -} - -mutation RealizeInvite($id: String!) { - realizeInvite(id: $id) { - jwt - } -} - -query Invite($id: String!) { - invite(id: $id) { - id - email - existing - account { - ...Account - } - user { - ...User - account { - ...Account - } - } - } -} diff --git a/pkg/ui/web/src/graphql/metrics.graphql b/pkg/ui/web/src/graphql/metrics.graphql deleted file mode 100644 index 6e99c9cbf..000000000 --- a/pkg/ui/web/src/graphql/metrics.graphql +++ /dev/null @@ -1,5 +0,0 @@ -fragment Metric on Metric { - name - tags { name value } - values { time value } -} diff --git a/pkg/ui/web/src/graphql/misc.graphql b/pkg/ui/web/src/graphql/misc.graphql deleted file mode 100644 index 0ab1b1471..000000000 --- a/pkg/ui/web/src/graphql/misc.graphql +++ /dev/null @@ -1,4 +0,0 @@ -fragment PageInfo on PageInfo { - endCursor - hasNextPage -} diff --git a/pkg/ui/web/src/graphql/oauth.graphql b/pkg/ui/web/src/graphql/oauth.graphql deleted file mode 100644 index 175cee845..000000000 --- a/pkg/ui/web/src/graphql/oauth.graphql +++ /dev/null @@ -1,24 +0,0 @@ -fragment OIDCProvider on OidcProvider { - id - clientId - authMethod - clientSecret - redirectUris - bindings { - id - user { ...User } - group { ...Group } - } - configuration { - issuer - authorizationEndpoint - tokenEndpoint - jwksUri - userinfoEndpoint - } -} - -fragment OAuthInfo on OauthInfo { - provider - authorizeUrl -} diff --git a/pkg/ui/web/src/graphql/payments.graphql b/pkg/ui/web/src/graphql/payments.graphql deleted file mode 100644 index d92afd133..000000000 --- a/pkg/ui/web/src/graphql/payments.graphql +++ /dev/null @@ -1,142 +0,0 @@ -fragment Limit on Limit { - dimension - quantity -} - -fragment LineItem on LineItem { - name - dimension - cost - period - type -} - -fragment ServiceLevel on ServiceLevel { - minSeverity - maxSeverity - responseTime -} - -fragment Plan on Plan { - id - name - cost - period - serviceLevels { ...ServiceLevel } - lineItems { - included { ...Limit } - items { ...LineItem } - } - metadata { features { name description } } -} - -fragment Subscription on RepositorySubscription { - id - plan { ...Plan } - lineItems { items { ...Limit } } -} - - -fragment InvoiceItem on InvoiceItem { - amount - currency - description -} - - -fragment Invoice on Invoice { - number - amountDue - amountPaid - currency - status - createdAt - hostedInvoiceUrl - lines { ...InvoiceItem } -} - -fragment Card on Card { - id - last4 - expMonth - expYear - name - brand -} - -query Subscription { - account { - billingCustomerId - grandfatheredUntil - delinquentAt - userCount - clusterCount - availableFeatures { - userManagement - audit - } - subscription { - id - plan { - id - period - lineItems { - dimension - cost - } - } - } - billingAddress { - name - line1 - line2 - zip - state - city - country - } - } -} - -mutation UpdateAccountBilling($attributes: AccountAttributes!) { - updateAccount(attributes: $attributes) { - id - } -} - -mutation UpgradeToProfessionalPlan($planId: ID!) { - createPlatformSubscription(planId: $planId) { - id - } -} - -mutation DowngradeToFreePlanMutation { - deletePlatformSubscription { - id - } -} - -query Cards { - me { - id - cards(first: 100) { - edges { - node { - ...Card - } - } - } - } -} - -mutation CreateCard($source: String!, $address: AddressAttributes) { - createCard(source: $source, address: $address) { - id - } -} - -mutation DeleteCard($id: ID!) { - deleteCard(id: $id) { - id - } -} diff --git a/pkg/ui/web/src/graphql/recipes.graphql b/pkg/ui/web/src/graphql/recipes.graphql deleted file mode 100644 index d12aeb87f..000000000 --- a/pkg/ui/web/src/graphql/recipes.graphql +++ /dev/null @@ -1,134 +0,0 @@ -fragment Recipe on Recipe { - id - name - description - restricted - provider - tests { - type - name - message - args { name repo key } - } - repository { id name } - oidcSettings { - uriFormat - uriFormats - authMethod - domainKey - subdomain - } - recipeSections { ...RecipeSection } -} - -fragment RecipeItem on RecipeItem { - id - chart { ...Chart } - terraform { ...Terraform } - configuration { ...RecipeConfiguration } -} - -fragment RecipeSection on RecipeSection { - index - repository { - ...Repo - installation { ...Installation } - } - recipeItems { ...RecipeItem } - configuration { ...RecipeConfiguration } -} - -fragment RecipeConfiguration on RecipeConfiguration { - name - type - default - documentation - optional - placeholder - functionName - condition { field operation value } - validation { type regex message } -} - -fragment Stack on Stack { - id - name - displayName - description - featured - creator { - id - name - } - collections { - id - provider - bundles { - recipe { - repository { - ...Repo - tags { - tag - } - } - } - } - } -} - -query GetRecipe($repo: String, $name: String, $id: ID) { - recipe(repo: $repo, name: $name, id: $id) { - ...Recipe - recipeDependencies { ...Recipe } - } -} - -query ListRecipes($repositoryName: String, $repositoryId: ID, $provider: Provider) { - recipes(repositoryName: $repositoryName, provider: $provider, first: 500, repositoryId: $repositoryId) { - edges { node { ...Recipe } } - } -} - -mutation CreateRecipe($name: String!, $attributes: RecipeAttributes!) { - createRecipe(repositoryName: $name, attributes: $attributes) { - id - } -} - -mutation InstallRecipe($id: ID!) { - installRecipe(recipeId: $id, context: "{}") { - id - } -} - -mutation CreateStack($attributes: StackAttributes!) { - createStack(attributes: $attributes) { - id - } -} - -query GetStack($name: String!, $provider: Provider!) { - stack(name: $name, provider: $provider) { - ...Stack - } -} - -query ListStacks($featured: Boolean, $cursor: String) { - stacks(first: 100, after: $cursor, featured: $featured) { - edges { node { ...Stack } } - } -} - -mutation CreateQuickStack($applicationIds: [ID], $provider: Provider!) { - quickStack(repositoryIds: $applicationIds, provider: $provider) { - id - name - } -} - -mutation InstallStackShell($name: String!, $context: ContextAttributes!, $oidc: Boolean!) { - installStackShell(name: $name, context: $context, oidc: $oidc) { - id - name - } -} \ No newline at end of file diff --git a/pkg/ui/web/src/graphql/repos.graphql b/pkg/ui/web/src/graphql/repos.graphql deleted file mode 100644 index 1eb5512c3..000000000 --- a/pkg/ui/web/src/graphql/repos.graphql +++ /dev/null @@ -1,160 +0,0 @@ -fragment ApplyLock on ApplyLock { - id - lock -} - -fragment Category on CategoryInfo { - category - count -} - -fragment Repo on Repository { - id - name - notes - description - documentation - icon - darkIcon - private - trending - verified - category - oauthSettings { - uriFormat - authMethod - } - publisher { - ...Publisher - } - recipes { - name - provider - description - } -} - -fragment Repository on Repository { - id - name - notes - icon - darkIcon - description - publisher { name } - recipes { name } -} - -fragment Dependencies on Dependencies { - dependencies { - name - repo - type - version - optional - } - wait - application - providers - secrets - wirings { terraform helm } - providerWirings - outputs -} - - -fragment Integration on Integration { - id - name - icon - sourceUrl - description - tags { tag } - publisher { ...Publisher } -} - -query Repository($id: ID, $name: String) { - repository(id: $id, name: $name) { - ...Repo - editable - publicKey - secrets - artifacts { - ...Artifact - } - installation { - ...Installation - oidcProvider { - ...OIDCProvider - } - } - tags { - tag - } - readme - mainBranch - gitUrl - homepage - license { - name - url - } - documentation - community { - discord - slack - homepage - gitUrl - twitter - } - } -} - -mutation CreateResourceDefinition($name: String!, $input: ResourceDefinitionAttributes!) { - updateRepository(repositoryName: $name, attributes: {integrationResourceDefinition: $input}) { - id - } -} - -mutation CreateIntegration($name: String!, $attrs: IntegrationAttributes!) { - createIntegration(repositoryName: $name, attributes: $attrs) { id } -} - -mutation UpdateRepository($name: String!, $attrs: RepositoryAttributes!) { - updateRepository(repositoryName: $name, attributes: $attrs) { id } -} - -mutation CreateRepository($name: String!, $publisher: String!, $attributes: RepositoryAttributes!) { - upsertRepository(name: $name, publisher: $publisher, attributes: $attributes) { id } -} - -mutation AcquireLock($name: String!) { - acquireLock(repository: $name) { ...ApplyLock } -} - -mutation ReleaseLock($name: String!, $attrs: LockAttributes!) { - releaseLock(repository: $name, attributes: $attrs) { ...ApplyLock } -} - -mutation UnlockRepository($name: String!) { - unlockRepository(name: $name) -} - -query ListRepositories($q: String, $installed: Boolean, $first: Int = 100, $provider: Provider = null) { - repositories(q: $q, first: $first, installed: $installed, provider: $provider) { - edges { node { ...Repository } } - } -} - -query Scaffolds($app: String!, $pub: String!, $cat: Category!, $ing: Boolean, $pg: Boolean) { - scaffold(application: $app, publisher: $pub, category: $cat, ingress: $ing, postgres: $pg) { - path - content - } -} - -mutation DeleteRepository($id: ID!) { - deleteRepository(repositoryId: $id){ - id - } -} diff --git a/pkg/ui/web/src/graphql/scaffolds.graphql b/pkg/ui/web/src/graphql/scaffolds.graphql deleted file mode 100644 index e75fb6664..000000000 --- a/pkg/ui/web/src/graphql/scaffolds.graphql +++ /dev/null @@ -1,10 +0,0 @@ -query GetTfProviders{ - terraformProviders -} - -query GetTfProviderScaffold($name: Provider!, $vsn: String) { - terraformProvider(name: $name, vsn: $vsn) { - name - content - } -} diff --git a/pkg/ui/web/src/graphql/shells.graphql b/pkg/ui/web/src/graphql/shells.graphql deleted file mode 100644 index 80be3d275..000000000 --- a/pkg/ui/web/src/graphql/shells.graphql +++ /dev/null @@ -1,31 +0,0 @@ -fragment CloudShell on CloudShell { - id - aesKey - gitUrl - alive - provider - subdomain - cluster - status { - ready - initialized - containersReady - podScheduled - } -} - -fragment DemoProject on DemoProject { - id - projectId - credentials - ready - state -} - -query GetShell { - shell { ...CloudShell } -} - -mutation DeleteShell { - deleteShell { ...CloudShell } -} diff --git a/pkg/ui/web/src/graphql/terraforms.graphql b/pkg/ui/web/src/graphql/terraforms.graphql deleted file mode 100644 index 766efca61..000000000 --- a/pkg/ui/web/src/graphql/terraforms.graphql +++ /dev/null @@ -1,47 +0,0 @@ -fragment Terraform on Terraform { - id - name - readme - package - description - latestVersion - dependencies { ...Dependencies } - valuesTemplate - insertedAt -} - -fragment TerraformInstallation on TerraformInstallation { - id - terraform { ...Terraform } - version { ...Version } -} - -query GetTerraform($id: ID!) { - terraform(repositoryId: $id, first: 100) { - edges { - node { - ...Terraform - } - } - } -} - -query GetTerraformInstallations($id: ID!) { - terraformInstallations(repositoryId: $id, first: 100) { - edges { - node { - ...TerraformInstallation - } - } - } -} - -mutation UploadTerraform($repoName: String!, $name: String!, $uploadOrUrl: UploadOrUrl!) { - uploadTerraform(repositoryName: $repoName, name: $name, attributes: {name: $name, package: $uploadOrUrl}) { - ...Terraform - } -} - -mutation UninstallTerraform($id: ID!) { - uninstallTerraform(id: $id) { id } -} diff --git a/pkg/ui/web/src/graphql/tests.graphql b/pkg/ui/web/src/graphql/tests.graphql deleted file mode 100644 index 0a7afde48..000000000 --- a/pkg/ui/web/src/graphql/tests.graphql +++ /dev/null @@ -1,40 +0,0 @@ -fragment Step on TestStep { - id - name - status - hasLogs - description - insertedAt - updatedAt -} - - -fragment Test on Test { - id - name - promoteTag - status - insertedAt - updatedAt - steps { ...Step } -} - -mutation CreateTest($name: String!, $attrs: TestAttributes!) { - createTest(name: $name, attributes: $attrs) { - ...Test - } -} - -mutation UpdateTest($id: ID!, $attrs: TestAttributes!) { - updateTest(id: $id, attributes: $attrs) { - ...Test - } -} - -mutation UpdateStep($id: ID!, $logs: UploadOrUrl!) { - updateStep(id: $id, attributes: {logs: $logs}) { id } -} - -mutation PublishLogs($id: ID!, $logs: String!) { - publishLogs(id: $id, logs: $logs) { id } -} diff --git a/pkg/ui/web/src/graphql/upgrades.graphql b/pkg/ui/web/src/graphql/upgrades.graphql deleted file mode 100644 index 4d9feb2b5..000000000 --- a/pkg/ui/web/src/graphql/upgrades.graphql +++ /dev/null @@ -1,33 +0,0 @@ -fragment UpgradeQueue on UpgradeQueue { - id - acked - name - domain - git - pingedAt - provider -} - -fragment Rollout on Rollout { - id - event - cursor - count - status - heartbeat -} - -fragment Upgrade on Upgrade { - id - message - repository { ...Repo } - insertedAt -} - -fragment DeferredUpdate on DeferredUpdate { - id - dequeueAt - attempts - version { version } - insertedAt -} diff --git a/pkg/ui/web/src/graphql/users.graphql b/pkg/ui/web/src/graphql/users.graphql deleted file mode 100644 index 9c831d131..000000000 --- a/pkg/ui/web/src/graphql/users.graphql +++ /dev/null @@ -1,278 +0,0 @@ -fragment Account on Account { - id - name - billingCustomerId - backgroundColor -} - -fragment Group on Group { - id - name - global - description -} - -fragment User on User { - id - name - email - avatar - provider - demoing - demoed - onboarding - onboardingChecklist { dismissed status } - emailConfirmed - emailConfirmBy - backgroundColor - serviceAccount - roles { admin } -} - -fragment ImpersonationPolicy on ImpersonationPolicy { - id - bindings { - id - group { id name } - user { id name email } - } -} - -fragment GroupMember on GroupMember { - id - user { ...User } -} - -fragment Token on PersistedToken { - id - token - insertedAt -} - -fragment TokenAudit on PersistedTokenAudit { - ip - timestamp - count - country - city - latitude - longitude -} - -fragment Address on Address { - line1 - line2 - city - country - state - zip -} - -fragment Publisher on Publisher { - id - name - phone - avatar - description - backgroundColor - owner { ...User } - address { ...Address } -} - -fragment Webhook on Webhook { - id - url - secret - insertedAt -} - -fragment RoleBinding on RoleBinding { - id - user { ...User } - group { ...Group } -} - -fragment Role on Role { - id - name - description - repositories - permissions - roleBindings { ...RoleBinding } -} - -fragment PublicKey on PublicKey { - id - name - digest - insertedAt - content - user { ...User } -} - -fragment EabCredential on EabCredential { - id - keyId - hmacKey - cluster - provider - insertedAt -} - -query Me{ - me { - ...User - loginMethod - hasInstallations - account { - ...Account - rootUser { id, name, email } - domainMappings { id domain enableSso } - } - publisher { - ...Publisher - billingAccountId - } - boundRoles { ...Role } - } - configuration { - stripeConnectId - stripePublishableKey - registry - gitCommit - } -} - -query GetLoginMethod($email: String!) { - loginMethod(email: $email) { loginMethod token } -} - -query ListTokens{ - tokens(first: 3) { - edges { node { token } } - } -} - -query ListKeys($emails: [String]) { - publicKeys(emails: $emails, first: 1000) { - edges { node { ...PublicKey } } - } -} - -query GetEabCredential($cluster: String!, $provider: Provider!) { - eabCredential(cluster: $cluster, provider: $provider) { - ...EabCredential - } -} - -mutation DevLogin { - deviceLogin { loginUrl deviceToken } -} - -mutation Login($email: String!, $password: String!, $deviceToken: String) { - login(email: $email, password: $password, deviceToken: $deviceToken) { - jwt - } -} - -mutation ImpersonateServiceAccount($email: String) { - impersonateServiceAccount(email: $email) { jwt email } -} - -mutation CreateAccessToken{ - createToken { token } -} - -mutation CreateKey($key: String!, $name: String!) { - createPublicKey(attributes: {content: $key, name: $name}) { id } -} - -mutation DeleteEabCredential($cluster: String!, $provider: Provider!) { - deleteEabKey(cluster: $cluster, provider: $provider) { - id - } -} - -mutation CreateEvent($attrs: UserEventAttributes!) { - createUserEvent(attributes: $attrs) -} - -query LoginMethod($email: String!, $host: String) { - loginMethod(email: $email, host: $host) { - loginMethod - token - authorizeUrl - } -} - -mutation Signup( - $attributes: UserAttributes! - $account: AccountAttributes - $deviceToken: String -) { - signup( - attributes: $attributes - account: $account - deviceToken: $deviceToken - ) { - jwt - onboarding - } -} - -mutation PasswordlessLogin($token: String!) { - passwordlessLogin(token: $token) { - jwt - } -} - -mutation PollLoginToken($token: String!, $deviceToken: String) { - loginToken(token: $token, deviceToken: $deviceToken) { - jwt - } -} - -query OauthUrls($host: String) { - oauthUrls(host: $host) { - provider - authorizeUrl - } -} - -query LoginMethod($email: String!, $host: String) { - loginMethod(email: $email, host: $host) { - loginMethod - token - authorizeUrl - } -} - -query OauthUrls($host: String) { - oauthUrls(host: $host) { - provider - authorizeUrl - } -} - -mutation AcceptLogin($challenge: String!) { - acceptLogin(challenge: $challenge) { - redirectTo - } -} - -mutation CreateResetToken($attributes: ResetTokenAttributes!) { - createResetToken(attributes: $attributes) -} - -mutation RealizeResetToken($id: ID!, $attributes: ResetTokenRealization!) { - realizeResetToken(id: $id, attributes: $attributes) -} - -query ResetToken($id: ID!) { - resetToken(id: $id) { - type - user { - ...User - } - } -} diff --git a/pkg/ui/web/src/graphql/versions.graphql b/pkg/ui/web/src/graphql/versions.graphql deleted file mode 100644 index 62661b900..000000000 --- a/pkg/ui/web/src/graphql/versions.graphql +++ /dev/null @@ -1,23 +0,0 @@ -fragment VersionTag on VersionTag { - id - tag - version { id } -} - -fragment Version on Version { - id - helm - readme - valuesTemplate - version - insertedAt - package - crds { ...Crd } - chart { ...Chart } - terraform { id name } - dependencies { ...Dependencies } -} - -mutation UpdateVersion($spec: VersionSpec, $attributes: VersionAttributes!) { - updateVersion(spec: $spec, attributes: $attributes) { id } -} diff --git a/pkg/ui/web/src/grommet/fileInputTheme.tsx b/pkg/ui/web/src/grommet/fileInputTheme.tsx deleted file mode 100644 index 21d0fb7ad..000000000 --- a/pkg/ui/web/src/grommet/fileInputTheme.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { CloseIcon } from '@pluralsh/design-system' -import { DefaultTheme } from 'styled-components' - -export const fileInputTheme = ({ - selected = false, error = false, theme, -}: { - selected?: boolean; - error?: boolean; - theme: DefaultTheme; -}) => ({ - fileInput: { - message: { - size: 'small', - }, - hover: { - border: { - color: error - ? theme.colors['border-error'] - : selected - ? theme.colors['border-success'] - : theme.colors['border-input'], - }, - background: { - color: theme.colors['fill-one-hover'], - opacity: 1, - }, - }, - dragOver: { - border: { - color: theme.colors['border-outline-focused'], - }, - background: { - color: theme.colors['fill-one-hover'], - opacity: 1, - }, - }, - background: { - color: theme.colors['fill-one'], - opacity: 1, - }, - round: { - size: `${theme.borderRadiuses.medium}px`, - }, - border: { - size: `${theme.borderWidths.default}px`, - opacity: false, - color: error - ? theme.colors['border-error'] - : selected - ? theme.colors['border-success'] - : theme.colors['border-input'], - }, - icons: { - remove: CloseIcon, - }, - }, -}) diff --git a/pkg/ui/web/src/grommet/theme.ts b/pkg/ui/web/src/grommet/theme.ts deleted file mode 100644 index c80d88a05..000000000 --- a/pkg/ui/web/src/grommet/theme.ts +++ /dev/null @@ -1,234 +0,0 @@ -import { css } from 'styled-components' - -const boxStyle = css` - outline: none; -` - -export const PLURAL_THEME = { - 'plural-blk': '#000b11', - 'plrl-black': '#000b11', - 'tone-dark': '#01131a', - 'tone-dark-2': '#1a2b31', - 'tone-dark-3': '#2f3b41', - 'tone-medium': '#c9d1d3', - 'tone-light': '#edf1f2', - 'plrl-white': '#fff', - 'key-dark': '#001b8c', - 'key-light': '#5C77FF', - blue: '#0022b2', - 'blue-light': '#3351f2', - 'blue-light-2': '#e1ebff', - 'blue-dark': '#001b8c', - 'blue-dark-2': '#002068', - 'alt-dark': '#006e96', - 'alt-light': '#0090c4', - 'plrl-red': '#dd2c39', - 'red-dark': '#b52d31', - 'red-dark-2': '#7f0009', - 'red-light': '#ff2756', - 'red-light-2': '#ffd9df', - 'status-warning': 'orange', - green: '#008e47', - 'green-dark': '#23422b', - 'green-dark-2': '#004422', - 'green-light': '#00ed76', - 'green-light-2': '#ccffe5', - teal: '#00e5a3', - 'teal-dark': '#00b57d', - 'teal-dark-2': '#009362', - 'teal-light': '#00ffb0', - 'teal-light-2': '#ccffee', - orange: '#ef9300', - 'orange-dark': '#e88900', - 'orange-dark-2': '#b76800', - 'orange-light': '#ff9d00', - 'orange-light-2': '#ffeacc', - purple: '#960ea5', - 'purple-dark': '#830096', - 'purple-dark-2': '#650077', - 'purple-light': '#df00ff', - 'purple-light-2': '#f7ccff', - 'fill-zero': 'grey.900', - 'fill-zero-hover': 'grey.875', - 'fill-zero-selected': 'grey.825', - 'fill-one': 'grey.850', - 'fill-one-hover': 'grey.825', - 'fill-one-selected': 'grey.775', - 'fill-two': 'grey.800', - 'fill-two-hover': 'grey.775', - 'fill-two-selected': 'grey.725', - 'fill-three': 'grey.750', - 'grey.950': '#0E1015', - 'grey.900': '#171A21', - 'grey.875': '#1C2026', - 'grey.850': '#1E2229', - 'grey.825': '#23272E', - 'grey.800': '#2A2E37', - 'grey.775': '#303540', - 'grey.750': '#363B45', - 'grey.725': '#3C414D', - 'grey.700': '#434956', - 'grey.600': '#555C68', - 'grey.500': '#757D8A', - 'grey.400': '#9096A2', - 'grey.300': '#A9B0BC', - 'grey.200': '#C4CAD4', - 'grey.100': '#DEE2E8', - 'grey.50': '#E9ECF0', -} - -export const DEFAULT_COLOR_THEME = { - brand: 'key-light', - // action: '#007a5a', - action: 'key-light', - sidebar: 'plural-blk', - card: '#222732', - hover: { dark: 'fill-two-hover', light: 'tone-light' }, - sidebarActive: 'tone-dark-3', - focus: 'key-light', - progress: '#007bff', - tagMedium: 'key-light', - tagLight: 'key-light', - backgroundColor: 'sidebarBackground', - sidebarBackground: '#0d1215', - // @ts-expect-error - orange: '#d7722c', - presence: '#39E500', - link: '#3366BB', - notif: 'error', - good: '#00ac46', - low: 'orange-light', - medium: 'orange', - high: 'red-dark', - critical: 'red-dark-2', - label: 'light-2', - 'input-border': 'border', - primary: '#0639FF', - 'action-primary': '#293EFF', - background: { - light: 'transparent', - dark: 'transparent', - }, - 'background-light': { - light: '#f5f7f9', - dark: '#22293b', - }, - text: { - light: 'inherit', - dark: 'inherit', - }, - 'text-light': { - light: 'lighten(text, 15)', - dark: 'darken(text, 15)', - }, - border: { - light: '#CCCCCC', - dark: '#303340', - }, - shadow: { - light: 'rgba(0, 0, 0, 0.2)', - dark: 'rgba(64, 64, 64, 0.2)', - }, - success: '#07E5A7', - error: '#E03E43', - warning: '#EF931D', - secondary: '#222534', - 'background-middle': { - light: '#EEEEEE', - dark: '#222534', - }, - 'background-top': { - light: 'white', - dark: '#323643', - }, - 'text-strong': { - light: '#000000', - dark: 'white', - }, - 'text-weak': { - light: '#444444', - dark: '#CCCCCC', - }, - 'text-xweak': { - light: '#666666', - dark: '#999999', - }, - 'background-success': '#07E5A733', - 'background-warning': '#EF931D66', - 'background-error': '#E03E4366', - 'background-info': '#0190C266', - 'accent-blue': { - dark: '#0190C2', - light: '#0190C2', - }, - 'accent-purple': { - dark: '#9510A1', - light: '#9510A1', - }, - 'accent-green': { - dark: '#058E4B', - light: '#058E4B', - }, - ...PLURAL_THEME, -} - -export const DEFAULT_THEME = { - anchor: { - color: '#9095A2', - hover: { - textDecoration: 'underline', - extend: 'color: #EBEFF0', - }, - fontWeight: 400, - }, - button: { - padding: { - horizontal: '6px', - vertical: '2px', - }, - }, - checkBox: { - size: '20px', - toggle: { radius: '20px', size: '40px' }, - }, - box: { - extend: boxStyle, - }, - textField: { extend: { fontWeight: 400 } }, - select: { - options: { - text: { size: 'small' }, - }, - }, - layer: { - background: 'background', - }, - global: { - colors: DEFAULT_COLOR_THEME, - focus: { shadow: 'none', border: { color: 'brand' } }, - control: { border: { radius: '2px' } }, - drop: { - background: 'fill-two', - border: { radius: '4px' }, - zIndex: 2000, - extend: css` - box-shadow: 0px 0px 4px 4px rgba(0, 0, 0, 0.2); - `, - }, - box: { extend: boxStyle }, - checkBox: { toggle: { color: 'brand' } }, - active: { background: { color: '#1E2229' } }, - elevation: { - light: { - medium: '0px 3px 8px rgba(100, 100, 100, 0.50)', - }, - }, - font: { - family: 'Inter', - size: '14px', - height: '20px', - }, - }, -} - -export { DEFAULT_THEME as grommetTheme } diff --git a/pkg/ui/web/src/hooks/useWails.ts b/pkg/ui/web/src/hooks/useWails.ts deleted file mode 100644 index 371967148..000000000 --- a/pkg/ui/web/src/hooks/useWails.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { - Dispatch, - useCallback, - useEffect, - useState, -} from 'react' - -import { Binding, ClientBindingFactory } from '../services/wails' - -type Error = any // TODO: figure out the type - -interface QueryResponse { - data?: T - error: Error - loading: boolean - refetch: Dispatch -} - -type OperationVariables = Record; - -interface QueryOptions { - variables?: TVariables -} - -function useWailsQuery(binding: Binding, - options?: QueryOptions): QueryResponse { - const bindingFn = ClientBindingFactory(binding) - const [loading, setLoading] = useState(false) - const [data, setData] = useState() - const [error, setError] = useState() - - const fetch = useCallback(() => { - setLoading(true) - setError(undefined) - setData(undefined) - - bindingFn(options?.variables ?? {}).then(res => setData(res)) - .catch(err => setError(err)) - .finally(() => setLoading(false)) - }, [bindingFn, options?.variables]) - - const refetch = useCallback(() => { - if (loading) return - - fetch() - }, [fetch, loading]) - - useEffect(() => fetch(), [fetch]) - - return { - data, - loading, - error, - refetch, - } as QueryResponse -} - -interface UpdateReponse { - error: Error - loading: boolean - update: Dispatch - data?: T -} - -function useWailsUpdate(binding: Binding, - options?: QueryOptions): UpdateReponse { - const bindingFn = ClientBindingFactory(binding) - const [loading, setLoading] = useState(false) - const [data, setData] = useState() - const [error, setError] = useState() - - const update = useCallback(() => { - setLoading(true) - - bindingFn(options?.variables ?? {}) - .then(data => setData(data)) - .catch(err => setError(err)) - .finally(() => setLoading(false)) - }, [bindingFn, options?.variables]) - - return { - error, - loading, - update, - data, - } -} - -export { useWailsQuery, useWailsUpdate } diff --git a/pkg/ui/web/src/layout/Header.tsx b/pkg/ui/web/src/layout/Header.tsx deleted file mode 100644 index 6b7ba181c..000000000 --- a/pkg/ui/web/src/layout/Header.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { Button, CloseIcon, PluralLogoFull } from '@pluralsh/design-system' -import React, { useCallback } from 'react' -import styled from 'styled-components' - -import { Close } from '../../wailsjs/go/ui/Window' - -const Header = styled(HeaderUnstyled)(({ theme }) => ({ - // Make window draggable via header - ...theme.partials.draggable, - - // Layout - display: 'flex', - alignItems: 'center', - justifyContent: 'space-between', - - // Spacing - padding: `${theme.spacing.medium}px ${theme.spacing.large}px`, - - // Theming - background: theme.colors['fill-one'], - borderBottom: theme.borders.default, -})) - -function HeaderUnstyled({ ...props }): React.ReactElement { - const onClose = useCallback(Close, []) - - return ( -
- - -
- ) -} - -export default Header diff --git a/pkg/ui/web/src/main.tsx b/pkg/ui/web/src/main.tsx deleted file mode 100644 index 95bde5013..000000000 --- a/pkg/ui/web/src/main.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react' -import { createRoot } from 'react-dom/client' - -import Plural from './Plural' - -const container = document.getElementById('root') -const root = createRoot(container!) - -root.render() diff --git a/pkg/ui/web/src/routes/installer/Application.tsx b/pkg/ui/web/src/routes/installer/Application.tsx deleted file mode 100644 index 6240e046c..000000000 --- a/pkg/ui/web/src/routes/installer/Application.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import { useQuery } from '@apollo/client' -import { Chip, WizardStep, useActive } from '@pluralsh/design-system' -import { Div, Span } from 'honorable' -import { - ReactElement, - useContext, - useEffect, - useMemo, - useState, -} from 'react' - -import Loader from '../../components/loader/Loader' -import { WailsContext } from '../../context/wails' -import { - GetRecipeDocument, - ListRecipesDocument, - Recipe, - RecipeEdge, -} from '../../graphql/generated/graphql' - -import { Configuration } from './Configuration' - -interface StepData { - id: string | undefined, - context: Record - oidc: boolean - skipped?: boolean, -} - -const toConfig = config => (config ? Object.keys(config) - .map(key => ({ [key]: { value: config[key], valid: true } })) - .reduce((acc, entry) => ({ ...acc, ...entry }), {}) : undefined) - -export function Application({ provider, ...props }: any): ReactElement { - const { active, setData } = useActive() - const { context: { configuration } } = useContext(WailsContext) - const [context, setContext] = useState>(active.data?.context || {}) - const [valid, setValid] = useState(true) - const [oidc, setOIDC] = useState(active.data?.oidc ?? true) - const { data: { recipes: { edges: recipeEdges } = { edges: undefined } } = {} } = useQuery(ListRecipesDocument, { - variables: { repositoryId: active.key }, - }) - - const { node: recipeBase } = recipeEdges?.find((recipe: RecipeEdge) => recipe!.node!.provider === provider) || { node: undefined } - const { data: recipe } = useQuery<{recipe: Recipe}>(GetRecipeDocument, { - variables: { id: recipeBase?.id }, - skip: !recipeBase, - }) - - const recipeContext = useMemo(() => toConfig(configuration?.[active.label!]), [active.label, configuration]) - const mergedContext = useMemo>(() => ({ ...recipeContext, ...context }), [recipeContext, context]) - const stepData = useMemo(() => ({ - ...active.data, ...{ id: recipe?.recipe.id }, ...{ context: mergedContext }, ...{ oidc }, - }), [active.data, recipe?.recipe.id, mergedContext, oidc]) - - useEffect(() => { - const valid = Object.values(context).every(({ valid }) => valid) - - setValid(valid) - }, [context, setValid]) - - // Update step data on change - useEffect(() => setData(stepData), [stepData, setData]) - - if (!recipe) { - return ( - - - - ) - } - - if (recipe.recipe?.restricted) { - return ( - -
- Cannot install app - - This application has been marked restricted because it requires configuration, like ssh keys, that are only able to be securely configured locally. - -
-
- ) - } - - return ( - -
- - configure {active.label} - - {active.isDependency && ( - Dependency - - )} -
- -
- ) -} diff --git a/pkg/ui/web/src/routes/installer/Configuration.tsx b/pkg/ui/web/src/routes/installer/Configuration.tsx deleted file mode 100644 index 2d1e6d9a6..000000000 --- a/pkg/ui/web/src/routes/installer/Configuration.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import { - Dispatch, - ReactElement, - SetStateAction, - useCallback, - useEffect, - useMemo, -} from 'react' -import { Flex, Span, Switch } from 'honorable' -import { useActive, useNavigation } from '@pluralsh/design-system' - -import { - Datatype, - Maybe, - Operation as OperationType, - Recipe, - RecipeConfiguration, -} from '../../graphql/generated/graphql' - -import { ConfigurationItem } from './ConfigurationItem' - -const available = (config, context) => { - if (!config.condition) return true - - const { condition } = config - - switch (condition.operation) { - case OperationType.Not: - return !(context[condition.field]?.value) - case OperationType.Prefix: - return context[condition.field]?.value?.startsWith(condition.value) ?? false - case OperationType.Eq: - return context[condition.field]?.value - } - - return true -} - -interface ConfigurationProps { - recipe: Recipe, - context: Record - setContext: Dispatch>> - oidc?: boolean - setOIDC: Dispatch -} - -export function Configuration({ - recipe, context, setContext, oidc, setOIDC, -}: ConfigurationProps): ReactElement { - const { - active, completed, setCompleted, setData, - } = useActive>() - const { onNext } = useNavigation() - const sections = recipe.recipeSections - const configurations = sections!.filter(section => section!.repository!.name === active.label).map(section => section!.configuration).flat().filter(c => !!c) - const setValue = useCallback(( - fieldName, value, valid = true, type = Datatype.String - ) => setContext(context => ({ ...context, ...{ [fieldName]: { value, valid, type } } })), [setContext]) - const hiddenConfigurations = useMemo(() => configurations.filter(conf => !available(conf, context)), [configurations, context]) - - useEffect(() => { - hiddenConfigurations.forEach(conf => { - setContext(context => ({ ...context, ...{ [conf!.name!]: { value: context[conf!.name!]?.value, valid: true, type: Datatype.String } } })) - }) - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [hiddenConfigurations.length, setContext]) - - useEffect(() => { - if (configurations.length === 0 && !completed && active.data?.id) setCompleted(true) - }, [configurations.length, completed, active.data?.id, setCompleted]) - - useEffect(() => { - if (configurations.length === 0 && !active.data?.skipped && completed) { - setData({ ...active.data, ...{ skipped: true } }) - onNext() - } - }, [active.data, completed, configurations.length, onNext, setData]) - - return ( - - {configurations.filter(conf => available(conf, context)).map((conf?: Maybe) => ( - - ))} - {configurations?.length === 0 && ( - Nothing needs doing here! You can continue. - - )} - {recipe.oidcEnabled && ( -
- setOIDC(checked)} - >Enable OIDC - -
- )} -
- ) -} diff --git a/pkg/ui/web/src/routes/installer/ConfigurationFileInput.tsx b/pkg/ui/web/src/routes/installer/ConfigurationFileInput.tsx deleted file mode 100644 index 55cf43b61..000000000 --- a/pkg/ui/web/src/routes/installer/ConfigurationFileInput.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { FileInput } from 'grommet' -import { ThemeContext } from 'grommet/contexts' -import { Span } from 'honorable' -import { ComponentProps, useCallback, useState } from 'react' -import { useTheme } from 'styled-components' - -import { fileInputTheme } from '../../grommet/fileInputTheme' - -export default function ConfigurationFileInput({ - value, - onChange, ...props -}: { onChange: (f:{file: File | null, text: string}) => void; value: string } & Omit< - ComponentProps, 'onChange' ->) { - const [fileSelected, setFileSelected] = useState(!!value) - const theme = useTheme() - - const readFile = useCallback(async (files: FileList | undefined | null) => { - setFileSelected(false) - - const file = files?.item(0) ?? null - const text = await file?.text() ?? '' - - setFileSelected(!!file) - onChange({ text, file }) - }, - [onChange]) - - const messages = value ? { dropPrompt: '********', browse: 'Choose a different file' } : { - dropPrompt: 'Drop your file here', - browse: 'Select file', - } - - return ( - - readFile(event?.target?.files)} - renderFile={file => ( - - {file.name} - - )} - {...props} - /> - - ) -} diff --git a/pkg/ui/web/src/routes/installer/ConfigurationItem.tsx b/pkg/ui/web/src/routes/installer/ConfigurationItem.tsx deleted file mode 100644 index 227f75e78..000000000 --- a/pkg/ui/web/src/routes/installer/ConfigurationItem.tsx +++ /dev/null @@ -1,254 +0,0 @@ -import { FormField, Input, useActive } from '@pluralsh/design-system' -import { Switch } from 'honorable' -import StartCase from 'lodash/startCase' -import { - useContext, - useEffect, - useMemo, - useState, -} from 'react' - -import { WailsContext } from '../../context/wails' -import { Datatype } from '../../graphql/generated/graphql' -import { PluralProject } from '../../types/client' - -import ConfigurationFileInput from './ConfigurationFileInput' -import { InstallerContext } from './context' - -type ModifierFunction = (value: string, trim?: boolean) => string - -const modifierFactory = (type: Datatype, project: PluralProject): ModifierFunction => { - switch (type) { - case Datatype.String: - case Datatype.Int: - case Datatype.Password: - return stringModifier - case Datatype.Bucket: - return bucketModifier.bind({ project }) - case Datatype.Domain: - return domainModifier.bind({ project }) - } - - return stringModifier -} - -const stringModifier = value => value - -function bucketModifier(this: {project: PluralProject}, value: string, trim = false) { - const { project } = this - const bucketPrefix = project?.bucketPrefix - const cluster = project?.cluster - const prefix = `${bucketPrefix}-${cluster}-` - - if (trim) return value?.replace(prefix, '') - - return bucketPrefix && cluster ? `${prefix}${value}` : value -} -function domainModifier(this: {project: PluralProject}, value: string, trim = false) { - const { project } = this - const subdomain = project?.network?.subdomain || '' - const suffix = subdomain ? `.${subdomain}` : '' - - if (trim) return value?.replace(suffix, '') - - return subdomain ? `${value}${suffix}` : value -} - -const createValidator = (regex: RegExp, optional: boolean, error: string) => (value): {valid: boolean, message: string} => ({ - valid: (value ? regex.test(value) : optional), - message: error, -}) - -/** - * Creates validator for domain uniqueness check. - * - * @param ctx - object that maps field name to an object field with value, validity, etc. - * @param fieldName - field name being checked - * @param appName - active application name - * @param registeredDomains - a set of domains used by already installed applications - * @param usedDomains - object that maps key (appName-fieldName) to the domain name. - * It is basically a list of unique domains used by the installer locally. - */ -const createUniqueDomainValidator - = ( - ctx: Record, - fieldName: string, - appName: string, - registeredDomains: Set, - usedDomains: Record - ) => (value): { valid: boolean; message: string } => { - const domains = new Set(registeredDomains) - - Object.entries(ctx) - .filter(([name, field]) => field.type === Datatype.Domain - && name !== fieldName - && field.value?.length > 0) - .forEach(([_, field]) => domains.add(field.value)) - - Object.entries(usedDomains) - .filter(([key]) => key !== domainFieldKey(appName, fieldName)) - .forEach(([_, domain]) => domains.add(domain)) - - return { - valid: !domains.has(value), - message: `Domain ${value} already used.`, - } - } - -const domainFieldKey = (appName, fieldName) => `${appName}-${fieldName}` - -function ConfigurationField({ - config, ctx, setValue, -}) { - const { - name, - default: defaultValue, - placeholder, - documentation, - validation, - optional, - type, - } = config - const { project, context } = useContext(WailsContext) - const { domains, setDomains } = useContext(InstallerContext) - const { active } = useActive() - - const value = useMemo(() => ctx[name]?.value, [ctx, name]) - const validators = useMemo(() => [ - createValidator(new RegExp(validation?.regex ? `^${validation?.regex}$` : /.*/), - config.optional, - validation?.message), - ...(type === Datatype.Domain - ? [ - createUniqueDomainValidator( - ctx, - name, - active.label!, - new Set(context.domains ?? []), - domains - ), - ] - : []), - ], - [active.label, config.optional, context.domains, ctx, domains, name, type, validation?.message, validation?.regex]) - const { valid, message } = useMemo(() => { - for (const validator of validators) { - const result = validator(value) - - if (!result.valid) return result - } - - return { valid: true, message: '' } - }, [validators, value]) - const modifier = useMemo(() => modifierFactory(config.type, project), - [config.type, project]) - - const isFile = type === Datatype.File - - const [local, setLocal] = useState(modifier(value, true) || (isFile ? null : defaultValue)) - - useEffect(() => (local - ? setValue( - name, modifier(local), valid, type - ) - : setValue( - name, local, valid, type - )), - [local, modifier, name, setValue, type, valid]) - - useEffect(() => { - if (type !== Datatype.Domain || !value) return - - setDomains(domains => ({ - ...domains, - ...{ [domainFieldKey(active.label, name)]: value }, - })) - }, [active.label, name, setDomains, type, value]) - - const isInt = type === Datatype.Int - const isPassword - = type === Datatype.Password - || ['private_key', 'public_key'].includes(config.name) - - const inputFieldType = isInt - ? 'number' - : isPassword - ? 'password' - : 'text' - - return ( - - {isFile ? ( - { - setLocal(val?.text ?? '') - }} - /> - ) : ( - setLocal(value)} - /> - )} - - ) -} - -function BoolConfiguration({ config: { name, default: def }, ctx, setValue }) { - const value: boolean = `${ctx[name]?.value}`.toLowerCase() === 'true' - - useEffect(() => { - if (value === undefined && def) { - setValue(name, def) - } - }, [value, def, name, setValue]) - - return ( - setValue(name, checked)} - > - {StartCase(name)} - - ) -} - -export function ConfigurationItem({ config, ctx, setValue }) { - switch (config.type) { - case Datatype.Bool: - return ( - - ) - default: - return ( - - ) - } -} diff --git a/pkg/ui/web/src/routes/installer/Installer.tsx b/pkg/ui/web/src/routes/installer/Installer.tsx deleted file mode 100644 index a9d2062b9..000000000 --- a/pkg/ui/web/src/routes/installer/Installer.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import { ApolloError, useApolloClient, useQuery } from '@apollo/client' -import { - GraphQLToast, - Wizard, - WizardNavigation, - WizardStepConfig, - WizardStepper, -} from '@pluralsh/design-system' -import React, { - useCallback, - useContext, - useEffect, - useMemo, - useState, -} from 'react' -import { useNavigate } from 'react-router-dom' -import styled from 'styled-components' - -import Loader from '../../components/loader/Loader' -import { WailsContext } from '../../context/wails' -import { ListRepositoriesDocument, ListRepositoriesQueryVariables, RootQueryType } from '../../graphql/generated/graphql' -import { Routes } from '../routes' - -import { buildSteps, install, toDefaultSteps } from './helpers' -import { InstallerContext } from './context' - -const FILTERED_APPS = ['bootstrap', 'ingress-nginx', 'postgres'] -const FORCED_APPS = { - console: 'The Plural Console will allow you to monitor, upgrade, and deploy applications easily from one centralized place.', -} - -const Installer = styled(InstallerUnstyled)(() => ({ - height: '100%', -})) - -function InstallerUnstyled({ ...props }): React.ReactElement { - const navigate = useNavigate() - const client = useApolloClient() - const { project: { provider } } = useContext(WailsContext) - - const [stepsLoading, setStepsLoading] = useState(false) - const [steps, setSteps] = useState>() - const [error, setError] = useState() - const [defaultSteps, setDefaultSteps] = useState>([]) - const [domains, setDomains] = useState>({}) - - const { data: connection } = useQuery, ListRepositoriesQueryVariables>(ListRepositoriesDocument, { - variables: { - installed: false, - provider, - }, - fetchPolicy: 'network-only', - }) - - const { data: installed } = useQuery, ListRepositoriesQueryVariables>(ListRepositoriesDocument, { - variables: { - installed: true, - provider, - }, - fetchPolicy: 'network-only', - }) - - const context = useMemo(() => ({ domains, setDomains }), [domains]) - - const applications = useMemo(() => connection - ?.repositories - ?.edges - ?.map(repo => repo!.node) - .filter(app => ((!app?.private ?? true)) && !FILTERED_APPS.includes(app!.name)), [connection?.repositories?.edges]) - - const installedApplications = useMemo(() => installed - ?.repositories - ?.edges - ?.map(repo => repo!.node) ?? [], [installed]) - - const onInstall = useCallback((payload: Array) => { - setStepsLoading(true) - - install(client, payload) - .then(() => navigate(Routes.Next)) - .catch(err => setError(err)) - .finally(() => setStepsLoading(false)) - }, [client, navigate]) - - const onSelect = useCallback((selectedApplications: Array) => { - const build = async () => { - const steps = await buildSteps( - client, - provider!, - selectedApplications, - new Set(installedApplications.map(repository => repository!.name)), - ) - - setSteps(steps) - } - - setStepsLoading(true) - build().finally(() => setStepsLoading(false)) - }, [client, installedApplications, provider]) - - useEffect(() => setDefaultSteps(toDefaultSteps(applications, provider!, { ...FORCED_APPS })), [applications?.length, provider]) - - if (!applications || defaultSteps.length === 0) { - return - } - - return ( -
- - - {{ - stepper: , - navigation: , - }} - - - {error && ( - setError(undefined)} - margin="medium" - closeTimeout={20000} - /> - )} - -
- ) -} - -export default Installer diff --git a/pkg/ui/web/src/routes/installer/context.tsx b/pkg/ui/web/src/routes/installer/context.tsx deleted file mode 100644 index 482c561ee..000000000 --- a/pkg/ui/web/src/routes/installer/context.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { Dispatch, SetStateAction, createContext } from 'react' - -interface ContextProps { - domains: Record - setDomains: Dispatch>> -} - -const InstallerContext = createContext({} as ContextProps) - -export type { ContextProps } -export { InstallerContext } diff --git a/pkg/ui/web/src/routes/installer/helpers.tsx b/pkg/ui/web/src/routes/installer/helpers.tsx deleted file mode 100644 index 00efb8b02..000000000 --- a/pkg/ui/web/src/routes/installer/helpers.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import { ApolloClient } from '@apollo/client' - -import { - AppsIcon, - InstallIcon, - WizardInstaller, - WizardPicker, - WizardStepConfig, -} from '@pluralsh/design-system' - -import { - Datatype, - GetRecipeDocument, - ListRecipesDocument, - Provider, - Recipe, - RecipeSection, - RootQueryType, -} from '../../graphql/generated/graphql' -import { Binding, ClientBindingFactory } from '../../services/wails' - -import { Application } from './Application' - -const toPickerItems = (applications: Array, provider: Provider, forcedApps: any): Array => applications?.map(app => ({ - key: app.id, - label: app.name, - imageUrl: app.icon, - node: , - isRequired: Object.keys(forcedApps).includes(app.name), - tooltip: forcedApps[app.name], -})) || [] - -const toDefaultSteps = (applications: any, provider: Provider, forcedApps: any): Array => [{ - key: 'apps', - label: 'Apps', - Icon: AppsIcon, - node: , - isDefault: true, -}, -{ - key: 'placeholder', - isPlaceholder: true, -}, -{ - key: 'install', - label: 'Install', - Icon: InstallIcon, - node: , - isDefault: true, -}] - -const toDependencySteps = (applications: {section: RecipeSection, dependencyOf: Set}[], provider: Provider): Array => [...applications.map(app => ({ - key: app.section.repository!.id, - label: app.section.repository!.name, - imageUrl: app.section.repository!.icon!, - node: , - isDependency: true, - dependencyOf: app.dependencyOf, -}))] - -const buildSteps = async ( - client: ApolloClient, - provider: Provider, - selectedApplications: Array, - installedApplications: Set -) => { - const dependencyMap = new Map}>() - - for (const app of selectedApplications) { - const { data: { recipes } = {} } = await client.query>({ - query: ListRecipesDocument, - variables: { repositoryId: app.key }, - }) - - const { node: recipeBase } = recipes?.edges?.find(edge => edge!.node!.provider === provider) || { node: undefined } - - if (!recipeBase) continue - - const { data: recipe } = await client.query<{recipe: Recipe}>({ - query: GetRecipeDocument, - variables: { id: recipeBase?.id }, - }) - - const sections = recipe.recipe.recipeSections! - .filter(section => section!.repository!.name !== app.label) - .filter(section => !installedApplications.has(section!.repository!.name)) - - sections.forEach(section => { - if (selectedApplications.find(app => app.key === section!.repository!.id)) return - - if (!dependencyMap.has(section!.repository!.name)) { - dependencyMap.set(section!.repository!.name, { section: section!, dependencyOf: new Set([app.label!]) }) - - return - } - - const dep = dependencyMap.get(section!.repository!.name)! - const dependencyOf: Array = [...Array.from(dep.dependencyOf.values()), app.label!] - - dependencyMap.set(section!.repository!.name, { section: section!, dependencyOf: new Set(dependencyOf) }) - }) - } - - return toDependencySteps(Array.from(dependencyMap.values()), provider) -} - -const install = async (client: ApolloClient, apps: Array>) => { - const toAPIContext = context => ({ ...Object.keys(context || {}).reduce((acc, key) => ({ ...acc, [key]: context[key].value }), {}) }) - const toDataTypeValues = (context, datatype) => Object.keys(context || {}).reduce((acc: Array, key) => (context[key].type === datatype ? [...acc, context[key].value] : [...acc]), []) - const install = ClientBindingFactory(Binding.Install) - const domains = apps.reduce((acc: Array, app) => [...acc, ...toDataTypeValues(app.data?.context || {}, Datatype.Domain)], []) - const buckets = apps.reduce((acc: Array, app) => [...acc, ...toDataTypeValues(app.data?.context || {}, Datatype.Bucket)], []) - - // Filter out some form validation fields from context - apps = apps.map(app => ({ ...app, data: { ...app.data, context: toAPIContext(app.data.context ?? {}) } })) - - return install(apps.map(app => ({ ...app, dependencyOf: Array.from(app.dependencyOf ?? []) })), domains, buckets) -} - -export { - toDependencySteps, toDefaultSteps, buildSteps, toPickerItems, install, -} diff --git a/pkg/ui/web/src/routes/installer/route.tsx b/pkg/ui/web/src/routes/installer/route.tsx deleted file mode 100644 index e94d78a0e..000000000 --- a/pkg/ui/web/src/routes/installer/route.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react' -import { DataRouteObject } from 'react-router-dom' - -const Installer = React.lazy(() => import('./Installer')) - -const route: DataRouteObject = { - id: 'installer', - index: true, - element: , -} - -export { route as installerRoute } diff --git a/pkg/ui/web/src/routes/nextsteps/NextSteps.tsx b/pkg/ui/web/src/routes/nextsteps/NextSteps.tsx deleted file mode 100644 index 9e263c365..000000000 --- a/pkg/ui/web/src/routes/nextsteps/NextSteps.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { Button, Codeline } from '@pluralsh/design-system' -import React, { useCallback } from 'react' -import { useNavigate } from 'react-router-dom' -import styled from 'styled-components' - -import { Close, SetClipboard } from '../../../wailsjs/go/ui/Window' -import { Routes } from '../routes' - -const NextSteps = styled(NextStepsUnstyled)(({ theme }) => ({ - height: '100%', - display: 'flex', - flexDirection: 'column', - justifyContent: 'center', - gap: theme.spacing.medium, - - '.title': { - ...theme.partials.text.title2, - - display: 'flex', - flexDirection: 'column', - alignSelf: 'center', - alignItems: 'center', - textAlign: 'center', - paddingBottom: theme.spacing.xxxlarge, - }, - - '.description': { - ...theme.partials.text.body1, - - alignSelf: 'center', - }, - - '.codeline': { - ...theme.partials.text.body2, - - paddingTop: theme.spacing.xxlarge, - }, - - '.actions': { - display: 'flex', - justifyContent: 'space-between', - paddingTop: theme.spacing.xlarge, - }, -})) - -function NextStepsUnstyled({ ...props }): React.ReactElement { - const onClose = useCallback(Close, []) - const onCopy = useCallback((text: string) => SetClipboard(text), []) - const navigate = useNavigate() - - return ( -
- - Almost done! - Follow the next steps to complete your installations. - - - Copy and run below command to build your applications: - plural build - - - Copy and run below command to deploy your applications: - plural deploy --commit "Installed few apps with Plural" - - -
- - -
-
- ) -} - -export default NextSteps diff --git a/pkg/ui/web/src/routes/nextsteps/route.tsx b/pkg/ui/web/src/routes/nextsteps/route.tsx deleted file mode 100644 index 48236b8f5..000000000 --- a/pkg/ui/web/src/routes/nextsteps/route.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react' -import { DataRouteObject } from 'react-router-dom' - -import { Routes } from '../routes' - -const NextSteps = React.lazy(() => import('./NextSteps')) - -const route: DataRouteObject = { - id: 'next', - path: Routes.Next, - element: , -} - -export { route as nextStepsRoute } diff --git a/pkg/ui/web/src/routes/root.tsx b/pkg/ui/web/src/routes/root.tsx deleted file mode 100644 index 879645000..000000000 --- a/pkg/ui/web/src/routes/root.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { ApolloProvider } from '@apollo/client' -import { GraphQLToast, LoadingSpinner } from '@pluralsh/design-system' -import React, { Suspense, useContext } from 'react' -import { DataRouteObject, Outlet, RouteObject } from 'react-router-dom' -import styled from 'styled-components' - -import { WailsContext } from '../context/wails' -import Header from '../layout/Header' -import { useApolloClient } from '../services/apollo' - -import { Routes } from './routes' - -const Root = styled(RootUnstyled)(({ theme }) => ({ - display: 'flex', - flexDirection: 'column' as const, - height: '100%', - overflow: 'hidden', - - '.content': { - padding: theme.spacing.xxlarge, - flexGrow: 1, - overflowY: 'auto', - }, -})) - -function RootUnstyled({ ...props }): React.ReactElement { - const { token } = useContext(WailsContext) - const { client, error } = useApolloClient(token) - - return ( -
- -
-
- {error && ( - - )} - -
- ) -} - -const route = (children: Array): RouteObject => ({ - path: Routes.Root, - element: }>, - children, -}) - -export { route as createRootRoute } diff --git a/pkg/ui/web/src/routes/router.tsx b/pkg/ui/web/src/routes/router.tsx deleted file mode 100644 index b0f47bd67..000000000 --- a/pkg/ui/web/src/routes/router.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createHashRouter } from 'react-router-dom' - -import { installerRoute } from './installer/route' -import { nextStepsRoute } from './nextsteps/route' - -import { createRootRoute } from './root' - -const router = createHashRouter([ - createRootRoute([ - installerRoute, - nextStepsRoute, - ]), -]) - -export { router } diff --git a/pkg/ui/web/src/routes/routes.ts b/pkg/ui/web/src/routes/routes.ts deleted file mode 100644 index fe9825e2b..000000000 --- a/pkg/ui/web/src/routes/routes.ts +++ /dev/null @@ -1,6 +0,0 @@ -enum Routes { - Root = '/', - Next = 'next', -} - -export { Routes } diff --git a/pkg/ui/web/src/services/apollo.tsx b/pkg/ui/web/src/services/apollo.tsx deleted file mode 100644 index c16bf5fe3..000000000 --- a/pkg/ui/web/src/services/apollo.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { GraphQLErrors } from '@apollo/client/errors' -import { useMemo, useState } from 'react' -import { create } from '@absinthe/socket' -import { createAbsintheSocketLink } from '@absinthe/socket-apollo-link' -import { - ApolloClient, - ApolloLink, - HttpLink, - InMemoryCache, - NormalizedCacheObject, -} from '@apollo/client' -import { setContext } from '@apollo/client/link/context' -import { onError } from '@apollo/client/link/error' -import { RetryLink } from '@apollo/client/link/retry' -import { Socket as PhoenixSocket } from 'phoenix' - -const API_HOST = 'app.plural.sh' -const GQL_URL = `https://${API_HOST}/gql` -const WS_URI = `wss://${API_HOST}/socket` - -// const splitLink = split(({ query }) => { -// const definition = getMainDefinition(query) -// -// return ( -// definition.kind === 'OperationDefinition' -// && definition.operation === 'subscription' -// ) -// }, -// socketLink, -// retryLink.concat(resetToken).concat(httpLink),) - -interface ApolloClientHook { - client: ApolloClient - error: GraphQLErrors | undefined -} - -export function useApolloClient(token: string): ApolloClientHook { - const [error, setError] = useState() - - const authLink = setContext(() => ({ headers: token ? { authorization: `Bearer ${token}` } : {} })) - const httpLink = useMemo(() => new HttpLink({ uri: GQL_URL }), []) - const absintheSocket = create(new PhoenixSocket(WS_URI, { params: () => (token ? { Authorization: `Bearer ${token}` } : {}) })) - const errorLink = onError(({ graphQLErrors }) => { - if (!error && graphQLErrors) { - const clearDelay = 15000 - - setError(graphQLErrors) - setTimeout(() => setError(undefined), clearDelay) - } - }) - const _socketLink = createAbsintheSocketLink(absintheSocket) - const _retryLink = new RetryLink({ - delay: { initial: 200 }, - attempts: { - max: Infinity, - retryIf: error => !!error, - }, - }) - - return useMemo(() => ({ - client: new ApolloClient({ - link: ApolloLink.from([authLink, errorLink, httpLink]), - cache: new InMemoryCache(), - }), - error, - }), [authLink, error, httpLink, errorLink]) -} diff --git a/pkg/ui/web/src/services/wails.ts b/pkg/ui/web/src/services/wails.ts deleted file mode 100644 index ddf06bb1f..000000000 --- a/pkg/ui/web/src/services/wails.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { WizardStepConfig } from '@pluralsh/design-system' - -import { ui } from '../../wailsjs/go/models' -import { - Context, - Install, - Project, - Provider, - Token, -} from '../../wailsjs/go/ui/Client' -import { SetClipboard } from '../../wailsjs/go/ui/Window' -import { Provider as APIProvider } from '../graphql/generated/graphql' -import { - Client, - ClientBinding, - PluralContext, - PluralProject, -} from '../types/client' - -import Application = ui.Application; - -/** - * List of supported client methods based on API Go client. - * @see pkg/api/client.go - */ -enum Binding { - Token = 'Token', - Project = 'Project', - Provider = 'Provider', - Context = 'Context', - Install = 'Install', - SetClipboard = 'SetClipboard', -} - -/** - * Client mapping from defined bindings to exposed Go backend methods. - * Abstracts the backend calls and wraps them with proper return types - * to simplify usage in the UI. - * @see Binding - */ -const Plural: Client = { - [Binding.Token]: (): Promise => Token(), - [Binding.Project]: (): Promise => Project() as Promise, - [Binding.Provider]: (): Promise => Provider() as Promise, - [Binding.Context]: (): Promise => Context() as Promise, - [Binding.Install]: (apps: Array, domains: Array, buckets: Array): Promise => Install(apps as Array, domains, buckets) as Promise, - [Binding.SetClipboard]: (text: string): Promise => SetClipboard(text), -} - -/** - * Factory that simplifies getting wrapped client binding methods. - * @param binding - * @constructor - */ -function ClientBindingFactory(binding: Binding): ClientBinding { - const bindingFn: ClientBinding = Plural[binding] as ClientBinding - - if (!bindingFn) throw new Error(`Unsupported client endpoint: ${binding}`) - - return bindingFn -} - -export { ClientBindingFactory, Binding } diff --git a/pkg/ui/web/src/styled/fonts.ts b/pkg/ui/web/src/styled/fonts.ts deleted file mode 100644 index f0ab91ff5..000000000 --- a/pkg/ui/web/src/styled/fonts.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { createGlobalStyle } from 'styled-components' - -// language=SCSS -const FontStyles = createGlobalStyle(() => ` - @font-face { - font-family: 'Monument'; - src: url("/fonts/monument-regular.otf") format("opentype"); - font-weight: 400; - } - - @font-face { - font-family: 'Monument'; - src: url("/fonts/monument-medium.woff") format("woff"); - font-weight: 450; - } - - @font-face { - font-family: 'Monument'; - src: url("/fonts/monument-medium.woff") format("woff"); - font-weight: 500; - } - - @font-face { - font-family: 'Monument'; - src: url("/fonts/monument-bold.woff") format("woff"); - font-weight: 500; - } - - @font-face { - font-family: 'Monument'; - src: url("/fonts/monument-regular-italic.woff") format("woff"); - font-weight: 400; - font-style: italic; - } - - @font-face { - font-family: 'Monument'; - src: url("/fonts/monument-medium-italic.woff") format("woff"); - font-weight: 500; - font-style: italic; - } - - @font-face { - font-family: 'Monument'; - src: url("/fonts/monument-bold-italic.woff") format("woff"); - font-weight: 600; - font-style: italic; - } - - @font-face { - font-family: 'Monument Semi-Mono'; - src: url("/fonts/ABCMonumentGroteskSemi-Mono-Regular.woff") format("woff"); - font-weight: 400; - } - - @font-face { - font-family: 'Monument Semi-Mono'; - src: url("/fonts/ABCMonumentGroteskSemi-Mono-Medium.woff") format("woff"); - font-weight: 500; - } - - @font-face { - font-family: 'Monument Semi-Mono'; - src: url("/fonts/ABCMonumentGroteskSemi-Mono-Heavy.woff") format("woff"); - font-weight: 600; - } - - @font-face { - font-family: 'Monument Mono'; - src: url("/fonts/ABCMonumentGroteskMono-Regular.woff") format("woff"); - font-weight: 400; - } - - @font-face { - font-family: 'Monument Mono'; - src: url("/fonts/ABCMonumentGroteskMono-Medium.woff") format("woff"); - font-weight: 500; - } - - @font-face { - font-family: 'Monument Mono'; - src: url("/fonts/ABCMonumentGroteskMono-Heavy.woff") format("woff"); - font-weight: 600; - } -`) - -export { FontStyles } diff --git a/pkg/ui/web/src/styled/global.ts b/pkg/ui/web/src/styled/global.ts deleted file mode 100644 index 5f2d90f97..000000000 --- a/pkg/ui/web/src/styled/global.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { createGlobalStyle } from 'styled-components' - -// language=SCSS -const GlobalStyles = createGlobalStyle(({ theme }) => ` - html, body, #root { - // Layout - height: 100vh; - padding: 0; - margin: 0; - - // Fonts - font-size: 14px; - font-family: Inter, Helvetica, Arial, "sans-serif"; - line-height: 20px; - - // Theming - background: ${theme.colors['fill-zero']}; - color: ${theme.colors.text}; - } -`) - -export { GlobalStyles } diff --git a/pkg/ui/web/src/styled/scrollbar.ts b/pkg/ui/web/src/styled/scrollbar.ts deleted file mode 100644 index 95f4c5efd..000000000 --- a/pkg/ui/web/src/styled/scrollbar.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { createGlobalStyle } from 'styled-components' - -const ScrollbarStyles = createGlobalStyle(({ theme }) => theme.partials.scrollBar({ fillLevel: 0 })) - -export { ScrollbarStyles } diff --git a/pkg/ui/web/src/styled/theme.ts b/pkg/ui/web/src/styled/theme.ts deleted file mode 100644 index cb9b7acd8..000000000 --- a/pkg/ui/web/src/styled/theme.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { styledTheme } from '@pluralsh/design-system' - -const theme = { - ...styledTheme, - partials: { - ...styledTheme.partials, - draggable: { '--wails-draggable': 'drag' }, - }, -} - -export { theme as styledTheme } diff --git a/pkg/ui/web/src/types/client.d.ts b/pkg/ui/web/src/types/client.d.ts deleted file mode 100644 index bfdc8f046..000000000 --- a/pkg/ui/web/src/types/client.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Provider } from '../graphql/generated/graphql' -import { Binding } from '../services/client' - -type ClientBinding = (...args: any) => Promise -type Client = {[key in Binding]: ClientBinding} - -interface NetworkConfig { - subdomain: string - pluralDns: bool -} - -interface PluralProject { - cluster: string - bucket: string - project: string - provider: Provider - region: string - bucketPrefix: string - network: NetworkConfig - context: Map -} - -interface PluralContext { - buckets: Array - domains: Array - configuration: Record> -} - -export type { - Client, ClientBinding, PluralProject, PluralContext, -} diff --git a/pkg/ui/web/src/types/styled.d.ts b/pkg/ui/web/src/types/styled.d.ts deleted file mode 100644 index 828f19c85..000000000 --- a/pkg/ui/web/src/types/styled.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -// import original module declarations -import 'styled-components' - -import { styledTheme } from '../styled/theme' - -type StyledTheme = typeof styledTheme - -// and extend them! -declare module 'styled-components' { - // eslint-disable-next-line @typescript-eslint/no-empty-interface - export interface DefaultTheme extends StyledTheme {} -} diff --git a/pkg/ui/web/src/vite-env.d.ts b/pkg/ui/web/src/vite-env.d.ts deleted file mode 100644 index 11f02fe2a..000000000 --- a/pkg/ui/web/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/pkg/ui/web/style.css b/pkg/ui/web/style.css deleted file mode 100644 index 061c2db8f..000000000 --- a/pkg/ui/web/style.css +++ /dev/null @@ -1,3 +0,0 @@ -html, body { - width: 100vh; -} \ No newline at end of file diff --git a/pkg/ui/web/tsconfig.json b/pkg/ui/web/tsconfig.json deleted file mode 100644 index 49e6a537b..000000000 --- a/pkg/ui/web/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "lib": [ - "DOM", - "DOM.Iterable", - "ESNext" - ], - "allowJs": false, - "skipLibCheck": true, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", - "noImplicitAny": false - }, - "include": [ - "src" - ], - "references": [ - { - "path": "./tsconfig.node.json" - } - ] -} diff --git a/pkg/ui/web/tsconfig.node.json b/pkg/ui/web/tsconfig.node.json deleted file mode 100644 index b8afcc8fa..000000000 --- a/pkg/ui/web/tsconfig.node.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "module": "ESNext", - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true - }, - "include": [ - "vite.config.ts" - ] -} diff --git a/pkg/ui/web/vite.config.ts b/pkg/ui/web/vite.config.ts deleted file mode 100644 index 5a33944a9..000000000 --- a/pkg/ui/web/vite.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [react()], -}) diff --git a/pkg/ui/web/wailsjs/go/models.ts b/pkg/ui/web/wailsjs/go/models.ts deleted file mode 100755 index 4119e4dca..000000000 --- a/pkg/ui/web/wailsjs/go/models.ts +++ /dev/null @@ -1,77 +0,0 @@ -export namespace manifest { - - export class Context { - protect?: string[]; - // Go type: Globals - globals?: any; - - static createFrom(source: any = {}) { - return new Context(source); - } - - constructor(source: any = {}) { - if ('string' === typeof source) source = JSON.parse(source); - this.protect = source["protect"]; - this.globals = this.convertValues(source["globals"], null); - } - - convertValues(a: any, classs: any, asMap: boolean = false): any { - if (!a) { - return a; - } - if (a.slice) { - return (a as any[]).map(elem => this.convertValues(elem, classs)); - } else if ("object" === typeof a) { - if (asMap) { - for (const key of Object.keys(a)) { - a[key] = new classs(a[key]); - } - return a; - } - return new classs(a); - } - return a; - } - } - export class NetworkConfig { - subdomain: string; - pluralDns: boolean; - - static createFrom(source: any = {}) { - return new NetworkConfig(source); - } - - constructor(source: any = {}) { - if ('string' === typeof source) source = JSON.parse(source); - this.subdomain = source["subdomain"]; - this.pluralDns = source["pluralDns"]; - } - } - -} - -export namespace ui { - - export class Application { - key: string; - label: string; - isDependency: boolean; - dependencyOf: {[key: string]: any}; - data: {[key: string]: any}; - - static createFrom(source: any = {}) { - return new Application(source); - } - - constructor(source: any = {}) { - if ('string' === typeof source) source = JSON.parse(source); - this.key = source["key"]; - this.label = source["label"]; - this.isDependency = source["isDependency"]; - this.dependencyOf = source["dependencyOf"]; - this.data = source["data"]; - } - } - -} - diff --git a/pkg/ui/web/wailsjs/go/ui/Client.d.ts b/pkg/ui/web/wailsjs/go/ui/Client.d.ts deleted file mode 100755 index b7a026b8a..000000000 --- a/pkg/ui/web/wailsjs/go/ui/Client.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT -import {ui} from '../models'; - -export function Context():Promise; - -export function Install(arg1:Array,arg2:Array,arg3:Array):Promise; - -export function Project():Promise; - -export function Provider():Promise; - -export function Token():Promise; diff --git a/pkg/ui/web/wailsjs/go/ui/Client.js b/pkg/ui/web/wailsjs/go/ui/Client.js deleted file mode 100755 index ca1299c06..000000000 --- a/pkg/ui/web/wailsjs/go/ui/Client.js +++ /dev/null @@ -1,23 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -export function Context() { - return window['go']['ui']['Client']['Context'](); -} - -export function Install(arg1, arg2, arg3) { - return window['go']['ui']['Client']['Install'](arg1, arg2, arg3); -} - -export function Project() { - return window['go']['ui']['Client']['Project'](); -} - -export function Provider() { - return window['go']['ui']['Client']['Provider'](); -} - -export function Token() { - return window['go']['ui']['Client']['Token'](); -} diff --git a/pkg/ui/web/wailsjs/go/ui/Window.d.ts b/pkg/ui/web/wailsjs/go/ui/Window.d.ts deleted file mode 100755 index ec70ec460..000000000 --- a/pkg/ui/web/wailsjs/go/ui/Window.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -export function Close():Promise; - -export function SetClipboard(arg1:string):Promise; diff --git a/pkg/ui/web/wailsjs/go/ui/Window.js b/pkg/ui/web/wailsjs/go/ui/Window.js deleted file mode 100755 index 8b1baf3b5..000000000 --- a/pkg/ui/web/wailsjs/go/ui/Window.js +++ /dev/null @@ -1,11 +0,0 @@ -// @ts-check -// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL -// This file is automatically generated. DO NOT EDIT - -export function Close() { - return window['go']['ui']['Window']['Close'](); -} - -export function SetClipboard(arg1) { - return window['go']['ui']['Window']['SetClipboard'](arg1); -} diff --git a/pkg/ui/web/wailsjs/runtime/package.json b/pkg/ui/web/wailsjs/runtime/package.json deleted file mode 100755 index 1e7c8a5d7..000000000 --- a/pkg/ui/web/wailsjs/runtime/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "@wailsapp/runtime", - "version": "2.0.0", - "description": "Wails Javascript runtime library", - "main": "runtime.js", - "types": "runtime.d.ts", - "scripts": { - }, - "repository": { - "type": "git", - "url": "git+https://github.com/wailsapp/wails.git" - }, - "keywords": [ - "Wails", - "Javascript", - "Go" - ], - "author": "Lea Anthony ", - "license": "MIT", - "bugs": { - "url": "https://github.com/wailsapp/wails/issues" - }, - "homepage": "https://github.com/wailsapp/wails#readme" -} diff --git a/pkg/ui/web/wailsjs/runtime/runtime.d.ts b/pkg/ui/web/wailsjs/runtime/runtime.d.ts deleted file mode 100755 index a3723f94b..000000000 --- a/pkg/ui/web/wailsjs/runtime/runtime.d.ts +++ /dev/null @@ -1,235 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ - -export interface Position { - x: number; - y: number; -} - -export interface Size { - w: number; - h: number; -} - -export interface Screen { - isCurrent: boolean; - isPrimary: boolean; - width : number - height : number -} - -// Environment information such as platform, buildtype, ... -export interface EnvironmentInfo { - buildType: string; - platform: string; - arch: string; -} - -// [EventsEmit](https://wails.io/docs/reference/runtime/events#eventsemit) -// emits the given event. Optional data may be passed with the event. -// This will trigger any event listeners. -export function EventsEmit(eventName: string, ...data: any): void; - -// [EventsOn](https://wails.io/docs/reference/runtime/events#eventson) sets up a listener for the given event name. -export function EventsOn(eventName: string, callback: (...data: any) => void): () => void; - -// [EventsOnMultiple](https://wails.io/docs/reference/runtime/events#eventsonmultiple) -// sets up a listener for the given event name, but will only trigger a given number times. -export function EventsOnMultiple(eventName: string, callback: (...data: any) => void, maxCallbacks: number): () => void; - -// [EventsOnce](https://wails.io/docs/reference/runtime/events#eventsonce) -// sets up a listener for the given event name, but will only trigger once. -export function EventsOnce(eventName: string, callback: (...data: any) => void): () => void; - -// [EventsOff](https://wails.io/docs/reference/runtime/events#eventsoff) -// unregisters the listener for the given event name. -export function EventsOff(eventName: string, ...additionalEventNames: string[]): void; - -// [EventsOffAll](https://wails.io/docs/reference/runtime/events#eventsoffall) -// unregisters all listeners. -export function EventsOffAll(): void; - -// [LogPrint](https://wails.io/docs/reference/runtime/log#logprint) -// logs the given message as a raw message -export function LogPrint(message: string): void; - -// [LogTrace](https://wails.io/docs/reference/runtime/log#logtrace) -// logs the given message at the `trace` log level. -export function LogTrace(message: string): void; - -// [LogDebug](https://wails.io/docs/reference/runtime/log#logdebug) -// logs the given message at the `debug` log level. -export function LogDebug(message: string): void; - -// [LogError](https://wails.io/docs/reference/runtime/log#logerror) -// logs the given message at the `error` log level. -export function LogError(message: string): void; - -// [LogFatal](https://wails.io/docs/reference/runtime/log#logfatal) -// logs the given message at the `fatal` log level. -// The application will quit after calling this method. -export function LogFatal(message: string): void; - -// [LogInfo](https://wails.io/docs/reference/runtime/log#loginfo) -// logs the given message at the `info` log level. -export function LogInfo(message: string): void; - -// [LogWarning](https://wails.io/docs/reference/runtime/log#logwarning) -// logs the given message at the `warning` log level. -export function LogWarning(message: string): void; - -// [WindowReload](https://wails.io/docs/reference/runtime/window#windowreload) -// Forces a reload by the main application as well as connected browsers. -export function WindowReload(): void; - -// [WindowReloadApp](https://wails.io/docs/reference/runtime/window#windowreloadapp) -// Reloads the application frontend. -export function WindowReloadApp(): void; - -// [WindowSetAlwaysOnTop](https://wails.io/docs/reference/runtime/window#windowsetalwaysontop) -// Sets the window AlwaysOnTop or not on top. -export function WindowSetAlwaysOnTop(b: boolean): void; - -// [WindowSetSystemDefaultTheme](https://wails.io/docs/next/reference/runtime/window#windowsetsystemdefaulttheme) -// *Windows only* -// Sets window theme to system default (dark/light). -export function WindowSetSystemDefaultTheme(): void; - -// [WindowSetLightTheme](https://wails.io/docs/next/reference/runtime/window#windowsetlighttheme) -// *Windows only* -// Sets window to light theme. -export function WindowSetLightTheme(): void; - -// [WindowSetDarkTheme](https://wails.io/docs/next/reference/runtime/window#windowsetdarktheme) -// *Windows only* -// Sets window to dark theme. -export function WindowSetDarkTheme(): void; - -// [WindowCenter](https://wails.io/docs/reference/runtime/window#windowcenter) -// Centers the window on the monitor the window is currently on. -export function WindowCenter(): void; - -// [WindowSetTitle](https://wails.io/docs/reference/runtime/window#windowsettitle) -// Sets the text in the window title bar. -export function WindowSetTitle(title: string): void; - -// [WindowFullscreen](https://wails.io/docs/reference/runtime/window#windowfullscreen) -// Makes the window full screen. -export function WindowFullscreen(): void; - -// [WindowUnfullscreen](https://wails.io/docs/reference/runtime/window#windowunfullscreen) -// Restores the previous window dimensions and position prior to full screen. -export function WindowUnfullscreen(): void; - -// [WindowIsFullscreen](https://wails.io/docs/reference/runtime/window#windowisfullscreen) -// Returns the state of the window, i.e. whether the window is in full screen mode or not. -export function WindowIsFullscreen(): Promise; - -// [WindowSetSize](https://wails.io/docs/reference/runtime/window#windowsetsize) -// Sets the width and height of the window. -export function WindowSetSize(width: number, height: number): Promise; - -// [WindowGetSize](https://wails.io/docs/reference/runtime/window#windowgetsize) -// Gets the width and height of the window. -export function WindowGetSize(): Promise; - -// [WindowSetMaxSize](https://wails.io/docs/reference/runtime/window#windowsetmaxsize) -// Sets the maximum window size. Will resize the window if the window is currently larger than the given dimensions. -// Setting a size of 0,0 will disable this constraint. -export function WindowSetMaxSize(width: number, height: number): void; - -// [WindowSetMinSize](https://wails.io/docs/reference/runtime/window#windowsetminsize) -// Sets the minimum window size. Will resize the window if the window is currently smaller than the given dimensions. -// Setting a size of 0,0 will disable this constraint. -export function WindowSetMinSize(width: number, height: number): void; - -// [WindowSetPosition](https://wails.io/docs/reference/runtime/window#windowsetposition) -// Sets the window position relative to the monitor the window is currently on. -export function WindowSetPosition(x: number, y: number): void; - -// [WindowGetPosition](https://wails.io/docs/reference/runtime/window#windowgetposition) -// Gets the window position relative to the monitor the window is currently on. -export function WindowGetPosition(): Promise; - -// [WindowHide](https://wails.io/docs/reference/runtime/window#windowhide) -// Hides the window. -export function WindowHide(): void; - -// [WindowShow](https://wails.io/docs/reference/runtime/window#windowshow) -// Shows the window, if it is currently hidden. -export function WindowShow(): void; - -// [WindowMaximise](https://wails.io/docs/reference/runtime/window#windowmaximise) -// Maximises the window to fill the screen. -export function WindowMaximise(): void; - -// [WindowToggleMaximise](https://wails.io/docs/reference/runtime/window#windowtogglemaximise) -// Toggles between Maximised and UnMaximised. -export function WindowToggleMaximise(): void; - -// [WindowUnmaximise](https://wails.io/docs/reference/runtime/window#windowunmaximise) -// Restores the window to the dimensions and position prior to maximising. -export function WindowUnmaximise(): void; - -// [WindowIsMaximised](https://wails.io/docs/reference/runtime/window#windowismaximised) -// Returns the state of the window, i.e. whether the window is maximised or not. -export function WindowIsMaximised(): Promise; - -// [WindowMinimise](https://wails.io/docs/reference/runtime/window#windowminimise) -// Minimises the window. -export function WindowMinimise(): void; - -// [WindowUnminimise](https://wails.io/docs/reference/runtime/window#windowunminimise) -// Restores the window to the dimensions and position prior to minimising. -export function WindowUnminimise(): void; - -// [WindowIsMinimised](https://wails.io/docs/reference/runtime/window#windowisminimised) -// Returns the state of the window, i.e. whether the window is minimised or not. -export function WindowIsMinimised(): Promise; - -// [WindowIsNormal](https://wails.io/docs/reference/runtime/window#windowisnormal) -// Returns the state of the window, i.e. whether the window is normal or not. -export function WindowIsNormal(): Promise; - -// [WindowSetBackgroundColour](https://wails.io/docs/reference/runtime/window#windowsetbackgroundcolour) -// Sets the background colour of the window to the given RGBA colour definition. This colour will show through for all transparent pixels. -export function WindowSetBackgroundColour(R: number, G: number, B: number, A: number): void; - -// [ScreenGetAll](https://wails.io/docs/reference/runtime/window#screengetall) -// Gets the all screens. Call this anew each time you want to refresh data from the underlying windowing system. -export function ScreenGetAll(): Promise; - -// [BrowserOpenURL](https://wails.io/docs/reference/runtime/browser#browseropenurl) -// Opens the given URL in the system browser. -export function BrowserOpenURL(url: string): void; - -// [Environment](https://wails.io/docs/reference/runtime/intro#environment) -// Returns information about the environment -export function Environment(): Promise; - -// [Quit](https://wails.io/docs/reference/runtime/intro#quit) -// Quits the application. -export function Quit(): void; - -// [Hide](https://wails.io/docs/reference/runtime/intro#hide) -// Hides the application. -export function Hide(): void; - -// [Show](https://wails.io/docs/reference/runtime/intro#show) -// Shows the application. -export function Show(): void; - -// [ClipboardGetText](https://wails.io/docs/reference/runtime/clipboard#clipboardgettext) -// Returns the current text stored on clipboard -export function ClipboardGetText(): Promise; - -// [ClipboardSetText](https://wails.io/docs/reference/runtime/clipboard#clipboardsettext) -// Sets a text on the clipboard -export function ClipboardSetText(text: string): Promise; diff --git a/pkg/ui/web/wailsjs/runtime/runtime.js b/pkg/ui/web/wailsjs/runtime/runtime.js deleted file mode 100755 index bd4f371ae..000000000 --- a/pkg/ui/web/wailsjs/runtime/runtime.js +++ /dev/null @@ -1,202 +0,0 @@ -/* - _ __ _ __ -| | / /___ _(_) /____ -| | /| / / __ `/ / / ___/ -| |/ |/ / /_/ / / (__ ) -|__/|__/\__,_/_/_/____/ -The electron alternative for Go -(c) Lea Anthony 2019-present -*/ - -export function LogPrint(message) { - window.runtime.LogPrint(message); -} - -export function LogTrace(message) { - window.runtime.LogTrace(message); -} - -export function LogDebug(message) { - window.runtime.LogDebug(message); -} - -export function LogInfo(message) { - window.runtime.LogInfo(message); -} - -export function LogWarning(message) { - window.runtime.LogWarning(message); -} - -export function LogError(message) { - window.runtime.LogError(message); -} - -export function LogFatal(message) { - window.runtime.LogFatal(message); -} - -export function EventsOnMultiple(eventName, callback, maxCallbacks) { - return window.runtime.EventsOnMultiple(eventName, callback, maxCallbacks); -} - -export function EventsOn(eventName, callback) { - return EventsOnMultiple(eventName, callback, -1); -} - -export function EventsOff(eventName, ...additionalEventNames) { - return window.runtime.EventsOff(eventName, ...additionalEventNames); -} - -export function EventsOnce(eventName, callback) { - return EventsOnMultiple(eventName, callback, 1); -} - -export function EventsEmit(eventName) { - let args = [eventName].slice.call(arguments); - return window.runtime.EventsEmit.apply(null, args); -} - -export function WindowReload() { - window.runtime.WindowReload(); -} - -export function WindowReloadApp() { - window.runtime.WindowReloadApp(); -} - -export function WindowSetAlwaysOnTop(b) { - window.runtime.WindowSetAlwaysOnTop(b); -} - -export function WindowSetSystemDefaultTheme() { - window.runtime.WindowSetSystemDefaultTheme(); -} - -export function WindowSetLightTheme() { - window.runtime.WindowSetLightTheme(); -} - -export function WindowSetDarkTheme() { - window.runtime.WindowSetDarkTheme(); -} - -export function WindowCenter() { - window.runtime.WindowCenter(); -} - -export function WindowSetTitle(title) { - window.runtime.WindowSetTitle(title); -} - -export function WindowFullscreen() { - window.runtime.WindowFullscreen(); -} - -export function WindowUnfullscreen() { - window.runtime.WindowUnfullscreen(); -} - -export function WindowIsFullscreen() { - return window.runtime.WindowIsFullscreen(); -} - -export function WindowGetSize() { - return window.runtime.WindowGetSize(); -} - -export function WindowSetSize(width, height) { - window.runtime.WindowSetSize(width, height); -} - -export function WindowSetMaxSize(width, height) { - window.runtime.WindowSetMaxSize(width, height); -} - -export function WindowSetMinSize(width, height) { - window.runtime.WindowSetMinSize(width, height); -} - -export function WindowSetPosition(x, y) { - window.runtime.WindowSetPosition(x, y); -} - -export function WindowGetPosition() { - return window.runtime.WindowGetPosition(); -} - -export function WindowHide() { - window.runtime.WindowHide(); -} - -export function WindowShow() { - window.runtime.WindowShow(); -} - -export function WindowMaximise() { - window.runtime.WindowMaximise(); -} - -export function WindowToggleMaximise() { - window.runtime.WindowToggleMaximise(); -} - -export function WindowUnmaximise() { - window.runtime.WindowUnmaximise(); -} - -export function WindowIsMaximised() { - return window.runtime.WindowIsMaximised(); -} - -export function WindowMinimise() { - window.runtime.WindowMinimise(); -} - -export function WindowUnminimise() { - window.runtime.WindowUnminimise(); -} - -export function WindowSetBackgroundColour(R, G, B, A) { - window.runtime.WindowSetBackgroundColour(R, G, B, A); -} - -export function ScreenGetAll() { - return window.runtime.ScreenGetAll(); -} - -export function WindowIsMinimised() { - return window.runtime.WindowIsMinimised(); -} - -export function WindowIsNormal() { - return window.runtime.WindowIsNormal(); -} - -export function BrowserOpenURL(url) { - window.runtime.BrowserOpenURL(url); -} - -export function Environment() { - return window.runtime.Environment(); -} - -export function Quit() { - window.runtime.Quit(); -} - -export function Hide() { - window.runtime.Hide(); -} - -export function Show() { - window.runtime.Show(); -} - -export function ClipboardGetText() { - return window.runtime.ClipboardGetText(); -} - -export function ClipboardSetText(text) { - return window.runtime.ClipboardSetText(text); -} \ No newline at end of file diff --git a/pkg/ui/web/yarn.lock b/pkg/ui/web/yarn.lock deleted file mode 100644 index c4f6be4a6..000000000 --- a/pkg/ui/web/yarn.lock +++ /dev/null @@ -1,11353 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 6 - cacheKey: 8 - -"@absinthe/socket-apollo-link@npm:0.2.1": - version: 0.2.1 - resolution: "@absinthe/socket-apollo-link@npm:0.2.1" - dependencies: - "@absinthe/socket": 0.2.1 - "@babel/runtime": 7.2.0 - apollo-link: 1.2.5 - core-js: 2.6.0 - flow-static-land: 0.2.8 - graphql: 14.0.2 - zen-observable: 0.8.11 - checksum: 238c276a8995e6a316561aeb43eb1b36da8b778ccc4cb556d6ddbfd75b233b359dbdf3c957823234b13194d357ae7536d93848689767896787ba3c360e33e2ec - languageName: node - linkType: hard - -"@absinthe/socket@npm:0.2.1": - version: 0.2.1 - resolution: "@absinthe/socket@npm:0.2.1" - dependencies: - "@babel/runtime": 7.2.0 - "@jumpn/utils-array": 0.3.4 - "@jumpn/utils-composite": 0.7.0 - "@jumpn/utils-graphql": 0.6.0 - core-js: 2.6.0 - zen-observable: 0.8.11 - peerDependencies: - phoenix: ^1.4.0 - checksum: c9601b18f5036b123a82b5c59fbb2ca3c8031ccb510d1cf70e0dda5fcba88979886caff1fc4c8590ab2e8c8e98004a37421d404261343351adab7ec6ef1f82fd - languageName: node - linkType: hard - -"@ampproject/remapping@npm:^2.1.0, @ampproject/remapping@npm:^2.2.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" - dependencies: - "@jridgewell/gen-mapping": ^0.1.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: d74d170d06468913921d72430259424b7e4c826b5a7d39ff839a29d547efb97dc577caa8ba3fb5cf023624e9af9d09651afc3d4112a45e2050328abc9b3a2292 - languageName: node - linkType: hard - -"@apollo/client@npm:3.7.10": - version: 3.7.10 - resolution: "@apollo/client@npm:3.7.10" - dependencies: - "@graphql-typed-document-node/core": ^3.1.1 - "@wry/context": ^0.7.0 - "@wry/equality": ^0.5.0 - "@wry/trie": ^0.3.0 - graphql-tag: ^2.12.6 - hoist-non-react-statics: ^3.3.2 - optimism: ^0.16.1 - prop-types: ^15.7.2 - response-iterator: ^0.2.6 - symbol-observable: ^4.0.0 - ts-invariant: ^0.10.3 - tslib: ^2.3.0 - zen-observable-ts: ^1.2.5 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - graphql-ws: ^5.5.5 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - subscriptions-transport-ws: ^0.9.0 || ^0.11.0 - peerDependenciesMeta: - graphql-ws: - optional: true - react: - optional: true - react-dom: - optional: true - subscriptions-transport-ws: - optional: true - checksum: d74a68f8042e76e3a81990c79a89aefc07c8899d354f3b469591356508001005106bba0fa953652c3ec19756d44bdec6730ac98f62fa836bd76acbcb7eff42ce - languageName: node - linkType: hard - -"@ardatan/relay-compiler@npm:12.0.0": - version: 12.0.0 - resolution: "@ardatan/relay-compiler@npm:12.0.0" - dependencies: - "@babel/core": ^7.14.0 - "@babel/generator": ^7.14.0 - "@babel/parser": ^7.14.0 - "@babel/runtime": ^7.0.0 - "@babel/traverse": ^7.14.0 - "@babel/types": ^7.0.0 - babel-preset-fbjs: ^3.4.0 - chalk: ^4.0.0 - fb-watchman: ^2.0.0 - fbjs: ^3.0.0 - glob: ^7.1.1 - immutable: ~3.7.6 - invariant: ^2.2.4 - nullthrows: ^1.1.1 - relay-runtime: 12.0.0 - signedsource: ^1.0.0 - yargs: ^15.3.1 - peerDependencies: - graphql: "*" - bin: - relay-compiler: bin/relay-compiler - checksum: f0cec120d02961ee8652e0dde72d9e425bc97cad5d0f767d8764cfd30952294eb2838432f33e4da8bb6999d0c13dcd1df128280666bfea373294d98aa8033ae7 - languageName: node - linkType: hard - -"@ardatan/sync-fetch@npm:^0.0.1": - version: 0.0.1 - resolution: "@ardatan/sync-fetch@npm:0.0.1" - dependencies: - node-fetch: ^2.6.1 - checksum: af39bdfb4c2b35bd2c6acc540a5e302730dae17e73d3a18cd1a4aa50c1c741cb1869dffdef1379c491da5ad2e3cfa2bf3a8064e6046c12b46c6a97f54f100a8d - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/code-frame@npm:7.18.6" - dependencies: - "@babel/highlight": ^7.18.6 - checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.1, @babel/compat-data@npm:^7.20.5": - version: 7.21.0 - resolution: "@babel/compat-data@npm:7.21.0" - checksum: dbf632c532f9c75ba0be7d1dc9f6cd3582501af52f10a6b90415d634ec5878735bd46064c91673b10317af94d4cc99c4da5bd9d955978cdccb7905fc33291e4d - languageName: node - linkType: hard - -"@babel/core@npm:7.20.12": - version: 7.20.12 - resolution: "@babel/core@npm:7.20.12" - dependencies: - "@ampproject/remapping": ^2.1.0 - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.20.7 - "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helpers": ^7.20.7 - "@babel/parser": ^7.20.7 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.12 - "@babel/types": ^7.20.7 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.2 - semver: ^6.3.0 - checksum: 62e6c3e2149a70b5c9729ef5f0d3e2e97e9dcde89fc039c8d8e3463d5d7ba9b29ee84d10faf79b61532ac1645aa62f2bd42338320617e6e3a8a4d8e2a27076e7 - languageName: node - linkType: hard - -"@babel/core@npm:^7.14.0, @babel/core@npm:^7.20.12": - version: 7.21.3 - resolution: "@babel/core@npm:7.21.3" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.21.3 - "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helpers": ^7.21.0 - "@babel/parser": ^7.21.3 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.3 - "@babel/types": ^7.21.3 - convert-source-map: ^1.7.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.2 - semver: ^6.3.0 - checksum: bef25fbea96f461bf79bd1d0e4f0cdce679fd5ada464a89c1141ddba59ae1adfdbb23e04440c266ed525712d33d5ffd818cd8b0c25b1dee0e648d5559516153a - languageName: node - linkType: hard - -"@babel/eslint-parser@npm:7.19.1": - version: 7.19.1 - resolution: "@babel/eslint-parser@npm:7.19.1" - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 - eslint-visitor-keys: ^2.1.0 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ">=7.11.0" - eslint: ^7.5.0 || ^8.0.0 - checksum: 6d5360f62f25ed097250657deb1bc4c4f51a5f5f2fe456e98cda13727753fdf7a11a109b4cfa03ef0dd6ced3beaeb703b76193c1141e29434d1f91f1bac0517d - languageName: node - linkType: hard - -"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.20.7, @babel/generator@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/generator@npm:7.21.3" - dependencies: - "@babel/types": ^7.21.3 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: be6bb5a32a0273260b91210d4137b7b5da148a2db8dd324654275cb0af865ae59de5e1536e93ac83423b2586415059e1c24cf94293026755cf995757238da749 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.21.1": - version: 7.21.1 - resolution: "@babel/generator@npm:7.21.1" - dependencies: - "@babel/types": ^7.21.0 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: 69085a211ff91a7a608ee3f86e6fcb9cf5e724b756d792a713b0c328a671cd3e423e1ef1b12533f366baba0616caffe0a7ba9d328727eab484de5961badbef00 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.16.0, @babel/helper-annotate-as-pure@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 88ccd15ced475ef2243fdd3b2916a29ea54c5db3cd0cfabf9d1d29ff6e63b7f7cd1c27264137d7a40ac2e978b9b9a542c332e78f40eb72abe737a7400788fc1b - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.18.6": - version: 7.18.9 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.18.9" - dependencies: - "@babel/helper-explode-assignable-expression": ^7.18.6 - "@babel/types": ^7.18.9 - checksum: b4bc214cb56329daff6cc18a7f7a26aeafb55a1242e5362f3d47fe3808421f8c7cd91fff95d6b9b7ccb67e14e5a67d944e49dbe026942bfcbfda19b1c72a8e72 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.17.7, @babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.0, @babel/helper-compilation-targets@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-compilation-targets@npm:7.20.7" - dependencies: - "@babel/compat-data": ^7.20.5 - "@babel/helper-validator-option": ^7.18.6 - browserslist: ^4.21.3 - lru-cache: ^5.1.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c32c873ba86e2e1805b30e0807abd07188acbe00ebb97576f0b09061cc65007f1312b589eccb4349c5a8c7f8bb9f2ab199d41da7030bf103d9f347dcd3a3cf4 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-create-class-features-plugin@npm:7.21.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-member-expression-to-functions": ^7.21.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/helper-split-export-declaration": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 3e781d91d1056ea9b3a0395f3017492594a8b86899119b4a1645227c31727b8bec9bc8f6b72e86b1c5cf2dd6690893d2e8c5baff4974c429e616ead089552a21 - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.20.5": - version: 7.21.0 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.21.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - regexpu-core: ^5.3.1 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 63a6396a4e9444edc7e97617845583ea5cf059573d0b4cc566869f38576d543e37fde0edfcc21d6dfb7962ed241e909561714dc41c5213198bac04e0983b04f2 - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.3.3": - version: 0.3.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.3" - dependencies: - "@babel/helper-compilation-targets": ^7.17.7 - "@babel/helper-plugin-utils": ^7.16.7 - debug: ^4.1.1 - lodash.debounce: ^4.0.8 - resolve: ^1.14.2 - semver: ^6.1.2 - peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: 8e3fe75513302e34f6d92bd67b53890e8545e6c5bca8fe757b9979f09d68d7e259f6daea90dc9e01e332c4f8781bda31c5fe551c82a277f9bc0bec007aed497c - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: b25101f6162ddca2d12da73942c08ad203d7668e06663df685634a8fde54a98bc015f6f62938e8554457a592a024108d45b8f3e651fd6dcdb877275b73cc4420 - languageName: node - linkType: hard - -"@babel/helper-explode-assignable-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-explode-assignable-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: 225cfcc3376a8799023d15dc95000609e9d4e7547b29528c7f7111a0e05493ffb12c15d70d379a0bb32d42752f340233c4115bded6d299bc0c3ab7a12be3d30f - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0, @babel/helper-function-name@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-function-name@npm:7.21.0" - dependencies: - "@babel/template": ^7.20.7 - "@babel/types": ^7.21.0 - checksum: d63e63c3e0e3e8b3138fa47b0cd321148a300ef12b8ee951196994dcd2a492cc708aeda94c2c53759a5c9177fffaac0fd8778791286746f72a000976968daf4e - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: fd9c35bb435fda802bf9ff7b6f2df06308a21277c6dec2120a35b09f9de68f68a33972e2c15505c1a1a04b36ec64c9ace97d4a9e26d6097b76b4396b7c5fa20f - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.20.7, @babel/helper-member-expression-to-functions@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.21.0" - dependencies: - "@babel/types": ^7.21.0 - checksum: 49cbb865098195fe82ba22da3a8fe630cde30dcd8ebf8ad5f9a24a2b685150c6711419879cf9d99b94dad24cff9244d8c2a890d3d7ec75502cd01fe58cff5b5d - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.16.0, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-module-imports@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: f393f8a3b3304b1b7a288a38c10989de754f01d29caf62ce7c4e5835daf0a27b81f3ac687d9d2780d39685aae7b55267324b512150e7b2be967b0c493b6a1def - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.18.6, @babel/helper-module-transforms@npm:^7.20.11, @babel/helper-module-transforms@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/helper-module-transforms@npm:7.21.2" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-simple-access": ^7.20.2 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/helper-validator-identifier": ^7.19.1 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.2 - "@babel/types": ^7.21.2 - checksum: 8a1c129a4f90bdf97d8b6e7861732c9580f48f877aaaafbc376ce2482febebcb8daaa1de8bc91676d12886487603f8c62a44f9e90ee76d6cac7f9225b26a49e1 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: e518fe8418571405e21644cfb39cf694f30b6c47b10b006609a92469ae8b8775cbff56f0b19732343e2ea910641091c5a2dc73b56ceba04e116a33b0f8bd2fbd - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.20.2 - resolution: "@babel/helper-plugin-utils@npm:7.20.2" - checksum: f6cae53b7fdb1bf3abd50fa61b10b4470985b400cc794d92635da1e7077bb19729f626adc0741b69403d9b6e411cddddb9c0157a709cc7c4eeb41e663be5d74b - languageName: node - linkType: hard - -"@babel/helper-remap-async-to-generator@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-remap-async-to-generator@npm:7.18.9" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-wrap-function": ^7.18.9 - "@babel/types": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 4be6076192308671b046245899b703ba090dbe7ad03e0bea897bb2944ae5b88e5e85853c9d1f83f643474b54c578d8ac0800b80341a86e8538264a725fbbefec - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-replace-supers@npm:7.20.7" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-member-expression-to-functions": ^7.20.7 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: b8e0087c9b0c1446e3c6f3f72b73b7e03559c6b570e2cfbe62c738676d9ebd8c369a708cf1a564ef88113b4330750a50232ee1131d303d478b7a5e65e46fbc7c - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-simple-access@npm:7.20.2" - dependencies: - "@babel/types": ^7.20.2 - checksum: ad1e96ee2e5f654ffee2369a586e5e8d2722bf2d8b028a121b4c33ebae47253f64d420157b9f0a8927aea3a9e0f18c0103e74fdd531815cf3650a0a4adca11a1 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" - dependencies: - "@babel/types": ^7.20.0 - checksum: 34da8c832d1c8a546e45d5c1d59755459ffe43629436707079989599b91e8c19e50e73af7a4bd09c95402d389266731b0d9c5f69e372d8ebd3a709c05c80d7dd - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" - dependencies: - "@babel/types": ^7.18.6 - checksum: c6d3dede53878f6be1d869e03e9ffbbb36f4897c7cc1527dc96c56d127d834ffe4520a6f7e467f5b6f3c2843ea0e81a7819d66ae02f707f6ac057f3d57943a2b - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: b2f8a3920b30dfac81ec282ac4ad9598ea170648f8254b10f475abe6d944808fb006aab325d3eb5a8ad3bea8dfa888cfa6ef471050dae5748497c110ec060943 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.18.6": - version: 7.21.0 - resolution: "@babel/helper-validator-option@npm:7.21.0" - checksum: 8ece4c78ffa5461fd8ab6b6e57cc51afad59df08192ed5d84b475af4a7193fc1cb794b59e3e7be64f3cdc4df7ac78bf3dbb20c129d7757ae078e6279ff8c2f07 - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.18.9": - version: 7.20.5 - resolution: "@babel/helper-wrap-function@npm:7.20.5" - dependencies: - "@babel/helper-function-name": ^7.19.0 - "@babel/template": ^7.18.10 - "@babel/traverse": ^7.20.5 - "@babel/types": ^7.20.5 - checksum: 11a6fc28334368a193a9cb3ad16f29cd7603bab958433efc82ebe59fa6556c227faa24f07ce43983f7a85df826f71d441638442c4315e90a554fe0a70ca5005b - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.20.7, @babel/helpers@npm:^7.21.0": - version: 7.21.0 - resolution: "@babel/helpers@npm:7.21.0" - dependencies: - "@babel/template": ^7.20.7 - "@babel/traverse": ^7.21.0 - "@babel/types": ^7.21.0 - checksum: 9370dad2bb665c551869a08ac87c8bdafad53dbcdce1f5c5d498f51811456a3c005d9857562715151a0f00b2e912ac8d89f56574f837b5689f5f5072221cdf54 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" - dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.14.0, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.21.3": - version: 7.21.3 - resolution: "@babel/parser@npm:7.21.3" - bin: - parser: ./bin/babel-parser.js - checksum: a71e6456a1260c2a943736b56cc0acdf5f2a53c6c79e545f56618967e51f9b710d1d3359264e7c979313a7153741b1d95ad8860834cc2ab4ce4f428b13cc07be - languageName: node - linkType: hard - -"@babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/parser@npm:7.21.2" - bin: - parser: ./bin/babel-parser.js - checksum: e2b89de2c63d4cdd2cafeaea34f389bba729727eec7a8728f736bc472a59396059e3e9fe322c9bed8fd126d201fb609712949dc8783f4cae4806acd9a73da6ff - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 845bd280c55a6a91d232cfa54eaf9708ec71e594676fe705794f494bb8b711d833b752b59d1a5c154695225880c23dbc9cab0e53af16fd57807976cd3ff41b8d - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.18.9": - version: 7.20.7 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/plugin-proposal-optional-chaining": ^7.20.7 - peerDependencies: - "@babel/core": ^7.13.0 - checksum: d610f532210bee5342f5b44a12395ccc6d904e675a297189bc1e401cc185beec09873da523466d7fec34ae1574f7a384235cba1ccc9fe7b89ba094167897c845 - languageName: node - linkType: hard - -"@babel/plugin-proposal-async-generator-functions@npm:^7.20.1": - version: 7.20.7 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.20.7" - dependencies: - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-remap-async-to-generator": ^7.18.9 - "@babel/plugin-syntax-async-generators": ^7.8.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 111109ee118c9e69982f08d5e119eab04190b36a0f40e22e873802d941956eee66d2aa5a15f5321e51e3f9aa70a91136451b987fe15185ef8cc547ac88937723 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:^7.0.0, @babel/plugin-proposal-class-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 49a78a2773ec0db56e915d9797e44fd079ab8a9b2e1716e0df07c92532f2c65d76aeda9543883916b8e0ff13606afeffa67c5b93d05b607bc87653ad18a91422 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-static-block@npm:^7.18.6": - version: 7.21.0 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.21.0" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - peerDependencies: - "@babel/core": ^7.12.0 - checksum: 236c0ad089e7a7acab776cc1d355330193314bfcd62e94e78f2df35817c6144d7e0e0368976778afd6b7c13e70b5068fa84d7abbf967d4f182e60d03f9ef802b - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 96b1c8a8ad8171d39e9ab106be33bde37ae09b22fb2c449afee9a5edf3c537933d79d963dcdc2694d10677cb96da739cdf1b53454e6a5deab9801f28a818bb2f - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-namespace-from@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 84ff22bacc5d30918a849bfb7e0e90ae4c5b8d8b65f2ac881803d1cf9068dffbe53bd657b0e4bc4c20b4db301b1c85f1e74183cf29a0dd31e964bd4e97c363ef - languageName: node - linkType: hard - -"@babel/plugin-proposal-json-strings@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-json-strings@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-json-strings": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 25ba0e6b9d6115174f51f7c6787e96214c90dd4026e266976b248a2ed417fe50fddae72843ffb3cbe324014a18632ce5648dfac77f089da858022b49fd608cb3 - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.18.9": - version: 7.20.7 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cdd7b8136cc4db3f47714d5266f9e7b592a2ac5a94a5878787ce08890e97c8ab1ca8e94b27bfeba7b0f2b1549a026d9fc414ca2196de603df36fb32633bbdc19 - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 949c9ddcdecdaec766ee610ef98f965f928ccc0361dd87cf9f88cf4896a6ccd62fce063d4494778e50da99dea63d270a1be574a62d6ab81cbe9d85884bf55a7d - languageName: node - linkType: hard - -"@babel/plugin-proposal-numeric-separator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f370ea584c55bf4040e1f78c80b4eeb1ce2e6aaa74f87d1a48266493c33931d0b6222d8cee3a082383d6bb648ab8d6b7147a06f974d3296ef3bc39c7851683ec - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0, @babel/plugin-proposal-object-rest-spread@npm:^7.20.2": - version: 7.20.7 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7" - dependencies: - "@babel/compat-data": ^7.20.5 - "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.20.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1329db17009964bc644484c660eab717cb3ca63ac0ab0f67c651a028d1bc2ead51dc4064caea283e46994f1b7221670a35cbc0b4beb6273f55e915494b5aa0b2 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-catch-binding@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7b5b39fb5d8d6d14faad6cb68ece5eeb2fd550fb66b5af7d7582402f974f5bc3684641f7c192a5a57e0f59acfae4aada6786be1eba030881ddc590666eff4d1e - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.18.9, @babel/plugin-proposal-optional-chaining@npm:^7.20.7": - version: 7.21.0 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 11c5449e01b18bb8881e8e005a577fa7be2fe5688e2382c8822d51f8f7005342a301a46af7b273b1f5645f9a7b894c428eee8526342038a275ef6ba4c8d8d746 - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-methods@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-proposal-private-methods@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 22d8502ee96bca99ad2c8393e8493e2b8d4507576dd054490fd8201a36824373440106f5b098b6d821b026c7e72b0424ff4aeca69ed5f42e48f029d3a156d5ad - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-property-in-object@npm:^7.18.6": - version: 7.21.0 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-create-class-features-plugin": ^7.21.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: add881a6a836635c41d2710551fdf777e2c07c0b691bf2baacc5d658dd64107479df1038680d6e67c468bfc6f36fb8920025d6bac2a1df0a81b867537d40ae78 - languageName: node - linkType: hard - -"@babel/plugin-proposal-unicode-property-regex@npm:^7.18.6, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a8575ecb7ff24bf6c6e94808d5c84bb5a0c6dd7892b54f09f4646711ba0ee1e1668032b3c43e3e1dfec2c5716c302e851ac756c1645e15882d73df6ad21ae951 - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7ed1c1d9b9e5b64ef028ea5e755c0be2d4e5e4e3d6cf7df757b9a8c4cfa4193d268176d0f1f7fbecdda6fe722885c7fda681f480f3741d8a2d26854736f05367 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.0.0, @babel/plugin-syntax-class-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": ^7.12.13 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 24f34b196d6342f28d4bad303612d7ff566ab0a013ce89e775d98d6f832969462e7235f3e7eaf17678a533d4be0ba45d3ae34ab4e5a9dcbda5d98d49e5efa2fc - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-static-block@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3e80814b5b6d4fe17826093918680a351c2d34398a914ce6e55d8083d72a9bdde4fbaf6a2dcea0e23a03de26dc2917ae3efd603d27099e2b98380345703bf948 - languageName: node - linkType: hard - -"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ce307af83cf433d4ec42932329fad25fa73138ab39c7436882ea28742e1c0066626d224e0ad2988724c82644e41601cef607b36194f695cb78a1fcdc959637bd - languageName: node - linkType: hard - -"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 85740478be5b0de185228e7814451d74ab8ce0a26fcca7613955262a26e99e8e15e9da58f60c754b84515d4c679b590dbd3f2148f0f58025f4ae706f1c5a5d4a - languageName: node - linkType: hard - -"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-flow@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: abe82062b3eef14de7d2b3c0e4fecf80a3e796ca497e9df616d12dd250968abf71495ee85a955b43a6c827137203f0c409450cf792732ed0d6907c806580ea71 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-assertions@npm:7.20.0, @babel/plugin-syntax-import-assertions@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.20.0" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6a86220e0aae40164cd3ffaf80e7c076a1be02a8f3480455dddbae05fda8140f429290027604df7a11b3f3f124866e8a6d69dbfa1dda61ee7377b920ad144d5b - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bf5aea1f3188c9a507e16efe030efb996853ca3cadd6512c51db7233cc58f3ac89ff8c6bdfb01d30843b161cfe7d321e1bf28da82f7ab8d7e6bc5464666f354a - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6d37ea972970195f1ffe1a54745ce2ae456e0ac6145fae9aa1480f297248b262ea6ebb93010eddb86ebfacb94f57c05a1fc5d232b9a67325b09060299d515c67 - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: aff33577037e34e515911255cdbb1fd39efee33658aa00b8a5fd3a4b903585112d037cce1cc9e4632f0487dc554486106b79ccd5ea63a2e00df4363f6d4ff886 - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 87aca4918916020d1fedba54c0e232de408df2644a425d153be368313fdde40d96088feed6c4e5ab72aac89be5d07fef2ddf329a15109c5eb65df006bf2580d1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": ^7.10.4 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 01ec5547bd0497f76cc903ff4d6b02abc8c05f301c88d2622b6d834e33a5651aa7c7a3d80d8d57656a4588f7276eba357f6b7e006482f5b564b7a6488de493a1 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:^7.0.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fddcf581a57f77e80eb6b981b10658421bc321ba5f0a5b754118c6a92a5448f12a0c336f77b8abf734841e102e5126d69110a306eadb03ca3e1547cab31f5cbf - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 910d90e72bc90ea1ce698e89c1027fed8845212d5ab588e35ef91f13b93143845f94e2539d831dc8d8ededc14ec02f04f7bd6a8179edd43a326c784e7ed7f0b9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": ^7.8.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: eef94d53a1453361553c1f98b68d17782861a04a392840341bc91780838dd4e695209c783631cf0de14c635758beafb6a3a65399846ffa4386bff90639347f30 - languageName: node - linkType: hard - -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b317174783e6e96029b743ccff2a67d63d38756876e7e5d0ba53a322e38d9ca452c13354a57de1ad476b4c066dbae699e0ca157441da611117a47af88985ecda - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": ^7.14.5 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bbd1a56b095be7820029b209677b194db9b1d26691fe999856462e66b25b281f031f3dfd91b1619e9dcf95bebe336211833b854d0fb8780d618e35667c2d0d7e - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.0.0, @babel/plugin-transform-arrow-functions@npm:^7.18.6": - version: 7.20.7 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b43cabe3790c2de7710abe32df9a30005eddb2050dadd5d122c6872f679e5710e410f1b90c8f99a2aff7b614cccfecf30e7fd310236686f60d3ed43fd80b9847 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.18.6": - version: 7.20.7 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.20.7" - dependencies: - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-remap-async-to-generator": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: fe9ee8a5471b4317c1b9ea92410ace8126b52a600d7cfbfe1920dcac6fb0fad647d2e08beb4fd03c630eb54430e6c72db11e283e3eddc49615c68abd39430904 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0, @babel/plugin-transform-block-scoped-functions@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0a0df61f94601e3666bf39f2cc26f5f7b22a94450fb93081edbed967bd752ce3f81d1227fefd3799f5ee2722171b5e28db61379234d1bb85b6ec689589f99d7e - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.20.2": - version: 7.21.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 15aacaadbecf96b53a750db1be4990b0d89c7f5bc3e1794b63b49fb219638c1fd25d452d15566d7e5ddf5b5f4e1a0a0055c35c1c7aee323c7b114bf49f66f4b0 - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.20.2": - version: 7.21.0 - resolution: "@babel/plugin-transform-classes@npm:7.21.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-compilation-targets": ^7.20.7 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-optimise-call-expression": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-replace-supers": ^7.20.7 - "@babel/helper-split-export-declaration": ^7.18.6 - globals: ^11.1.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 088ae152074bd0e90f64659169255bfe50393e637ec8765cb2a518848b11b0299e66b91003728fd0a41563a6fdc6b8d548ece698a314fd5447f5489c22e466b7 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.18.9": - version: 7.20.7 - resolution: "@babel/plugin-transform-computed-properties@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/template": ^7.20.7 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: be70e54bda8b469146459f429e5f2bd415023b87b2d5af8b10e48f465ffb02847a3ed162ca60378c004b82db848e4d62e90010d41ded7e7176b6d8d1c2911139 - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.0.0, @babel/plugin-transform-destructuring@npm:^7.20.2": - version: 7.21.3 - resolution: "@babel/plugin-transform-destructuring@npm:7.21.3" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 43ebbe0bfa20287e34427be7c2200ce096c20913775ea75268fb47fe0e55f9510800587e6052c42fe6dffa0daaad95dd465c3e312fd1ef9785648384c45417ac - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.18.6, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.18.6 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cbe5d7063eb8f8cca24cd4827bc97f5641166509e58781a5f8aa47fb3d2d786ce4506a30fca2e01f61f18792783a5cb5d96bf5434c3dd1ad0de8c9cc625a53da - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 220bf4a9fec5c4d4a7b1de38810350260e8ea08481bf78332a464a21256a95f0df8cd56025f346238f09b04f8e86d4158fafc9f4af57abaef31637e3b58bd4fe - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.18.6" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7f70222f6829c82a36005508d34ddbe6fd0974ae190683a8670dd6ff08669aaf51fef2209d7403f9bd543cb2d12b18458016c99a6ed0332ccedb3ea127b01229 - languageName: node - linkType: hard - -"@babel/plugin-transform-flow-strip-types@npm:^7.0.0": - version: 7.21.0 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-flow": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a45951c57265c366f95db9a5e70a62cfc3eafafa3f3d23295357577b5fc139d053d45416cdbdf4a0a387e41cefc434ab94dd6c3048d03b094ff6d041dd10a0b0 - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.0.0, @babel/plugin-transform-for-of@npm:^7.18.8": - version: 7.21.0 - resolution: "@babel/plugin-transform-for-of@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 2f3f86ca1fab2929fcda6a87e4303d5c635b5f96dc9a45fd4ca083308a3020c79ac33b9543eb4640ef2b79f3586a00ab2d002a7081adb9e9d7440dce30781034 - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.0.0, @babel/plugin-transform-function-name@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-function-name@npm:7.18.9" - dependencies: - "@babel/helper-compilation-targets": ^7.18.9 - "@babel/helper-function-name": ^7.18.9 - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 62dd9c6cdc9714704efe15545e782ee52d74dc73916bf954b4d3bee088fb0ec9e3c8f52e751252433656c09f744b27b757fc06ed99bcde28e8a21600a1d8e597 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.0.0, @babel/plugin-transform-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3458dd2f1a47ac51d9d607aa18f3d321cbfa8560a985199185bed5a906bb0c61ba85575d386460bac9aed43fdd98940041fae5a67dff286f6f967707cff489f8 - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.0.0, @babel/plugin-transform-member-expression-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 35a3d04f6693bc6b298c05453d85ee6e41cc806538acb6928427e0e97ae06059f97d2f07d21495fcf5f70d3c13a242e2ecbd09d5c1fcb1b1a73ff528dcb0b695 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-amd@npm:^7.19.6": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-amd@npm:7.20.11" - dependencies: - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 23665c1c20c8f11c89382b588fb9651c0756d130737a7625baeaadbd3b973bc5bfba1303bedffa8fb99db1e6d848afb01016e1df2b69b18303e946890c790001 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.19.6": - version: 7.21.2 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.21.2" - dependencies: - "@babel/helper-module-transforms": ^7.21.2 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-simple-access": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 65aa06e3e3792f39b99eb5f807034693ff0ecf80438580f7ae504f4c4448ef04147b1889ea5e6f60f3ad4a12ebbb57c6f1f979a249dadbd8d11fe22f4441918b - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.19.6": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.20.11" - dependencies: - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-module-transforms": ^7.20.11 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-identifier": ^7.19.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4546c47587f88156d66c7eb7808e903cf4bb3f6ba6ac9bc8e3af2e29e92eb9f0b3f44d52043bfd24eb25fa7827fd7b6c8bfeac0cac7584e019b87e1ecbd0e673 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-umd@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-modules-umd@npm:7.18.6" - dependencies: - "@babel/helper-module-transforms": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c3b6796c6f4579f1ba5ab0cdcc73910c1e9c8e1e773c507c8bb4da33072b3ae5df73c6d68f9126dab6e99c24ea8571e1563f8710d7c421fac1cde1e434c20153 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.19.1": - version: 7.20.5 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.20.5" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.20.5 - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 528c95fb1087e212f17e1c6456df041b28a83c772b9c93d2e407c9d03b72182b0d9d126770c1d6e0b23aab052599ceaf25ed6a2c0627f4249be34a83f6fae853 - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-new-target@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bd780e14f46af55d0ae8503b3cb81ca86dcc73ed782f177e74f498fff934754f9e9911df1f8f3bd123777eed7c1c1af4d66abab87c8daae5403e7719a6b845d1 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.0.0, @babel/plugin-transform-object-super@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-super@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-replace-supers": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0fcb04e15deea96ae047c21cb403607d49f06b23b4589055993365ebd7a7d7541334f06bf9642e90075e66efce6ebaf1eb0ef066fbbab802d21d714f1aac3aef - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.20.1, @babel/plugin-transform-parameters@npm:^7.20.7": - version: 7.21.3 - resolution: "@babel/plugin-transform-parameters@npm:7.21.3" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c92128d7b1fcf54e2cab186c196bbbf55a9a6de11a83328dc2602649c9dc6d16ef73712beecd776cd49bfdc624b5f56740f4a53568d3deb9505ec666bc869da3 - languageName: node - linkType: hard - -"@babel/plugin-transform-property-literals@npm:^7.0.0, @babel/plugin-transform-property-literals@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1c16e64de554703f4b547541de2edda6c01346dd3031d4d29e881aa7733785cd26d53611a4ccf5353f4d3e69097bb0111c0a93ace9e683edd94fea28c4484144 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-display-name@npm:^7.0.0, @babel/plugin-transform-react-display-name@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-display-name@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 51c087ab9e41ef71a29335587da28417536c6f816c292e092ffc0e0985d2f032656801d4dd502213ce32481f4ba6c69402993ffa67f0818a07606ff811e4be49 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-development@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.18.6" - dependencies: - "@babel/plugin-transform-react-jsx": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ec9fa65db66f938b75c45e99584367779ac3e0af8afc589187262e1337c7c4205ea312877813ae4df9fb93d766627b8968d74ac2ba702e4883b1dbbe4953ecee - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-self@npm:^7.18.6": - version: 7.21.0 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.21.0" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 696f74c04a265409ccd46e333ff762e6011d394e6972128b5d97db4c1647289141bc7ebd45ab2bab99b60932f9793e8f89ee9432d3bde19962de2100456f6147 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-source@npm:^7.19.6": - version: 7.19.6 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.19.6" - dependencies: - "@babel/helper-plugin-utils": ^7.19.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 1e9e29a4efc5b79840bd4f68e404f5ab7765ce48c7bd22f12f2b185f9c782c66933bdf54a1b21879e4e56e6b50b4e88aca82789ecb1f61123af6dfa9ab16c555 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.18.6": - version: 7.21.0 - resolution: "@babel/plugin-transform-react-jsx@npm:7.21.0" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-module-imports": ^7.18.6 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/plugin-syntax-jsx": ^7.18.6 - "@babel/types": ^7.21.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c77d277d2e55b489a9b9be185c3eed5d8e2c87046778810f8e47ee3c87b47e64cad93c02211c968486c7958fd05ce203c66779446484c98a7b3a69bec687d5dc - languageName: node - linkType: hard - -"@babel/plugin-transform-react-pure-annotations@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.18.6" - dependencies: - "@babel/helper-annotate-as-pure": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 97c4873d409088f437f9084d084615948198dd87fc6723ada0e7e29c5a03623c2f3e03df3f52e7e7d4d23be32a08ea00818bff302812e48713c706713bd06219 - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.18.6": - version: 7.20.5 - resolution: "@babel/plugin-transform-regenerator@npm:7.20.5" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - regenerator-transform: ^0.15.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 13164861e71fb23d84c6270ef5330b03c54d5d661c2c7468f28e21c4f8598558ca0c8c3cb1d996219352946e849d270a61372bc93c8fbe9676e78e3ffd0dea07 - languageName: node - linkType: hard - -"@babel/plugin-transform-reserved-words@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-reserved-words@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0738cdc30abdae07c8ec4b233b30c31f68b3ff0eaa40eddb45ae607c066127f5fa99ddad3c0177d8e2832e3a7d3ad115775c62b431ebd6189c40a951b867a80c - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.0.0, @babel/plugin-transform-shorthand-properties@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b8e4e8acc2700d1e0d7d5dbfd4fdfb935651913de6be36e6afb7e739d8f9ca539a5150075a0f9b79c88be25ddf45abb912fe7abf525f0b80f5b9d9860de685d7 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.19.0": - version: 7.20.7 - resolution: "@babel/plugin-transform-spread@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-skip-transparent-expression-wrappers": ^7.20.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8ea698a12da15718aac7489d4cde10beb8a3eea1f66167d11ab1e625033641e8b328157fd1a0b55dd6531933a160c01fc2e2e61132a385cece05f26429fd0cc2 - languageName: node - linkType: hard - -"@babel/plugin-transform-sticky-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 68ea18884ae9723443ffa975eb736c8c0d751265859cd3955691253f7fee37d7a0f7efea96c8a062876af49a257a18ea0ed5fea0d95a7b3611ce40f7ee23aee3 - languageName: node - linkType: hard - -"@babel/plugin-transform-template-literals@npm:^7.0.0, @babel/plugin-transform-template-literals@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3d2fcd79b7c345917f69b92a85bdc3ddd68ce2c87dc70c7d61a8373546ccd1f5cb8adc8540b49dfba08e1b82bb7b3bbe23a19efdb2b9c994db2db42906ca9fb2 - languageName: node - linkType: hard - -"@babel/plugin-transform-typeof-symbol@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e754e0d8b8a028c52e10c148088606e3f7a9942c57bd648fc0438e5b4868db73c386a5ed47ab6d6f0594aae29ee5ffc2ffc0f7ebee7fae560a066d6dea811cd4 - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-escapes@npm:^7.18.10": - version: 7.18.10 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.18.10" - dependencies: - "@babel/helper-plugin-utils": ^7.18.9 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f5baca55cb3c11bc08ec589f5f522d85c1ab509b4d11492437e45027d64ae0b22f0907bd1381e8d7f2a436384bb1f9ad89d19277314242c5c2671a0f91d0f9cd - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.18.6 - "@babel/helper-plugin-utils": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: d9e18d57536a2d317fb0b7c04f8f55347f3cfacb75e636b4c6fa2080ab13a3542771b5120e726b598b815891fc606d1472ac02b749c69fd527b03847f22dc25e - languageName: node - linkType: hard - -"@babel/preset-env@npm:7.20.2": - version: 7.20.2 - resolution: "@babel/preset-env@npm:7.20.2" - dependencies: - "@babel/compat-data": ^7.20.1 - "@babel/helper-compilation-targets": ^7.20.0 - "@babel/helper-plugin-utils": ^7.20.2 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.18.6 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.18.9 - "@babel/plugin-proposal-async-generator-functions": ^7.20.1 - "@babel/plugin-proposal-class-properties": ^7.18.6 - "@babel/plugin-proposal-class-static-block": ^7.18.6 - "@babel/plugin-proposal-dynamic-import": ^7.18.6 - "@babel/plugin-proposal-export-namespace-from": ^7.18.9 - "@babel/plugin-proposal-json-strings": ^7.18.6 - "@babel/plugin-proposal-logical-assignment-operators": ^7.18.9 - "@babel/plugin-proposal-nullish-coalescing-operator": ^7.18.6 - "@babel/plugin-proposal-numeric-separator": ^7.18.6 - "@babel/plugin-proposal-object-rest-spread": ^7.20.2 - "@babel/plugin-proposal-optional-catch-binding": ^7.18.6 - "@babel/plugin-proposal-optional-chaining": ^7.18.9 - "@babel/plugin-proposal-private-methods": ^7.18.6 - "@babel/plugin-proposal-private-property-in-object": ^7.18.6 - "@babel/plugin-proposal-unicode-property-regex": ^7.18.6 - "@babel/plugin-syntax-async-generators": ^7.8.4 - "@babel/plugin-syntax-class-properties": ^7.12.13 - "@babel/plugin-syntax-class-static-block": ^7.14.5 - "@babel/plugin-syntax-dynamic-import": ^7.8.3 - "@babel/plugin-syntax-export-namespace-from": ^7.8.3 - "@babel/plugin-syntax-import-assertions": ^7.20.0 - "@babel/plugin-syntax-json-strings": ^7.8.3 - "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 - "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 - "@babel/plugin-syntax-numeric-separator": ^7.10.4 - "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 - "@babel/plugin-syntax-optional-chaining": ^7.8.3 - "@babel/plugin-syntax-private-property-in-object": ^7.14.5 - "@babel/plugin-syntax-top-level-await": ^7.14.5 - "@babel/plugin-transform-arrow-functions": ^7.18.6 - "@babel/plugin-transform-async-to-generator": ^7.18.6 - "@babel/plugin-transform-block-scoped-functions": ^7.18.6 - "@babel/plugin-transform-block-scoping": ^7.20.2 - "@babel/plugin-transform-classes": ^7.20.2 - "@babel/plugin-transform-computed-properties": ^7.18.9 - "@babel/plugin-transform-destructuring": ^7.20.2 - "@babel/plugin-transform-dotall-regex": ^7.18.6 - "@babel/plugin-transform-duplicate-keys": ^7.18.9 - "@babel/plugin-transform-exponentiation-operator": ^7.18.6 - "@babel/plugin-transform-for-of": ^7.18.8 - "@babel/plugin-transform-function-name": ^7.18.9 - "@babel/plugin-transform-literals": ^7.18.9 - "@babel/plugin-transform-member-expression-literals": ^7.18.6 - "@babel/plugin-transform-modules-amd": ^7.19.6 - "@babel/plugin-transform-modules-commonjs": ^7.19.6 - "@babel/plugin-transform-modules-systemjs": ^7.19.6 - "@babel/plugin-transform-modules-umd": ^7.18.6 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.19.1 - "@babel/plugin-transform-new-target": ^7.18.6 - "@babel/plugin-transform-object-super": ^7.18.6 - "@babel/plugin-transform-parameters": ^7.20.1 - "@babel/plugin-transform-property-literals": ^7.18.6 - "@babel/plugin-transform-regenerator": ^7.18.6 - "@babel/plugin-transform-reserved-words": ^7.18.6 - "@babel/plugin-transform-shorthand-properties": ^7.18.6 - "@babel/plugin-transform-spread": ^7.19.0 - "@babel/plugin-transform-sticky-regex": ^7.18.6 - "@babel/plugin-transform-template-literals": ^7.18.9 - "@babel/plugin-transform-typeof-symbol": ^7.18.9 - "@babel/plugin-transform-unicode-escapes": ^7.18.10 - "@babel/plugin-transform-unicode-regex": ^7.18.6 - "@babel/preset-modules": ^0.1.5 - "@babel/types": ^7.20.2 - babel-plugin-polyfill-corejs2: ^0.3.3 - babel-plugin-polyfill-corejs3: ^0.6.0 - babel-plugin-polyfill-regenerator: ^0.4.1 - core-js-compat: ^3.25.1 - semver: ^6.3.0 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ece2d7e9c7789db6116e962b8e1a55eb55c110c44c217f0c8f6ffea4ca234954e66557f7bd019b7affadf7fbb3a53ccc807e93fc935aacd48146234b73b6947e - languageName: node - linkType: hard - -"@babel/preset-modules@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/preset-modules@npm:0.1.5" - dependencies: - "@babel/helper-plugin-utils": ^7.0.0 - "@babel/plugin-proposal-unicode-property-regex": ^7.4.4 - "@babel/plugin-transform-dotall-regex": ^7.4.4 - "@babel/types": ^7.4.4 - esutils: ^2.0.2 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8430e0e9e9d520b53e22e8c4c6a5a080a12b63af6eabe559c2310b187bd62ae113f3da82ba33e9d1d0f3230930ca702843aae9dd226dec51f7d7114dc1f51c10 - languageName: node - linkType: hard - -"@babel/preset-react@npm:7.18.6": - version: 7.18.6 - resolution: "@babel/preset-react@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": ^7.18.6 - "@babel/helper-validator-option": ^7.18.6 - "@babel/plugin-transform-react-display-name": ^7.18.6 - "@babel/plugin-transform-react-jsx": ^7.18.6 - "@babel/plugin-transform-react-jsx-development": ^7.18.6 - "@babel/plugin-transform-react-pure-annotations": ^7.18.6 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 540d9cf0a0cc0bb07e6879994e6fb7152f87dafbac880b56b65e2f528134c7ba33e0cd140b58700c77b2ebf4c81fa6468fed0ba391462d75efc7f8c1699bb4c3 - languageName: node - linkType: hard - -"@babel/regjsgen@npm:^0.8.0": - version: 0.8.0 - resolution: "@babel/regjsgen@npm:0.8.0" - checksum: 89c338fee774770e5a487382170711014d49a68eb281e74f2b5eac88f38300a4ad545516a7786a8dd5702e9cf009c94c2f582d200f077ac5decd74c56b973730 - languageName: node - linkType: hard - -"@babel/runtime@npm:7.2.0": - version: 7.2.0 - resolution: "@babel/runtime@npm:7.2.0" - dependencies: - regenerator-runtime: ^0.12.0 - checksum: c0f156eba9700f8e467926a668d5eb77a83f2630873dac7f5cbf77f1a1807299c2cca6a6231c0a494164c279e8c30ca15572d15ecd9fe20b2f20c21764bde543 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7": - version: 7.21.0 - resolution: "@babel/runtime@npm:7.21.0" - dependencies: - regenerator-runtime: ^0.13.11 - checksum: 7b33e25bfa9e0e1b9e8828bb61b2d32bdd46b41b07ba7cb43319ad08efc6fda8eb89445193e67d6541814627df0ca59122c0ea795e412b99c5183a0540d338ab - languageName: node - linkType: hard - -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/template@npm:7.20.7" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - checksum: 2eb1a0ab8d415078776bceb3473d07ab746e6bb4c2f6ca46ee70efb284d75c4a32bb0cd6f4f4946dec9711f9c0780e8e5d64b743208deac6f8e9858afadc349e - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.20.12, @babel/traverse@npm:^7.20.5, @babel/traverse@npm:^7.20.7, @babel/traverse@npm:^7.21.3, @babel/traverse@npm:^7.4.5": - version: 7.21.3 - resolution: "@babel/traverse@npm:7.21.3" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.21.3 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.21.3 - "@babel/types": ^7.21.3 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: 0af5bcd47a2fc501592b90ac1feae9d449afb9ab0772a4f6e68230f4cd3a475795d538c1de3f880fe3414b6c2820bac84d02c6549eea796f39d74a603717447b - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.21.0, @babel/traverse@npm:^7.21.2": - version: 7.21.2 - resolution: "@babel/traverse@npm:7.21.2" - dependencies: - "@babel/code-frame": ^7.18.6 - "@babel/generator": ^7.21.1 - "@babel/helper-environment-visitor": ^7.18.9 - "@babel/helper-function-name": ^7.21.0 - "@babel/helper-hoist-variables": ^7.18.6 - "@babel/helper-split-export-declaration": ^7.18.6 - "@babel/parser": ^7.21.2 - "@babel/types": ^7.21.2 - debug: ^4.1.0 - globals: ^11.1.0 - checksum: d851e3f5cfbdc2fac037a014eae7b0707709de50f7d2fbb82ffbf932d3eeba90a77431529371d6e544f8faaf8c6540eeb18fdd8d1c6fa2b61acea0fb47e18d4b - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.13, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.5, @babel/types@npm:^7.21.3, @babel/types@npm:^7.4.4": - version: 7.21.3 - resolution: "@babel/types@npm:7.21.3" - dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: b750274718ba9cefd0b81836c464009bb6ba339fccce51b9baff497a0a2d96c044c61dc90cf203cec0adc770454b53a9681c3f7716883c802b85ab84c365ba35 - languageName: node - linkType: hard - -"@babel/types@npm:^7.18.6, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.2, @babel/types@npm:^7.8.3": - version: 7.21.2 - resolution: "@babel/types@npm:7.21.2" - dependencies: - "@babel/helper-string-parser": ^7.19.4 - "@babel/helper-validator-identifier": ^7.19.1 - to-fast-properties: ^2.0.0 - checksum: a45a52acde139e575502c6de42c994bdbe262bafcb92ae9381fb54cdf1a3672149086843fda655c7683ce9806e998fd002bbe878fa44984498d0fdc7935ce7ff - languageName: node - linkType: hard - -"@emotion/babel-plugin@npm:^11.10.6": - version: 11.10.6 - resolution: "@emotion/babel-plugin@npm:11.10.6" - dependencies: - "@babel/helper-module-imports": ^7.16.7 - "@babel/runtime": ^7.18.3 - "@emotion/hash": ^0.9.0 - "@emotion/memoize": ^0.8.0 - "@emotion/serialize": ^1.1.1 - babel-plugin-macros: ^3.1.0 - convert-source-map: ^1.5.0 - escape-string-regexp: ^4.0.0 - find-root: ^1.1.0 - source-map: ^0.5.7 - stylis: 4.1.3 - checksum: 3eed138932e8edf2598352e69ad949b9db3051a4d6fcff190dacbac9aa838d7ef708b9f3e6c48660625d9311dae82d73477ae4e7a31139feef5eb001a5528421 - languageName: node - linkType: hard - -"@emotion/cache@npm:^11.10.5": - version: 11.10.5 - resolution: "@emotion/cache@npm:11.10.5" - dependencies: - "@emotion/memoize": ^0.8.0 - "@emotion/sheet": ^1.2.1 - "@emotion/utils": ^1.2.0 - "@emotion/weak-memoize": ^0.3.0 - stylis: 4.1.3 - checksum: 1dd2d9af2d3ecbd3d4469ecdf91a335eef6034c851b57a474471b2d2280613eb35bbed98c0368cc4625f188619fbdaf04cf07e8107aaffce94b2178444c0fe7b - languageName: node - linkType: hard - -"@emotion/hash@npm:^0.9.0": - version: 0.9.0 - resolution: "@emotion/hash@npm:0.9.0" - checksum: b63428f7c8186607acdca5d003700cecf0ded519d0b5c5cc3b3154eafcad6ff433f8361bd2bac8882715b557e6f06945694aeb6ba8b25c6095d7a88570e2e0bb - languageName: node - linkType: hard - -"@emotion/is-prop-valid@npm:^1.1.0, @emotion/is-prop-valid@npm:^1.2.0": - version: 1.2.0 - resolution: "@emotion/is-prop-valid@npm:1.2.0" - dependencies: - "@emotion/memoize": ^0.8.0 - checksum: cc7a19850a4c5b24f1514665289442c8c641709e6f7711067ad550e05df331da0692a16148e85eda6f47e31b3261b64d74c5e25194d053223be16231f969d633 - languageName: node - linkType: hard - -"@emotion/memoize@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/memoize@npm:0.8.0" - checksum: c87bb110b829edd8e1c13b90a6bc37cebc39af29c7599a1e66a48e06f9bec43e8e53495ba86278cc52e7589549492c8dfdc81d19f4fdec0cee6ba13d2ad2c928 - languageName: node - linkType: hard - -"@emotion/react@npm:11.10.6": - version: 11.10.6 - resolution: "@emotion/react@npm:11.10.6" - dependencies: - "@babel/runtime": ^7.18.3 - "@emotion/babel-plugin": ^11.10.6 - "@emotion/cache": ^11.10.5 - "@emotion/serialize": ^1.1.1 - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@emotion/utils": ^1.2.0 - "@emotion/weak-memoize": ^0.3.0 - hoist-non-react-statics: ^3.3.1 - peerDependencies: - react: ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 4762042e39126ffaffe76052dc65c9bb0ba6b8893013687ba3cc13ed4dd834c31597f1230684c3c078e90aecc13ab6cd0e3cde0dec8b7761affd2571f4d80019 - languageName: node - linkType: hard - -"@emotion/serialize@npm:^1.1.1": - version: 1.1.1 - resolution: "@emotion/serialize@npm:1.1.1" - dependencies: - "@emotion/hash": ^0.9.0 - "@emotion/memoize": ^0.8.0 - "@emotion/unitless": ^0.8.0 - "@emotion/utils": ^1.2.0 - csstype: ^3.0.2 - checksum: 24cfd5b16e6f2335c032ca33804a876e0442aaf8f9c94d269d23735ebd194fb1ed142542dd92191a3e6ef8bad5bd560dfc5aaf363a1b70954726dbd4dd93085c - languageName: node - linkType: hard - -"@emotion/sheet@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/sheet@npm:1.2.1" - checksum: ce78763588ea522438156344d9f592203e2da582d8d67b32e1b0b98eaba26994c6c270f8c7ad46442fc9c0a9f048685d819cd73ca87e544520fd06f0e24a1562 - languageName: node - linkType: hard - -"@emotion/styled@npm:11.10.6": - version: 11.10.6 - resolution: "@emotion/styled@npm:11.10.6" - dependencies: - "@babel/runtime": ^7.18.3 - "@emotion/babel-plugin": ^11.10.6 - "@emotion/is-prop-valid": ^1.2.0 - "@emotion/serialize": ^1.1.1 - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.0 - "@emotion/utils": ^1.2.0 - peerDependencies: - "@emotion/react": ^11.0.0-rc.0 - react: ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: ed0ee4bec3b63ee9c5eb8216b22646313ff1ada06c5183f128d25b73252126e9fde625e81c868be7ccd666b686a73076f923ce188dac25e93d5062ddffdad46f - languageName: node - linkType: hard - -"@emotion/stylis@npm:^0.8.4": - version: 0.8.5 - resolution: "@emotion/stylis@npm:0.8.5" - checksum: 67ff5958449b2374b329fb96e83cb9025775ffe1e79153b499537c6c8b2eb64b77f32d7b5d004d646973662356ceb646afd9269001b97c54439fceea3203ce65 - languageName: node - linkType: hard - -"@emotion/unitless@npm:^0.7.4": - version: 0.7.5 - resolution: "@emotion/unitless@npm:0.7.5" - checksum: f976e5345b53fae9414a7b2e7a949aa6b52f8bdbcc84458b1ddc0729e77ba1d1dfdff9960e0da60183877873d3a631fa24d9695dd714ed94bcd3ba5196586a6b - languageName: node - linkType: hard - -"@emotion/unitless@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/unitless@npm:0.8.0" - checksum: 176141117ed23c0eb6e53a054a69c63e17ae532ec4210907a20b2208f91771821835f1c63dd2ec63e30e22fcc984026d7f933773ee6526dd038e0850919fae7a - languageName: node - linkType: hard - -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": - version: 1.0.0 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.0" - peerDependencies: - react: ">=16.8.0" - checksum: 4f06a3b48258c832aa8022a262572061a31ff078d377e9164cccc99951309d70f4466e774fe704461b2f8715007a82ed625a54a5c7a127c89017d3ce3187d4f1 - languageName: node - linkType: hard - -"@emotion/utils@npm:^1.2.0": - version: 1.2.0 - resolution: "@emotion/utils@npm:1.2.0" - checksum: 55457a49ddd4db6a014ea0454dc09eaa23eedfb837095c8ff90470cb26a303f7ceb5fcc1e2190ef64683e64cfd33d3ba3ca3109cd87d12bc9e379e4195c9a4dd - languageName: node - linkType: hard - -"@emotion/weak-memoize@npm:^0.3.0": - version: 0.3.0 - resolution: "@emotion/weak-memoize@npm:0.3.0" - checksum: f43ef4c8b7de70d9fa5eb3105921724651e4188e895beb71f0c5919dc899a7b8743e1fdd99d38b9092dd5722c7be2312ebb47fbdad0c4e38bea58f6df5885cc0 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/android-arm64@npm:0.17.12" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/android-arm@npm:0.17.12" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-x64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/android-x64@npm:0.17.12" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/darwin-arm64@npm:0.17.12" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/darwin-x64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/darwin-x64@npm:0.17.12" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/freebsd-arm64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/freebsd-arm64@npm:0.17.12" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/freebsd-x64@npm:0.17.12" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/linux-arm64@npm:0.17.12" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/linux-arm@npm:0.17.12" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/linux-ia32@npm:0.17.12" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/linux-loong64@npm:0.17.12" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/linux-mips64el@npm:0.17.12" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"@esbuild/linux-ppc64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/linux-ppc64@npm:0.17.12" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/linux-riscv64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/linux-riscv64@npm:0.17.12" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/linux-s390x@npm:0.17.12" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-x64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/linux-x64@npm:0.17.12" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/netbsd-x64@npm:0.17.12" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-x64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/openbsd-x64@npm:0.17.12" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/sunos-x64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/sunos-x64@npm:0.17.12" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/win32-arm64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/win32-arm64@npm:0.17.12" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/win32-ia32@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/win32-ia32@npm:0.17.12" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/win32-x64@npm:0.17.12": - version: 0.17.12 - resolution: "@esbuild/win32-x64@npm:0.17.12" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@eslint-community/eslint-utils@npm:^4.2.0": - version: 4.3.0 - resolution: "@eslint-community/eslint-utils@npm:4.3.0" - dependencies: - eslint-visitor-keys: ^3.3.0 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: f487760a692f0f1fef76e248ad72976919576ba57edc2b1b1dc1d182553bae6b5bf7b078e654da85d04f0af8a485d20bd26280002768f4fbcd2e330078340cb0 - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.4.0": - version: 4.4.0 - resolution: "@eslint-community/regexpp@npm:4.4.0" - checksum: 2d127af0c752b80e8a782eacfe996a86925d21de92da3ffc6f9e615e701145e44a62e26bdd88bfac2cd76779c39ba8d9875a91046ec5e7e5f23cb647c247ea6a - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^1.4.1": - version: 1.4.1 - resolution: "@eslint/eslintrc@npm:1.4.1" - dependencies: - ajv: ^6.12.4 - debug: ^4.3.2 - espree: ^9.4.0 - globals: ^13.19.0 - ignore: ^5.2.0 - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 - minimatch: ^3.1.2 - strip-json-comments: ^3.1.1 - checksum: cd3e5a8683db604739938b1c1c8b77927dc04fce3e28e0c88e7f2cd4900b89466baf83dfbad76b2b9e4d2746abdd00dd3f9da544d3e311633d8693f327d04cd7 - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^2.0.1": - version: 2.0.1 - resolution: "@eslint/eslintrc@npm:2.0.1" - dependencies: - ajv: ^6.12.4 - debug: ^4.3.2 - espree: ^9.5.0 - globals: ^13.19.0 - ignore: ^5.2.0 - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 - minimatch: ^3.1.2 - strip-json-comments: ^3.1.1 - checksum: 56b9192a687a450db53a7b883daf9f0f447c43b3510189cf88808a7a2467c2a302a42a50f184cc6d5a9faf3d1df890a2ef0fd0d60b751f32a3e9dfea717c6b48 - languageName: node - linkType: hard - -"@eslint/js@npm:8.36.0": - version: 8.36.0 - resolution: "@eslint/js@npm:8.36.0" - checksum: b7d6b84b823c8c7784be390741196617565527b1f7c0977fde9455bfb57fd88f81c074a03dd878757d2c33fa29f24291e9ecbc1425710f067917324b55e1bf3a - languageName: node - linkType: hard - -"@floating-ui/core@npm:^1.2.4": - version: 1.2.4 - resolution: "@floating-ui/core@npm:1.2.4" - checksum: 1c163ea1804e2b0a28fda6e32efed0e242d0db8081fd24aab9d1cbb100f94a558709231c483bf74bf09a9204ea6e7845813d43b5322ceb6ee63285308f68f65b - languageName: node - linkType: hard - -"@floating-ui/dom@npm:^1.2.1": - version: 1.2.5 - resolution: "@floating-ui/dom@npm:1.2.5" - dependencies: - "@floating-ui/core": ^1.2.4 - checksum: a21c272a36c7cd7d337eaed82c1f8a81ccc5003d04cefa07591dc7fbb0a24d57a2c097b410593b5416145a68ac10a7a7a745c3cc4f8196268fa002364d28804b - languageName: node - linkType: hard - -"@floating-ui/react-dom-interactions@npm:0.13.3": - version: 0.13.3 - resolution: "@floating-ui/react-dom-interactions@npm:0.13.3" - dependencies: - "@floating-ui/react-dom": ^1.0.1 - aria-hidden: ^1.1.3 - tabbable: ^6.0.1 - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: a72a036628b9c423114b3654ae239b50fac14c191fcad402ebc4cd4818b7fe2fdce000791487cf6afcafd1b7eff35a99ffe15df4e1c3b3271fbb617717fc4df2 - languageName: node - linkType: hard - -"@floating-ui/react-dom@npm:^1.0.1": - version: 1.3.0 - resolution: "@floating-ui/react-dom@npm:1.3.0" - dependencies: - "@floating-ui/dom": ^1.2.1 - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: ce0ad3e3bbe43cfd15a6a0d5cccede02175c845862bfab52027995ab99c6b29630180dc7d146f76ebb34730f90a6ab9bf193c8984fe8d7f56062308e4ca98f77 - languageName: node - linkType: hard - -"@formatjs/ecma402-abstract@npm:1.14.3": - version: 1.14.3 - resolution: "@formatjs/ecma402-abstract@npm:1.14.3" - dependencies: - "@formatjs/intl-localematcher": 0.2.32 - tslib: ^2.4.0 - checksum: 504ae9775094adec611aa0bbc6dadec2360ba30c13331f376feacd75b23f856ac1e45e3c88a572fb91ff917e726d0cc7e6e1b6c5b73af48f53896592362c91d5 - languageName: node - linkType: hard - -"@formatjs/fast-memoize@npm:2.0.1": - version: 2.0.1 - resolution: "@formatjs/fast-memoize@npm:2.0.1" - dependencies: - tslib: ^2.4.0 - checksum: e434cdc53354666459c47556c403f0ed3391ebab0e851a64e5622d8d81e3b684a74a09c4bf5189885c66e743004601f64e2e2c8c70adf6b00071d4afea20f69d - languageName: node - linkType: hard - -"@formatjs/icu-messageformat-parser@npm:2.3.0": - version: 2.3.0 - resolution: "@formatjs/icu-messageformat-parser@npm:2.3.0" - dependencies: - "@formatjs/ecma402-abstract": 1.14.3 - "@formatjs/icu-skeleton-parser": 1.3.18 - tslib: ^2.4.0 - checksum: e8aca733bed81c94ec16fa9f1a88dbaf93a644a8c5796a6ab1e795112dd1f6c1e92528a123483d3034ac5e6b2b454481ef61f7e56e6e77f1467f9524be7fe331 - languageName: node - linkType: hard - -"@formatjs/icu-skeleton-parser@npm:1.3.18": - version: 1.3.18 - resolution: "@formatjs/icu-skeleton-parser@npm:1.3.18" - dependencies: - "@formatjs/ecma402-abstract": 1.14.3 - tslib: ^2.4.0 - checksum: 19655c452ed3c45db07b03c90fbfe6172655b0babb9579f2d9397ca2b3c56e5e17a3beed1d13af12104313e6ed1f14976d7c996756f1a59c977d6f3228518fad - languageName: node - linkType: hard - -"@formatjs/intl-localematcher@npm:0.2.32": - version: 0.2.32 - resolution: "@formatjs/intl-localematcher@npm:0.2.32" - dependencies: - tslib: ^2.4.0 - checksum: 477e18aabaf2e6e90fc12952a3cb6c0ebb40ad99414d6b9d2501c6348fbad58cacb433ec6630955cfd1491ea7630f32a9dc280bb27d0fb8a784251404a54140a - languageName: node - linkType: hard - -"@gar/promisify@npm:^1.1.3": - version: 1.1.3 - resolution: "@gar/promisify@npm:1.1.3" - checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 - languageName: node - linkType: hard - -"@graphql-codegen/add@npm:4.0.1": - version: 4.0.1 - resolution: "@graphql-codegen/add@npm:4.0.1" - dependencies: - "@graphql-codegen/plugin-helpers": ^4.1.0 - tslib: ~2.5.0 - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 0a1ee993cda0fd2adbffd79db03007e9eaa32830607ba6d46c12414bd9e0f568cee8c0d9ad976915b35a4647ff3201364383e57e023ab7dfd3b18f7c69c464e8 - languageName: node - linkType: hard - -"@graphql-codegen/cli@npm:3.2.2": - version: 3.2.2 - resolution: "@graphql-codegen/cli@npm:3.2.2" - dependencies: - "@babel/generator": ^7.18.13 - "@babel/template": ^7.18.10 - "@babel/types": ^7.18.13 - "@graphql-codegen/core": ^3.1.0 - "@graphql-codegen/plugin-helpers": ^4.1.0 - "@graphql-tools/apollo-engine-loader": ^7.3.6 - "@graphql-tools/code-file-loader": ^7.3.17 - "@graphql-tools/git-loader": ^7.2.13 - "@graphql-tools/github-loader": ^7.3.20 - "@graphql-tools/graphql-file-loader": ^7.5.0 - "@graphql-tools/json-file-loader": ^7.4.1 - "@graphql-tools/load": ^7.8.0 - "@graphql-tools/prisma-loader": ^7.2.49 - "@graphql-tools/url-loader": ^7.13.2 - "@graphql-tools/utils": ^9.0.0 - "@parcel/watcher": ^2.1.0 - "@whatwg-node/fetch": ^0.8.0 - chalk: ^4.1.0 - cosmiconfig: ^7.0.0 - debounce: ^1.2.0 - detect-indent: ^6.0.0 - graphql-config: ^4.5.0 - inquirer: ^8.0.0 - is-glob: ^4.0.1 - jiti: ^1.17.1 - json-to-pretty-yaml: ^1.2.2 - listr2: ^4.0.5 - log-symbols: ^4.0.0 - micromatch: ^4.0.5 - shell-quote: ^1.7.3 - string-env-interpolation: ^1.0.1 - ts-log: ^2.2.3 - tslib: ^2.4.0 - yaml: ^1.10.0 - yargs: ^17.0.0 - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - bin: - gql-gen: cjs/bin.js - graphql-code-generator: cjs/bin.js - graphql-codegen: cjs/bin.js - graphql-codegen-esm: esm/bin.js - checksum: b94284ac538a3504f96c7d507c140b7cfee30042209c4230ffc3068f05b6b27c75e1922b31c696363ab43e34e472ed194cc72996bbb10f59991cd2a4a35ff36e - languageName: node - linkType: hard - -"@graphql-codegen/core@npm:^3.1.0": - version: 3.1.0 - resolution: "@graphql-codegen/core@npm:3.1.0" - dependencies: - "@graphql-codegen/plugin-helpers": ^4.1.0 - "@graphql-tools/schema": ^9.0.0 - "@graphql-tools/utils": ^9.1.1 - tslib: ~2.5.0 - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 7ace2b185242d00575b877b0bbb884c66915d246ba17a98c0ab82c2ee3a93ff2c9ae9d7d75a1d346de02ca8f12eb02801ffe2da4846da6e164b43176cd02dd8c - languageName: node - linkType: hard - -"@graphql-codegen/introspection@npm:3.0.1": - version: 3.0.1 - resolution: "@graphql-codegen/introspection@npm:3.0.1" - dependencies: - "@graphql-codegen/plugin-helpers": ^4.1.0 - "@graphql-codegen/visitor-plugin-common": ^3.0.1 - tslib: ~2.5.0 - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 054ce28956e63ec2e5dbc4b0d812d2ca6784c72a17c936e0066b3792071749ec14bc39a73cea2407221b503a26cd65cb2eb3da59d632681b60aeee767024bbe2 - languageName: node - linkType: hard - -"@graphql-codegen/plugin-helpers@npm:^2.7.2": - version: 2.7.2 - resolution: "@graphql-codegen/plugin-helpers@npm:2.7.2" - dependencies: - "@graphql-tools/utils": ^8.8.0 - change-case-all: 1.0.14 - common-tags: 1.8.2 - import-from: 4.0.0 - lodash: ~4.17.0 - tslib: ~2.4.0 - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 66e0d507ad5db60b67092ebf7632d464d56ab446ac8fd87c293e00d9016944912d8cf9199e3e026b0a9247a50f50c4118a44f49e13675db64211652cd6259b05 - languageName: node - linkType: hard - -"@graphql-codegen/plugin-helpers@npm:^4.1.0": - version: 4.1.0 - resolution: "@graphql-codegen/plugin-helpers@npm:4.1.0" - dependencies: - "@graphql-tools/utils": ^9.0.0 - change-case-all: 1.0.15 - common-tags: 1.8.2 - import-from: 4.0.0 - lodash: ~4.17.0 - tslib: ~2.5.0 - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: a4d89909d7a62bd7a93041b6073b1d46e912b42f7af1d15c44f7ed595ab1185b6c257cccf8272e0ae36ba22724578449d0e21524e8dbc21fb375da0620687868 - languageName: node - linkType: hard - -"@graphql-codegen/schema-ast@npm:^3.0.1": - version: 3.0.1 - resolution: "@graphql-codegen/schema-ast@npm:3.0.1" - dependencies: - "@graphql-codegen/plugin-helpers": ^4.1.0 - "@graphql-tools/utils": ^9.0.0 - tslib: ~2.5.0 - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 620aa67a4ae59ccb4609763b7347d05e2cec62bf1362be3e1e01fc00969cdbb858398542aa261128e5b5e3cb6808b77861bdcf82662e80326e72b418f25f465f - languageName: node - linkType: hard - -"@graphql-codegen/typescript-operations@npm:3.0.2": - version: 3.0.2 - resolution: "@graphql-codegen/typescript-operations@npm:3.0.2" - dependencies: - "@graphql-codegen/plugin-helpers": ^4.1.0 - "@graphql-codegen/typescript": ^3.0.2 - "@graphql-codegen/visitor-plugin-common": 3.0.2 - auto-bind: ~4.0.0 - tslib: ~2.5.0 - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 35005e34b978db6226c4e7018eaf346c77f0efcd2b121eb69af4669a2604a172415b50244867cc9701c41134a7a4312b92eeec82dcb756e282ba755aea1c4a28 - languageName: node - linkType: hard - -"@graphql-codegen/typescript-react-apollo@npm:3.3.7": - version: 3.3.7 - resolution: "@graphql-codegen/typescript-react-apollo@npm:3.3.7" - dependencies: - "@graphql-codegen/plugin-helpers": ^2.7.2 - "@graphql-codegen/visitor-plugin-common": 2.13.1 - auto-bind: ~4.0.0 - change-case-all: 1.0.14 - tslib: ~2.4.0 - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - graphql-tag: ^2.0.0 - checksum: e21d111ce1c968499a7f233d15801725f67745c53b70a3d6c6076824f81787e7dda34b248e8f606c8a4920dd0c078db1cf644ebd6ffde9b4e7b5b0cd652a4127 - languageName: node - linkType: hard - -"@graphql-codegen/typescript@npm:3.0.2, @graphql-codegen/typescript@npm:^3.0.2": - version: 3.0.2 - resolution: "@graphql-codegen/typescript@npm:3.0.2" - dependencies: - "@graphql-codegen/plugin-helpers": ^4.1.0 - "@graphql-codegen/schema-ast": ^3.0.1 - "@graphql-codegen/visitor-plugin-common": 3.0.2 - auto-bind: ~4.0.0 - tslib: ~2.5.0 - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: e92dc54804b6ad45fb2499b91cb89743e455a984684e2b1df1b1a8f479a0bbffa5c625be97ccb55874ac8b7316a820b546e9e312b22eda78012acd5c27594a28 - languageName: node - linkType: hard - -"@graphql-codegen/visitor-plugin-common@npm:2.13.1": - version: 2.13.1 - resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.1" - dependencies: - "@graphql-codegen/plugin-helpers": ^2.7.2 - "@graphql-tools/optimize": ^1.3.0 - "@graphql-tools/relay-operation-optimizer": ^6.5.0 - "@graphql-tools/utils": ^8.8.0 - auto-bind: ~4.0.0 - change-case-all: 1.0.14 - dependency-graph: ^0.11.0 - graphql-tag: ^2.11.0 - parse-filepath: ^1.0.2 - tslib: ~2.4.0 - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 0c329aa6e435602f2f6c1569ec2091b7850f58cc5dca7ac763c38c82588545ec1110c1de587f5f3949b11ff96f94401d1e63e329607d78424583b276fd08f1ae - languageName: node - linkType: hard - -"@graphql-codegen/visitor-plugin-common@npm:3.0.2, @graphql-codegen/visitor-plugin-common@npm:^3.0.1": - version: 3.0.2 - resolution: "@graphql-codegen/visitor-plugin-common@npm:3.0.2" - dependencies: - "@graphql-codegen/plugin-helpers": ^4.1.0 - "@graphql-tools/optimize": ^1.3.0 - "@graphql-tools/relay-operation-optimizer": ^6.5.0 - "@graphql-tools/utils": ^9.0.0 - auto-bind: ~4.0.0 - change-case-all: 1.0.15 - dependency-graph: ^0.11.0 - graphql-tag: ^2.11.0 - parse-filepath: ^1.0.2 - tslib: ~2.5.0 - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: c8f941df7f8304b722b492ceaf15dddcf33e3a69bc29b54970908ffa12b14d92276958005bd307648e0cdc55f9e243d0fb390862f73a17a26bd50f6484ac42d6 - languageName: node - linkType: hard - -"@graphql-tools/apollo-engine-loader@npm:^7.3.6": - version: 7.3.26 - resolution: "@graphql-tools/apollo-engine-loader@npm:7.3.26" - dependencies: - "@ardatan/sync-fetch": ^0.0.1 - "@graphql-tools/utils": ^9.2.1 - "@whatwg-node/fetch": ^0.8.0 - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 2dd0324cd677c0a399a3cda6f155e4367ac38c8f6ec8a36c50931e97ce93d70f716f95575bcfda33d5a5b3c75f0ba04c73b82d22613f1a89e3c31965f576ae22 - languageName: node - linkType: hard - -"@graphql-tools/batch-execute@npm:^8.5.18": - version: 8.5.18 - resolution: "@graphql-tools/batch-execute@npm:8.5.18" - dependencies: - "@graphql-tools/utils": 9.2.1 - dataloader: 2.2.2 - tslib: ^2.4.0 - value-or-promise: 1.0.12 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 4a5b5dec502a91bd657a4ddad74965d050d3994c89f036225fac58657b5a275bb374224b20484e3ba773525e75a5552c4a5af7b6d52859ce3a3b32aec2412b6e - languageName: node - linkType: hard - -"@graphql-tools/code-file-loader@npm:^7.3.17": - version: 7.3.21 - resolution: "@graphql-tools/code-file-loader@npm:7.3.21" - dependencies: - "@graphql-tools/graphql-tag-pluck": 7.5.0 - "@graphql-tools/utils": 9.2.1 - globby: ^11.0.3 - tslib: ^2.4.0 - unixify: ^1.0.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 5d0d0a70bac673b4925a65f2283e3fcc5c093d2466a144cc577cb515d3de92ca2458d92842e02fe82a95d57d30ce6d2998b8ee5674393f7cd3df52f69671d565 - languageName: node - linkType: hard - -"@graphql-tools/delegate@npm:9.0.28, @graphql-tools/delegate@npm:^9.0.27": - version: 9.0.28 - resolution: "@graphql-tools/delegate@npm:9.0.28" - dependencies: - "@graphql-tools/batch-execute": ^8.5.18 - "@graphql-tools/executor": ^0.0.15 - "@graphql-tools/schema": ^9.0.16 - "@graphql-tools/utils": ^9.2.1 - dataloader: ^2.2.2 - tslib: ^2.5.0 - value-or-promise: ^1.0.12 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: e24c757ea15a2b654268194bbf76188fca6692486d1b019b0ad7d48c264f92b7b681a43c8a8355ace48a29f9dd566c20e8707b6cef281331a813f23ee1c94375 - languageName: node - linkType: hard - -"@graphql-tools/executor-graphql-ws@npm:^0.0.12": - version: 0.0.12 - resolution: "@graphql-tools/executor-graphql-ws@npm:0.0.12" - dependencies: - "@graphql-tools/utils": 9.2.1 - "@repeaterjs/repeater": 3.0.4 - "@types/ws": ^8.0.0 - graphql-ws: 5.12.0 - isomorphic-ws: 5.0.0 - tslib: ^2.4.0 - ws: 8.12.1 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 017f970c19e843c24da9f2b2cf45b5d922f5652b05e34c69fb27c3882618c8cc6a6ee008d4e767c1e74b2ba8630147ec8c7821996ff0eb1724f15dc27b95d1fd - languageName: node - linkType: hard - -"@graphql-tools/executor-http@npm:^0.1.7": - version: 0.1.9 - resolution: "@graphql-tools/executor-http@npm:0.1.9" - dependencies: - "@graphql-tools/utils": ^9.2.1 - "@repeaterjs/repeater": ^3.0.4 - "@whatwg-node/fetch": ^0.8.1 - dset: ^3.1.2 - extract-files: ^11.0.0 - meros: ^1.2.1 - tslib: ^2.4.0 - value-or-promise: ^1.0.12 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: de62f839c3775141f444a6a453bf8cd01e42257a915845180b7f840b59bb781c21eeb59f68b609dcbab5bae73bc9fa40f3d16449f23410bc616b1f347dedf1d1 - languageName: node - linkType: hard - -"@graphql-tools/executor-legacy-ws@npm:^0.0.9": - version: 0.0.9 - resolution: "@graphql-tools/executor-legacy-ws@npm:0.0.9" - dependencies: - "@graphql-tools/utils": 9.2.1 - "@types/ws": ^8.0.0 - isomorphic-ws: 5.0.0 - tslib: ^2.4.0 - ws: 8.12.1 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 9f35a38d1e064d4c82eee8d91d0b12552f75b65a413e1defc3831c726c6304f26b3651d3bd26aff3f58e049e40639ddf9b27f681a8bc49fdf11fb693e0d05392 - languageName: node - linkType: hard - -"@graphql-tools/executor@npm:^0.0.15": - version: 0.0.15 - resolution: "@graphql-tools/executor@npm:0.0.15" - dependencies: - "@graphql-tools/utils": 9.2.1 - "@graphql-typed-document-node/core": 3.1.2 - "@repeaterjs/repeater": 3.0.4 - tslib: ^2.4.0 - value-or-promise: 1.0.12 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 7a963d6fcd00bd9c2a42f35a33bc9178576a1eeac755ce69981aa1e2c61238953b7ab9c11ffcfc86e49fdcf4fc057698c6f7169d6be580298e286076276b1295 - languageName: node - linkType: hard - -"@graphql-tools/git-loader@npm:^7.2.13": - version: 7.2.20 - resolution: "@graphql-tools/git-loader@npm:7.2.20" - dependencies: - "@graphql-tools/graphql-tag-pluck": 7.5.0 - "@graphql-tools/utils": 9.2.1 - is-glob: 4.0.3 - micromatch: ^4.0.4 - tslib: ^2.4.0 - unixify: ^1.0.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: a0f16d44c60261eb9680f907d56b86ce3dda4642118ef3c436946f8e5dc1390151b9fd5ae75d34736c78d16e3e1191c1596bd8a86866fe2384ee7b73b9000e29 - languageName: node - linkType: hard - -"@graphql-tools/github-loader@npm:^7.3.20": - version: 7.3.27 - resolution: "@graphql-tools/github-loader@npm:7.3.27" - dependencies: - "@ardatan/sync-fetch": ^0.0.1 - "@graphql-tools/graphql-tag-pluck": ^7.4.6 - "@graphql-tools/utils": ^9.2.1 - "@whatwg-node/fetch": ^0.8.0 - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 467d5c9f0df5a26656dbd5939768335277eb25023331a359fd4748c2cd85de85affe8d7ac93ac9d51202ed208c54357561e32e2520fae28fdbc42dda72dd99f4 - languageName: node - linkType: hard - -"@graphql-tools/graphql-file-loader@npm:^7.3.7, @graphql-tools/graphql-file-loader@npm:^7.5.0": - version: 7.5.16 - resolution: "@graphql-tools/graphql-file-loader@npm:7.5.16" - dependencies: - "@graphql-tools/import": 6.7.17 - "@graphql-tools/utils": 9.2.1 - globby: ^11.0.3 - tslib: ^2.4.0 - unixify: ^1.0.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 5f9af56511a2f791677ad2601e745053d3f28b3afdf5542261e4bbf9924b9872244dcb0c9f6c7ca7fe91b658c12f4d91529efd9638653e112ad75bf79c915d78 - languageName: node - linkType: hard - -"@graphql-tools/graphql-tag-pluck@npm:7.5.0, @graphql-tools/graphql-tag-pluck@npm:^7.4.6": - version: 7.5.0 - resolution: "@graphql-tools/graphql-tag-pluck@npm:7.5.0" - dependencies: - "@babel/parser": ^7.16.8 - "@babel/plugin-syntax-import-assertions": 7.20.0 - "@babel/traverse": ^7.16.8 - "@babel/types": ^7.16.8 - "@graphql-tools/utils": 9.2.1 - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 47edaacdeafc4a464f8a51e047cafbb82a9a2700536a5b075eb4afad43c80b513a7b0ac4ad49a1e8a74b566ed7dfd677ebb0d0a967fe1e2ee66408cd5d4f294b - languageName: node - linkType: hard - -"@graphql-tools/import@npm:6.7.17": - version: 6.7.17 - resolution: "@graphql-tools/import@npm:6.7.17" - dependencies: - "@graphql-tools/utils": 9.2.1 - resolve-from: 5.0.0 - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 232debc4abed340f9ab04a9474e6f1af0f50d5b6b66dc6f7b7307872a27bd00745bc4fad1d7d00bf3503686766d2e26c9c42c4f1e2409111799ad80119a8303a - languageName: node - linkType: hard - -"@graphql-tools/json-file-loader@npm:^7.3.7, @graphql-tools/json-file-loader@npm:^7.4.1": - version: 7.4.17 - resolution: "@graphql-tools/json-file-loader@npm:7.4.17" - dependencies: - "@graphql-tools/utils": 9.2.1 - globby: ^11.0.3 - tslib: ^2.4.0 - unixify: ^1.0.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 54e4d1acf5bb1b55d72500b2ebb521d821edfb99ad7c1b0f0d6b2e3f87cfcda2d61ce6d4a886117ac11fb94354da6f7435f35a1ffdc359cf2e39da1d0fde76c5 - languageName: node - linkType: hard - -"@graphql-tools/load@npm:^7.5.5, @graphql-tools/load@npm:^7.8.0": - version: 7.8.13 - resolution: "@graphql-tools/load@npm:7.8.13" - dependencies: - "@graphql-tools/schema": 9.0.17 - "@graphql-tools/utils": 9.2.1 - p-limit: 3.1.0 - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: f8dafe3b1575a33234b798751a6ec4ee9d78bfb32055395da45f7081737d30f863fe5bb2cc8c2aadd5b46d3a443d1dec75d7f2cc58399c071ac35c8470cb7ff6 - languageName: node - linkType: hard - -"@graphql-tools/merge@npm:8.4.0, @graphql-tools/merge@npm:^8.2.6": - version: 8.4.0 - resolution: "@graphql-tools/merge@npm:8.4.0" - dependencies: - "@graphql-tools/utils": 9.2.1 - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 32265749833615ac2cb3d958318f5c46b7bd5ec858acfbad7136d379594ec3c98ba67ba5f04f4061187e5dfd52bb277155cd98fdeb2b4c5535c16bdb4f117ae0 - languageName: node - linkType: hard - -"@graphql-tools/optimize@npm:^1.3.0": - version: 1.3.1 - resolution: "@graphql-tools/optimize@npm:1.3.1" - dependencies: - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 4eed041bc3199a70ab426eeb10bc4af65f18fa0c5907613aec236fd7e14918d0f895e12489df6ff501562415eef64c99777a3ca6f6a4ee3c796b68e7cb778342 - languageName: node - linkType: hard - -"@graphql-tools/prisma-loader@npm:^7.2.49": - version: 7.2.65 - resolution: "@graphql-tools/prisma-loader@npm:7.2.65" - dependencies: - "@graphql-tools/url-loader": 7.17.14 - "@graphql-tools/utils": 9.2.1 - "@types/js-yaml": ^4.0.0 - "@types/json-stable-stringify": ^1.0.32 - chalk: ^4.1.0 - debug: ^4.3.1 - dotenv: ^16.0.0 - graphql-request: ^5.0.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.0 - isomorphic-fetch: ^3.0.0 - jose: ^4.11.4 - js-yaml: ^4.0.0 - json-stable-stringify: ^1.0.1 - lodash: ^4.17.20 - scuid: ^1.1.0 - tslib: ^2.4.0 - yaml-ast-parser: ^0.0.43 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 2354b7e2074b7a519984bb36f1923a1d24c26b83db5e3ad9c319a3e94365c469984fd8e0a442b9a1d6740e7b25830ae31069c89c2ae3c1ac63fa87b444d2b58f - languageName: node - linkType: hard - -"@graphql-tools/relay-operation-optimizer@npm:^6.5.0": - version: 6.5.17 - resolution: "@graphql-tools/relay-operation-optimizer@npm:6.5.17" - dependencies: - "@ardatan/relay-compiler": 12.0.0 - "@graphql-tools/utils": 9.2.1 - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 1e5163390b2834c2246c4842c9ca7b9a63cdff17f5b5afe5934bbb837b5b26e14e2144ef3fad992e3618d4012fb6736a71c34a38e1fdb4e628e3de7f74fac8bd - languageName: node - linkType: hard - -"@graphql-tools/schema@npm:9.0.17, @graphql-tools/schema@npm:^9.0.0, @graphql-tools/schema@npm:^9.0.16": - version: 9.0.17 - resolution: "@graphql-tools/schema@npm:9.0.17" - dependencies: - "@graphql-tools/merge": 8.4.0 - "@graphql-tools/utils": 9.2.1 - tslib: ^2.4.0 - value-or-promise: 1.0.12 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 1c6513dd88b47d07702d01a48941ee164c4090c69b2475b1dde48a3d8866ed48fd39a33d15510682f6d8c18d19ceb72b77104eb4edbb194f96a129cc03909e89 - languageName: node - linkType: hard - -"@graphql-tools/url-loader@npm:7.17.14, @graphql-tools/url-loader@npm:^7.13.2, @graphql-tools/url-loader@npm:^7.9.7": - version: 7.17.14 - resolution: "@graphql-tools/url-loader@npm:7.17.14" - dependencies: - "@ardatan/sync-fetch": ^0.0.1 - "@graphql-tools/delegate": ^9.0.27 - "@graphql-tools/executor-graphql-ws": ^0.0.12 - "@graphql-tools/executor-http": ^0.1.7 - "@graphql-tools/executor-legacy-ws": ^0.0.9 - "@graphql-tools/utils": ^9.2.1 - "@graphql-tools/wrap": ^9.3.8 - "@types/ws": ^8.0.0 - "@whatwg-node/fetch": ^0.8.0 - isomorphic-ws: ^5.0.0 - tslib: ^2.4.0 - value-or-promise: ^1.0.11 - ws: ^8.12.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: a9473c0d49299d4807c5ab881407b7e96989a06cc583bddd34eb059295fd847df982bf95b82fc713150ac60fe1ccdd1db78bc17e3903db44684b5cce0f7cb82a - languageName: node - linkType: hard - -"@graphql-tools/utils@npm:9.2.1, @graphql-tools/utils@npm:^9.0.0, @graphql-tools/utils@npm:^9.1.1, @graphql-tools/utils@npm:^9.2.1": - version: 9.2.1 - resolution: "@graphql-tools/utils@npm:9.2.1" - dependencies: - "@graphql-typed-document-node/core": ^3.1.1 - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 94ed12df5f49e5c338322ffd931236a687a3d5c443bf499f9baab5d4fcd9792234111142be8aa506a01ca2e82732996c4e1d8f6159ff9cc7fdc5c97f63e55226 - languageName: node - linkType: hard - -"@graphql-tools/utils@npm:^8.8.0": - version: 8.13.1 - resolution: "@graphql-tools/utils@npm:8.13.1" - dependencies: - tslib: ^2.4.0 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: ff04fdeb29e9ac596ea53386cd5b23cd741bb14c1997c6b0ba3c34ca165bd82b528a355e8c8e2ba726eb39e833ba9cbb0851ba0addb8c6d367089a1145bf9a49 - languageName: node - linkType: hard - -"@graphql-tools/wrap@npm:^9.3.8": - version: 9.3.8 - resolution: "@graphql-tools/wrap@npm:9.3.8" - dependencies: - "@graphql-tools/delegate": 9.0.28 - "@graphql-tools/schema": 9.0.17 - "@graphql-tools/utils": 9.2.1 - tslib: ^2.4.0 - value-or-promise: 1.0.12 - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 1f280b939f1c8c33be8fbd92c0584e9125e30c59ce6f75f20657235d24e5a2c01eb3214eda9ae74d431d9da072cdfa6cedeafdc5b352dd33de439ba42402efcb - languageName: node - linkType: hard - -"@graphql-typed-document-node/core@npm:3.1.2": - version: 3.1.2 - resolution: "@graphql-typed-document-node/core@npm:3.1.2" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: a61afa025acdabd7833e4f654a5802fc1a526171f81e0c435c8e651050a5a0682499a2c7a51304ceb61fde36cd69fc7975ce5e1b16b9ba7ea474c649f33eea8b - languageName: node - linkType: hard - -"@graphql-typed-document-node/core@npm:^3.1.1": - version: 3.2.0 - resolution: "@graphql-typed-document-node/core@npm:3.2.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: fa44443accd28c8cf4cb96aaaf39d144a22e8b091b13366843f4e97d19c7bfeaf609ce3c7603a4aeffe385081eaf8ea245d078633a7324c11c5ec4b2011bb76d - languageName: node - linkType: hard - -"@humanwhocodes/config-array@npm:^0.11.8": - version: 0.11.8 - resolution: "@humanwhocodes/config-array@npm:0.11.8" - dependencies: - "@humanwhocodes/object-schema": ^1.2.1 - debug: ^4.1.1 - minimatch: ^3.0.5 - checksum: 0fd6b3c54f1674ce0a224df09b9c2f9846d20b9e54fabae1281ecfc04f2e6ad69bf19e1d6af6a28f88e8aa3990168b6cb9e1ef755868c3256a630605ec2cb1d3 - languageName: node - linkType: hard - -"@humanwhocodes/module-importer@npm:^1.0.1": - version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 0fd22007db8034a2cdf2c764b140d37d9020bbfce8a49d3ec5c05290e77d4b0263b1b972b752df8c89e5eaa94073408f2b7d977aed131faf6cf396ebb5d7fb61 - languageName: node - linkType: hard - -"@humanwhocodes/object-schema@npm:^1.2.1": - version: 1.2.1 - resolution: "@humanwhocodes/object-schema@npm:1.2.1" - checksum: a824a1ec31591231e4bad5787641f59e9633827d0a2eaae131a288d33c9ef0290bd16fda8da6f7c0fcb014147865d12118df10db57f27f41e20da92369fcb3f1 - languageName: node - linkType: hard - -"@internationalized/date@npm:^3.1.0": - version: 3.1.0 - resolution: "@internationalized/date@npm:3.1.0" - dependencies: - "@swc/helpers": ^0.4.14 - checksum: 7ff8dd994a6efddcbe7d0c762504f81b2b9f87de858245fd974e9f87f7fb4cfe54918cc910f14aadadbb7575597e51ef10afa7cb529f4fd07fbc7ad72bdc9550 - languageName: node - linkType: hard - -"@internationalized/message@npm:^3.1.0": - version: 3.1.0 - resolution: "@internationalized/message@npm:3.1.0" - dependencies: - "@swc/helpers": ^0.4.14 - intl-messageformat: ^10.1.0 - checksum: 4e0be02342938369a384275be0fcc90677af7d710137b247248346c590f9f33314bf4c760a95205388f5c1e95dfaad2603988cdb2fefac06a677d59bee64dd11 - languageName: node - linkType: hard - -"@internationalized/number@npm:^3.2.0": - version: 3.2.0 - resolution: "@internationalized/number@npm:3.2.0" - dependencies: - "@swc/helpers": ^0.4.14 - checksum: 1e61b62a4f763b4327fa5687948792a95eb03b919696c64b27835e6e217462997e1b23d4fc984f45568bcb13174df0db7c0f5177d25fde9824d5a42333fc369a - languageName: node - linkType: hard - -"@internationalized/string@npm:^3.1.0": - version: 3.1.0 - resolution: "@internationalized/string@npm:3.1.0" - dependencies: - "@swc/helpers": ^0.4.14 - checksum: 0a47b1dcc2d75207ff1f7e9ffe300cfec94a3b9f361f309c76dfa0614babb8e48f788c6d23c33637f337b752c458731e495ca9c398eb00756efc229e591b12e9 - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" - dependencies: - "@jridgewell/set-array": ^1.0.0 - "@jridgewell/sourcemap-codec": ^1.4.10 - checksum: 3bcc21fe786de6ffbf35c399a174faab05eb23ce6a03e8769569de28abbf4facc2db36a9ddb0150545ae23a8d35a7cf7237b2aa9e9356a7c626fb4698287d5cc - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" - dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1832707a1c476afebe4d0fbbd4b9434fdb51a4c3e009ab1e9938648e21b7a97049fa6009393bdf05cab7504108413441df26d8a3c12193996e65493a4efb6882 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 - languageName: node - linkType: hard - -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" - dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 - languageName: node - linkType: hard - -"@jumpn/utils-array@npm:0.3.4": - version: 0.3.4 - resolution: "@jumpn/utils-array@npm:0.3.4" - dependencies: - babel-polyfill: 6.26.0 - babel-runtime: 6.26.0 - flow-static-land: 0.2.7 - checksum: 4133d46ee6291a97aebe7972c9ad11ed5c3a180490d71649e06eda22a61212f391dc44529c4e5057971066dacce8557018fbcd54ff832390f12acaa01547a36d - languageName: node - linkType: hard - -"@jumpn/utils-composite@npm:0.7.0": - version: 0.7.0 - resolution: "@jumpn/utils-composite@npm:0.7.0" - dependencies: - "@jumpn/utils-array": 0.3.4 - babel-polyfill: 6.26.0 - babel-runtime: 6.26.0 - fast-deep-equal: 1.0.0 - flow-static-land: 0.2.8 - checksum: 1f835367ea3a320870498b8a0263f77b96e20ecd5facdfd7c5e8e2a5a1c1987ea28ecebb6b7b92db42c16d72383446a4f8e42b30e893379e62149cdc827dd3fa - languageName: node - linkType: hard - -"@jumpn/utils-graphql@npm:0.6.0": - version: 0.6.0 - resolution: "@jumpn/utils-graphql@npm:0.6.0" - dependencies: - "@babel/runtime": 7.2.0 - core-js: 2.6.0 - graphql: 14.0.2 - checksum: 66ec04d8a2170112160b42fdc506d366f1b64844de3ac06c10fd0d9ccc5a80f9aa0daae567a9d0a0b3a4ec537d17bc2eb0c03c514f08d07b9f64ba3bc857d8eb - languageName: node - linkType: hard - -"@monaco-editor/loader@npm:^1.3.2": - version: 1.3.2 - resolution: "@monaco-editor/loader@npm:1.3.2" - dependencies: - state-local: ^1.0.6 - peerDependencies: - monaco-editor: ">= 0.21.0 < 1" - checksum: 7a1b65052bbaf4ef826392687bd7cfaf839509611034d2d616783b5d3fee91ed304d9086517c3b5f9099707828c57c855ff43407b3c2f5ae480faebb104d4343 - languageName: node - linkType: hard - -"@monaco-editor/react@npm:4.4.6": - version: 4.4.6 - resolution: "@monaco-editor/react@npm:4.4.6" - dependencies: - "@monaco-editor/loader": ^1.3.2 - prop-types: ^15.7.2 - peerDependencies: - monaco-editor: ">= 0.25.0 < 1" - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: cb25b5ce153608c2a4291390456488e100c5e3ac48a913875c98182836e2a9f315d4f96e85cf6f7d4b1eadff8d08d13356e38891b472894155bcb2c4aeaf3b1c - languageName: node - linkType: hard - -"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": - version: 5.1.1-v1 - resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" - dependencies: - eslint-scope: 5.1.1 - checksum: f2e3b2d6a6e2d9f163ca22105910c9f850dc4897af0aea3ef0a5886b63d8e1ba6505b71c99cb78a3bba24a09557d601eb21c8dede3f3213753fcfef364eb0e57 - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: ^1.1.9 - checksum: a970d595bd23c66c880e0ef1817791432dbb7acbb8d44b7e7d0e7a22f4521260d4a83f7f9fd61d44fda4610105577f8f58a60718105fb38352baed612fd79e59 - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0 - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: ^1.6.0 - checksum: 190c643f156d8f8f277bf2a6078af1ffde1fd43f498f187c2db24d35b4b4b5785c02c7dc52e356497b9a1b65b13edc996de08de0b961c32844364da02986dc53 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^2.1.0": - version: 2.1.2 - resolution: "@npmcli/fs@npm:2.1.2" - dependencies: - "@gar/promisify": ^1.1.3 - semver: ^7.3.5 - checksum: 405074965e72d4c9d728931b64d2d38e6ea12066d4fad651ac253d175e413c06fe4350970c783db0d749181da8fe49c42d3880bd1cbc12cd68e3a7964d820225 - languageName: node - linkType: hard - -"@npmcli/move-file@npm:^2.0.0": - version: 2.0.1 - resolution: "@npmcli/move-file@npm:2.0.1" - dependencies: - mkdirp: ^1.0.4 - rimraf: ^3.0.2 - checksum: 52dc02259d98da517fae4cb3a0a3850227bdae4939dda1980b788a7670636ca2b4a01b58df03dd5f65c1e3cb70c50fa8ce5762b582b3f499ec30ee5ce1fd9380 - languageName: node - linkType: hard - -"@parcel/watcher@npm:^2.1.0": - version: 2.1.0 - resolution: "@parcel/watcher@npm:2.1.0" - dependencies: - is-glob: ^4.0.3 - micromatch: ^4.0.5 - node-addon-api: ^3.2.1 - node-gyp: latest - node-gyp-build: ^4.3.0 - checksum: 17f512ad6d5dbb40053ceea7091f8af754afc63786b8f050b225b89a8ba24900468aad8bc4edb25c0349b4c0c8d061f50aa19242c0af52cbc30e6ebf50c7bf4c - languageName: node - linkType: hard - -"@peculiar/asn1-schema@npm:^2.3.6": - version: 2.3.6 - resolution: "@peculiar/asn1-schema@npm:2.3.6" - dependencies: - asn1js: ^3.0.5 - pvtsutils: ^1.3.2 - tslib: ^2.4.0 - checksum: fc09387c6e3dea07fca21b54ea8c71ce3ec0f8c92377237e51aef729f0c2df92781aa7a18a546a6fe809519faeaa222df576ec21a35c6095037a78677204a55b - languageName: node - linkType: hard - -"@peculiar/json-schema@npm:^1.1.12": - version: 1.1.12 - resolution: "@peculiar/json-schema@npm:1.1.12" - dependencies: - tslib: ^2.0.0 - checksum: b26ececdc23c5ef25837f8be8d1eb5e1c8bb6e9ae7227ac59ffea57fff56bd05137734e7685e9100595d3d88d906dff638ef8d1df54264c388d3eac1b05aa060 - languageName: node - linkType: hard - -"@peculiar/webcrypto@npm:^1.4.0": - version: 1.4.3 - resolution: "@peculiar/webcrypto@npm:1.4.3" - dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/json-schema": ^1.1.12 - pvtsutils: ^1.3.2 - tslib: ^2.5.0 - webcrypto-core: ^1.7.7 - checksum: 5604c02b7e9a8cef61bb4430e733e939c7737533ba65ba5fac4beb3a6d613add478ab45455cb57506789b6d00704d83e4965a0f712de3e8f40706e0961670e5c - languageName: node - linkType: hard - -"@pluralsh/design-system@npm:1.334.0": - version: 1.334.0 - resolution: "@pluralsh/design-system@npm:1.334.0" - dependencies: - "@floating-ui/react-dom-interactions": 0.13.3 - "@monaco-editor/react": 4.4.6 - "@react-aria/button": 3.7.0 - "@react-aria/checkbox": 3.8.0 - "@react-aria/combobox": 3.5.0 - "@react-aria/focus": 3.11.0 - "@react-aria/interactions": 3.14.0 - "@react-aria/listbox": 3.8.0 - "@react-aria/overlays": 3.13.0 - "@react-aria/radio": 3.5.0 - "@react-aria/select": 3.9.0 - "@react-aria/slider": 3.3.0 - "@react-aria/tabs": 3.4.0 - "@react-aria/utils": 3.15.0 - "@react-aria/visually-hidden": 3.7.0 - "@react-stately/collections": 3.6.0 - "@react-stately/combobox": 3.4.0 - "@react-stately/overlays": 3.5.0 - "@react-stately/radio": 3.7.0 - "@react-stately/slider": 3.3.0 - "@react-stately/tabs": 3.3.0 - "@react-stately/toggle": 3.5.0 - "@react-types/shared": 3.17.0 - "@tanstack/match-sorter-utils": 8.7.6 - "@tanstack/react-table": 8.7.9 - "@tanstack/react-virtual": 3.0.0-beta.48 - "@types/chroma-js": 2.1.5 - chroma-js: 2.4.2 - classnames: 2.3.2 - grommet: 2.29.1 - grommet-icons: 4.9.0 - highlight.js: 11.7.0 - honorable-recipe-mapper: 0.2.0 - immer: 9.0.19 - moment: 2.29.4 - prop-types: 15.8.1 - react-animate-height: 3.1.0 - react-markdown: 8.0.5 - react-merge-refs: 2.0.1 - react-spring: 9.6.1 - react-use-measure: 2.1.1 - react-virtual: 2.10.4 - rehype-raw: 6.1.1 - resize-observer-polyfill: 1.5.1 - styled-container-query: 1.3.5 - use-immer: 0.8.1 - peerDependencies: - "@emotion/react": ">=11.9.3" - "@emotion/styled": ">=11.9.3" - honorable: ">=1.0.0-beta.17" - honorable-theme-default: ">=1.0.0-beta.5" - react: ">=16.0.0" - react-dom: ">=16.0.0" - react-transition-group: ">=4.4.2" - styled-components: ">=5.3.5" - checksum: 9e8ffb14590473ad3c1d4b4871ecf6eb00cd4d82d5559b5e5b37980c468a4164a104c46d96bd537e626ef7f26c060cc0161813e2c81248d28c085d6d8de10559 - languageName: node - linkType: hard - -"@pluralsh/eslint-config-pluralsh@npm:1.4.13": - version: 1.4.13 - resolution: "@pluralsh/eslint-config-pluralsh@npm:1.4.13" - dependencies: - eslint: 8.32.0 - eslint-config-airbnb: 19.0.4 - eslint-plugin-import: 2.27.5 - eslint-plugin-import-newlines: ^1.2.3 - eslint-plugin-jsx-a11y: 6.7.1 - eslint-plugin-react: 7.32.1 - eslint-plugin-react-hooks: 4.6.0 - checksum: 4755f86ae2643616cd7e4fd6c72e9b41632c1aef2029fa95c526b0256848d1a20ebaf01ed3505eaeaaaca209039c1873823a0c30ef5a055bb9371f7d46662632 - languageName: node - linkType: hard - -"@pluralsh/eslint-config-typescript@npm:2.5.41": - version: 2.5.41 - resolution: "@pluralsh/eslint-config-typescript@npm:2.5.41" - dependencies: - "@babel/core": 7.20.12 - "@babel/eslint-parser": 7.19.1 - "@babel/preset-env": 7.20.2 - "@babel/preset-react": 7.18.6 - "@pluralsh/eslint-config-pluralsh": 1.4.13 - "@types/node": 18.15.5 - "@typescript-eslint/eslint-plugin": 5.49.0 - "@typescript-eslint/parser": 5.49.0 - eslint: 8.36.0 - typescript: 4.9.4 - checksum: f6e34884b0b54ecd7fd484373ff67c0aad2d344c27c103f552fb871b123b3ad252973c1dd16ff1fc6e61dffd31a11f34342427554c65c69880596850133a1e56 - languageName: node - linkType: hard - -"@reach/observe-rect@npm:^1.1.0": - version: 1.2.0 - resolution: "@reach/observe-rect@npm:1.2.0" - checksum: 7dd903eeaad0e22c6d973bd26265d91eadba56ab5134701ceb3e85214db75339fae94aa7e8b88a65e8daa64bc7cf1b915d4ffcdfd324466b561dc6adc3c6e070 - languageName: node - linkType: hard - -"@react-aria/button@npm:3.7.0": - version: 3.7.0 - resolution: "@react-aria/button@npm:3.7.0" - dependencies: - "@react-aria/focus": ^3.11.0 - "@react-aria/interactions": ^3.14.0 - "@react-aria/utils": ^3.15.0 - "@react-stately/toggle": ^3.5.0 - "@react-types/button": ^3.7.1 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: cddf62f9163d51d1284f540650a8904f81c1172798f05936fb386db572bb185d5e08e16d44313c0965293632ac845b4f8feb229231791a43015857768c822de9 - languageName: node - linkType: hard - -"@react-aria/checkbox@npm:3.8.0": - version: 3.8.0 - resolution: "@react-aria/checkbox@npm:3.8.0" - dependencies: - "@react-aria/label": ^3.5.0 - "@react-aria/toggle": ^3.5.0 - "@react-aria/utils": ^3.15.0 - "@react-stately/checkbox": ^3.4.0 - "@react-stately/toggle": ^3.5.0 - "@react-types/checkbox": ^3.4.2 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 848e88d2fc7168dfda5e95c60b0e232a16cfc3a4ffca6db45449f3569e3562acfd7786ea676c2f6dc53b3da2b00d396eca71c757cbad9416d703c559bcbd847a - languageName: node - linkType: hard - -"@react-aria/combobox@npm:3.5.0": - version: 3.5.0 - resolution: "@react-aria/combobox@npm:3.5.0" - dependencies: - "@react-aria/i18n": ^3.7.0 - "@react-aria/interactions": ^3.14.0 - "@react-aria/listbox": ^3.8.0 - "@react-aria/live-announcer": ^3.2.0 - "@react-aria/menu": ^3.8.0 - "@react-aria/overlays": ^3.13.0 - "@react-aria/selection": ^3.13.0 - "@react-aria/textfield": ^3.9.0 - "@react-aria/utils": ^3.15.0 - "@react-stately/collections": ^3.6.0 - "@react-stately/combobox": ^3.4.0 - "@react-stately/layout": ^3.11.0 - "@react-types/button": ^3.7.1 - "@react-types/combobox": ^3.6.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5f0c0586eae1a341a7b5cf950035fc6c105662222d8ac873d02e4473a67f360d6b949784db790e85893dc15bc8d366f4d335b6c3e0acffe5628a856c591b0fba - languageName: node - linkType: hard - -"@react-aria/focus@npm:3.11.0, @react-aria/focus@npm:^3.11.0": - version: 3.11.0 - resolution: "@react-aria/focus@npm:3.11.0" - dependencies: - "@react-aria/interactions": ^3.14.0 - "@react-aria/utils": ^3.15.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - clsx: ^1.1.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: f734d7f8d10b5088257742090e9881cea3e634bdc547a9daf8b4afaf67d691ff61457a4d5abec5b4a2faab26cc142f444737286f821a6e8e5014195340708114 - languageName: node - linkType: hard - -"@react-aria/i18n@npm:^3.7.0": - version: 3.7.0 - resolution: "@react-aria/i18n@npm:3.7.0" - dependencies: - "@internationalized/date": ^3.1.0 - "@internationalized/message": ^3.1.0 - "@internationalized/number": ^3.2.0 - "@internationalized/string": ^3.1.0 - "@react-aria/ssr": ^3.5.0 - "@react-aria/utils": ^3.15.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: cdbfe335f66964b08111743b6e575a364f1cdac26c357ed134356448fd99d0e4810156992cca7e63de2d9abf536e879169586df88d0bb6491e31efd9f5ad6fc3 - languageName: node - linkType: hard - -"@react-aria/interactions@npm:3.14.0, @react-aria/interactions@npm:^3.14.0": - version: 3.14.0 - resolution: "@react-aria/interactions@npm:3.14.0" - dependencies: - "@react-aria/utils": ^3.15.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: d4e2dd2617bdaa60025a9f50e2c314b2a74c56dba40cc536b909b78bb1c1268a25c5593f28661c86b1d2d37a443878dcacf86a3d6d597abfe8afee258b103ed8 - languageName: node - linkType: hard - -"@react-aria/label@npm:^3.5.0": - version: 3.5.0 - resolution: "@react-aria/label@npm:3.5.0" - dependencies: - "@react-aria/utils": ^3.15.0 - "@react-types/label": ^3.7.2 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 598fd0ffb2ec42b9d778fb0152df656fc5c93df151ebd5462875170b592c8f548658c05c8d8bd676da6a98d764ee195a7f3323dc1e485d28963d5789cdf5307a - languageName: node - linkType: hard - -"@react-aria/listbox@npm:3.8.0": - version: 3.8.0 - resolution: "@react-aria/listbox@npm:3.8.0" - dependencies: - "@react-aria/focus": ^3.11.0 - "@react-aria/interactions": ^3.14.0 - "@react-aria/label": ^3.5.0 - "@react-aria/selection": ^3.13.0 - "@react-aria/utils": ^3.15.0 - "@react-stately/collections": ^3.6.0 - "@react-stately/list": ^3.7.0 - "@react-types/listbox": ^3.4.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 99b3ab140d024a8740545a76c04311d76e4403038b2b3fee7f89a180af9350a06a450796c88d8df012b9325d4234fd8dadbd9e8b821aeb0f83f67e7e71271cf7 - languageName: node - linkType: hard - -"@react-aria/listbox@npm:^3.8.0": - version: 3.8.1 - resolution: "@react-aria/listbox@npm:3.8.1" - dependencies: - "@react-aria/focus": ^3.11.0 - "@react-aria/interactions": ^3.14.0 - "@react-aria/label": ^3.5.0 - "@react-aria/selection": ^3.13.1 - "@react-aria/utils": ^3.15.0 - "@react-stately/collections": ^3.6.0 - "@react-stately/list": ^3.7.0 - "@react-types/listbox": ^3.4.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 7848de8a89384a6ab29fb37ed6ef05fa5d7e05861e8c6ecf1fda7979a9fa80edfa3b7c321c5b5e0e2bad944f50d65a7baf2b0f6f69193f4a540dd3038851bc22 - languageName: node - linkType: hard - -"@react-aria/live-announcer@npm:^3.2.0": - version: 3.2.0 - resolution: "@react-aria/live-announcer@npm:3.2.0" - dependencies: - "@swc/helpers": ^0.4.14 - checksum: 5d76e24ab71aa9b8abc6440cb2786ef1e862edbd4539944f987b0e9f1cfaa2d50d4baaed9f695266455c151b3e76d6ee341b2699f7e95872d9bbdf4ab4fdf31d - languageName: node - linkType: hard - -"@react-aria/menu@npm:^3.8.0": - version: 3.8.1 - resolution: "@react-aria/menu@npm:3.8.1" - dependencies: - "@react-aria/i18n": ^3.7.0 - "@react-aria/interactions": ^3.14.0 - "@react-aria/overlays": ^3.13.0 - "@react-aria/selection": ^3.13.1 - "@react-aria/utils": ^3.15.0 - "@react-stately/collections": ^3.6.0 - "@react-stately/menu": ^3.5.0 - "@react-stately/tree": ^3.5.0 - "@react-types/button": ^3.7.1 - "@react-types/menu": ^3.8.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 8a8155dcbb6b1bae31e575d528c9dece97b694862dd9080c7025c1f30dd4f02a087f53c6422769900e9c48af4c0682a863e7095d72930e7e8e3becc3a3271b95 - languageName: node - linkType: hard - -"@react-aria/overlays@npm:3.13.0, @react-aria/overlays@npm:^3.13.0": - version: 3.13.0 - resolution: "@react-aria/overlays@npm:3.13.0" - dependencies: - "@react-aria/focus": ^3.11.0 - "@react-aria/i18n": ^3.7.0 - "@react-aria/interactions": ^3.14.0 - "@react-aria/ssr": ^3.5.0 - "@react-aria/utils": ^3.15.0 - "@react-aria/visually-hidden": ^3.7.0 - "@react-stately/overlays": ^3.5.0 - "@react-types/button": ^3.7.1 - "@react-types/overlays": ^3.7.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5b88f3bc54da7b9adc773abe604049e9d63dabba527ad581a85a916b267c3fb68352aea55660c2aaf8f6a8a1002335cf6b805e261a0410f771d05913b0239d24 - languageName: node - linkType: hard - -"@react-aria/radio@npm:3.5.0": - version: 3.5.0 - resolution: "@react-aria/radio@npm:3.5.0" - dependencies: - "@react-aria/focus": ^3.11.0 - "@react-aria/i18n": ^3.7.0 - "@react-aria/interactions": ^3.14.0 - "@react-aria/label": ^3.5.0 - "@react-aria/utils": ^3.15.0 - "@react-stately/radio": ^3.7.0 - "@react-types/radio": ^3.4.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 165d185e078ddf6a3c2d74a8725bea69130bb31b48507df669019a13250e6881650374fdf7d7f9912f100c5e86fe288005d0557f4c93a7135b40d5d89ec246f6 - languageName: node - linkType: hard - -"@react-aria/select@npm:3.9.0": - version: 3.9.0 - resolution: "@react-aria/select@npm:3.9.0" - dependencies: - "@react-aria/i18n": ^3.7.0 - "@react-aria/interactions": ^3.14.0 - "@react-aria/label": ^3.5.0 - "@react-aria/listbox": ^3.8.0 - "@react-aria/menu": ^3.8.0 - "@react-aria/selection": ^3.13.0 - "@react-aria/utils": ^3.15.0 - "@react-aria/visually-hidden": ^3.7.0 - "@react-stately/select": ^3.4.0 - "@react-types/button": ^3.7.1 - "@react-types/select": ^3.7.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: de5e1d3c8508a909bed03ab99c76125f18224eff5571270237c2b7161b8d15ad8d2a379b52e433ee77d76aa3fbbe0130c18364cdd926c0c434d508fd69443667 - languageName: node - linkType: hard - -"@react-aria/selection@npm:^3.13.0, @react-aria/selection@npm:^3.13.1": - version: 3.13.1 - resolution: "@react-aria/selection@npm:3.13.1" - dependencies: - "@react-aria/focus": ^3.11.0 - "@react-aria/i18n": ^3.7.0 - "@react-aria/interactions": ^3.14.0 - "@react-aria/utils": ^3.15.0 - "@react-stately/collections": ^3.6.0 - "@react-stately/selection": ^3.12.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 240766af913c9b0f55782bb8ce4163ba993e626597999152ff2ccfcd852fc344d4eb3c7e71417b0eb18e430d2fec459c1ac30e5272905f1572427bfc01413cbb - languageName: node - linkType: hard - -"@react-aria/slider@npm:3.3.0": - version: 3.3.0 - resolution: "@react-aria/slider@npm:3.3.0" - dependencies: - "@react-aria/focus": ^3.11.0 - "@react-aria/i18n": ^3.7.0 - "@react-aria/interactions": ^3.14.0 - "@react-aria/label": ^3.5.0 - "@react-aria/utils": ^3.15.0 - "@react-stately/radio": ^3.7.0 - "@react-stately/slider": ^3.3.0 - "@react-types/radio": ^3.4.0 - "@react-types/shared": ^3.17.0 - "@react-types/slider": ^3.4.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 136493430c64f38f1147a6f94c4f3560f8b58adc0efce168190064c1c1ceb2b9a560194552b8315390183a33523b858589feb46a9e59424255df8d332ea78fa4 - languageName: node - linkType: hard - -"@react-aria/ssr@npm:^3.5.0": - version: 3.5.0 - resolution: "@react-aria/ssr@npm:3.5.0" - dependencies: - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 3287fe756ff458a3ce46ba0fabe2ede349bff0b232cce30aab0f50afa1c0ac7604809d229b8b19a62a5116cf12bc8099d2c9c72335126499c55c794dd3419dbd - languageName: node - linkType: hard - -"@react-aria/tabs@npm:3.4.0": - version: 3.4.0 - resolution: "@react-aria/tabs@npm:3.4.0" - dependencies: - "@react-aria/focus": ^3.11.0 - "@react-aria/i18n": ^3.7.0 - "@react-aria/interactions": ^3.14.0 - "@react-aria/selection": ^3.13.0 - "@react-aria/utils": ^3.15.0 - "@react-stately/list": ^3.7.0 - "@react-stately/tabs": ^3.3.0 - "@react-types/shared": ^3.17.0 - "@react-types/tabs": ^3.2.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 9e7c928660dc16766d7767d41d3b03f251decd65591ac0ed61a12599969e27ed6eb40cd8992b17b1fc7e438f7c285b688d8852fcbaa429630175fb4c39cd47c3 - languageName: node - linkType: hard - -"@react-aria/textfield@npm:^3.9.0": - version: 3.9.0 - resolution: "@react-aria/textfield@npm:3.9.0" - dependencies: - "@react-aria/focus": ^3.11.0 - "@react-aria/label": ^3.5.0 - "@react-aria/utils": ^3.15.0 - "@react-types/shared": ^3.17.0 - "@react-types/textfield": ^3.7.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: a46a20330c1d152eb45a669c01ee52bfe95af09b2d1714aa3c1e75f534926117406b42426c29902d0a7dde37ce70289c515b26731bc2de2b71d88daa5f972490 - languageName: node - linkType: hard - -"@react-aria/toggle@npm:^3.5.0": - version: 3.5.0 - resolution: "@react-aria/toggle@npm:3.5.0" - dependencies: - "@react-aria/focus": ^3.11.0 - "@react-aria/interactions": ^3.14.0 - "@react-aria/utils": ^3.15.0 - "@react-stately/toggle": ^3.5.0 - "@react-types/checkbox": ^3.4.2 - "@react-types/shared": ^3.17.0 - "@react-types/switch": ^3.3.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: ccf8ab5bd0e189ac50a42c00ff37bf73a48961d0a76eaa5f735c4f79ab6d597a7d1e9a08b0811b49437ae4181ea81ae5f58b9f7d1082fa9ba4071753830432d1 - languageName: node - linkType: hard - -"@react-aria/utils@npm:3.15.0, @react-aria/utils@npm:^3.15.0": - version: 3.15.0 - resolution: "@react-aria/utils@npm:3.15.0" - dependencies: - "@react-aria/ssr": ^3.5.0 - "@react-stately/utils": ^3.6.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - clsx: ^1.1.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 9d852b3a8ca492b5e8c733f6258437430d050950d4cbdb99ab221d1a076ebca2625d45384bfb7b651072adc93368462445061c83ceac079418c8deafca2b47c3 - languageName: node - linkType: hard - -"@react-aria/visually-hidden@npm:3.7.0, @react-aria/visually-hidden@npm:^3.7.0": - version: 3.7.0 - resolution: "@react-aria/visually-hidden@npm:3.7.0" - dependencies: - "@react-aria/interactions": ^3.14.0 - "@react-aria/utils": ^3.15.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - clsx: ^1.1.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: b0278501901e012018540488f0a4fba5dabe3e136aa6912016add3f7d2dd94bac91c477712cd5c4561b405b43bdaa8921742b5db59f8c68417a53c441874d5f0 - languageName: node - linkType: hard - -"@react-spring/animated@npm:~9.6.1": - version: 9.6.1 - resolution: "@react-spring/animated@npm:9.6.1" - dependencies: - "@react-spring/shared": ~9.6.1 - "@react-spring/types": ~9.6.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: fd8b3dbb1ad3195d510888bd7ea2e2790ea4505442b70b19b30c462c2b68f56c9d66febbb7e4fa32a21e31b03c423176f6257879be80b22c0286e56789547ee3 - languageName: node - linkType: hard - -"@react-spring/core@npm:~9.6.1": - version: 9.6.1 - resolution: "@react-spring/core@npm:9.6.1" - dependencies: - "@react-spring/animated": ~9.6.1 - "@react-spring/rafz": ~9.6.1 - "@react-spring/shared": ~9.6.1 - "@react-spring/types": ~9.6.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 7e0aaec8a6f68b3f2399533947cdbf1b2c4f94a6b01eb1d577516af7385cd302d775f1f3f10b838581edd70773d314ba066dbce0b63169b4cf2fd7791acc3d13 - languageName: node - linkType: hard - -"@react-spring/konva@npm:~9.6.1": - version: 9.6.1 - resolution: "@react-spring/konva@npm:9.6.1" - dependencies: - "@react-spring/animated": ~9.6.1 - "@react-spring/core": ~9.6.1 - "@react-spring/shared": ~9.6.1 - "@react-spring/types": ~9.6.1 - peerDependencies: - konva: ">=2.6" - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-konva: ^16.8.0 || ^17.0.0 - checksum: 6dce3db0183514495dd30825c0605f1eecb3fa4184a45d214cc81ccd48ec7eec6e54913fba54401cc7997d47da36b6bca9d49fc5bfc507159be6ea515144f883 - languageName: node - linkType: hard - -"@react-spring/native@npm:~9.6.1": - version: 9.6.1 - resolution: "@react-spring/native@npm:9.6.1" - dependencies: - "@react-spring/animated": ~9.6.1 - "@react-spring/core": ~9.6.1 - "@react-spring/shared": ~9.6.1 - "@react-spring/types": ~9.6.1 - peerDependencies: - react: ^16.8.0 || >=17.0.0 || >=18.0.0 - react-native: ">=0.58" - checksum: 11489382636b00d3c9f14e2c4c74da30d72129ed8accd4c21fce57fd813ffd13f088793f9d227c657ad04588f8c4cbefa800955c62e745cf59696d5539acc07a - languageName: node - linkType: hard - -"@react-spring/rafz@npm:~9.6.1": - version: 9.6.1 - resolution: "@react-spring/rafz@npm:9.6.1" - checksum: 3c8967b01ad29d212244a572193b465087104064b043e6bb303e4498e165f73bb8ef20d46af7bcdd351dc3370fb190fcee76a31d80a8b2c09cf04ef976e34556 - languageName: node - linkType: hard - -"@react-spring/shared@npm:~9.6.1": - version: 9.6.1 - resolution: "@react-spring/shared@npm:9.6.1" - dependencies: - "@react-spring/rafz": ~9.6.1 - "@react-spring/types": ~9.6.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 4e2c905a1804fe0402753ce50fc563faa87dec7b6dd348cc21800c213ce71d77db4e299cf1b9c47a8ee557220b62ee64ac934867c11881b1124b63f59eb4c9f3 - languageName: node - linkType: hard - -"@react-spring/three@npm:~9.6.1": - version: 9.6.1 - resolution: "@react-spring/three@npm:9.6.1" - dependencies: - "@react-spring/animated": ~9.6.1 - "@react-spring/core": ~9.6.1 - "@react-spring/shared": ~9.6.1 - "@react-spring/types": ~9.6.1 - peerDependencies: - "@react-three/fiber": ">=6.0" - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - three: ">=0.126" - checksum: 7d53e6673efd4dc063a475bbbfbac687c717695ffff0d03d3f7e4d8adaa39ebe0455d099337871f281ab5f2bab872886f782cf269722deb907b0446388a818b4 - languageName: node - linkType: hard - -"@react-spring/types@npm:~9.6.1": - version: 9.6.1 - resolution: "@react-spring/types@npm:9.6.1" - checksum: 803dc6c2d67773ee1e5d00d2feac291dad32cf4ca6a790554d6133dd4cd39aeb89b3beea4cc67f91c2d2e4bdbd1a995540dc7fee117138e207a105d255d39c1c - languageName: node - linkType: hard - -"@react-spring/web@npm:~9.6.1": - version: 9.6.1 - resolution: "@react-spring/web@npm:9.6.1" - dependencies: - "@react-spring/animated": ~9.6.1 - "@react-spring/core": ~9.6.1 - "@react-spring/shared": ~9.6.1 - "@react-spring/types": ~9.6.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 3c336a9d162136c0d1ec8adad31d8534d4309de46eea9fa50f735aa9ea0cd3350320654160ea1fc731ba06a3b4342c508d7b5b9035b7816ab0285f5e952dd118 - languageName: node - linkType: hard - -"@react-spring/zdog@npm:~9.6.1": - version: 9.6.1 - resolution: "@react-spring/zdog@npm:9.6.1" - dependencies: - "@react-spring/animated": ~9.6.1 - "@react-spring/core": ~9.6.1 - "@react-spring/shared": ~9.6.1 - "@react-spring/types": ~9.6.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-zdog: ">=1.0" - zdog: ">=1.0" - checksum: 269bd52bbc5dc5fa0cf1aa20c28d96668f2231aacc781ff762328185f70877bc4a867d9ad8f4a873c507df94832be25dc0047352621b1de1f85b345981bdf050 - languageName: node - linkType: hard - -"@react-stately/checkbox@npm:^3.4.0": - version: 3.4.0 - resolution: "@react-stately/checkbox@npm:3.4.0" - dependencies: - "@react-stately/toggle": ^3.5.0 - "@react-stately/utils": ^3.6.0 - "@react-types/checkbox": ^3.4.2 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 1886962262d63ae7bef433df75770ae19e2080c6165a0703d492351c286fd3b6fd8d8d91eec7bed45cd38d7453b66682c5479e3089b4c1f1e5e6895dcf5064cb - languageName: node - linkType: hard - -"@react-stately/collections@npm:3.6.0, @react-stately/collections@npm:^3.6.0": - version: 3.6.0 - resolution: "@react-stately/collections@npm:3.6.0" - dependencies: - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: e7fa7adbbfeb981c5723630a6cab4a79f4330efba02124ab339fdc850143d198334af446c37be73fed84ef7ae061214dcc8c1aa1efaf9e41789e80d835bf8e7a - languageName: node - linkType: hard - -"@react-stately/combobox@npm:3.4.0, @react-stately/combobox@npm:^3.4.0": - version: 3.4.0 - resolution: "@react-stately/combobox@npm:3.4.0" - dependencies: - "@react-stately/list": ^3.7.0 - "@react-stately/menu": ^3.5.0 - "@react-stately/select": ^3.4.0 - "@react-stately/utils": ^3.6.0 - "@react-types/combobox": ^3.6.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: a950546563598bd4ef574dbdccffe0e12818fa015680429556a8c01d9f69b04bc3c4e5059a606a69f548fb1b8a6061f031c03f9704506e69a5e2e6faaacd0220 - languageName: node - linkType: hard - -"@react-stately/grid@npm:^3.5.0": - version: 3.5.0 - resolution: "@react-stately/grid@npm:3.5.0" - dependencies: - "@react-stately/selection": ^3.12.0 - "@react-types/grid": ^3.1.6 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: f458e3d2232c803231e0baadf8c66f4e61eb4acec6d53fc103e489f7421226ff9281b841d9e40889484b8aa364169a9b6c89df7e43a7f091ce074c4bb6d7ea0f - languageName: node - linkType: hard - -"@react-stately/layout@npm:^3.11.0": - version: 3.11.0 - resolution: "@react-stately/layout@npm:3.11.0" - dependencies: - "@react-stately/table": ^3.8.0 - "@react-stately/virtualizer": ^3.5.0 - "@react-types/grid": ^3.1.6 - "@react-types/shared": ^3.17.0 - "@react-types/table": ^3.5.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 14545dbfbd079599ba4106bead2ae7f91ee22090b3a2dbc1df789e431190d8afef9957bc02bd4efceceb8c9b202abe32856b0a7fc2f303571496a6fec0acf6b7 - languageName: node - linkType: hard - -"@react-stately/list@npm:^3.7.0": - version: 3.7.0 - resolution: "@react-stately/list@npm:3.7.0" - dependencies: - "@react-stately/collections": ^3.6.0 - "@react-stately/selection": ^3.12.0 - "@react-stately/utils": ^3.6.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 3c893b0d6fdbf38719485c6e722f4836b4d6785ca50a092cf6406ec4fb6c5f094964b71eecb8abd2f7b796898172facdd04683d7860c9424e7283253d468961a - languageName: node - linkType: hard - -"@react-stately/menu@npm:^3.5.0": - version: 3.5.0 - resolution: "@react-stately/menu@npm:3.5.0" - dependencies: - "@react-stately/overlays": ^3.5.0 - "@react-stately/utils": ^3.6.0 - "@react-types/menu": ^3.8.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: e39ff40d7fcf2136adde097bfbf63ddbb31995f2e3b22a30eb0d1dcae5a482bb51db0ea7f927769b0deba49c9bbb962c26d3a8fe40d691b06ac7a2c8bdae9a4d - languageName: node - linkType: hard - -"@react-stately/overlays@npm:3.5.0, @react-stately/overlays@npm:^3.5.0": - version: 3.5.0 - resolution: "@react-stately/overlays@npm:3.5.0" - dependencies: - "@react-stately/utils": ^3.6.0 - "@react-types/overlays": ^3.7.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 7422e0e4f146bfef5c1a5386627008033e26e4ebcc857469009011a5d1d2440d7d74088b1e8fbb1fb23fbfdc129b745a9e9388b6ad6c8aefd3388f260c9a68f8 - languageName: node - linkType: hard - -"@react-stately/radio@npm:3.7.0, @react-stately/radio@npm:^3.7.0": - version: 3.7.0 - resolution: "@react-stately/radio@npm:3.7.0" - dependencies: - "@react-stately/utils": ^3.6.0 - "@react-types/radio": ^3.4.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 91eea7a9ee6f2660ffcae161c6d1397442702afd7048a54444c8c7b2fbd2f89898af6ba4ee94c9313aca72d87ecf2eec666e086e7c9be317fbcffe3110890b81 - languageName: node - linkType: hard - -"@react-stately/select@npm:^3.4.0": - version: 3.4.0 - resolution: "@react-stately/select@npm:3.4.0" - dependencies: - "@react-stately/collections": ^3.6.0 - "@react-stately/list": ^3.7.0 - "@react-stately/menu": ^3.5.0 - "@react-stately/selection": ^3.12.0 - "@react-stately/utils": ^3.6.0 - "@react-types/select": ^3.7.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 6a4c71d780779a63180ee5cee5d8bf7a04f8d63bbbbe82996bbd415a6ca002f2f62a5a36aade77106554e3385b09391512042662df16eafcbd61fadfe2f4b839 - languageName: node - linkType: hard - -"@react-stately/selection@npm:^3.12.0": - version: 3.12.0 - resolution: "@react-stately/selection@npm:3.12.0" - dependencies: - "@react-stately/collections": ^3.6.0 - "@react-stately/utils": ^3.6.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 9a71f78b4f5e105602120e6682b3cf3aad467a3d85010bafa08cbfc7d0ba34bc7d77cff8e1f165f46083aecfb897308b130a4dad7512fb8c83823283813b80c7 - languageName: node - linkType: hard - -"@react-stately/slider@npm:3.3.0, @react-stately/slider@npm:^3.3.0": - version: 3.3.0 - resolution: "@react-stately/slider@npm:3.3.0" - dependencies: - "@react-aria/i18n": ^3.7.0 - "@react-aria/utils": ^3.15.0 - "@react-stately/utils": ^3.6.0 - "@react-types/shared": ^3.17.0 - "@react-types/slider": ^3.4.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 07f4c7e367cc5f1a017c5acb84fef11e6468528289c58003a9629c9c2a12b31d1800b766b46729fcfa9ad6d428b931ea05231f2782f3b357f873b5a6df158bed - languageName: node - linkType: hard - -"@react-stately/table@npm:^3.8.0": - version: 3.8.0 - resolution: "@react-stately/table@npm:3.8.0" - dependencies: - "@react-stately/collections": ^3.6.0 - "@react-stately/grid": ^3.5.0 - "@react-stately/selection": ^3.12.0 - "@react-types/grid": ^3.1.6 - "@react-types/shared": ^3.17.0 - "@react-types/table": ^3.5.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 6032c40065f8bd44fe69219ce6d0dc970ec43f3a1393ad22645ce2bfb2ca63f5ca904e3b27baf2a28907e886e63931ae368c84c7587a221693491b30265cd924 - languageName: node - linkType: hard - -"@react-stately/tabs@npm:3.3.0, @react-stately/tabs@npm:^3.3.0": - version: 3.3.0 - resolution: "@react-stately/tabs@npm:3.3.0" - dependencies: - "@react-stately/list": ^3.7.0 - "@react-stately/utils": ^3.6.0 - "@react-types/tabs": ^3.2.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: a66bd3101831decec4c2d63dcb0b026fdfa899b9ff91c2b50aecc5711c88d0c4e4aaf687847da364b4af9b6a82748f19979459b8354cadc06b5f0d6897e2e989 - languageName: node - linkType: hard - -"@react-stately/toggle@npm:3.5.0, @react-stately/toggle@npm:^3.5.0": - version: 3.5.0 - resolution: "@react-stately/toggle@npm:3.5.0" - dependencies: - "@react-stately/utils": ^3.6.0 - "@react-types/checkbox": ^3.4.2 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 3cc5d150c0effc216f6b56a17a05917affbb7f374239053e69d42117c13d488a6939469d14d7c4a4fd2422416c5ae0b9147e454e8717ab1b3b95196c7eb0c79d - languageName: node - linkType: hard - -"@react-stately/tree@npm:^3.5.0": - version: 3.5.0 - resolution: "@react-stately/tree@npm:3.5.0" - dependencies: - "@react-stately/collections": ^3.6.0 - "@react-stately/selection": ^3.12.0 - "@react-stately/utils": ^3.6.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: cc22dce2314104802b42f76c287165f1b7c5e69c6f45876027d7f58d43039c8126b2d58cbec6942ed27990d51a58962027166959348f9467d869d97e6f937ad1 - languageName: node - linkType: hard - -"@react-stately/utils@npm:^3.6.0": - version: 3.6.0 - resolution: "@react-stately/utils@npm:3.6.0" - dependencies: - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: d2ff4cfed5555b112ad71b9bc1837abd777d8fa225043c476b7c9417f8b21a0bcddad0d7127e0acdbf4d85dc9a260c9ae97722b4e9507e6243b412c2724c5f54 - languageName: node - linkType: hard - -"@react-stately/virtualizer@npm:^3.5.0": - version: 3.5.0 - resolution: "@react-stately/virtualizer@npm:3.5.0" - dependencies: - "@react-aria/utils": ^3.15.0 - "@react-types/shared": ^3.17.0 - "@swc/helpers": ^0.4.14 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: df5bb6658f8b43b1d5166f3f4f9d6317b403dee142a291601be57553be9fa38d0182275f2cac0fe779d8ff3203030b02a26da9cf287bd9bd296c9d7f16146578 - languageName: node - linkType: hard - -"@react-types/button@npm:^3.7.1": - version: 3.7.1 - resolution: "@react-types/button@npm:3.7.1" - dependencies: - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 4002e7af86a2673e0d1855ccadda4afd13579b5c3a71cf423465d4f5c2f26270d9ca4ce831a0ae23b503c59c8e3ee21c7f8a792a26abba381a7662b945f43cc3 - languageName: node - linkType: hard - -"@react-types/checkbox@npm:^3.4.2": - version: 3.4.2 - resolution: "@react-types/checkbox@npm:3.4.2" - dependencies: - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: c34eceb3fe16e5722b2847e9db1d6a921acb8a5e7a924a6b494f692894a3dcca2bd242ae395d4fe43b1de6c6f3dd9a3450c9894d05ea5b38342bee6ad098fcf8 - languageName: node - linkType: hard - -"@react-types/combobox@npm:^3.6.0": - version: 3.6.0 - resolution: "@react-types/combobox@npm:3.6.0" - dependencies: - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: aee7bffcae621d99a04464670971e116e2b3e3ddb510c6ffdfa2b923d075e4a2b7b80fde4bf5d2670861eb7d9744b0e7d83dee0063027af8a601617a7d378969 - languageName: node - linkType: hard - -"@react-types/grid@npm:^3.1.6": - version: 3.1.6 - resolution: "@react-types/grid@npm:3.1.6" - dependencies: - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: d88c4fa8a08c9c66514e8291de328ef02a306d27fa48b6a20537cda5e212f2bca1a00d11cdf54091c452f25dbda968b0c8d2d0f158926b68cc4cf4e8b6e6518c - languageName: node - linkType: hard - -"@react-types/label@npm:^3.7.2": - version: 3.7.2 - resolution: "@react-types/label@npm:3.7.2" - dependencies: - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5053a575933033e78b4cbfbeca08fb3052e81c0e2b50811677bda2e9d3188f16dc9b0381d21d49cf3ce7b7b3d6518d0d7658fc23c9498b02be60b22ef0a0d9b5 - languageName: node - linkType: hard - -"@react-types/listbox@npm:^3.4.0": - version: 3.4.0 - resolution: "@react-types/listbox@npm:3.4.0" - dependencies: - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: b5bb085f48c16e132b87cdc5840198f6c65afbb21c2f3dfb45d511181502f1388d7b0569a8ec2a5d04eaba5d972dd2210bb1ba8b2c2b97a91b65e19548869ddd - languageName: node - linkType: hard - -"@react-types/menu@npm:^3.8.0": - version: 3.8.0 - resolution: "@react-types/menu@npm:3.8.0" - dependencies: - "@react-types/overlays": ^3.7.0 - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 0ad6b69cc4ebda76f7a056f01913544d0904d53e6722f909234bcc42af3081d22ee9fec632692024acae910e5d7f2f200868022130983c548482c4b7100df133 - languageName: node - linkType: hard - -"@react-types/overlays@npm:^3.7.0": - version: 3.7.0 - resolution: "@react-types/overlays@npm:3.7.0" - dependencies: - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: eff974d34a0372000924340f8ee3fecbb09060d4c903db95eb6033d382f5957253be403e6b205259f230af80e1d2f42d5f9eb77f115f991c1efda50336c249de - languageName: node - linkType: hard - -"@react-types/radio@npm:^3.4.0": - version: 3.4.0 - resolution: "@react-types/radio@npm:3.4.0" - dependencies: - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: efec133f004b3fbf0d551f9a842e2279d71c3bc3faacddbf997188c7bc88bf980efbcdb0ca883bc145f85024b0e64a5f3997cbcf4f88c6efd29b36bc49efa4f4 - languageName: node - linkType: hard - -"@react-types/select@npm:^3.7.0": - version: 3.7.0 - resolution: "@react-types/select@npm:3.7.0" - dependencies: - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: bc721d66fa472357a0566c51e66b0deebaad07b3403fda316fe9848c204c620f7b35c9d03a3330b2d610d8f607829bcc22b241e55ff4be92a0b6f1ea8cd708e1 - languageName: node - linkType: hard - -"@react-types/shared@npm:3.17.0, @react-types/shared@npm:^3.17.0": - version: 3.17.0 - resolution: "@react-types/shared@npm:3.17.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 004fc58ab0d3d64a84ce5a98e7e201b88bbb64f8b4a8309d50be30fe6172d0f172f00c666074aa96f13bbbfbced8b986901ad6b35b6d2d32d8dc25e251fcdb31 - languageName: node - linkType: hard - -"@react-types/slider@npm:^3.4.0": - version: 3.4.0 - resolution: "@react-types/slider@npm:3.4.0" - dependencies: - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: df6bc5b3713984d8f8416ad4f4f7e86388e72cb1a40b1d860dcf23bc52787e3044690b29ee3633510b85471b8336be8f0b7b7a4b2bc16128078865779bbdf521 - languageName: node - linkType: hard - -"@react-types/switch@npm:^3.3.0": - version: 3.3.0 - resolution: "@react-types/switch@npm:3.3.0" - dependencies: - "@react-types/checkbox": ^3.4.2 - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: f310ab1488704f6caabc1c5f958b9ce0b0df4cbf164e061119aff7a41af540f9b83f9013b848f8966665607d41fbe66e2d45271ab3c5e6da64fb252ab22fca90 - languageName: node - linkType: hard - -"@react-types/table@npm:^3.5.0": - version: 3.5.0 - resolution: "@react-types/table@npm:3.5.0" - dependencies: - "@react-types/grid": ^3.1.6 - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: c1e22f3f7ab41f9800b1ed205101a895ac599ba5d34159668837bf097e5856e68b8754e555e7ef4daf3bd2168069d8ef54978b4dc631d589fc5bef92fcc0e5c6 - languageName: node - linkType: hard - -"@react-types/tabs@npm:^3.2.0": - version: 3.2.0 - resolution: "@react-types/tabs@npm:3.2.0" - dependencies: - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5162e0e864e73cc149b214561da1e708ecbf171815db0bfefac77f8eb279d5a5e2ab0ef9a86f339bc98082542a55fec72122d1b1e90a6fde2c60e0c107104803 - languageName: node - linkType: hard - -"@react-types/textfield@npm:^3.7.0": - version: 3.7.0 - resolution: "@react-types/textfield@npm:3.7.0" - dependencies: - "@react-types/shared": ^3.17.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: b6e72d2c971be528ba0c3e8cfb4f0937104e1413a372455399ed27ce42dbe89ffc5f8689a6a778b8cc049e8b020c8e94e2bda07101a238f4b6bf3b34c34fa774 - languageName: node - linkType: hard - -"@remix-run/router@npm:1.4.0": - version: 1.4.0 - resolution: "@remix-run/router@npm:1.4.0" - checksum: 707dce35a2b8138005cf19e63f6fd3c4da05b4b892e9e9118e8b727c3b95953efe27307ca2df35084044df30fa1fc367cf0bbc98d1ded9020c82e61e6242caaf - languageName: node - linkType: hard - -"@repeaterjs/repeater@npm:3.0.4, @repeaterjs/repeater@npm:^3.0.4": - version: 3.0.4 - resolution: "@repeaterjs/repeater@npm:3.0.4" - checksum: cca0db3e802bc26fcce0b4a574074d9956da53bf43094de03c0e4732d05e13441279a92f0b96e2a7a39da50933684947a138c1213406eaafe39cfd4683d6c0df - languageName: node - linkType: hard - -"@swc/helpers@npm:^0.4.14": - version: 0.4.14 - resolution: "@swc/helpers@npm:0.4.14" - dependencies: - tslib: ^2.4.0 - checksum: 273fd3f3fc461a92f3790cc551ea054745c6d6959afbe1232e6d7aa1c722bbc114d308aab96bef5c78fc0303c85c7b472ef00e2253251cc89737f3b1af56e5a5 - languageName: node - linkType: hard - -"@tanstack/match-sorter-utils@npm:8.7.6": - version: 8.7.6 - resolution: "@tanstack/match-sorter-utils@npm:8.7.6" - dependencies: - remove-accents: 0.4.2 - checksum: 3f3dda277e6e55ca1224a28b38a2deb3ac912c2f2f5263a32fa0d9126c6b6d05feb475539729fd248f1eb88b612109db90b847ec8fdfc05d0f4073c900a2d3f6 - languageName: node - linkType: hard - -"@tanstack/react-table@npm:8.7.9": - version: 8.7.9 - resolution: "@tanstack/react-table@npm:8.7.9" - dependencies: - "@tanstack/table-core": 8.7.9 - peerDependencies: - react: ">=16" - react-dom: ">=16" - checksum: 3c704ac903405972641c9857e1466025bcdac04ee4890d64b018386cad5a778aca3a8d3f78542ae7a0ed609841d32ef3a7e563b079e87fa93b9ae8570a310499 - languageName: node - linkType: hard - -"@tanstack/react-virtual@npm:3.0.0-beta.48": - version: 3.0.0-beta.48 - resolution: "@tanstack/react-virtual@npm:3.0.0-beta.48" - dependencies: - "@tanstack/virtual-core": 3.0.0-beta.48 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 3c0d75570b2b316edbf4f658f7fc398a63467d305cd3b69450febd9ab470b65f00948561c9e8f315a6756564c5164e51ff276f1d2e76c196c7a6110ef115afea - languageName: node - linkType: hard - -"@tanstack/table-core@npm:8.7.9": - version: 8.7.9 - resolution: "@tanstack/table-core@npm:8.7.9" - checksum: 78d2314928c29559088e4bada0248cc7f94e93756e1a2c1f37a651db30276e9ae960d647bd3a61b67b3f0f9f7e4dec5dd58eb49b8adb80ee5952ef417b6e581f - languageName: node - linkType: hard - -"@tanstack/virtual-core@npm:3.0.0-beta.48": - version: 3.0.0-beta.48 - resolution: "@tanstack/virtual-core@npm:3.0.0-beta.48" - checksum: 2bc41ad00aaeb7c07ec1ba5987e795aacef01e1bc32ca75c65f3357aa2b202bfd0aece73b4eb79241d0166ee19956e99e3789ee0edbb55cafb2714adde9b07c2 - languageName: node - linkType: hard - -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: ad87447820dd3f24825d2d947ebc03072b20a42bfc96cbafec16bff8bbda6c1a81fcb0be56d5b21968560c5359a0af4038a68ba150c3e1694fe4c109a063bed8 - languageName: node - linkType: hard - -"@types/absinthe__socket-apollo-link@npm:0.2.1": - version: 0.2.1 - resolution: "@types/absinthe__socket-apollo-link@npm:0.2.1" - dependencies: - "@types/absinthe__socket": "*" - apollo-link: ">=1.2.5" - apollo-link-http-common: ^0.2.4 - graphql: ^14.5.3 - checksum: 56b8df10e6a3a5110226b572ef7fa41ad68a6b09dcf658a7cf7dde5bd4bbecbaa1e2970891d2427d243c384a0cb5da72e79a40e06afdb50a0ee8ca2c82d78d96 - languageName: node - linkType: hard - -"@types/absinthe__socket@npm:*, @types/absinthe__socket@npm:0.2.3": - version: 0.2.3 - resolution: "@types/absinthe__socket@npm:0.2.3" - dependencies: - "@types/phoenix": "*" - checksum: 6c4855ab1eb31af58a788205b7cc52743e800abc3fce5437abd935c333785ad31b343d4e355f9b59bd4843a3164f41c4775f5a75918366fff54eff2ff72bca36 - languageName: node - linkType: hard - -"@types/chroma-js@npm:2.1.5": - version: 2.1.5 - resolution: "@types/chroma-js@npm:2.1.5" - checksum: 7cc7ba5d024f9048f11cf045b6f0a2d7025ecd930e89867cbcc35b4f668ebb0fbaf4231de418d3c447bf21b71fa25cce1b3c8d17d3d3de4ddbe38f66d469f106 - languageName: node - linkType: hard - -"@types/debug@npm:^4.0.0": - version: 4.1.7 - resolution: "@types/debug@npm:4.1.7" - dependencies: - "@types/ms": "*" - checksum: 0a7b89d8ed72526858f0b61c6fd81f477853e8c4415bb97f48b1b5545248d2ae389931680b94b393b993a7cfe893537a200647d93defe6d87159b96812305adc - languageName: node - linkType: hard - -"@types/hast@npm:^2.0.0": - version: 2.3.4 - resolution: "@types/hast@npm:2.3.4" - dependencies: - "@types/unist": "*" - checksum: fff47998f4c11e21a7454b58673f70478740ecdafd95aaf50b70a3daa7da9cdc57315545bf9c039613732c40b7b0e9e49d11d03fe9a4304721cdc3b29a88141e - languageName: node - linkType: hard - -"@types/hoist-non-react-statics@npm:*": - version: 3.3.1 - resolution: "@types/hoist-non-react-statics@npm:3.3.1" - dependencies: - "@types/react": "*" - hoist-non-react-statics: ^3.3.0 - checksum: 2c0778570d9a01d05afabc781b32163f28409bb98f7245c38d5eaf082416fdb73034003f5825eb5e21313044e8d2d9e1f3fe2831e345d3d1b1d20bcd12270719 - languageName: node - linkType: hard - -"@types/js-yaml@npm:^4.0.0": - version: 4.0.5 - resolution: "@types/js-yaml@npm:4.0.5" - checksum: 7dcac8c50fec31643cc9d6444b5503239a861414cdfaa7ae9a38bc22597c4d850c4b8cec3d82d73b3fbca408348ce223b0408d598b32e094470dfffc6d486b4d - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d - languageName: node - linkType: hard - -"@types/json-stable-stringify@npm:^1.0.32": - version: 1.0.34 - resolution: "@types/json-stable-stringify@npm:1.0.34" - checksum: 45767ecef0f6aae5680c3be6488d5c493f16046e34f182d7e6a2c69a667aab035799752c6f03017c883b134ad3f80e3f78d7e7da81a9c1f3d01676126baf5d0e - languageName: node - linkType: hard - -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: e60b153664572116dfea673c5bda7778dbff150498f44f998e34b5886d8afc47f16799280e4b6e241c0472aef1bc36add771c569c68fc5125fc2ae519a3eb9ac - languageName: node - linkType: hard - -"@types/mdast@npm:^3.0.0": - version: 3.0.11 - resolution: "@types/mdast@npm:3.0.11" - dependencies: - "@types/unist": "*" - checksum: 3b04cf465535553b47a1811c247668bd6cfeb54d99a2c9dbb82ccd0f5145d271d10c3169f929701d8cd55fd569f0d2e459a50845813ba3261f1fb0395a288cea - languageName: node - linkType: hard - -"@types/ms@npm:*": - version: 0.7.31 - resolution: "@types/ms@npm:0.7.31" - checksum: daadd354aedde024cce6f5aa873fefe7b71b22cd0e28632a69e8b677aeb48ae8caa1c60e5919bb781df040d116b01cb4316335167a3fc0ef6a63fa3614c0f6da - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 18.15.10 - resolution: "@types/node@npm:18.15.10" - checksum: 9aeae0b683eda82892def5315812bdee3f1a28c4898b7e70f8e2514564538b16c4dccbe8339c1266f8fc1d707a48f152689264a854f5ebc2eba5011e793612d9 - languageName: node - linkType: hard - -"@types/node@npm:18.15.5": - version: 18.15.5 - resolution: "@types/node@npm:18.15.5" - checksum: 5fbf3453bd5ce1402bb2964e55d928fc8a8a7de5451b1b0fe66587fecb8a3eb86854ca9cefa5076a5971e2cff00e1773ceeb5d872a54f6c6ddfbbc1064b4e91a - languageName: node - linkType: hard - -"@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: fd6bce2b674b6efc3db4c7c3d336bd70c90838e8439de639b909ce22f3720d21344f52427f1d9e57b265fcb7f6c018699b99e5e0c208a1a4823014269a6bf35b - languageName: node - linkType: hard - -"@types/parse5@npm:^6.0.0": - version: 6.0.3 - resolution: "@types/parse5@npm:6.0.3" - checksum: ddb59ee4144af5dfcc508a8dcf32f37879d11e12559561e65788756b95b33e6f03ea027d88e1f5408f9b7bfb656bf630ace31a2169edf44151daaf8dd58df1b7 - languageName: node - linkType: hard - -"@types/phoenix@npm:*, @types/phoenix@npm:1.5.5": - version: 1.5.5 - resolution: "@types/phoenix@npm:1.5.5" - checksum: 2dfb59c51c3f4b79ba9422f4f778695adc45a5ed55450b59e882da86835d4489483b3cb5a372bab1506b98a46c7830b1dda4bbdbb83c6787b619065d7eb99816 - languageName: node - linkType: hard - -"@types/prop-types@npm:*, @types/prop-types@npm:^15.0.0": - version: 15.7.5 - resolution: "@types/prop-types@npm:15.7.5" - checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 - languageName: node - linkType: hard - -"@types/react-dom@npm:18.0.11": - version: 18.0.11 - resolution: "@types/react-dom@npm:18.0.11" - dependencies: - "@types/react": "*" - checksum: 579691e4d5ec09688087568037c35edf8cfb1ab3e07f6c60029280733ee7b5c06d66df6fcc90786702c93ac8cb13bc7ff16c79ddfc75d082938fbaa36e1cdbf4 - languageName: node - linkType: hard - -"@types/react@npm:*, @types/react@npm:18.0.28": - version: 18.0.28 - resolution: "@types/react@npm:18.0.28" - dependencies: - "@types/prop-types": "*" - "@types/scheduler": "*" - csstype: ^3.0.2 - checksum: e752df961105e5127652460504785897ca6e77259e0da8f233f694f9e8f451cde7fa0709d4456ade0ff600c8ce909cfe29f9b08b9c247fa9b734e126ec53edd7 - languageName: node - linkType: hard - -"@types/scheduler@npm:*": - version: 0.16.2 - resolution: "@types/scheduler@npm:0.16.2" - checksum: b6b4dcfeae6deba2e06a70941860fb1435730576d3689225a421280b7742318d1548b3d22c1f66ab68e414f346a9542f29240bc955b6332c5b11e561077583bc - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.12": - version: 7.3.13 - resolution: "@types/semver@npm:7.3.13" - checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0 - languageName: node - linkType: hard - -"@types/styled-components@npm:5.1.26": - version: 5.1.26 - resolution: "@types/styled-components@npm:5.1.26" - dependencies: - "@types/hoist-non-react-statics": "*" - "@types/react": "*" - csstype: ^3.0.2 - checksum: 84f53b3101739b20d1731554fb7735bc2f3f5d050a8b392e9845403c8c8bbd729737d033978649f9195a97b557875b010d46e35a4538564a2d0dbcce661dbf76 - languageName: node - linkType: hard - -"@types/unist@npm:*, @types/unist@npm:^2.0.0": - version: 2.0.6 - resolution: "@types/unist@npm:2.0.6" - checksum: 25cb860ff10dde48b54622d58b23e66214211a61c84c0f15f88d38b61aa1b53d4d46e42b557924a93178c501c166aa37e28d7f6d994aba13d24685326272d5db - languageName: node - linkType: hard - -"@types/ws@npm:^8.0.0": - version: 8.5.4 - resolution: "@types/ws@npm:8.5.4" - dependencies: - "@types/node": "*" - checksum: fefbad20d211929bb996285c4e6f699b12192548afedbe4930ab4384f8a94577c9cd421acaad163cacd36b88649509970a05a0b8f20615b30c501ed5269038d1 - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:5.49.0": - version: 5.49.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.49.0" - dependencies: - "@typescript-eslint/scope-manager": 5.49.0 - "@typescript-eslint/type-utils": 5.49.0 - "@typescript-eslint/utils": 5.49.0 - debug: ^4.3.4 - ignore: ^5.2.0 - natural-compare-lite: ^1.4.0 - regexpp: ^3.2.0 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependencies: - "@typescript-eslint/parser": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 15423cd9fde1ac3f8ba34526a07e537464e70463f1af784be5567fdc78e5745352fa0a2c3be0c13d066bc4b9720b5fa438d64647f624d29722eb4f158c039dcc - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.56.0" - dependencies: - "@eslint-community/regexpp": ^4.4.0 - "@typescript-eslint/scope-manager": 5.56.0 - "@typescript-eslint/type-utils": 5.56.0 - "@typescript-eslint/utils": 5.56.0 - debug: ^4.3.4 - grapheme-splitter: ^1.0.4 - ignore: ^5.2.0 - natural-compare-lite: ^1.4.0 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependencies: - "@typescript-eslint/parser": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 2eed4a4ed8279950ad553252e8623e947ffdee39b0d677a13f6e4e2d863ea1cbc5d683ff189e55d0de6fd5a25afd72d3c3a9ab7ae417d5405a21ead907e1b154 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:5.49.0": - version: 5.49.0 - resolution: "@typescript-eslint/parser@npm:5.49.0" - dependencies: - "@typescript-eslint/scope-manager": 5.49.0 - "@typescript-eslint/types": 5.49.0 - "@typescript-eslint/typescript-estree": 5.49.0 - debug: ^4.3.4 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 87b3760cfc29b3edd3d28fe0d5e9e5a3833d60398d7779ecc657b9e3bfec624cd464176e26b24b0761fb79cc88daddae19560340f91119c4856b91f9663594dd - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.49.0": - version: 5.49.0 - resolution: "@typescript-eslint/scope-manager@npm:5.49.0" - dependencies: - "@typescript-eslint/types": 5.49.0 - "@typescript-eslint/visitor-keys": 5.49.0 - checksum: 466047e24ff8a4195f14aadde39375f22891bdaced09e58c89f2c32af0aa4a0d87e71a5f006f6ab76858e6f30c4b764b1e0ef7bc26713bb78add30638108c45f - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/scope-manager@npm:5.56.0" - dependencies: - "@typescript-eslint/types": 5.56.0 - "@typescript-eslint/visitor-keys": 5.56.0 - checksum: bacac255ee52148cee6622be2811c0d7e25419058b89f1a11f4c1303faef4535a0a1237549f9556ec1d7a297c640ce4357183a1a8465d72e1393b7d8fb43874b - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:5.49.0": - version: 5.49.0 - resolution: "@typescript-eslint/type-utils@npm:5.49.0" - dependencies: - "@typescript-eslint/typescript-estree": 5.49.0 - "@typescript-eslint/utils": 5.49.0 - debug: ^4.3.4 - tsutils: ^3.21.0 - peerDependencies: - eslint: "*" - peerDependenciesMeta: - typescript: - optional: true - checksum: 9dcee0a21cfdb3549e2305120535af5ab2c5d0cafdd410827e79d7548f8fc4e7da7cbb77a4338ade8b8b8aaf246fee56b919f1857931bbe2ac5df2fbb5e62ee6 - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/type-utils@npm:5.56.0" - dependencies: - "@typescript-eslint/typescript-estree": 5.56.0 - "@typescript-eslint/utils": 5.56.0 - debug: ^4.3.4 - tsutils: ^3.21.0 - peerDependencies: - eslint: "*" - peerDependenciesMeta: - typescript: - optional: true - checksum: 3dd1fcfadad18790b900a3d90f6617904adb6b0e2bd1e1edb6ebf239e1399865ca9098647405385feb4252d8b2b4577883e6fd3ef8d00bdd521d6070972d486b - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.49.0": - version: 5.49.0 - resolution: "@typescript-eslint/types@npm:5.49.0" - checksum: 41f72a043007fc3f3356b5a38d7bfa54871545b4a309810a062f044cff25122413a9660ce6d83d1221762f60d067351d020b0cb68f7e1279817f53e77ce8f33d - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/types@npm:5.56.0" - checksum: 82ca11553bbb1bbfcaf7e7760b03c0d898940238dc002552c21af3e58f7d482c64c3c6cf0666521aff2a1e7b4b58bb6e4d9a00b1e4998a16b5039f5d288d003a - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:5.49.0": - version: 5.49.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.49.0" - dependencies: - "@typescript-eslint/types": 5.49.0 - "@typescript-eslint/visitor-keys": 5.49.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: f331af9f0ef3ce3157c421b8cc727dec5aa0a60add305aa4c676a02c63ec07799105268af192c5ed193a682b7ed804564d29d49bdbd2019678e495d80e65e29a - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.56.0" - dependencies: - "@typescript-eslint/types": 5.56.0 - "@typescript-eslint/visitor-keys": 5.56.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - semver: ^7.3.7 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: ec3e85201786aa9adddba7cb834a9f330a7f55c729ee9ccf847dbdc2f7437b760f3774152ccad6d0aa48d13fd78df766c880e3a7ca42e01a20aba0e1a1ed61c5 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.49.0": - version: 5.49.0 - resolution: "@typescript-eslint/utils@npm:5.49.0" - dependencies: - "@types/json-schema": ^7.0.9 - "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.49.0 - "@typescript-eslint/types": 5.49.0 - "@typescript-eslint/typescript-estree": 5.49.0 - eslint-scope: ^5.1.1 - eslint-utils: ^3.0.0 - semver: ^7.3.7 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 8218c566637d5104dfb2346216f8cb4c244f31c2a39e261aafe554b8abd48bd630a0d0807a0a8d776af8f9d9914c8776d86abf0a523049f3c5619c498a7e5b1e - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/utils@npm:5.56.0" - dependencies: - "@eslint-community/eslint-utils": ^4.2.0 - "@types/json-schema": ^7.0.9 - "@types/semver": ^7.3.12 - "@typescript-eslint/scope-manager": 5.56.0 - "@typescript-eslint/types": 5.56.0 - "@typescript-eslint/typescript-estree": 5.56.0 - eslint-scope: ^5.1.1 - semver: ^7.3.7 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 413e8d4bf7023ee5ba4f695b62e796a1f94930bb92fe5aa0cee58f63b9837116c23f618825a9c671f610e50f5630188b6059b4ed6b05a2a3336f01d8e977becb - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.49.0": - version: 5.49.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.49.0" - dependencies: - "@typescript-eslint/types": 5.49.0 - eslint-visitor-keys: ^3.3.0 - checksum: 46dc7bc713e8825d1fccba521fdf7c6e2f8829e491c2afd44dbe4105c6432e3c3dfe7e1ecb221401269d639264bb4af77b60a7b65521fcff9ab02cd31d8ef782 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.56.0": - version: 5.56.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.56.0" - dependencies: - "@typescript-eslint/types": 5.56.0 - eslint-visitor-keys: ^3.3.0 - checksum: 568fda40134e153d7befb59b55698f7919ba780d2d3431d8745feabf2e0fbb8aa7a02173b3c467dd20a0f6594e5248a1f82bb25d6c37827716d77452e86cad29 - languageName: node - linkType: hard - -"@vitejs/plugin-react@npm:3.1.0": - version: 3.1.0 - resolution: "@vitejs/plugin-react@npm:3.1.0" - dependencies: - "@babel/core": ^7.20.12 - "@babel/plugin-transform-react-jsx-self": ^7.18.6 - "@babel/plugin-transform-react-jsx-source": ^7.19.6 - magic-string: ^0.27.0 - react-refresh: ^0.14.0 - peerDependencies: - vite: ^4.1.0-beta.0 - checksum: 450fac79e67cba9e1581c860f78e687b44108ab4117663ef20db279316e03cd8e87f94fef376e27cc5e200bd52813dcc09b70ea570c7c7cc291fcd47eb260fbc - languageName: node - linkType: hard - -"@whatwg-node/events@npm:^0.0.2": - version: 0.0.2 - resolution: "@whatwg-node/events@npm:0.0.2" - checksum: 6d491801d36967d5d62443cca6ef39d41cf882d575839d2e9d1a5f394722cd24ef84fe9e897bb72c01bd198871fda9ff0e8b1ac5aa6f3f814f87d92b7f28fdcc - languageName: node - linkType: hard - -"@whatwg-node/fetch@npm:^0.8.0, @whatwg-node/fetch@npm:^0.8.1": - version: 0.8.4 - resolution: "@whatwg-node/fetch@npm:0.8.4" - dependencies: - "@peculiar/webcrypto": ^1.4.0 - "@whatwg-node/node-fetch": ^0.3.3 - busboy: ^1.6.0 - urlpattern-polyfill: ^6.0.2 - web-streams-polyfill: ^3.2.1 - checksum: 7e40311424a069e5e35d580b65373d0cb63034b39cdce7089d7681d0f354bc7132d1140be5ad39478aa3dbaf62a0053fbf64d77bf3bb3f45d65d8442ef61d4ea - languageName: node - linkType: hard - -"@whatwg-node/node-fetch@npm:^0.3.3": - version: 0.3.4 - resolution: "@whatwg-node/node-fetch@npm:0.3.4" - dependencies: - "@whatwg-node/events": ^0.0.2 - busboy: ^1.6.0 - fast-querystring: ^1.1.1 - fast-url-parser: ^1.1.3 - tslib: ^2.3.1 - checksum: 11bcb83eddc9276ce3c97ae63c015dc1aacaa81210bd0986a53ca5fd290fe470d3f937432e3d84cc3c0ad6e8431ef5e0a2c6115e99b1863076c13d5584c8f6fb - languageName: node - linkType: hard - -"@wry/context@npm:^0.7.0": - version: 0.7.0 - resolution: "@wry/context@npm:0.7.0" - dependencies: - tslib: ^2.3.0 - checksum: f4ff78023a0b949122037aae766232b7d2284dc415204d22d9ea6d7969ff8f5f29b18128bc9a40e68dc054c8a12b1bf5868a357fdb50c398c447290c3a5b0496 - languageName: node - linkType: hard - -"@wry/equality@npm:^0.1.2": - version: 0.1.11 - resolution: "@wry/equality@npm:0.1.11" - dependencies: - tslib: ^1.9.3 - checksum: 1a26a0fd11e3e3a6a197d9a54a5bec523caf693daa24ad2709f496e43dd3cd12290a0d17df81f8a783437795f6c64a1ca2717cdac6e79022bde4450c11e705c9 - languageName: node - linkType: hard - -"@wry/equality@npm:^0.5.0": - version: 0.5.3 - resolution: "@wry/equality@npm:0.5.3" - dependencies: - tslib: ^2.3.0 - checksum: 7ea8ded51462911217183b93cc3ffbb4d18dc02a62d4a79e0d9983463739bf54106aaeb25649bf33168120bd044b61d135018bfcf4fefad8099c13eac9238aa6 - languageName: node - linkType: hard - -"@wry/trie@npm:^0.3.0": - version: 0.3.2 - resolution: "@wry/trie@npm:0.3.2" - dependencies: - tslib: ^2.3.0 - checksum: 151d06b519e1ff1c3acf6ee6846161b1d7d50bbecd4c48e5cd1b05f9e37c30602aff02e88f20105f6e6c54ae4123f9c4eb7715044d7fd927d4ba4ec3e755cd36 - languageName: node - linkType: hard - -"abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.3.2": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: c3d3b2a89c9a056b205b69530a37b972b404ee46ec8e5b341666f9513d3163e2a4f214a71f4dfc7370f5a9c07472d2fd1c11c91c3f03d093e37637d95da98950 - languageName: node - linkType: hard - -"acorn@npm:^8.8.0": - version: 8.8.2 - resolution: "acorn@npm:8.8.2" - bin: - acorn: bin/acorn - checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001 - languageName: node - linkType: hard - -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: 4 - checksum: f52b6872cc96fd5f622071b71ef200e01c7c4c454ee68bc9accca90c98cfb39f2810e3e9aa330435835eedc8c23f4f8a15267f67c6e245d2b33757575bdac49d - languageName: node - linkType: hard - -"agentkeepalive@npm:^4.2.1": - version: 4.3.0 - resolution: "agentkeepalive@npm:4.3.0" - dependencies: - debug: ^4.1.0 - depd: ^2.0.0 - humanize-ms: ^1.2.1 - checksum: 982453aa44c11a06826c836025e5162c846e1200adb56f2d075400da7d32d87021b3b0a58768d949d824811f5654223d5a8a3dad120921a2439625eb847c6260 - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 - languageName: node - linkType: hard - -"ajv@npm:^6.10.0, ajv@npm:^6.12.4": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - dependencies: - fast-deep-equal: ^3.1.1 - fast-json-stable-stringify: ^2.0.0 - json-schema-traverse: ^0.4.1 - uri-js: ^4.2.2 - checksum: 874972efe5c4202ab0a68379481fbd3d1b5d0a7bd6d3cc21d40d3536ebff3352a2a1fabb632d4fd2cc7fe4cbdcd5ed6782084c9bbf7f32a1536d18f9da5007d4 - languageName: node - linkType: hard - -"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: ^0.21.3 - checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b - languageName: node - linkType: hard - -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: ^2.0.1 - checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 - languageName: node - linkType: hard - -"apollo-link-http-common@npm:^0.2.4": - version: 0.2.16 - resolution: "apollo-link-http-common@npm:0.2.16" - dependencies: - apollo-link: ^1.2.14 - ts-invariant: ^0.4.0 - tslib: ^1.9.3 - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 46672f2b10a01f495ed91d32b9d21ed0747bf23c8c23a2041ca41dd92a05e0e18d7842d29c958f6ddfaee03bd89202788f593cdcb96d4167191aff125f109c67 - languageName: node - linkType: hard - -"apollo-link@npm:1.2.5": - version: 1.2.5 - resolution: "apollo-link@npm:1.2.5" - dependencies: - apollo-utilities: ^1.0.0 - zen-observable-ts: ^0.8.12 - peerDependencies: - graphql: ^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 - checksum: 4f28eaced42e75c9b0402b89c994cc8e20dd60566e4478e19900c1a88f08fe6a1f126181f5454d45e9b20720e0f243462b7f95fa13a06f9008c7728acf83e8f8 - languageName: node - linkType: hard - -"apollo-link@npm:>=1.2.5, apollo-link@npm:^1.2.14": - version: 1.2.14 - resolution: "apollo-link@npm:1.2.14" - dependencies: - apollo-utilities: ^1.3.0 - ts-invariant: ^0.4.0 - tslib: ^1.9.3 - zen-observable-ts: ^0.8.21 - peerDependencies: - graphql: ^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: ad8d051ffceb270cdbbcc71d499bce2fda437a65fac6edc859a9e2dc0dbcb10b6a3f4da41789e786270aa358719c8b71315f383a698a74957df0d7aeea042918 - languageName: node - linkType: hard - -"apollo-utilities@npm:^1.0.0, apollo-utilities@npm:^1.3.0": - version: 1.3.4 - resolution: "apollo-utilities@npm:1.3.4" - dependencies: - "@wry/equality": ^0.1.2 - fast-json-stable-stringify: ^2.0.0 - ts-invariant: ^0.4.0 - tslib: ^1.10.0 - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 6e0192a3420782909c930f5230808d7fbbdbcdfccddd960120e19bab251b77a16e590b05dbb4a7da2c27c59077fbfd53e56819a9fae694debe7f898e8b0ec1e9 - languageName: node - linkType: hard - -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 - languageName: node - linkType: hard - -"are-we-there-yet@npm:^3.0.0": - version: 3.0.1 - resolution: "are-we-there-yet@npm:3.0.1" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 - languageName: node - linkType: hard - -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 83644b56493e89a254bae05702abf3a1101b4fa4d0ca31df1c9985275a5a5bd47b3c27b7fa0b71098d41114d8ca000e6ed90cad764b306f8a503665e4d517ced - languageName: node - linkType: hard - -"aria-hidden@npm:^1.1.3": - version: 1.2.3 - resolution: "aria-hidden@npm:1.2.3" - dependencies: - tslib: ^2.0.0 - checksum: 7d7d211629eef315e94ed3b064c6823d13617e609d3f9afab1c2ed86399bb8e90405f9bdd358a85506802766f3ecb468af985c67c846045a34b973bcc0289db9 - languageName: node - linkType: hard - -"aria-query@npm:^5.1.3": - version: 5.1.3 - resolution: "aria-query@npm:5.1.3" - dependencies: - deep-equal: ^2.0.5 - checksum: 929ff95f02857b650fb4cbcd2f41072eee2f46159a6605ea03bf63aa572e35ffdff43d69e815ddc462e16e07de8faba3978afc2813650b4448ee18c9895d982b - languageName: node - linkType: hard - -"array-buffer-byte-length@npm:^1.0.0": - version: 1.0.0 - resolution: "array-buffer-byte-length@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - is-array-buffer: ^3.0.1 - checksum: 044e101ce150f4804ad19c51d6c4d4cfa505c5b2577bd179256e4aa3f3f6a0a5e9874c78cd428ee566ac574c8a04d7ce21af9fe52e844abfdccb82b33035a7c3 - languageName: node - linkType: hard - -"array-includes@npm:^3.1.5, array-includes@npm:^3.1.6": - version: 3.1.6 - resolution: "array-includes@npm:3.1.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - get-intrinsic: ^1.1.3 - is-string: ^1.0.7 - checksum: f22f8cd8ba8a6448d91eebdc69f04e4e55085d09232b5216ee2d476dab3ef59984e8d1889e662c6a0ed939dcb1b57fd05b2c0209c3370942fc41b752c82a2ca5 - languageName: node - linkType: hard - -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flat@npm:1.3.1" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - es-shim-unscopables: ^1.0.0 - checksum: 5a8415949df79bf6e01afd7e8839bbde5a3581300e8ad5d8449dea52639e9e59b26a467665622783697917b43bf39940a6e621877c7dd9b3d1c1f97484b9b88b - languageName: node - linkType: hard - -"array.prototype.flatmap@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flatmap@npm:1.3.1" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - es-shim-unscopables: ^1.0.0 - checksum: 8c1c43a4995f12cf12523436da28515184c753807b3f0bc2ca6c075f71c470b099e2090cc67dba8e5280958fea401c1d0c59e1db0143272aef6cd1103921a987 - languageName: node - linkType: hard - -"array.prototype.tosorted@npm:^1.1.1": - version: 1.1.1 - resolution: "array.prototype.tosorted@npm:1.1.1" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - es-shim-unscopables: ^1.0.0 - get-intrinsic: ^1.1.3 - checksum: 7923324a67e70a2fc0a6e40237405d92395e45ebd76f5cb89c2a5cf1e66b47aca6baacd0cd628ffd88830b90d47fff268071493d09c9ae123645613dac2c2ca3 - languageName: node - linkType: hard - -"asap@npm:~2.0.3": - version: 2.0.6 - resolution: "asap@npm:2.0.6" - checksum: b296c92c4b969e973260e47523207cd5769abd27c245a68c26dc7a0fe8053c55bb04360237cb51cab1df52be939da77150ace99ad331fb7fb13b3423ed73ff3d - languageName: node - linkType: hard - -"asn1js@npm:^3.0.1, asn1js@npm:^3.0.5": - version: 3.0.5 - resolution: "asn1js@npm:3.0.5" - dependencies: - pvtsutils: ^1.3.2 - pvutils: ^1.1.3 - tslib: ^2.4.0 - checksum: 3b6af1bbadd5762ef8ead5daf2f6bda1bc9e23bc825c4dcc996aa1f9521ad7390a64028565d95d98090d69c8431f004c71cccb866004759169d7c203cf9075eb - languageName: node - linkType: hard - -"ast-types-flow@npm:^0.0.7": - version: 0.0.7 - resolution: "ast-types-flow@npm:0.0.7" - checksum: a26dcc2182ffee111cad7c471759b0bda22d3b7ebacf27c348b22c55f16896b18ab0a4d03b85b4020dce7f3e634b8f00b593888f622915096ea1927fa51866c4 - languageName: node - linkType: hard - -"astral-regex@npm:^2.0.0": - version: 2.0.0 - resolution: "astral-regex@npm:2.0.0" - checksum: 876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be - languageName: node - linkType: hard - -"auto-bind@npm:~4.0.0": - version: 4.0.0 - resolution: "auto-bind@npm:4.0.0" - checksum: 00cad71cce5742faccb7dd65c1b55ebc4f45add4b0c9a1547b10b05bab22813230133b0c892c67ba3eb969a4524710c5e43cc45c72898ec84e56f3a596e7a04f - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a - languageName: node - linkType: hard - -"axe-core@npm:^4.6.2": - version: 4.6.3 - resolution: "axe-core@npm:4.6.3" - checksum: d0c46be92b9707c48b88a53cd5f471b155a2bfc8bf6beffb514ecd14e30b4863e340b5fc4f496d82a3c562048088c1f3ff5b93b9b3b026cb9c3bfacfd535da10 - languageName: node - linkType: hard - -"axobject-query@npm:^3.1.1": - version: 3.1.1 - resolution: "axobject-query@npm:3.1.1" - dependencies: - deep-equal: ^2.0.5 - checksum: c12a5da10dc7bab75e1cda9b6a3b5fcf10eba426ddf1a17b71ef65a434ed707ede7d1c4f013ba1609e970bc8c0cddac01365080d376204314e9b294719acd8a5 - languageName: node - linkType: hard - -"babel-plugin-macros@npm:^3.1.0": - version: 3.1.0 - resolution: "babel-plugin-macros@npm:3.1.0" - dependencies: - "@babel/runtime": ^7.12.5 - cosmiconfig: ^7.0.0 - resolve: ^1.19.0 - checksum: 765de4abebd3e4688ebdfbff8571ddc8cd8061f839bb6c3e550b0344a4027b04c60491f843296ce3f3379fb356cc873d57a9ee6694262547eb822c14a25be9a6 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.3.3": - version: 0.3.3 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.3" - dependencies: - "@babel/compat-data": ^7.17.7 - "@babel/helper-define-polyfill-provider": ^0.3.3 - semver: ^6.1.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7db3044993f3dddb3cc3d407bc82e640964a3bfe22de05d90e1f8f7a5cb71460011ab136d3c03c6c1ba428359ebf635688cd6205e28d0469bba221985f5c6179 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.6.0": - version: 0.6.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.6.0" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - core-js-compat: ^3.25.1 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 470bb8c59f7c0912bd77fe1b5a2e72f349b3f65bbdee1d60d6eb7e1f4a085c6f24b2dd5ab4ac6c2df6444a96b070ef6790eccc9edb6a2668c60d33133bfb62c6 - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.4.1": - version: 0.4.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.4.1" - dependencies: - "@babel/helper-define-polyfill-provider": ^0.3.3 - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ab0355efbad17d29492503230387679dfb780b63b25408990d2e4cf421012dae61d6199ddc309f4d2409ce4e9d3002d187702700dd8f4f8770ebbba651ed066c - languageName: node - linkType: hard - -"babel-plugin-styled-components@npm:>= 1.12.0": - version: 2.0.7 - resolution: "babel-plugin-styled-components@npm:2.0.7" - dependencies: - "@babel/helper-annotate-as-pure": ^7.16.0 - "@babel/helper-module-imports": ^7.16.0 - babel-plugin-syntax-jsx: ^6.18.0 - lodash: ^4.17.11 - picomatch: ^2.3.0 - peerDependencies: - styled-components: ">= 2" - checksum: 80b06b10db02d749432a0ac43a5feedd686f6b648628d7433a39b1844260b2b7c72431f6e705c82636ee025fcfd4f6c32fc05677e44033b8a39ddcd4488b3147 - languageName: node - linkType: hard - -"babel-plugin-syntax-jsx@npm:^6.18.0": - version: 6.18.0 - resolution: "babel-plugin-syntax-jsx@npm:6.18.0" - checksum: 0c7ce5b81d6cfc01a7dd7a76a9a8f090ee02ba5c890310f51217ef1a7e6163fb7848994bbc14fd560117892e82240df9c7157ad0764da67ca5f2afafb73a7d27 - languageName: node - linkType: hard - -"babel-plugin-syntax-trailing-function-commas@npm:^7.0.0-beta.0": - version: 7.0.0-beta.0 - resolution: "babel-plugin-syntax-trailing-function-commas@npm:7.0.0-beta.0" - checksum: e37509156ca945dd9e4b82c66dd74f2d842ad917bd280cb5aa67960942300cd065eeac476d2514bdcdedec071277a358f6d517c31d9f9244d9bbc3619a8ecf8a - languageName: node - linkType: hard - -"babel-polyfill@npm:6.26.0": - version: 6.26.0 - resolution: "babel-polyfill@npm:6.26.0" - dependencies: - babel-runtime: ^6.26.0 - core-js: ^2.5.0 - regenerator-runtime: ^0.10.5 - checksum: 6fb1a3c0bfe1b6fc56ce1afcf531878aa629b309277a05fbf3fe950589b24cb4052a6e487db21d318eb5336b68730a21f5ef62166b6cc8aea3406261054d1118 - languageName: node - linkType: hard - -"babel-preset-fbjs@npm:^3.4.0": - version: 3.4.0 - resolution: "babel-preset-fbjs@npm:3.4.0" - dependencies: - "@babel/plugin-proposal-class-properties": ^7.0.0 - "@babel/plugin-proposal-object-rest-spread": ^7.0.0 - "@babel/plugin-syntax-class-properties": ^7.0.0 - "@babel/plugin-syntax-flow": ^7.0.0 - "@babel/plugin-syntax-jsx": ^7.0.0 - "@babel/plugin-syntax-object-rest-spread": ^7.0.0 - "@babel/plugin-transform-arrow-functions": ^7.0.0 - "@babel/plugin-transform-block-scoped-functions": ^7.0.0 - "@babel/plugin-transform-block-scoping": ^7.0.0 - "@babel/plugin-transform-classes": ^7.0.0 - "@babel/plugin-transform-computed-properties": ^7.0.0 - "@babel/plugin-transform-destructuring": ^7.0.0 - "@babel/plugin-transform-flow-strip-types": ^7.0.0 - "@babel/plugin-transform-for-of": ^7.0.0 - "@babel/plugin-transform-function-name": ^7.0.0 - "@babel/plugin-transform-literals": ^7.0.0 - "@babel/plugin-transform-member-expression-literals": ^7.0.0 - "@babel/plugin-transform-modules-commonjs": ^7.0.0 - "@babel/plugin-transform-object-super": ^7.0.0 - "@babel/plugin-transform-parameters": ^7.0.0 - "@babel/plugin-transform-property-literals": ^7.0.0 - "@babel/plugin-transform-react-display-name": ^7.0.0 - "@babel/plugin-transform-react-jsx": ^7.0.0 - "@babel/plugin-transform-shorthand-properties": ^7.0.0 - "@babel/plugin-transform-spread": ^7.0.0 - "@babel/plugin-transform-template-literals": ^7.0.0 - babel-plugin-syntax-trailing-function-commas: ^7.0.0-beta.0 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: b3352cf690729125997f254bc31b9c4db347f8646f1571958ced1c45f0da89439e183e1c88e35397eb0361b9e1fbb1dd8142d3f4647814deb427e53c54f44d5f - languageName: node - linkType: hard - -"babel-runtime@npm:6.26.0, babel-runtime@npm:^6.26.0": - version: 6.26.0 - resolution: "babel-runtime@npm:6.26.0" - dependencies: - core-js: ^2.4.0 - regenerator-runtime: ^0.11.0 - checksum: 8aeade94665e67a73c1ccc10f6fd42ba0c689b980032b70929de7a6d9a12eb87ef51902733f8fefede35afea7a5c3ef7e916a64d503446c1eedc9e3284bd3d50 - languageName: node - linkType: hard - -"bail@npm:^2.0.0": - version: 2.0.2 - resolution: "bail@npm:2.0.2" - checksum: aab4e8ccdc8d762bf3fdfce8e706601695620c0c2eda256dd85088dc0be3cfd7ff126f6e99c2bee1f24f5d418414aacf09d7f9702f16d6963df2fa488cda8824 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 - languageName: node - linkType: hard - -"base64-js@npm:^1.3.1": - version: 1.5.1 - resolution: "base64-js@npm:1.5.1" - checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 - languageName: node - linkType: hard - -"bl@npm:^4.1.0": - version: 4.1.0 - resolution: "bl@npm:4.1.0" - dependencies: - buffer: ^5.5.0 - inherits: ^2.0.4 - readable-stream: ^3.4.0 - checksum: 9e8521fa7e83aa9427c6f8ccdcba6e8167ef30cc9a22df26effcc5ab682ef91d2cbc23a239f945d099289e4bbcfae7a192e9c28c84c6202e710a0dfec3722662 - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: ^1.0.0 - checksum: a61e7cd2e8a8505e9f0036b3b6108ba5e926b4b55089eeb5550cd04a471fe216c96d4fe7e4c7f995c728c554ae20ddfc4244cad10aef255e72b62930afd233d1 - languageName: node - linkType: hard - -"braces@npm:^3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 - languageName: node - linkType: hard - -"browserslist@npm:^4.21.3, browserslist@npm:^4.21.5": - version: 4.21.5 - resolution: "browserslist@npm:4.21.5" - dependencies: - caniuse-lite: ^1.0.30001449 - electron-to-chromium: ^1.4.284 - node-releases: ^2.0.8 - update-browserslist-db: ^1.0.10 - bin: - browserslist: cli.js - checksum: 9755986b22e73a6a1497fd8797aedd88e04270be33ce66ed5d85a1c8a798292a65e222b0f251bafa1c2522261e237d73b08b58689d4920a607e5a53d56dc4706 - languageName: node - linkType: hard - -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: ^0.4.0 - checksum: 9ba4dc58ce86300c862bffc3ae91f00b2a03b01ee07f3564beeeaf82aa243b8b03ba53f123b0b842c190d4399b94697970c8e7cf7b1ea44b61aa28c3526a4449 - languageName: node - linkType: hard - -"buffer@npm:^5.5.0": - version: 5.7.1 - resolution: "buffer@npm:5.7.1" - dependencies: - base64-js: ^1.3.1 - ieee754: ^1.1.13 - checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 - languageName: node - linkType: hard - -"busboy@npm:^1.6.0": - version: 1.6.0 - resolution: "busboy@npm:1.6.0" - dependencies: - streamsearch: ^1.1.0 - checksum: 32801e2c0164e12106bf236291a00795c3c4e4b709ae02132883fe8478ba2ae23743b11c5735a0aae8afe65ac4b6ca4568b91f0d9fed1fdbc32ede824a73746e - languageName: node - linkType: hard - -"cacache@npm:^16.1.0": - version: 16.1.3 - resolution: "cacache@npm:16.1.3" - dependencies: - "@npmcli/fs": ^2.1.0 - "@npmcli/move-file": ^2.0.0 - chownr: ^2.0.0 - fs-minipass: ^2.1.0 - glob: ^8.0.1 - infer-owner: ^1.0.4 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - mkdirp: ^1.0.4 - p-map: ^4.0.0 - promise-inflight: ^1.0.1 - rimraf: ^3.0.2 - ssri: ^9.0.0 - tar: ^6.1.11 - unique-filename: ^2.0.0 - checksum: d91409e6e57d7d9a3a25e5dcc589c84e75b178ae8ea7de05cbf6b783f77a5fae938f6e8fda6f5257ed70000be27a681e1e44829251bfffe4c10216002f8f14e6 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 - languageName: node - linkType: hard - -"callsites@npm:^3.0.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 072d17b6abb459c2ba96598918b55868af677154bec7e73d222ef95a8fdb9bbf7dae96a8421085cdad8cd190d86653b5b6dc55a4484f2e5b2e27d5e0c3fc15b3 - languageName: node - linkType: hard - -"camel-case@npm:^4.1.2": - version: 4.1.2 - resolution: "camel-case@npm:4.1.2" - dependencies: - pascal-case: ^3.1.2 - tslib: ^2.0.3 - checksum: bcbd25cd253b3cbc69be3f535750137dbf2beb70f093bdc575f73f800acc8443d34fd52ab8f0a2413c34f1e8203139ffc88428d8863e4dfe530cfb257a379ad6 - languageName: node - linkType: hard - -"camelcase@npm:^5.0.0": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b - languageName: node - linkType: hard - -"camelize@npm:^1.0.0": - version: 1.0.1 - resolution: "camelize@npm:1.0.1" - checksum: 91d8611d09af725e422a23993890d22b2b72b4cabf7239651856950c76b4bf53fe0d0da7c5e4db05180e898e4e647220e78c9fbc976113bd96d603d1fcbfcb99 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001449": - version: 1.0.30001465 - resolution: "caniuse-lite@npm:1.0.30001465" - checksum: c991ecdfff378a22b268f9b1eb732d003c8ad89db3241a4cdec3b3ec3354aa966a44171cb806c90abe2e3f0573d67dc29a7dce2478b1f070b23747c392244c5d - languageName: node - linkType: hard - -"capital-case@npm:^1.0.4": - version: 1.0.4 - resolution: "capital-case@npm:1.0.4" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - upper-case-first: ^2.0.2 - checksum: 41fa8fa87f6d24d0835a2b4a9341a3eaecb64ac29cd7c5391f35d6175a0fa98ab044e7f2602e1ec3afc886231462ed71b5b80c590b8b41af903ec2c15e5c5931 - languageName: node - linkType: hard - -"chalk@npm:^2.0.0": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 - languageName: node - linkType: hard - -"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc - languageName: node - linkType: hard - -"change-case-all@npm:1.0.14": - version: 1.0.14 - resolution: "change-case-all@npm:1.0.14" - dependencies: - change-case: ^4.1.2 - is-lower-case: ^2.0.2 - is-upper-case: ^2.0.2 - lower-case: ^2.0.2 - lower-case-first: ^2.0.2 - sponge-case: ^1.0.1 - swap-case: ^2.0.2 - title-case: ^3.0.3 - upper-case: ^2.0.2 - upper-case-first: ^2.0.2 - checksum: 6ff893e005e1bf115cc2969cc5ca3610f7c6ece9e90b7927ed12c980c7d3ea9a565150d246c6dba0fee21aaacbd38d69b98a4670d96b892c76f66e46616506d3 - languageName: node - linkType: hard - -"change-case-all@npm:1.0.15": - version: 1.0.15 - resolution: "change-case-all@npm:1.0.15" - dependencies: - change-case: ^4.1.2 - is-lower-case: ^2.0.2 - is-upper-case: ^2.0.2 - lower-case: ^2.0.2 - lower-case-first: ^2.0.2 - sponge-case: ^1.0.1 - swap-case: ^2.0.2 - title-case: ^3.0.3 - upper-case: ^2.0.2 - upper-case-first: ^2.0.2 - checksum: e1dabdcd8447a3690f3faf15f92979dfbc113109b50916976e1d5e518e6cfdebee4f05f54d0ca24fb79a4bf835185b59ae25e967bb3dc10bd236a775b19ecc52 - languageName: node - linkType: hard - -"change-case@npm:^4.1.2": - version: 4.1.2 - resolution: "change-case@npm:4.1.2" - dependencies: - camel-case: ^4.1.2 - capital-case: ^1.0.4 - constant-case: ^3.0.4 - dot-case: ^3.0.4 - header-case: ^2.0.4 - no-case: ^3.0.4 - param-case: ^3.0.4 - pascal-case: ^3.1.2 - path-case: ^3.0.4 - sentence-case: ^3.0.4 - snake-case: ^3.0.4 - tslib: ^2.0.3 - checksum: e4bc4a093a1f7cce8b33896665cf9e456e3bc3cc0def2ad7691b1994cfca99b3188d0a513b16855b01a6bd20692fcde12a7d4d87a5615c4c515bbbf0e651f116 - languageName: node - linkType: hard - -"character-entities@npm:^2.0.0": - version: 2.0.2 - resolution: "character-entities@npm:2.0.2" - checksum: cf1643814023697f725e47328fcec17923b8f1799102a8a79c1514e894815651794a2bffd84bb1b3a4b124b050154e4529ed6e81f7c8068a734aecf07a6d3def - languageName: node - linkType: hard - -"chardet@npm:^0.7.0": - version: 0.7.0 - resolution: "chardet@npm:0.7.0" - checksum: 6fd5da1f5d18ff5712c1e0aed41da200d7c51c28f11b36ee3c7b483f3696dabc08927fc6b227735eb8f0e1215c9a8abd8154637f3eff8cada5959df7f58b024d - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f - languageName: node - linkType: hard - -"chroma-js@npm:2.4.2": - version: 2.4.2 - resolution: "chroma-js@npm:2.4.2" - checksum: cf9884c02d406286e4370599bcd1afbf089384407df46b3a69edfedcba7bb99e8f959a5cfdbfec750b305c441c06ca40cd1f70ba3a6c2ce739ac09a92520ddae - languageName: node - linkType: hard - -"classnames@npm:2.3.2, classnames@npm:^2.2.6": - version: 2.3.2 - resolution: "classnames@npm:2.3.2" - checksum: 2c62199789618d95545c872787137262e741f9db13328e216b093eea91c85ef2bfb152c1f9e63027204e2559a006a92eb74147d46c800a9f96297ae1d9f96f4e - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - -"cli-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "cli-cursor@npm:3.1.0" - dependencies: - restore-cursor: ^3.1.0 - checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 - languageName: node - linkType: hard - -"cli-spinners@npm:^2.5.0": - version: 2.7.0 - resolution: "cli-spinners@npm:2.7.0" - checksum: a9afaf73f58d1f951fb23742f503631b3cf513f43f4c7acb1b640100eb76bfa16efbcd1994d149ffc6603a6d75dd3d4a516a76f125f90dce437de9b16fd0ee6f - languageName: node - linkType: hard - -"cli-truncate@npm:^2.1.0": - version: 2.1.0 - resolution: "cli-truncate@npm:2.1.0" - dependencies: - slice-ansi: ^3.0.0 - string-width: ^4.2.0 - checksum: bf1e4e6195392dc718bf9cd71f317b6300dc4a9191d052f31046b8773230ece4fa09458813bf0e3455a5e68c0690d2ea2c197d14a8b85a7b5e01c97f4b5feb5d - languageName: node - linkType: hard - -"cli-width@npm:^3.0.0": - version: 3.0.0 - resolution: "cli-width@npm:3.0.0" - checksum: 4c94af3769367a70e11ed69aa6095f1c600c0ff510f3921ab4045af961820d57c0233acfa8b6396037391f31b4c397e1f614d234294f979ff61430a6c166c3f6 - languageName: node - linkType: hard - -"cliui@npm:^6.0.0": - version: 6.0.0 - resolution: "cliui@npm:6.0.0" - dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.0 - wrap-ansi: ^6.2.0 - checksum: 4fcfd26d292c9f00238117f39fc797608292ae36bac2168cfee4c85923817d0607fe21b3329a8621e01aedf512c99b7eaa60e363a671ffd378df6649fb48ae42 - languageName: node - linkType: hard - -"cliui@npm:^8.0.1": - version: 8.0.1 - resolution: "cliui@npm:8.0.1" - dependencies: - string-width: ^4.2.0 - strip-ansi: ^6.0.1 - wrap-ansi: ^7.0.0 - checksum: 79648b3b0045f2e285b76fb2e24e207c6db44323581e421c3acbd0e86454cba1b37aea976ab50195a49e7384b871e6dfb2247ad7dec53c02454ac6497394cb56 - languageName: node - linkType: hard - -"clone@npm:^1.0.2": - version: 1.0.4 - resolution: "clone@npm:1.0.4" - checksum: d06418b7335897209e77bdd430d04f882189582e67bd1f75a04565f3f07f5b3f119a9d670c943b6697d0afb100f03b866b3b8a1f91d4d02d72c4ecf2bb64b5dd - languageName: node - linkType: hard - -"clsx@npm:^1.1.1": - version: 1.2.1 - resolution: "clsx@npm:1.2.1" - checksum: 30befca8019b2eb7dbad38cff6266cf543091dae2825c856a62a8ccf2c3ab9c2907c4d12b288b73101196767f66812365400a227581484a05f968b0307cfaf12 - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d - languageName: node - linkType: hard - -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 - languageName: node - linkType: hard - -"color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b - languageName: node - linkType: hard - -"colorette@npm:^2.0.16": - version: 2.0.19 - resolution: "colorette@npm:2.0.19" - checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: ~1.0.0 - checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c - languageName: node - linkType: hard - -"comma-separated-tokens@npm:^2.0.0": - version: 2.0.3 - resolution: "comma-separated-tokens@npm:2.0.3" - checksum: e3bf9e0332a5c45f49b90e79bcdb4a7a85f28d6a6f0876a94f1bb9b2bfbdbbb9292aac50e1e742d8c0db1e62a0229a106f57917e2d067fca951d81737651700d - languageName: node - linkType: hard - -"common-tags@npm:1.8.2": - version: 1.8.2 - resolution: "common-tags@npm:1.8.2" - checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af - languageName: node - linkType: hard - -"confusing-browser-globals@npm:^1.0.10": - version: 1.0.11 - resolution: "confusing-browser-globals@npm:1.0.11" - checksum: 3afc635abd37e566477f610e7978b15753f0e84025c25d49236f1f14d480117185516bdd40d2a2167e6bed8048641a9854964b9c067e3dcdfa6b5d0ad3c3a5ef - languageName: node - linkType: hard - -"console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed - languageName: node - linkType: hard - -"constant-case@npm:^3.0.4": - version: 3.0.4 - resolution: "constant-case@npm:3.0.4" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - upper-case: ^2.0.2 - checksum: 6c3346d51afc28d9fae922e966c68eb77a19d94858dba230dd92d7b918b37d36db50f0311e9ecf6847e43e934b1c01406a0936973376ab17ec2c471fbcfb2cf3 - languageName: node - linkType: hard - -"convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.7.0": - version: 1.9.0 - resolution: "convert-source-map@npm:1.9.0" - checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 - languageName: node - linkType: hard - -"core-js-compat@npm:^3.25.1": - version: 3.29.1 - resolution: "core-js-compat@npm:3.29.1" - dependencies: - browserslist: ^4.21.5 - checksum: 7260f6bbaa98836cda09a3b61aa721149d3ae95040302fb3b27eb153ae9bbddc8dee5249e72004cdc9552532029de4d50a5b2b066c37414421d2929d6091b18f - languageName: node - linkType: hard - -"core-js@npm:2.6.0": - version: 2.6.0 - resolution: "core-js@npm:2.6.0" - checksum: 8341d307b07ef31098c8bf4d9d0bec2e77373c42289b36748ae48425f2854db65feced74a81e2198e68041256f9a157e4b129f317967bdf38934f4307d9d415d - languageName: node - linkType: hard - -"core-js@npm:^2.4.0, core-js@npm:^2.5.0": - version: 2.6.12 - resolution: "core-js@npm:2.6.12" - checksum: 44fa9934a85f8c78d61e0c8b7b22436330471ffe59ec5076fe7f324d6e8cf7f824b14b1c81ca73608b13bdb0fef035bd820989bf059767ad6fa13123bb8bd016 - languageName: node - linkType: hard - -"cosmiconfig@npm:8.0.0": - version: 8.0.0 - resolution: "cosmiconfig@npm:8.0.0" - dependencies: - import-fresh: ^3.2.1 - js-yaml: ^4.1.0 - parse-json: ^5.0.0 - path-type: ^4.0.0 - checksum: ff4cdf89ac1ae52e7520816622c21a9e04380d04b82d653f5139ec581aa4f7f29e096d46770bc76c4a63c225367e88a1dfa233ea791669a35101f5f9b972c7d1 - languageName: node - linkType: hard - -"cosmiconfig@npm:^7.0.0": - version: 7.1.0 - resolution: "cosmiconfig@npm:7.1.0" - dependencies: - "@types/parse-json": ^4.0.0 - import-fresh: ^3.2.1 - parse-json: ^5.0.0 - path-type: ^4.0.0 - yaml: ^1.10.0 - checksum: c53bf7befc1591b2651a22414a5e786cd5f2eeaa87f3678a3d49d6069835a9d8d1aef223728e98aa8fec9a95bf831120d245096db12abe019fecb51f5696c96f - languageName: node - linkType: hard - -"cross-fetch@npm:^3.1.5": - version: 3.1.5 - resolution: "cross-fetch@npm:3.1.5" - dependencies: - node-fetch: 2.6.7 - checksum: f6b8c6ee3ef993ace6277fd789c71b6acf1b504fd5f5c7128df4ef2f125a429e29cd62dc8c127523f04a5f2fa4771ed80e3f3d9695617f441425045f505cf3bb - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.2": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: ^3.1.0 - shebang-command: ^2.0.0 - which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 - languageName: node - linkType: hard - -"css-color-keywords@npm:^1.0.0": - version: 1.0.0 - resolution: "css-color-keywords@npm:1.0.0" - checksum: 8f125e3ad477bd03c77b533044bd9e8a6f7c0da52d49bbc0bbe38327b3829d6ba04d368ca49dd9ff3b667d2fc8f1698d891c198bbf8feade1a5501bf5a296408 - languageName: node - linkType: hard - -"css-to-react-native@npm:^3.0.0": - version: 3.2.0 - resolution: "css-to-react-native@npm:3.2.0" - dependencies: - camelize: ^1.0.0 - css-color-keywords: ^1.0.0 - postcss-value-parser: ^4.0.2 - checksum: 263be65e805aef02c3f20c064665c998a8c35293e1505dbe6e3054fb186b01a9897ac6cf121f9840e5a9dfe3fb3994f6fcd0af84a865f1df78ba5bf89e77adce - languageName: node - linkType: hard - -"csstype@npm:^3.0.2": - version: 3.1.1 - resolution: "csstype@npm:3.1.1" - checksum: 1f7b4f5fdd955b7444b18ebdddf3f5c699159f13e9cf8ac9027ae4a60ae226aef9bbb14a6e12ca7dba3358b007cee6354b116e720262867c398de6c955ea451d - languageName: node - linkType: hard - -"damerau-levenshtein@npm:^1.0.8": - version: 1.0.8 - resolution: "damerau-levenshtein@npm:1.0.8" - checksum: d240b7757544460ae0586a341a53110ab0a61126570ef2d8c731e3eab3f0cb6e488e2609e6a69b46727635de49be20b071688698744417ff1b6c1d7ccd03e0de - languageName: node - linkType: hard - -"dataloader@npm:2.2.2, dataloader@npm:^2.2.2": - version: 2.2.2 - resolution: "dataloader@npm:2.2.2" - checksum: 4dabd247089c29f194e94d5434d504f99156c5c214a03463c20f3f17f40398d7e179edee69a27c16e315519ac8739042a810090087ae26449a0e685156a02c65 - languageName: node - linkType: hard - -"debounce@npm:^1.2.0, debounce@npm:^1.2.1": - version: 1.2.1 - resolution: "debounce@npm:1.2.1" - checksum: 682a89506d9e54fb109526f4da255c5546102fbb8e3ae75eef3b04effaf5d4853756aee97475cd4650641869794e44f410eeb20ace2b18ea592287ab2038519e - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 - languageName: node - linkType: hard - -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c - languageName: node - linkType: hard - -"decamelize@npm:^1.2.0": - version: 1.2.0 - resolution: "decamelize@npm:1.2.0" - checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa - languageName: node - linkType: hard - -"decode-named-character-reference@npm:^1.0.0": - version: 1.0.2 - resolution: "decode-named-character-reference@npm:1.0.2" - dependencies: - character-entities: ^2.0.0 - checksum: f4c71d3b93105f20076052f9cb1523a22a9c796b8296cd35eef1ca54239c78d182c136a848b83ff8da2071e3ae2b1d300bf29d00650a6d6e675438cc31b11d78 - languageName: node - linkType: hard - -"deep-equal@npm:^2.0.5": - version: 2.2.0 - resolution: "deep-equal@npm:2.2.0" - dependencies: - call-bind: ^1.0.2 - es-get-iterator: ^1.1.2 - get-intrinsic: ^1.1.3 - is-arguments: ^1.1.1 - is-array-buffer: ^3.0.1 - is-date-object: ^1.0.5 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - isarray: ^2.0.5 - object-is: ^1.1.5 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 - side-channel: ^1.0.4 - which-boxed-primitive: ^1.0.2 - which-collection: ^1.0.1 - which-typed-array: ^1.1.9 - checksum: 46a34509d2766d6c6dc5aec4756089cf0cc137e46787e91f08f1ee0bb570d874f19f0493146907df0cf18aed4a7b4b50f6f62c899240a76c323f057528b122e3 - languageName: node - linkType: hard - -"deep-is@npm:^0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 - languageName: node - linkType: hard - -"defaults@npm:^1.0.3": - version: 1.0.4 - resolution: "defaults@npm:1.0.4" - dependencies: - clone: ^1.0.2 - checksum: 3a88b7a587fc076b84e60affad8b85245c01f60f38fc1d259e7ac1d89eb9ce6abb19e27215de46b98568dd5bc48471730b327637e6f20b0f1bc85cf00440c80a - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.2.0 - resolution: "define-properties@npm:1.2.0" - dependencies: - has-property-descriptors: ^1.0.0 - object-keys: ^1.1.1 - checksum: e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 - languageName: node - linkType: hard - -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd - languageName: node - linkType: hard - -"depd@npm:^2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a - languageName: node - linkType: hard - -"dependency-graph@npm:^0.11.0": - version: 0.11.0 - resolution: "dependency-graph@npm:0.11.0" - checksum: 477204beaa9be69e642bc31ffe7a8c383d0cf48fa27acbc91c5df01431ab913e65c154213d2ef83d034c98d77280743ec85e5da018a97a18dd43d3c0b78b28cd - languageName: node - linkType: hard - -"dequal@npm:^2.0.0": - version: 2.0.3 - resolution: "dequal@npm:2.0.3" - checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 - languageName: node - linkType: hard - -"detect-indent@npm:^6.0.0": - version: 6.1.0 - resolution: "detect-indent@npm:6.1.0" - checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d - languageName: node - linkType: hard - -"diff@npm:^5.0.0": - version: 5.1.0 - resolution: "diff@npm:5.1.0" - checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90 - languageName: node - linkType: hard - -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: ^4.0.0 - checksum: fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615 - languageName: node - linkType: hard - -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" - dependencies: - esutils: ^2.0.2 - checksum: a45e277f7feaed309fe658ace1ff286c6e2002ac515af0aaf37145b8baa96e49899638c7cd47dccf84c3d32abfc113246625b3ac8f552d1046072adee13b0dc8 - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: ^2.0.2 - checksum: fd7673ca77fe26cd5cba38d816bc72d641f500f1f9b25b83e8ce28827fe2da7ad583a8da26ab6af85f834138cf8dae9f69b0cd6ab925f52ddab1754db44d99ce - languageName: node - linkType: hard - -"dom-helpers@npm:^5.0.1": - version: 5.2.1 - resolution: "dom-helpers@npm:5.2.1" - dependencies: - "@babel/runtime": ^7.8.7 - csstype: ^3.0.2 - checksum: 863ba9e086f7093df3376b43e74ce4422571d404fc9828bf2c56140963d5edf0e56160f9b2f3bb61b282c07f8fc8134f023c98fd684bddcb12daf7b0f14d951c - languageName: node - linkType: hard - -"dot-case@npm:^3.0.4": - version: 3.0.4 - resolution: "dot-case@npm:3.0.4" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: a65e3519414856df0228b9f645332f974f2bf5433370f544a681122eab59e66038fc3349b4be1cdc47152779dac71a5864f1ccda2f745e767c46e9c6543b1169 - languageName: node - linkType: hard - -"dotenv@npm:^16.0.0": - version: 16.0.3 - resolution: "dotenv@npm:16.0.3" - checksum: afcf03f373d7a6d62c7e9afea6328e62851d627a4e73f2e12d0a8deae1cd375892004f3021883f8aec85932cd2834b091f568ced92b4774625b321db83b827f8 - languageName: node - linkType: hard - -"dset@npm:^3.1.2": - version: 3.1.2 - resolution: "dset@npm:3.1.2" - checksum: 4f8066f517aa0a70af688c66e9a0a5590f0aada76f6edc7ba9ddb309e27d3a6d65c0a2e31ab2a84005d4c791e5327773cdde59b8ab169050330a0dc283663e87 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.284": - version: 1.4.328 - resolution: "electron-to-chromium@npm:1.4.328" - checksum: 82c1617a77e40ac4ca5011749318a2fee8f8c75f8b517fcff7602219c85fd97a9fab2d5a1353ea10fb7f9c7d18acb90c9ed58c2292256f81e2ffa42ee66c4b0b - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 8487182da74aabd810ac6d6f1994111dfc0e331b01271ae01ec1eb0ad7b5ecc2bbbbd2f053c05cb55a1ac30449527d819bbfbf0e3de1023db308cbcb47f86601 - languageName: node - linkType: hard - -"encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: ^0.6.2 - checksum: bb98632f8ffa823996e508ce6a58ffcf5856330fde839ae42c9e1f436cc3b5cc651d4aeae72222916545428e54fd0f6aa8862fd8d25bdbcc4589f1e3f3715e7f - languageName: node - linkType: hard - -"env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 65b5df55a8bab92229ab2b40dad3b387fad24613263d103a97f91c9fe43ceb21965cd3392b1ccb5d77088021e525c4e0481adb309625d0cb94ade1d1fb8dc17e - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 8b7b1be20d2de12d2255c0bc2ca638b7af5171142693299416e6a9339bd7d88fc8d7707d913d78e0993176005405a236b066b45666b27b797252c771156ace54 - languageName: node - linkType: hard - -"error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: ^0.2.1 - checksum: c1c2b8b65f9c91b0f9d75f0debaa7ec5b35c266c2cac5de412c1a6de86d4cbae04ae44e510378cb14d032d0645a36925d0186f8bb7367bcc629db256b743a001 - languageName: node - linkType: hard - -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.20.4": - version: 1.21.2 - resolution: "es-abstract@npm:1.21.2" - dependencies: - array-buffer-byte-length: ^1.0.0 - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - es-set-tostringtag: ^2.0.1 - es-to-primitive: ^1.2.1 - function.prototype.name: ^1.1.5 - get-intrinsic: ^1.2.0 - get-symbol-description: ^1.0.0 - globalthis: ^1.0.3 - gopd: ^1.0.1 - has: ^1.0.3 - has-property-descriptors: ^1.0.0 - has-proto: ^1.0.1 - has-symbols: ^1.0.3 - internal-slot: ^1.0.5 - is-array-buffer: ^3.0.2 - is-callable: ^1.2.7 - is-negative-zero: ^2.0.2 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - is-string: ^1.0.7 - is-typed-array: ^1.1.10 - is-weakref: ^1.0.2 - object-inspect: ^1.12.3 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 - safe-regex-test: ^1.0.0 - string.prototype.trim: ^1.2.7 - string.prototype.trimend: ^1.0.6 - string.prototype.trimstart: ^1.0.6 - typed-array-length: ^1.0.4 - unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.9 - checksum: 037f55ee5e1cdf2e5edbab5524095a4f97144d95b94ea29e3611b77d852fd8c8a40e7ae7101fa6a759a9b9b1405f188c3c70928f2d3cd88d543a07fc0d5ad41a - languageName: node - linkType: hard - -"es-get-iterator@npm:^1.1.2": - version: 1.1.3 - resolution: "es-get-iterator@npm:1.1.3" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - has-symbols: ^1.0.3 - is-arguments: ^1.1.1 - is-map: ^2.0.2 - is-set: ^2.0.2 - is-string: ^1.0.7 - isarray: ^2.0.5 - stop-iteration-iterator: ^1.0.0 - checksum: 8fa118da42667a01a7c7529f8a8cca514feeff243feec1ce0bb73baaa3514560bd09d2b3438873cf8a5aaec5d52da248131de153b28e2638a061b6e4df13267d - languageName: node - linkType: hard - -"es-set-tostringtag@npm:^2.0.1": - version: 2.0.1 - resolution: "es-set-tostringtag@npm:2.0.1" - dependencies: - get-intrinsic: ^1.1.3 - has: ^1.0.3 - has-tostringtag: ^1.0.0 - checksum: ec416a12948cefb4b2a5932e62093a7cf36ddc3efd58d6c58ca7ae7064475ace556434b869b0bbeb0c365f1032a8ccd577211101234b69837ad83ad204fff884 - languageName: node - linkType: hard - -"es-shim-unscopables@npm:^1.0.0": - version: 1.0.0 - resolution: "es-shim-unscopables@npm:1.0.0" - dependencies: - has: ^1.0.3 - checksum: 83e95cadbb6ee44d3644dfad60dcad7929edbc42c85e66c3e99aefd68a3a5c5665f2686885cddb47dfeabfd77bd5ea5a7060f2092a955a729bbd8834f0d86fa1 - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed - languageName: node - linkType: hard - -"esbuild@npm:^0.17.5": - version: 0.17.12 - resolution: "esbuild@npm:0.17.12" - dependencies: - "@esbuild/android-arm": 0.17.12 - "@esbuild/android-arm64": 0.17.12 - "@esbuild/android-x64": 0.17.12 - "@esbuild/darwin-arm64": 0.17.12 - "@esbuild/darwin-x64": 0.17.12 - "@esbuild/freebsd-arm64": 0.17.12 - "@esbuild/freebsd-x64": 0.17.12 - "@esbuild/linux-arm": 0.17.12 - "@esbuild/linux-arm64": 0.17.12 - "@esbuild/linux-ia32": 0.17.12 - "@esbuild/linux-loong64": 0.17.12 - "@esbuild/linux-mips64el": 0.17.12 - "@esbuild/linux-ppc64": 0.17.12 - "@esbuild/linux-riscv64": 0.17.12 - "@esbuild/linux-s390x": 0.17.12 - "@esbuild/linux-x64": 0.17.12 - "@esbuild/netbsd-x64": 0.17.12 - "@esbuild/openbsd-x64": 0.17.12 - "@esbuild/sunos-x64": 0.17.12 - "@esbuild/win32-arm64": 0.17.12 - "@esbuild/win32-ia32": 0.17.12 - "@esbuild/win32-x64": 0.17.12 - dependenciesMeta: - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: ea6d33eb1bc6c9e00dcee5e253c7e935251b4801d376661fd9f19a9dcffc27f970078a6f7116d6c78ee825ceff9b974594b0b616bd560ce4d875a951aa92977b - languageName: node - linkType: hard - -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5 - languageName: node - linkType: hard - -"eslint-config-airbnb-base@npm:^15.0.0": - version: 15.0.0 - resolution: "eslint-config-airbnb-base@npm:15.0.0" - dependencies: - confusing-browser-globals: ^1.0.10 - object.assign: ^4.1.2 - object.entries: ^1.1.5 - semver: ^6.3.0 - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.2 - checksum: 38626bad2ce2859fccac86b30cd2b86c9b7d8d71d458331860861dc05290a5b198bded2f4fb89efcb9046ec48f8ab4c4fb00365ba8916f27b172671da28b93ea - languageName: node - linkType: hard - -"eslint-config-airbnb@npm:19.0.4": - version: 19.0.4 - resolution: "eslint-config-airbnb@npm:19.0.4" - dependencies: - eslint-config-airbnb-base: ^15.0.0 - object.assign: ^4.1.2 - object.entries: ^1.1.5 - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.3 - eslint-plugin-jsx-a11y: ^6.5.1 - eslint-plugin-react: ^7.28.0 - eslint-plugin-react-hooks: ^4.3.0 - checksum: 253178689c3c80eef2567e3aaf0612e18973bc9cf51d9be36074b5dd58210e8b6942200a424bcccbb81ac884e41303479ab09f251a2a97addc2de61efdc9576c - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.7": - version: 0.3.7 - resolution: "eslint-import-resolver-node@npm:0.3.7" - dependencies: - debug: ^3.2.7 - is-core-module: ^2.11.0 - resolve: ^1.22.1 - checksum: 3379aacf1d2c6952c1b9666c6fa5982c3023df695430b0d391c0029f6403a7775414873d90f397e98ba6245372b6c8960e16e74d9e4a3b0c0a4582f3bdbe3d6e - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.7.4": - version: 2.7.4 - resolution: "eslint-module-utils@npm:2.7.4" - dependencies: - debug: ^3.2.7 - peerDependenciesMeta: - eslint: - optional: true - checksum: 5da13645daff145a5c922896b258f8bba560722c3767254e458d894ff5fbb505d6dfd945bffa932a5b0ae06714da2379bd41011c4c20d2d59cc83e23895360f7 - languageName: node - linkType: hard - -"eslint-plugin-import-newlines@npm:1.3.1, eslint-plugin-import-newlines@npm:^1.2.3": - version: 1.3.1 - resolution: "eslint-plugin-import-newlines@npm:1.3.1" - peerDependencies: - eslint: ">=6.0.0" - bin: - import-linter: lib/index.js - checksum: f1ee861d8d955393f68d489bc8e7755f708d4945ef8097b28dca3c801f28f8092c9621816de45b38f3d999295b4e360acf4134f495bc51966e18ca906757d1b7 - languageName: node - linkType: hard - -"eslint-plugin-import@npm:2.27.5": - version: 2.27.5 - resolution: "eslint-plugin-import@npm:2.27.5" - dependencies: - array-includes: ^3.1.6 - array.prototype.flat: ^1.3.1 - array.prototype.flatmap: ^1.3.1 - debug: ^3.2.7 - doctrine: ^2.1.0 - eslint-import-resolver-node: ^0.3.7 - eslint-module-utils: ^2.7.4 - has: ^1.0.3 - is-core-module: ^2.11.0 - is-glob: ^4.0.3 - minimatch: ^3.1.2 - object.values: ^1.1.6 - resolve: ^1.22.1 - semver: ^6.3.0 - tsconfig-paths: ^3.14.1 - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: f500571a380167e25d72a4d925ef9a7aae8899eada57653e5f3051ec3d3c16d08271fcefe41a30a9a2f4fefc232f066253673ee4ea77b30dba65ae173dade85d - languageName: node - linkType: hard - -"eslint-plugin-jsx-a11y@npm:6.7.1": - version: 6.7.1 - resolution: "eslint-plugin-jsx-a11y@npm:6.7.1" - dependencies: - "@babel/runtime": ^7.20.7 - aria-query: ^5.1.3 - array-includes: ^3.1.6 - array.prototype.flatmap: ^1.3.1 - ast-types-flow: ^0.0.7 - axe-core: ^4.6.2 - axobject-query: ^3.1.1 - damerau-levenshtein: ^1.0.8 - emoji-regex: ^9.2.2 - has: ^1.0.3 - jsx-ast-utils: ^3.3.3 - language-tags: =1.0.5 - minimatch: ^3.1.2 - object.entries: ^1.1.6 - object.fromentries: ^2.0.6 - semver: ^6.3.0 - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: f166dd5fe7257c7b891c6692e6a3ede6f237a14043ae3d97581daf318fc5833ddc6b4871aa34ab7656187430170500f6d806895747ea17ecdf8231a666c3c2fd - languageName: node - linkType: hard - -"eslint-plugin-react-hooks@npm:4.6.0": - version: 4.6.0 - resolution: "eslint-plugin-react-hooks@npm:4.6.0" - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 23001801f14c1d16bf0a837ca7970d9dd94e7b560384b41db378b49b6e32dc43d6e2790de1bd737a652a86f81a08d6a91f402525061b47719328f586a57e86c3 - languageName: node - linkType: hard - -"eslint-plugin-react@npm:7.32.1": - version: 7.32.1 - resolution: "eslint-plugin-react@npm:7.32.1" - dependencies: - array-includes: ^3.1.6 - array.prototype.flatmap: ^1.3.1 - array.prototype.tosorted: ^1.1.1 - doctrine: ^2.1.0 - estraverse: ^5.3.0 - jsx-ast-utils: ^2.4.1 || ^3.0.0 - minimatch: ^3.1.2 - object.entries: ^1.1.6 - object.fromentries: ^2.0.6 - object.hasown: ^1.1.2 - object.values: ^1.1.6 - prop-types: ^15.8.1 - resolve: ^2.0.0-next.4 - semver: ^6.3.0 - string.prototype.matchall: ^4.0.8 - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: e20eab61161a3db6211c2bd1eb9be3e407fd14e72c06c5f39a078b6ac37427b2af6056ee70e3954249bca0a04088ae797a0c8ba909fb8802e29712de2a41262d - languageName: node - linkType: hard - -"eslint-plugin-react@npm:7.32.2": - version: 7.32.2 - resolution: "eslint-plugin-react@npm:7.32.2" - dependencies: - array-includes: ^3.1.6 - array.prototype.flatmap: ^1.3.1 - array.prototype.tosorted: ^1.1.1 - doctrine: ^2.1.0 - estraverse: ^5.3.0 - jsx-ast-utils: ^2.4.1 || ^3.0.0 - minimatch: ^3.1.2 - object.entries: ^1.1.6 - object.fromentries: ^2.0.6 - object.hasown: ^1.1.2 - object.values: ^1.1.6 - prop-types: ^15.8.1 - resolve: ^2.0.0-next.4 - semver: ^6.3.0 - string.prototype.matchall: ^4.0.8 - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 2232b3b8945aa50b7773919c15cd96892acf35d2f82503667a79e2f55def90f728ed4f0e496f0f157acbe1bd4397c5615b676ae7428fe84488a544ca53feb944 - languageName: node - linkType: hard - -"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^4.1.1 - checksum: 47e4b6a3f0cc29c7feedee6c67b225a2da7e155802c6ea13bbef4ac6b9e10c66cd2dcb987867ef176292bf4e64eccc680a49e35e9e9c669f4a02bac17e86abdb - languageName: node - linkType: hard - -"eslint-scope@npm:^7.1.1": - version: 7.1.1 - resolution: "eslint-scope@npm:7.1.1" - dependencies: - esrecurse: ^4.3.0 - estraverse: ^5.2.0 - checksum: 9f6e974ab2db641ca8ab13508c405b7b859e72afe9f254e8131ff154d2f40c99ad4545ce326fd9fde3212ff29707102562a4834f1c48617b35d98c71a97fbf3e - languageName: node - linkType: hard - -"eslint-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-utils@npm:3.0.0" - dependencies: - eslint-visitor-keys: ^2.0.0 - peerDependencies: - eslint: ">=5" - checksum: 0668fe02f5adab2e5a367eee5089f4c39033af20499df88fe4e6aba2015c20720404d8c3d6349b6f716b08fdf91b9da4e5d5481f265049278099c4c836ccb619 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^2.0.0, eslint-visitor-keys@npm:^2.1.0": - version: 2.1.0 - resolution: "eslint-visitor-keys@npm:2.1.0" - checksum: e3081d7dd2611a35f0388bbdc2f5da60b3a3c5b8b6e928daffff7391146b434d691577aa95064c8b7faad0b8a680266bcda0a42439c18c717b80e6718d7e267d - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0": - version: 3.3.0 - resolution: "eslint-visitor-keys@npm:3.3.0" - checksum: d59e68a7c5a6d0146526b0eec16ce87fbf97fe46b8281e0d41384224375c4e52f5ffb9e16d48f4ea50785cde93f766b0c898e31ab89978d88b0e1720fbfb7808 - languageName: node - linkType: hard - -"eslint@npm:8.32.0": - version: 8.32.0 - resolution: "eslint@npm:8.32.0" - dependencies: - "@eslint/eslintrc": ^1.4.1 - "@humanwhocodes/config-array": ^0.11.8 - "@humanwhocodes/module-importer": ^1.0.1 - "@nodelib/fs.walk": ^1.2.8 - ajv: ^6.10.0 - chalk: ^4.0.0 - cross-spawn: ^7.0.2 - debug: ^4.3.2 - doctrine: ^3.0.0 - escape-string-regexp: ^4.0.0 - eslint-scope: ^7.1.1 - eslint-utils: ^3.0.0 - eslint-visitor-keys: ^3.3.0 - espree: ^9.4.0 - esquery: ^1.4.0 - esutils: ^2.0.2 - fast-deep-equal: ^3.1.3 - file-entry-cache: ^6.0.1 - find-up: ^5.0.0 - glob-parent: ^6.0.2 - globals: ^13.19.0 - grapheme-splitter: ^1.0.4 - ignore: ^5.2.0 - import-fresh: ^3.0.0 - imurmurhash: ^0.1.4 - is-glob: ^4.0.0 - is-path-inside: ^3.0.3 - js-sdsl: ^4.1.4 - js-yaml: ^4.1.0 - json-stable-stringify-without-jsonify: ^1.0.1 - levn: ^0.4.1 - lodash.merge: ^4.6.2 - minimatch: ^3.1.2 - natural-compare: ^1.4.0 - optionator: ^0.9.1 - regexpp: ^3.2.0 - strip-ansi: ^6.0.1 - strip-json-comments: ^3.1.0 - text-table: ^0.2.0 - bin: - eslint: bin/eslint.js - checksum: 23c8fb3c57291eecd9c1448faf603226a8f885022a2cd96e303459bf72e39b7f54987c6fb948f0f9eecaf7085600e6eb0663482a35ea83da12e9f9141a22b91e - languageName: node - linkType: hard - -"eslint@npm:8.33.0": - version: 8.33.0 - resolution: "eslint@npm:8.33.0" - dependencies: - "@eslint/eslintrc": ^1.4.1 - "@humanwhocodes/config-array": ^0.11.8 - "@humanwhocodes/module-importer": ^1.0.1 - "@nodelib/fs.walk": ^1.2.8 - ajv: ^6.10.0 - chalk: ^4.0.0 - cross-spawn: ^7.0.2 - debug: ^4.3.2 - doctrine: ^3.0.0 - escape-string-regexp: ^4.0.0 - eslint-scope: ^7.1.1 - eslint-utils: ^3.0.0 - eslint-visitor-keys: ^3.3.0 - espree: ^9.4.0 - esquery: ^1.4.0 - esutils: ^2.0.2 - fast-deep-equal: ^3.1.3 - file-entry-cache: ^6.0.1 - find-up: ^5.0.0 - glob-parent: ^6.0.2 - globals: ^13.19.0 - grapheme-splitter: ^1.0.4 - ignore: ^5.2.0 - import-fresh: ^3.0.0 - imurmurhash: ^0.1.4 - is-glob: ^4.0.0 - is-path-inside: ^3.0.3 - js-sdsl: ^4.1.4 - js-yaml: ^4.1.0 - json-stable-stringify-without-jsonify: ^1.0.1 - levn: ^0.4.1 - lodash.merge: ^4.6.2 - minimatch: ^3.1.2 - natural-compare: ^1.4.0 - optionator: ^0.9.1 - regexpp: ^3.2.0 - strip-ansi: ^6.0.1 - strip-json-comments: ^3.1.0 - text-table: ^0.2.0 - bin: - eslint: bin/eslint.js - checksum: 727e63ab8b7acf281442323c5971f6afdd5b656fbcebc4476cf54e35af51b2f180617433fc5e1952f0449ca3f43a905527f9407ea4b8a7ea7562fc9c3f278d4c - languageName: node - linkType: hard - -"eslint@npm:8.36.0": - version: 8.36.0 - resolution: "eslint@npm:8.36.0" - dependencies: - "@eslint-community/eslint-utils": ^4.2.0 - "@eslint-community/regexpp": ^4.4.0 - "@eslint/eslintrc": ^2.0.1 - "@eslint/js": 8.36.0 - "@humanwhocodes/config-array": ^0.11.8 - "@humanwhocodes/module-importer": ^1.0.1 - "@nodelib/fs.walk": ^1.2.8 - ajv: ^6.10.0 - chalk: ^4.0.0 - cross-spawn: ^7.0.2 - debug: ^4.3.2 - doctrine: ^3.0.0 - escape-string-regexp: ^4.0.0 - eslint-scope: ^7.1.1 - eslint-visitor-keys: ^3.3.0 - espree: ^9.5.0 - esquery: ^1.4.2 - esutils: ^2.0.2 - fast-deep-equal: ^3.1.3 - file-entry-cache: ^6.0.1 - find-up: ^5.0.0 - glob-parent: ^6.0.2 - globals: ^13.19.0 - grapheme-splitter: ^1.0.4 - ignore: ^5.2.0 - import-fresh: ^3.0.0 - imurmurhash: ^0.1.4 - is-glob: ^4.0.0 - is-path-inside: ^3.0.3 - js-sdsl: ^4.1.4 - js-yaml: ^4.1.0 - json-stable-stringify-without-jsonify: ^1.0.1 - levn: ^0.4.1 - lodash.merge: ^4.6.2 - minimatch: ^3.1.2 - natural-compare: ^1.4.0 - optionator: ^0.9.1 - strip-ansi: ^6.0.1 - strip-json-comments: ^3.1.0 - text-table: ^0.2.0 - bin: - eslint: bin/eslint.js - checksum: e9a961fc3b3de5cff5a1cb2c92eeffaa7e155a715489e30b3e1e76f186bd1255e0481e09564f2094733c0b1dbd3453499fb72ae7c043c83156e11e6d965b2304 - languageName: node - linkType: hard - -"espree@npm:^9.4.0, espree@npm:^9.5.0": - version: 9.5.0 - resolution: "espree@npm:9.5.0" - dependencies: - acorn: ^8.8.0 - acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^3.3.0 - checksum: a7f110aefb6407e0d3237aa635ab3cea87106ae63748dd23c67031afccc640d04c4209fca2daf16e2233c82efb505faead0fb84097478fd9cc6e8f8dd80bf99d - languageName: node - linkType: hard - -"esquery@npm:^1.4.0, esquery@npm:^1.4.2": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" - dependencies: - estraverse: ^5.1.0 - checksum: aefb0d2596c230118656cd4ec7532d447333a410a48834d80ea648b1e7b5c9bc9ed8b5e33a89cb04e487b60d622f44cf5713bf4abed7c97343edefdc84a35900 - languageName: node - linkType: hard - -"esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: ^5.2.0 - checksum: ebc17b1a33c51cef46fdc28b958994b1dc43cd2e86237515cbc3b4e5d2be6a811b2315d0a1a4d9d340b6d2308b15322f5c8291059521cc5f4802f65e7ec32837 - languageName: node - linkType: hard - -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: a6299491f9940bb246124a8d44b7b7a413a8336f5436f9837aaa9330209bd9ee8af7e91a654a3545aee9c54b3308e78ee360cef1d777d37cfef77d2fa33b5827 - languageName: node - linkType: hard - -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 072780882dc8416ad144f8fe199628d2b3e7bbc9989d9ed43795d2c90309a2047e6bc5979d7e2322a341163d22cfad9e21f4110597fe487519697389497e4e2b - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 22b5b08f74737379a840b8ed2036a5fb35826c709ab000683b092d9054e5c2a82c27818f12604bfc2a9a76b90b6834ef081edbc1c7ae30d1627012e067c6ec87 - languageName: node - linkType: hard - -"extend@npm:^3.0.0": - version: 3.0.2 - resolution: "extend@npm:3.0.2" - checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 - languageName: node - linkType: hard - -"external-editor@npm:^3.0.3": - version: 3.1.0 - resolution: "external-editor@npm:3.1.0" - dependencies: - chardet: ^0.7.0 - iconv-lite: ^0.4.24 - tmp: ^0.0.33 - checksum: 1c2a616a73f1b3435ce04030261bed0e22d4737e14b090bb48e58865da92529c9f2b05b893de650738d55e692d071819b45e1669259b2b354bc3154d27a698c7 - languageName: node - linkType: hard - -"extract-files@npm:^11.0.0": - version: 11.0.0 - resolution: "extract-files@npm:11.0.0" - checksum: 39ebd92772e9a1e30d1e3112fb7db85d353c8243640635668b615ac1d605ceb79fbb13d17829dd308993ef37bb189ad99817f79ab164ae95c9bb3df9f440bd16 - languageName: node - linkType: hard - -"extract-files@npm:^9.0.0": - version: 9.0.0 - resolution: "extract-files@npm:9.0.0" - checksum: c31781d090f8d8f62cc541f1023b39ea863f24bd6fb3d4011922d71cbded70cef8191f2b70b43ec6cb5c5907cdad1dc5e9f29f78228936c10adc239091d8ab64 - languageName: node - linkType: hard - -"fast-decode-uri-component@npm:^1.0.1": - version: 1.0.1 - resolution: "fast-decode-uri-component@npm:1.0.1" - checksum: 427a48fe0907e76f0e9a2c228e253b4d8a8ab21d130ee9e4bb8339c5ba4086235cf9576831f7b20955a752eae4b525a177ff9d5825dd8d416e7726939194fbee - languageName: node - linkType: hard - -"fast-deep-equal@npm:1.0.0": - version: 1.0.0 - resolution: "fast-deep-equal@npm:1.0.0" - checksum: 9af727dacb3defa3ee2792b5c154ce3dacf20dc850dceea1eb231096fcff4cf91013d13f30d87b4c19c4ff7c6911c978334333d794b82e296a38a507a8503e59 - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.9": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" - dependencies: - "@nodelib/fs.stat": ^2.0.2 - "@nodelib/fs.walk": ^1.2.3 - glob-parent: ^5.1.2 - merge2: ^1.3.0 - micromatch: ^4.0.4 - checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:^2.0.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb - languageName: node - linkType: hard - -"fast-levenshtein@npm:^2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c - languageName: node - linkType: hard - -"fast-querystring@npm:^1.1.1": - version: 1.1.1 - resolution: "fast-querystring@npm:1.1.1" - dependencies: - fast-decode-uri-component: ^1.0.1 - checksum: 86d2b75b9b299a552353532fb1a542f09730ee2a61e657d68710971d9a2afc9a3c5c7b7e106b6534f4cc506d2ff1c08ab0fda4ae614b4e7720798c9ac2a88e02 - languageName: node - linkType: hard - -"fast-url-parser@npm:^1.1.3": - version: 1.1.3 - resolution: "fast-url-parser@npm:1.1.3" - dependencies: - punycode: ^1.3.2 - checksum: 5043d0c4a8d775ff58504d56c096563c11b113e4cb8a2668c6f824a1cd4fb3812e2fdf76537eb24a7ce4ae7def6bd9747da630c617cf2a4b6ce0c42514e4f21c - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.15.0 - resolution: "fastq@npm:1.15.0" - dependencies: - reusify: ^1.0.4 - checksum: 0170e6bfcd5d57a70412440b8ef600da6de3b2a6c5966aeaf0a852d542daff506a0ee92d6de7679d1de82e644bce69d7a574a6c93f0b03964b5337eed75ada1a - languageName: node - linkType: hard - -"fb-watchman@npm:^2.0.0": - version: 2.0.2 - resolution: "fb-watchman@npm:2.0.2" - dependencies: - bser: 2.1.1 - checksum: b15a124cef28916fe07b400eb87cbc73ca082c142abf7ca8e8de6af43eca79ca7bd13eb4d4d48240b3bd3136eaac40d16e42d6edf87a8e5d1dd8070626860c78 - languageName: node - linkType: hard - -"fbjs-css-vars@npm:^1.0.0": - version: 1.0.2 - resolution: "fbjs-css-vars@npm:1.0.2" - checksum: 72baf6d22c45b75109118b4daecb6c8016d4c83c8c0f23f683f22e9d7c21f32fff6201d288df46eb561e3c7d4bb4489b8ad140b7f56444c453ba407e8bd28511 - languageName: node - linkType: hard - -"fbjs@npm:^3.0.0": - version: 3.0.4 - resolution: "fbjs@npm:3.0.4" - dependencies: - cross-fetch: ^3.1.5 - fbjs-css-vars: ^1.0.0 - loose-envify: ^1.0.0 - object-assign: ^4.1.0 - promise: ^7.1.1 - setimmediate: ^1.0.5 - ua-parser-js: ^0.7.30 - checksum: 8b23a3550fcda8a9109fca9475a3416590c18bb6825ea884192864ed686f67fcd618e308a140c9e5444fbd0168732e1ff3c092ba3d0c0ae1768969f32ba280c7 - languageName: node - linkType: hard - -"figures@npm:^3.0.0": - version: 3.2.0 - resolution: "figures@npm:3.2.0" - dependencies: - escape-string-regexp: ^1.0.5 - checksum: 85a6ad29e9aca80b49b817e7c89ecc4716ff14e3779d9835af554db91bac41c0f289c418923519392a1e582b4d10482ad282021330cd045bb7b80c84152f2a2b - languageName: node - linkType: hard - -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" - dependencies: - flat-cache: ^3.0.4 - checksum: f49701feaa6314c8127c3c2f6173cfefff17612f5ed2daaafc6da13b5c91fd43e3b2a58fd0d63f9f94478a501b167615931e7200e31485e320f74a33885a9c74 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 - languageName: node - linkType: hard - -"find-root@npm:^1.1.0": - version: 1.1.0 - resolution: "find-root@npm:1.1.0" - checksum: b2a59fe4b6c932eef36c45a048ae8f93c85640212ebe8363164814990ee20f154197505965f3f4f102efc33bfb1cbc26fd17c4a2fc739ebc51b886b137cbefaf - languageName: node - linkType: hard - -"find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: ^5.0.0 - path-exists: ^4.0.0 - checksum: 4c172680e8f8c1f78839486e14a43ef82e9decd0e74145f40707cc42e7420506d5ec92d9a11c22bd2c48fb0c384ea05dd30e10dd152fefeec6f2f75282a8b844 - languageName: node - linkType: hard - -"find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: ^6.0.0 - path-exists: ^4.0.0 - checksum: 07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095 - languageName: node - linkType: hard - -"flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" - dependencies: - flatted: ^3.1.0 - rimraf: ^3.0.2 - checksum: 4fdd10ecbcbf7d520f9040dd1340eb5dfe951e6f0ecf2252edeec03ee68d989ec8b9a20f4434270e71bcfd57800dc09b3344fca3966b2eb8f613072c7d9a2365 - languageName: node - linkType: hard - -"flatted@npm:^3.1.0": - version: 3.2.7 - resolution: "flatted@npm:3.2.7" - checksum: 427633049d55bdb80201c68f7eb1cbd533e03eac541f97d3aecab8c5526f12a20ccecaeede08b57503e772c769e7f8680b37e8d482d1e5f8d7e2194687f9ea35 - languageName: node - linkType: hard - -"flow-static-land@npm:0.2.7": - version: 0.2.7 - resolution: "flow-static-land@npm:0.2.7" - checksum: 38dbca39ad8d7c3a8a1bf8287d5fab33af043a223169e180ae963e66fe677a6ea2c7f982dd86643aea33ae941b3dc610aa44e78113eb360c45501b5712b40a95 - languageName: node - linkType: hard - -"flow-static-land@npm:0.2.8": - version: 0.2.8 - resolution: "flow-static-land@npm:0.2.8" - checksum: 601041728f26baac08de972301360877407109d9b7cb78241126d9bf787ecc97eb48b978c58711208a4a83a1a2faab70700de99a4a517d6f129fb92f3493a0d1 - languageName: node - linkType: hard - -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" - dependencies: - is-callable: ^1.1.3 - checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 - languageName: node - linkType: hard - -"form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d - languageName: node - linkType: hard - -"frontend@workspace:.": - version: 0.0.0-use.local - resolution: "frontend@workspace:." - dependencies: - "@absinthe/socket": 0.2.1 - "@absinthe/socket-apollo-link": 0.2.1 - "@apollo/client": 3.7.10 - "@emotion/react": 11.10.6 - "@emotion/styled": 11.10.6 - "@graphql-codegen/add": 4.0.1 - "@graphql-codegen/cli": 3.2.2 - "@graphql-codegen/introspection": 3.0.1 - "@graphql-codegen/typescript": 3.0.2 - "@graphql-codegen/typescript-operations": 3.0.2 - "@graphql-codegen/typescript-react-apollo": 3.3.7 - "@pluralsh/design-system": 1.334.0 - "@pluralsh/eslint-config-typescript": 2.5.41 - "@types/absinthe__socket": 0.2.3 - "@types/absinthe__socket-apollo-link": 0.2.1 - "@types/phoenix": 1.5.5 - "@types/react": 18.0.28 - "@types/react-dom": 18.0.11 - "@types/styled-components": 5.1.26 - "@typescript-eslint/eslint-plugin": 5.56.0 - "@vitejs/plugin-react": 3.1.0 - eslint: 8.33.0 - eslint-plugin-import: 2.27.5 - eslint-plugin-import-newlines: 1.3.1 - eslint-plugin-jsx-a11y: 6.7.1 - eslint-plugin-react: 7.32.2 - eslint-plugin-react-hooks: 4.6.0 - grommet: 2.31.0 - honorable: 0.194.0 - honorable-theme-default: 0.77.0 - lodash: 4.17.21 - phoenix: 1.7.2 - react: 18.2.0 - react-dom: 18.2.0 - react-router-dom: 6.9.0 - styled-components: 5.3.9 - typescript: 5.0.2 - vite: 4.2.1 - languageName: unknown - linkType: soft - -"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 - languageName: node - linkType: hard - -"fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: latest - checksum: 97ade64e75091afee5265e6956cb72ba34db7819b4c3e94c431d4be2b19b8bb7a2d4116da417950c3425f17c8fe693d25e20212cac583ac1521ad066b77ae31f - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@~2.3.2#~builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=df0bf1" - dependencies: - node-gyp: latest - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a - languageName: node - linkType: hard - -"function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - functions-have-names: ^1.2.2 - checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.2": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 - languageName: node - linkType: hard - -"gauge@npm:^4.0.3": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" - dependencies: - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.3 - console-control-strings: ^1.1.0 - has-unicode: ^2.0.1 - signal-exit: ^3.0.7 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.5 - checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d - languageName: node - linkType: hard - -"gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: a7437e58c6be12aa6c90f7730eac7fa9833dc78872b4ad2963d2031b00a3367a93f98aec75f9aaac7220848e4026d67a8655e870b24f20a543d103c0d65952ec - languageName: node - linkType: hard - -"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0": - version: 1.2.0 - resolution: "get-intrinsic@npm:1.2.0" - dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.3 - checksum: 78fc0487b783f5c58cf2dccafc3ae656ee8d2d8062a8831ce4a95e7057af4587a1d4882246c033aca0a7b4965276f4802b45cc300338d1b77a73d3e3e3f4877d - languageName: node - linkType: hard - -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 9ceff8fe968f9270a37a1f73bf3f1f7bda69ca80f4f80850670e0e7b9444ff99323f7ac52f96567f8b5f5fbe7ac717a0d81d3407c7313e82810c6199446a5247 - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: ^4.0.1 - checksum: f4f2bfe2425296e8a47e36864e4f42be38a996db40420fe434565e4480e3322f18eb37589617a98640c5dc8fdec1a387007ee18dbb1f3f5553409c34d17f425e - languageName: node - linkType: hard - -"glob-parent@npm:^6.0.2": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" - dependencies: - is-glob: ^4.0.3 - checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 - languageName: node - linkType: hard - -"glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.1.1 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 - languageName: node - linkType: hard - -"glob@npm:^8.0.1": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 - languageName: node - linkType: hard - -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 67051a45eca3db904aee189dfc7cd53c20c7d881679c93f6146ddd4c9f4ab2268e68a919df740d39c71f4445d2b38ee360fc234428baea1dbdfe68bbcb46979e - languageName: node - linkType: hard - -"globals@npm:^13.19.0": - version: 13.20.0 - resolution: "globals@npm:13.20.0" - dependencies: - type-fest: ^0.20.2 - checksum: ad1ecf914bd051325faad281d02ea2c0b1df5d01bd94d368dcc5513340eac41d14b3c61af325768e3c7f8d44576e72780ec0b6f2d366121f8eec6e03c3a3b97a - languageName: node - linkType: hard - -"globalthis@npm:^1.0.3": - version: 1.0.3 - resolution: "globalthis@npm:1.0.3" - dependencies: - define-properties: ^1.1.3 - checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 - languageName: node - linkType: hard - -"globby@npm:^11.0.3, globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: ^2.1.0 - dir-glob: ^3.0.1 - fast-glob: ^3.2.9 - ignore: ^5.2.0 - merge2: ^1.4.1 - slash: ^3.0.0 - checksum: b4be8885e0cfa018fc783792942d53926c35c50b3aefd3fdcfb9d22c627639dc26bd2327a40a0b74b074100ce95bb7187bfeae2f236856aa3de183af7a02aea6 - languageName: node - linkType: hard - -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: ^1.1.3 - checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.6": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da - languageName: node - linkType: hard - -"grapheme-splitter@npm:^1.0.4": - version: 1.0.4 - resolution: "grapheme-splitter@npm:1.0.4" - checksum: 0c22ec54dee1b05cd480f78cf14f732cb5b108edc073572c4ec205df4cd63f30f8db8025afc5debc8835a8ddeacf648a1c7992fe3dcd6ad38f9a476d84906620 - languageName: node - linkType: hard - -"graphql-config@npm:^4.5.0": - version: 4.5.0 - resolution: "graphql-config@npm:4.5.0" - dependencies: - "@graphql-tools/graphql-file-loader": ^7.3.7 - "@graphql-tools/json-file-loader": ^7.3.7 - "@graphql-tools/load": ^7.5.5 - "@graphql-tools/merge": ^8.2.6 - "@graphql-tools/url-loader": ^7.9.7 - "@graphql-tools/utils": ^9.0.0 - cosmiconfig: 8.0.0 - jiti: 1.17.1 - minimatch: 4.2.3 - string-env-interpolation: 1.0.1 - tslib: ^2.4.0 - peerDependencies: - cosmiconfig-toml-loader: ^1.0.0 - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - peerDependenciesMeta: - cosmiconfig-toml-loader: - optional: true - checksum: 8ab1a3ce3534598ddac2df213b6af2eecd9ebcca2268d39cc3e87a6e55749483389a6df222e9e0acd638dd2479378a5c8e8d90f980e6a54e700c4c4ae3522123 - languageName: node - linkType: hard - -"graphql-request@npm:^5.0.0": - version: 5.2.0 - resolution: "graphql-request@npm:5.2.0" - dependencies: - "@graphql-typed-document-node/core": ^3.1.1 - cross-fetch: ^3.1.5 - extract-files: ^9.0.0 - form-data: ^3.0.0 - peerDependencies: - graphql: 14 - 16 - checksum: a8aa37816378898e6fc8c4db04a1c114c98f98d90718cf1680bd96b22724bd43b1210619f9b0d328b5c1acb4f7b76d2227a2537cd5ab059bb54cf0debecb33bf - languageName: node - linkType: hard - -"graphql-tag@npm:^2.11.0, graphql-tag@npm:^2.12.6": - version: 2.12.6 - resolution: "graphql-tag@npm:2.12.6" - dependencies: - tslib: ^2.1.0 - peerDependencies: - graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: b15162a3d62f17b9b79302445b9ee330e041582f1c7faca74b9dec5daa74272c906ec1c34e1c50592bb6215e5c3eba80a309103f6ba9e4c1cddc350c46f010df - languageName: node - linkType: hard - -"graphql-ws@npm:5.12.0": - version: 5.12.0 - resolution: "graphql-ws@npm:5.12.0" - peerDependencies: - graphql: ">=0.11 <=16" - checksum: 5c683e2d5bdadfcfec0639eda69b8a66ef275e68e64f662bd75da6779a87b34395cbce8e37cb66830a9febca1871f7dc2575e6814f6f6e899904fe72e245f216 - languageName: node - linkType: hard - -"graphql@npm:14.0.2": - version: 14.0.2 - resolution: "graphql@npm:14.0.2" - dependencies: - iterall: ^1.2.2 - checksum: 789cf582d3b7493bfe9372d28b0c124a992165082b111972b4b7171dc55db0eda6288a946759972e83788c584246d5ebcaec403d6b6e1292e266b74e14198bf7 - languageName: node - linkType: hard - -"graphql@npm:^14.5.3": - version: 14.7.0 - resolution: "graphql@npm:14.7.0" - dependencies: - iterall: ^1.2.2 - checksum: e5f4e60799421a573904f390e1ec0aa76360f751688dbbe62e9c35baa0d3727c8d59a659bfc524f126dffe3518da87fd8ecaa78c94fd5c0fe4e035c670745242 - languageName: node - linkType: hard - -"grommet-icons@npm:4.9.0": - version: 4.9.0 - resolution: "grommet-icons@npm:4.9.0" - dependencies: - grommet-styles: ^0.2.0 - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - styled-components: ">= 5.x" - checksum: b978c087a16341d75f3f8e9f57484fab9c4fdf64ab7d89a46246d7bff024120cce50167e1af49048a492fb30cc3e59c7ffc0e8dbd25733521864147f071dc3d3 - languageName: node - linkType: hard - -"grommet-icons@npm:^4.10.0, grommet-icons@npm:^4.8.0": - version: 4.10.0 - resolution: "grommet-icons@npm:4.10.0" - dependencies: - grommet-styles: ^0.2.0 - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - styled-components: ">= 5.x" - checksum: 69745341a65f4e4d05bd5b207f7243b5ffa54d13a8195093cae7fb32d57b38ab55ed30cfee341b9f1f659b99743f721ee04c7ab9decd7dd7f171fcc4947af048 - languageName: node - linkType: hard - -"grommet-styles@npm:^0.2.0": - version: 0.2.0 - resolution: "grommet-styles@npm:0.2.0" - peerDependencies: - react: ">= 16.4.1" - react-dom: ">= 16.4.1" - styled-components: ">= 4.X" - checksum: 7b29e6fd773a29a9f7b48e5b0a163e1c51b3b196891228d88a0e5b99faab4ece03b5410a97665105fe886402016a337237b956d5f46af06ec2e06e2b328a0757 - languageName: node - linkType: hard - -"grommet@npm:2.29.1": - version: 2.29.1 - resolution: "grommet@npm:2.29.1" - dependencies: - grommet-icons: ^4.8.0 - hoist-non-react-statics: ^3.2.0 - markdown-to-jsx: ^7.1.5 - prop-types: ^15.8.1 - peerDependencies: - react: ^16.6.1 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.1 || ^17.0.0 || ^18.0.0 - styled-components: ">= 5.1" - checksum: f16f68ad7a0d5984bd5f3a6f84d84575bc168a3f9eb53095f80a7da702e3a6113b6e465390c8045650aedce813d0a3165cad96508939ff8463b00f99eefd54d1 - languageName: node - linkType: hard - -"grommet@npm:2.31.0": - version: 2.31.0 - resolution: "grommet@npm:2.31.0" - dependencies: - grommet-icons: ^4.10.0 - hoist-non-react-statics: ^3.2.0 - markdown-to-jsx: ^7.2.0 - prop-types: ^15.8.1 - peerDependencies: - react: ^16.6.1 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.1 || ^17.0.0 || ^18.0.0 - styled-components: ">= 5.1" - checksum: a15b8834ecd352713a1a4ad997f210db21f5eac2b9ba0917f8f7a14d9f0efaaac8e35e539694efba1c656fb775f4ab52c7f464d640fd0272fe8e1d0131537a29 - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" - dependencies: - get-intrinsic: ^1.1.1 - checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb - languageName: node - linkType: hard - -"has-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "has-proto@npm:1.0.1" - checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: ^1.0.2 - checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c - languageName: node - linkType: hard - -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 - languageName: node - linkType: hard - -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 - languageName: node - linkType: hard - -"hast-util-from-parse5@npm:^7.0.0": - version: 7.1.2 - resolution: "hast-util-from-parse5@npm:7.1.2" - dependencies: - "@types/hast": ^2.0.0 - "@types/unist": ^2.0.0 - hastscript: ^7.0.0 - property-information: ^6.0.0 - vfile: ^5.0.0 - vfile-location: ^4.0.0 - web-namespaces: ^2.0.0 - checksum: 7b4ed5b508b1352127c6719f7b0c0880190cf9859fe54ccaf7c9228ecf623d36cef3097910b3874d2fe1aac6bf4cf45d3cc2303daac3135a05e9ade6534ddddb - languageName: node - linkType: hard - -"hast-util-parse-selector@npm:^3.0.0": - version: 3.1.1 - resolution: "hast-util-parse-selector@npm:3.1.1" - dependencies: - "@types/hast": ^2.0.0 - checksum: 511d373465f60dd65e924f88bf0954085f4fb6e3a2b062a4b5ac43b93cbfd36a8dce6234b5d1e3e63499d936375687e83fc5da55628b22bd6b581b5ee167d1c4 - languageName: node - linkType: hard - -"hast-util-raw@npm:^7.2.0": - version: 7.2.3 - resolution: "hast-util-raw@npm:7.2.3" - dependencies: - "@types/hast": ^2.0.0 - "@types/parse5": ^6.0.0 - hast-util-from-parse5: ^7.0.0 - hast-util-to-parse5: ^7.0.0 - html-void-elements: ^2.0.0 - parse5: ^6.0.0 - unist-util-position: ^4.0.0 - unist-util-visit: ^4.0.0 - vfile: ^5.0.0 - web-namespaces: ^2.0.0 - zwitch: ^2.0.0 - checksum: 21857eea3ffb8fd92d2d9be7793b56d0b2c40db03c4cfa14828855ae41d7c584917aa83efb7157220b2e41e25e95f81f24679ac342c35145e5f1c1d39015f81f - languageName: node - linkType: hard - -"hast-util-to-parse5@npm:^7.0.0": - version: 7.1.0 - resolution: "hast-util-to-parse5@npm:7.1.0" - dependencies: - "@types/hast": ^2.0.0 - comma-separated-tokens: ^2.0.0 - property-information: ^6.0.0 - space-separated-tokens: ^2.0.0 - web-namespaces: ^2.0.0 - zwitch: ^2.0.0 - checksum: 3a7f2175a3db599bbae7e49ba73d3e5e688e5efca7590ff50130ba108ad649f728402815d47db49146f6b94c14c934bf119915da9f6964e38802c122bcc8af6b - languageName: node - linkType: hard - -"hast-util-whitespace@npm:^2.0.0": - version: 2.0.1 - resolution: "hast-util-whitespace@npm:2.0.1" - checksum: 431be6b2f35472f951615540d7a53f69f39461e5e080c0190268bdeb2be9ab9b1dddfd1f467dd26c1de7e7952df67beb1307b6ee940baf78b24a71b5e0663868 - languageName: node - linkType: hard - -"hastscript@npm:^7.0.0": - version: 7.2.0 - resolution: "hastscript@npm:7.2.0" - dependencies: - "@types/hast": ^2.0.0 - comma-separated-tokens: ^2.0.0 - hast-util-parse-selector: ^3.0.0 - property-information: ^6.0.0 - space-separated-tokens: ^2.0.0 - checksum: 928a21576ff7b9a8c945e7940bcbf2d27f770edb4279d4d04b33dc90753e26ca35c1172d626f54afebd377b2afa32331e399feb3eb0f7b91a399dca5927078ae - languageName: node - linkType: hard - -"header-case@npm:^2.0.4": - version: 2.0.4 - resolution: "header-case@npm:2.0.4" - dependencies: - capital-case: ^1.0.4 - tslib: ^2.0.3 - checksum: 571c83eeb25e8130d172218712f807c0b96d62b020981400bccc1503a7cf14b09b8b10498a962d2739eccf231d950e3848ba7d420b58a6acd2f9283439546cd9 - languageName: node - linkType: hard - -"highlight.js@npm:11.7.0": - version: 11.7.0 - resolution: "highlight.js@npm:11.7.0" - checksum: 19e3fb8b56f4b361b057a8523b989dfeb6479bbd1e29cec3fac6fa5c78d09927d5fa61b7dba6631fdb57cfdca9b3084aa4da49405ceaf4a67f67beae2ed5b77d - languageName: node - linkType: hard - -"hoist-non-react-statics@npm:^3.0.0, hoist-non-react-statics@npm:^3.2.0, hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.1, hoist-non-react-statics@npm:^3.3.2": - version: 3.3.2 - resolution: "hoist-non-react-statics@npm:3.3.2" - dependencies: - react-is: ^16.7.0 - checksum: b1538270429b13901ee586aa44f4cc3ecd8831c061d06cb8322e50ea17b3f5ce4d0e2e66394761e6c8e152cd8c34fb3b4b690116c6ce2bd45b18c746516cb9e8 - languageName: node - linkType: hard - -"honorable-recipe-mapper@npm:0.2.0": - version: 0.2.0 - resolution: "honorable-recipe-mapper@npm:0.2.0" - checksum: 86521c78ff616ceb76685a1117e90991670f789cb1e9efaed1963295b170ba1bcdeed2998408433e79c94315f1ba0cb9896272f2e2fb5e8495f06b8f715b351b - languageName: node - linkType: hard - -"honorable-theme-default@npm:0.77.0": - version: 0.77.0 - resolution: "honorable-theme-default@npm:0.77.0" - peerDependencies: - "@emotion/react": ">=10.0.0" - checksum: 008e34e25ff4e7d56e67d52296b495fa28caaacea67eb6e18b28e0283a71099fee647dbe43e0996e93472217fe9ed94d77e0bd1c73dc9c4a5ec205528790f328 - languageName: node - linkType: hard - -"honorable@npm:0.194.0": - version: 0.194.0 - resolution: "honorable@npm:0.194.0" - dependencies: - "@emotion/is-prop-valid": ^1.2.0 - "@floating-ui/react-dom": ^1.0.1 - lodash.merge: ^4.6.2 - lodash.mergewith: ^4.6.2 - prop-types: ^15.8.1 - react-textarea-autosize: ^8.4.0 - react-transition-group: ^4.4.5 - peerDependencies: - "@emotion/react": ">=10.0.0" - "@emotion/styled": ">=10.0.0" - react: ">=16.0.0" - react-dom: ">=16.0.0" - checksum: 4ada627c577ad63de48bbf7d76ee6d3c9f36a7b0e01606988d9f975cbacb9beb644626ed6a5e20f65554bf0ac72ab046503168be58d10249e58c26fbf997d174 - languageName: node - linkType: hard - -"html-void-elements@npm:^2.0.0": - version: 2.0.1 - resolution: "html-void-elements@npm:2.0.1" - checksum: 06d41f13b9d5d6e0f39861c4bec9a9196fa4906d56cd5cf6cf54ad2e52a85bf960cca2bf9600026bde16c8331db171bedba5e5a35e2e43630c8f1d497b2fb658 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.1.0": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "http-proxy-agent@npm:5.0.0" - dependencies: - "@tootallnate/once": 2 - agent-base: 6 - debug: 4 - checksum: e2ee1ff1656a131953839b2a19cd1f3a52d97c25ba87bd2559af6ae87114abf60971e498021f9b73f9fd78aea8876d1fb0d4656aac8a03c6caa9fc175f22b786 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.0": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" - dependencies: - agent-base: 6 - debug: 4 - checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 - languageName: node - linkType: hard - -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - -"iconv-lite@npm:^0.6.2": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: ">= 2.1.2 < 3.0.0" - checksum: 3f60d47a5c8fc3313317edfd29a00a692cc87a19cac0159e2ce711d0ebc9019064108323b5e493625e25594f11c6236647d8e256fbe7a58f4a3b33b89e6d30bf - languageName: node - linkType: hard - -"ieee754@npm:^1.1.13": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e - languageName: node - linkType: hard - -"ignore@npm:^5.2.0": - version: 5.2.4 - resolution: "ignore@npm:5.2.4" - checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef - languageName: node - linkType: hard - -"immer@npm:9.0.19": - version: 9.0.19 - resolution: "immer@npm:9.0.19" - checksum: f02ee53989989c287cd548a3d817fccf0bfe56db919755ee94a72ea3ae78a00363fba93ee6c010fe54a664380c29c53d44ed4091c6a86cae60957ad2cfabc010 - languageName: node - linkType: hard - -"immutable@npm:~3.7.6": - version: 3.7.6 - resolution: "immutable@npm:3.7.6" - checksum: 8cccfb22d3ecf14fe0c474612e96d6bb5d117493e7639fe6642fb81e78c9ac4b698dd8a322c105001a709ad873ffc90e30bad7db5d9a3ef0b54a6e1db0258e8e - languageName: node - linkType: hard - -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" - dependencies: - parent-module: ^1.0.0 - resolve-from: ^4.0.0 - checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa - languageName: node - linkType: hard - -"import-from@npm:4.0.0": - version: 4.0.0 - resolution: "import-from@npm:4.0.0" - checksum: 1fa29c05b048da18914e91d9a529e5d9b91774bebbfab10e53f59bcc1667917672b971cf102fee857f142e5e433ce69fa1f0a596e1c7d82f9947a5ec352694b9 - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 7cae75c8cd9a50f57dadd77482359f659eaebac0319dd9368bcd1714f55e65badd6929ca58569da2b6494ef13fdd5598cd700b1eba23f8b79c5f19d195a3ecf7 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 - languageName: node - linkType: hard - -"infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 - languageName: node - linkType: hard - -"inline-style-parser@npm:0.1.1": - version: 0.1.1 - resolution: "inline-style-parser@npm:0.1.1" - checksum: 5d545056a3e1f2bf864c928a886a0e1656a3517127d36917b973de581bd54adc91b4bf1febcb0da054f204b4934763f1a4e09308b4d55002327cf1d48ac5d966 - languageName: node - linkType: hard - -"inquirer@npm:^8.0.0": - version: 8.2.5 - resolution: "inquirer@npm:8.2.5" - dependencies: - ansi-escapes: ^4.2.1 - chalk: ^4.1.1 - cli-cursor: ^3.1.0 - cli-width: ^3.0.0 - external-editor: ^3.0.3 - figures: ^3.0.0 - lodash: ^4.17.21 - mute-stream: 0.0.8 - ora: ^5.4.1 - run-async: ^2.4.0 - rxjs: ^7.5.5 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - through: ^2.3.6 - wrap-ansi: ^7.0.0 - checksum: f13ee4c444187786fb393609dedf6b30870115a57b603f2e6424f29a99abc13446fd45ee22461c33c9c40a92a60a8df62d0d6b25d74fc6676fa4cb211de55b55 - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5": - version: 1.0.5 - resolution: "internal-slot@npm:1.0.5" - dependencies: - get-intrinsic: ^1.2.0 - has: ^1.0.3 - side-channel: ^1.0.4 - checksum: 97e84046bf9e7574d0956bd98d7162313ce7057883b6db6c5c7b5e5f05688864b0978ba07610c726d15d66544ffe4b1050107d93f8a39ebc59b15d8b429b497a - languageName: node - linkType: hard - -"intl-messageformat@npm:^10.1.0": - version: 10.3.3 - resolution: "intl-messageformat@npm:10.3.3" - dependencies: - "@formatjs/ecma402-abstract": 1.14.3 - "@formatjs/fast-memoize": 2.0.1 - "@formatjs/icu-messageformat-parser": 2.3.0 - tslib: ^2.4.0 - checksum: 05baee05d31b911dc4bb1774ddf0799dc136723203461f73fecb185e2e2d18b148311db7ef14294d664a6212311c5d9116c3e850cf609dd6348e347f3d07e660 - languageName: node - linkType: hard - -"invariant@npm:^2.2.4": - version: 2.2.4 - resolution: "invariant@npm:2.2.4" - dependencies: - loose-envify: ^1.0.0 - checksum: cc3182d793aad82a8d1f0af697b462939cb46066ec48bbf1707c150ad5fad6406137e91a262022c269702e01621f35ef60269f6c0d7fd178487959809acdfb14 - languageName: node - linkType: hard - -"ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: cfcfac6b873b701996d71ec82a7dd27ba92450afdb421e356f44044ed688df04567344c36cbacea7d01b1c39a4c732dc012570ebe9bebfb06f27314bca625349 - languageName: node - linkType: hard - -"is-absolute@npm:^1.0.0": - version: 1.0.0 - resolution: "is-absolute@npm:1.0.0" - dependencies: - is-relative: ^1.0.0 - is-windows: ^1.0.1 - checksum: 9d16b2605eda3f3ce755410f1d423e327ad3a898bcb86c9354cf63970ed3f91ba85e9828aa56f5d6a952b9fae43d0477770f78d37409ae8ecc31e59ebc279b27 - languageName: node - linkType: hard - -"is-arguments@npm:^1.1.1": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 - languageName: node - linkType: hard - -"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": - version: 3.0.2 - resolution: "is-array-buffer@npm:3.0.2" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.2.0 - is-typed-array: ^1.1.10 - checksum: dcac9dda66ff17df9cabdc58214172bf41082f956eab30bb0d86bc0fab1e44b690fc8e1f855cf2481245caf4e8a5a006a982a71ddccec84032ed41f9d8da8c14 - languageName: node - linkType: hard - -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: eef4417e3c10e60e2c810b6084942b3ead455af16c4509959a27e490e7aee87cfb3f38e01bbde92220b528a0ee1a18d52b787e1458ee86174d8c7f0e58cd488f - languageName: node - linkType: hard - -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 - languageName: node - linkType: hard - -"is-buffer@npm:^2.0.0": - version: 2.0.5 - resolution: "is-buffer@npm:2.0.5" - checksum: 764c9ad8b523a9f5a32af29bdf772b08eb48c04d2ad0a7240916ac2688c983bf5f8504bf25b35e66240edeb9d9085461f9b5dae1f3d2861c6b06a65fe983de42 - languageName: node - linkType: hard - -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac - languageName: node - linkType: hard - -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.9.0": - version: 2.11.0 - resolution: "is-core-module@npm:2.11.0" - dependencies: - has: ^1.0.3 - checksum: f96fd490c6b48eb4f6d10ba815c6ef13f410b0ba6f7eb8577af51697de523e5f2cd9de1c441b51d27251bf0e4aebc936545e33a5d26d5d51f28d25698d4a8bab - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 - languageName: node - linkType: hard - -"is-glob@npm:4.0.3, is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: ^2.1.1 - checksum: d381c1319fcb69d341cc6e6c7cd588e17cd94722d9a32dbd60660b993c4fb7d0f19438674e68dfec686d09b7c73139c9166b47597f846af387450224a8101ab4 - languageName: node - linkType: hard - -"is-interactive@npm:^1.0.0": - version: 1.0.0 - resolution: "is-interactive@npm:1.0.0" - checksum: 824808776e2d468b2916cdd6c16acacebce060d844c35ca6d82267da692e92c3a16fdba624c50b54a63f38bdc4016055b6f443ce57d7147240de4f8cdabaf6f9 - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "is-lower-case@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: ba57dd1201e15fd9b590654736afccf1b3b68e919f40c23ef13b00ebcc639b1d9c2f81fe86415bff3e8eccffec459786c9ac9dc8f3a19cfa4484206c411c1d7d - languageName: node - linkType: hard - -"is-map@npm:^2.0.1, is-map@npm:^2.0.2": - version: 2.0.2 - resolution: "is-map@npm:2.0.2" - checksum: ace3d0ecd667bbdefdb1852de601268f67f2db725624b1958f279316e13fecb8fa7df91fd60f690d7417b4ec180712f5a7ee967008e27c65cfd475cc84337728 - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - -"is-plain-obj@npm:^4.0.0": - version: 4.1.0 - resolution: "is-plain-obj@npm:4.1.0" - checksum: 6dc45da70d04a81f35c9310971e78a6a3c7a63547ef782e3a07ee3674695081b6ca4e977fbb8efc48dae3375e0b34558d2bcd722aec9bddfa2d7db5b041be8ce - languageName: node - linkType: hard - -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 - languageName: node - linkType: hard - -"is-relative@npm:^1.0.0": - version: 1.0.0 - resolution: "is-relative@npm:1.0.0" - dependencies: - is-unc-path: ^1.0.0 - checksum: 3271a0df109302ef5e14a29dcd5d23d9788e15ade91a40b942b035827ffbb59f7ce9ff82d036ea798541a52913cbf9d2d0b66456340887b51f3542d57b5a4c05 - languageName: node - linkType: hard - -"is-set@npm:^2.0.1, is-set@npm:^2.0.2": - version: 2.0.2 - resolution: "is-set@npm:2.0.2" - checksum: b64343faf45e9387b97a6fd32be632ee7b269bd8183701f3b3f5b71a7cf00d04450ed8669d0bd08753e08b968beda96fca73a10fd0ff56a32603f64deba55a57 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a - languageName: node - linkType: hard - -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.9": - version: 1.1.10 - resolution: "is-typed-array@npm:1.1.10" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - checksum: aac6ecb59d4c56a1cdeb69b1f129154ef462bbffe434cb8a8235ca89b42f258b7ae94073c41b3cb7bce37f6a1733ad4499f07882d5d5093a7ba84dfc4ebb8017 - languageName: node - linkType: hard - -"is-unc-path@npm:^1.0.0": - version: 1.0.0 - resolution: "is-unc-path@npm:1.0.0" - dependencies: - unc-path-regex: ^0.1.2 - checksum: e8abfde203f7409f5b03a5f1f8636e3a41e78b983702ef49d9343eb608cdfe691429398e8815157519b987b739bcfbc73ae7cf4c8582b0ab66add5171088eab6 - languageName: node - linkType: hard - -"is-unicode-supported@npm:^0.1.0": - version: 0.1.0 - resolution: "is-unicode-supported@npm:0.1.0" - checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 - languageName: node - linkType: hard - -"is-upper-case@npm:^2.0.2": - version: 2.0.2 - resolution: "is-upper-case@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: cf4fd43c00c2e72cd5cff911923070b89f0933b464941bd782e2315385f80b5a5acd772db3b796542e5e3cfed735f4dffd88c54d62db1ebfc5c3daa7b1af2bc6 - languageName: node - linkType: hard - -"is-weakmap@npm:^2.0.1": - version: 2.0.1 - resolution: "is-weakmap@npm:2.0.1" - checksum: 1222bb7e90c32bdb949226e66d26cb7bce12e1e28e3e1b40bfa6b390ba3e08192a8664a703dff2a00a84825f4e022f9cd58c4599ff9981ab72b1d69479f4f7f6 - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de - languageName: node - linkType: hard - -"is-weakset@npm:^2.0.1": - version: 2.0.2 - resolution: "is-weakset@npm:2.0.2" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 5d8698d1fa599a0635d7ca85be9c26d547b317ed8fd83fc75f03efbe75d50001b5eececb1e9971de85fcde84f69ae6f8346bc92d20d55d46201d328e4c74a367 - languageName: node - linkType: hard - -"is-windows@npm:^1.0.1": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 - languageName: node - linkType: hard - -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: bd5bbe4104438c4196ba58a54650116007fa0262eccef13a4c55b2e09a5b36b59f1e75b9fcc49883dd9d4953892e6fc007eef9e9155648ceea036e184b0f930a - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 - languageName: node - linkType: hard - -"isomorphic-fetch@npm:^3.0.0": - version: 3.0.0 - resolution: "isomorphic-fetch@npm:3.0.0" - dependencies: - node-fetch: ^2.6.1 - whatwg-fetch: ^3.4.1 - checksum: e5ab79a56ce5af6ddd21265f59312ad9a4bc5a72cebc98b54797b42cb30441d5c5f8d17c5cd84a99e18101c8af6f90c081ecb8d12fd79e332be1778d58486d75 - languageName: node - linkType: hard - -"isomorphic-ws@npm:5.0.0, isomorphic-ws@npm:^5.0.0": - version: 5.0.0 - resolution: "isomorphic-ws@npm:5.0.0" - peerDependencies: - ws: "*" - checksum: e20eb2aee09ba96247465fda40c6d22c1153394c0144fa34fe6609f341af4c8c564f60ea3ba762335a7a9c306809349f9b863c8beedf2beea09b299834ad5398 - languageName: node - linkType: hard - -"iterall@npm:^1.2.2": - version: 1.3.0 - resolution: "iterall@npm:1.3.0" - checksum: c78b99678f8c99be488cca7f33e4acca9b72c1326e050afbaf023f086e55619ee466af0464af94a0cb3f292e60cb5bac53a8fd86bd4249ecad26e09f17bb158b - languageName: node - linkType: hard - -"jiti@npm:1.17.1": - version: 1.17.1 - resolution: "jiti@npm:1.17.1" - bin: - jiti: bin/jiti.js - checksum: 56c6d8488e7e9cc6ee66a0f0d5e18db6669cb12b2e93364f393442289a9bc75a8e8c796249f59015e01c3ebdf9478e2ca8b76c30e29072c678ee00d39de757c7 - languageName: node - linkType: hard - -"jiti@npm:^1.17.1": - version: 1.18.2 - resolution: "jiti@npm:1.18.2" - bin: - jiti: bin/jiti.js - checksum: 46c41cd82d01c6efdee3fc0ae9b3e86ed37457192d6366f19157d863d64961b07982ab04e9d5879576a1af99cc4d132b0b73b336094f86a5ce9fb1029ec2d29f - languageName: node - linkType: hard - -"jose@npm:^4.11.4": - version: 4.13.1 - resolution: "jose@npm:4.13.1" - checksum: 89be959573beee69bd443493887d78799fd42340b45afa2c6681beda30314bcdfa5575f6977203c199e4c3e0ec2fc18d3c94745e7f0d59db51dedfae0efee63d - languageName: node - linkType: hard - -"js-sdsl@npm:^4.1.4": - version: 4.3.0 - resolution: "js-sdsl@npm:4.3.0" - checksum: ce908257cf6909e213af580af3a691a736f5ee8b16315454768f917a682a4ea0c11bde1b241bbfaecedc0eb67b72101b2c2df2ffaed32aed5d539fca816f054e - languageName: node - linkType: hard - -"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 - languageName: node - linkType: hard - -"js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" - dependencies: - argparse: ^2.0.1 - bin: - js-yaml: bin/js-yaml.js - checksum: c7830dfd456c3ef2c6e355cc5a92e6700ceafa1d14bba54497b34a99f0376cecbb3e9ac14d3e5849b426d5a5140709a66237a8c991c675431271c4ce5504151a - languageName: node - linkType: hard - -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d - languageName: node - linkType: hard - -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" - bin: - jsesc: bin/jsesc - checksum: b8b44cbfc92f198ad972fba706ee6a1dfa7485321ee8c0b25f5cedd538dcb20cde3197de16a7265430fce8277a12db066219369e3d51055038946039f6e20e17 - languageName: node - linkType: hard - -"json-parse-even-better-errors@npm:^2.3.0": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 798ed4cf3354a2d9ccd78e86d2169515a0097a5c133337807cdf7f1fc32e1391d207ccfc276518cc1d7d8d4db93288b8a50ba4293d212ad1336e52a8ec0a941f - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b - languageName: node - linkType: hard - -"json-stable-stringify-without-jsonify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: cff44156ddce9c67c44386ad5cddf91925fe06b1d217f2da9c4910d01f358c6e3989c4d5a02683c7a5667f9727ff05831f7aa8ae66c8ff691c556f0884d49215 - languageName: node - linkType: hard - -"json-stable-stringify@npm:^1.0.1": - version: 1.0.2 - resolution: "json-stable-stringify@npm:1.0.2" - dependencies: - jsonify: ^0.0.1 - checksum: ec10863493fb728481ed7576551382768a173d5b884758db530def00523b862083a3fd70fee24b39e2f47f5f502e22f9a1489dd66da3535b63bf6241dbfca800 - languageName: node - linkType: hard - -"json-to-pretty-yaml@npm:^1.2.2": - version: 1.2.2 - resolution: "json-to-pretty-yaml@npm:1.2.2" - dependencies: - remedial: ^1.0.7 - remove-trailing-spaces: ^1.0.6 - checksum: 4b78480f426e176e5fdac073e05877683bb026f1175deb52d0941b992f9c91a58a812c020f00aa67ba1fc7cadb220539a264146f222e48a48c8bb2a0931cac9b - languageName: node - linkType: hard - -"json5@npm:^1.0.2": - version: 1.0.2 - resolution: "json5@npm:1.0.2" - dependencies: - minimist: ^1.2.0 - bin: - json5: lib/cli.js - checksum: 866458a8c58a95a49bef3adba929c625e82532bcff1fe93f01d29cb02cac7c3fe1f4b79951b7792c2da9de0b32871a8401a6e3c5b36778ad852bf5b8a61165d7 - languageName: node - linkType: hard - -"json5@npm:^2.2.2": - version: 2.2.3 - resolution: "json5@npm:2.2.3" - bin: - json5: lib/cli.js - checksum: 2a7436a93393830bce797d4626275152e37e877b265e94ca69c99e3d20c2b9dab021279146a39cdb700e71b2dd32a4cebd1514cd57cee102b1af906ce5040349 - languageName: node - linkType: hard - -"jsonify@npm:^0.0.1": - version: 0.0.1 - resolution: "jsonify@npm:0.0.1" - checksum: 027287e1c0294fce15f18c0ff990cfc2318e7f01fb76515f784d5cd0784abfec6fc5c2355c3a2f2cb0ad7f4aa2f5b74ebbfe4e80476c35b2d13cabdb572e1134 - languageName: node - linkType: hard - -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.3": - version: 3.3.3 - resolution: "jsx-ast-utils@npm:3.3.3" - dependencies: - array-includes: ^3.1.5 - object.assign: ^4.1.3 - checksum: a2ed78cac49a0f0c4be8b1eafe3c5257a1411341d8e7f1ac740debae003de04e5f6372bfcfbd9d082e954ffd99aac85bcda85b7c6bc11609992483f4cdc0f745 - languageName: node - linkType: hard - -"kleur@npm:^4.0.3": - version: 4.1.5 - resolution: "kleur@npm:4.1.5" - checksum: 1dc476e32741acf0b1b5b0627ffd0d722e342c1b0da14de3e8ae97821327ca08f9fb944542fb3c126d90ac5f27f9d804edbe7c585bf7d12ef495d115e0f22c12 - languageName: node - linkType: hard - -"language-subtag-registry@npm:~0.3.2": - version: 0.3.22 - resolution: "language-subtag-registry@npm:0.3.22" - checksum: 8ab70a7e0e055fe977ac16ea4c261faec7205ac43db5e806f72e5b59606939a3b972c4bd1e10e323b35d6ffa97c3e1c4c99f6553069dad2dfdd22020fa3eb56a - languageName: node - linkType: hard - -"language-tags@npm:=1.0.5": - version: 1.0.5 - resolution: "language-tags@npm:1.0.5" - dependencies: - language-subtag-registry: ~0.3.2 - checksum: c81b5d8b9f5f9cfd06ee71ada6ddfe1cf83044dd5eeefcd1e420ad491944da8957688db4a0a9bc562df4afdc2783425cbbdfd152c01d93179cf86888903123cf - languageName: node - linkType: hard - -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: ^1.2.1 - type-check: ~0.4.0 - checksum: 12c5021c859bd0f5248561bf139121f0358285ec545ebf48bb3d346820d5c61a4309535c7f387ed7d84361cf821e124ce346c6b7cef8ee09a67c1473b46d0fc4 - languageName: node - linkType: hard - -"lines-and-columns@npm:^1.1.6": - version: 1.2.4 - resolution: "lines-and-columns@npm:1.2.4" - checksum: 0c37f9f7fa212b38912b7145e1cd16a5f3cd34d782441c3e6ca653485d326f58b3caccda66efce1c5812bde4961bbde3374fae4b0d11bf1226152337f3894aa5 - languageName: node - linkType: hard - -"listr2@npm:^4.0.5": - version: 4.0.5 - resolution: "listr2@npm:4.0.5" - dependencies: - cli-truncate: ^2.1.0 - colorette: ^2.0.16 - log-update: ^4.0.0 - p-map: ^4.0.0 - rfdc: ^1.3.0 - rxjs: ^7.5.5 - through: ^2.3.8 - wrap-ansi: ^7.0.0 - peerDependencies: - enquirer: ">= 2.3.0 < 3" - peerDependenciesMeta: - enquirer: - optional: true - checksum: 7af31851abe25969ef0581c6db808117e36af15b131401795182427769d9824f451ba9e8aff6ccd25b6a4f6c8796f816292caf08e5f1f9b1775e8e9c313dc6c5 - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: ^4.1.0 - checksum: 83e51725e67517287d73e1ded92b28602e3ae5580b301fe54bfb76c0c723e3f285b19252e375712316774cf52006cb236aed5704692c32db0d5d089b69696e30 - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: ^5.0.0 - checksum: 72eb661788a0368c099a184c59d2fee760b3831c9c1c33955e8a19ae4a21b4116e53fa736dc086cdeb9fce9f7cc508f2f92d2d3aae516f133e16a2bb59a39f5a - languageName: node - linkType: hard - -"lodash.debounce@npm:^4.0.8": - version: 4.0.8 - resolution: "lodash.debounce@npm:4.0.8" - checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 - languageName: node - linkType: hard - -"lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 - languageName: node - linkType: hard - -"lodash.mergewith@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.mergewith@npm:4.6.2" - checksum: a6db2a9339752411f21b956908c404ec1e088e783a65c8b29e30ae5b3b6384f82517662d6f425cc97c2070b546cc2c7daaa8d33f78db7b6e9be06cd834abdeb8 - languageName: node - linkType: hard - -"lodash@npm:4.17.21, lodash@npm:^4.17.11, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.0": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 - languageName: node - linkType: hard - -"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": - version: 4.1.0 - resolution: "log-symbols@npm:4.1.0" - dependencies: - chalk: ^4.1.0 - is-unicode-supported: ^0.1.0 - checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 - languageName: node - linkType: hard - -"log-update@npm:^4.0.0": - version: 4.0.0 - resolution: "log-update@npm:4.0.0" - dependencies: - ansi-escapes: ^4.3.0 - cli-cursor: ^3.1.0 - slice-ansi: ^4.0.0 - wrap-ansi: ^6.2.0 - checksum: ae2f85bbabc1906034154fb7d4c4477c79b3e703d22d78adee8b3862fa913942772e7fa11713e3d96fb46de4e3cabefbf5d0a544344f03b58d3c4bff52aa9eb2 - languageName: node - linkType: hard - -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": - version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" - dependencies: - js-tokens: ^3.0.0 || ^4.0.0 - bin: - loose-envify: cli.js - checksum: 6517e24e0cad87ec9888f500c5b5947032cdfe6ef65e1c1936a0c48a524b81e65542c9c3edc91c97d5bddc806ee2a985dbc79be89215d613b1de5db6d1cfe6f4 - languageName: node - linkType: hard - -"lower-case-first@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case-first@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: 33e3da1098ddda219ce125d4ab7a78a944972c0ee8872e95b6ccc35df8ad405284ab233b0ba4d72315ad1a06fe2f0d418ee4cba9ec1ef1c386dea78899fc8958 - languageName: node - linkType: hard - -"lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: 83a0a5f159ad7614bee8bf976b96275f3954335a84fad2696927f609ddae902802c4f3312d86668722e668bef41400254807e1d3a7f2e8c3eede79691aa1f010 - languageName: node - linkType: hard - -"lru-cache@npm:^5.1.1": - version: 5.1.1 - resolution: "lru-cache@npm:5.1.1" - dependencies: - yallist: ^3.0.2 - checksum: c154ae1cbb0c2206d1501a0e94df349653c92c8cbb25236d7e85190bcaf4567a03ac6eb43166fabfa36fd35623694da7233e88d9601fbf411a9a481d85dbd2cb - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"lru-cache@npm:^7.7.1": - version: 7.18.3 - resolution: "lru-cache@npm:7.18.3" - checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 - languageName: node - linkType: hard - -"magic-string@npm:^0.27.0": - version: 0.27.0 - resolution: "magic-string@npm:0.27.0" - dependencies: - "@jridgewell/sourcemap-codec": ^1.4.13 - checksum: 273faaa50baadb7a2df6e442eac34ad611304fc08fe16e24fe2e472fd944bfcb73ffb50d2dc972dc04e92784222002af46868cb9698b1be181c81830fd95a13e - languageName: node - linkType: hard - -"make-fetch-happen@npm:^10.0.3": - version: 10.2.1 - resolution: "make-fetch-happen@npm:10.2.1" - dependencies: - agentkeepalive: ^4.2.1 - cacache: ^16.1.0 - http-cache-semantics: ^4.1.0 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.0 - is-lambda: ^1.0.1 - lru-cache: ^7.7.1 - minipass: ^3.1.6 - minipass-collect: ^1.0.2 - minipass-fetch: ^2.0.3 - minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - promise-retry: ^2.0.1 - socks-proxy-agent: ^7.0.0 - ssri: ^9.0.0 - checksum: 2332eb9a8ec96f1ffeeea56ccefabcb4193693597b132cd110734d50f2928842e22b84cfa1508e921b8385cdfd06dda9ad68645fed62b50fff629a580f5fb72c - languageName: node - linkType: hard - -"map-cache@npm:^0.2.0": - version: 0.2.2 - resolution: "map-cache@npm:0.2.2" - checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969 - languageName: node - linkType: hard - -"markdown-to-jsx@npm:^7.1.5, markdown-to-jsx@npm:^7.2.0": - version: 7.2.0 - resolution: "markdown-to-jsx@npm:7.2.0" - peerDependencies: - react: ">= 0.14.0" - checksum: ea417e684d7eec9f1beebc9423aba377116ef77c3cd83a2d622df1b9030ffef99aa9b3f431192b94f3237943a33560e6dda9be8a4c1d25187518d09986dad22f - languageName: node - linkType: hard - -"mdast-util-definitions@npm:^5.0.0": - version: 5.1.2 - resolution: "mdast-util-definitions@npm:5.1.2" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - unist-util-visit: ^4.0.0 - checksum: 2544daccab744ea1ede76045c2577ae4f1cc1b9eb1ea51ab273fe1dca8db5a8d6f50f87759c0ce6484975914b144b7f40316f805cb9c86223a78db8de0b77bae - languageName: node - linkType: hard - -"mdast-util-from-markdown@npm:^1.0.0": - version: 1.3.0 - resolution: "mdast-util-from-markdown@npm:1.3.0" - dependencies: - "@types/mdast": ^3.0.0 - "@types/unist": ^2.0.0 - decode-named-character-reference: ^1.0.0 - mdast-util-to-string: ^3.1.0 - micromark: ^3.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-decode-string: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - unist-util-stringify-position: ^3.0.0 - uvu: ^0.5.0 - checksum: cc971d1ad381150f6504fd753fbcffcc64c0abb527540ce343625c2bba76104505262122ef63d14ab66eb47203f323267017c6d09abfa8535ee6a8e14069595f - languageName: node - linkType: hard - -"mdast-util-to-hast@npm:^12.1.0": - version: 12.3.0 - resolution: "mdast-util-to-hast@npm:12.3.0" - dependencies: - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-definitions: ^5.0.0 - micromark-util-sanitize-uri: ^1.1.0 - trim-lines: ^3.0.0 - unist-util-generated: ^2.0.0 - unist-util-position: ^4.0.0 - unist-util-visit: ^4.0.0 - checksum: ea40c9f07dd0b731754434e81c913590c611b1fd753fa02550a1492aadfc30fb3adecaf62345ebb03cea2ddd250c15ab6e578fffde69c19955c9b87b10f2a9bb - languageName: node - linkType: hard - -"mdast-util-to-string@npm:^3.1.0": - version: 3.1.1 - resolution: "mdast-util-to-string@npm:3.1.1" - dependencies: - "@types/mdast": ^3.0.0 - checksum: 5e9375e1757ebf2950e122ef3538e4257ed2b6f43ab1d3e9c45db5dd5d5b5d14fd041490afcde00934f1cdb4b99877597ae04eb810d313ec7b38c6009058dddd - languageName: node - linkType: hard - -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2 - languageName: node - linkType: hard - -"meros@npm:^1.2.1": - version: 1.2.1 - resolution: "meros@npm:1.2.1" - peerDependencies: - "@types/node": ">=13" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 2201c3f7c58ad2a5b5f7d6b1c644d79bde513e25cb64b51a8c41381ec74bc02cd3423425e34f60c96bf3991f1ec51d65dc8b8e3354cbb060cc9f8226b4666a5a - languageName: node - linkType: hard - -"micromark-core-commonmark@npm:^1.0.1": - version: 1.0.6 - resolution: "micromark-core-commonmark@npm:1.0.6" - dependencies: - decode-named-character-reference: ^1.0.0 - micromark-factory-destination: ^1.0.0 - micromark-factory-label: ^1.0.0 - micromark-factory-space: ^1.0.0 - micromark-factory-title: ^1.0.0 - micromark-factory-whitespace: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-chunked: ^1.0.0 - micromark-util-classify-character: ^1.0.0 - micromark-util-html-tag-name: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-subtokenize: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.1 - uvu: ^0.5.0 - checksum: 4b483c46077f696ed310f6d709bb9547434c218ceb5c1220fde1707175f6f68b44da15ab8668f9c801e1a123210071e3af883a7d1215122c913fd626f122bfc2 - languageName: node - linkType: hard - -"micromark-factory-destination@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-destination@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 8e733ae9c1c2342f14ff290bf09946e20f6f540117d80342377a765cac48df2ea5e748f33c8b07501ad7a43414b1a6597c8510ede2052b6bf1251fab89748e20 - languageName: node - linkType: hard - -"micromark-factory-label@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-label@npm:1.0.2" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 957e9366bdc8dbc1437c0706ff96972fa985ab4b1274abcae12f6094f527cbf5c69e7f2304c23c7f4b96e311ff7911d226563b8b43dcfcd4091e8c985fb97ce6 - languageName: node - linkType: hard - -"micromark-factory-space@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-space@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 70d3aafde4e68ef4e509a3b644e9a29e4aada00801279e346577b008cbca06d78051bcd62aa7ea7425856ed73f09abd2b36607803055f726f52607ee7cb706b0 - languageName: node - linkType: hard - -"micromark-factory-title@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-factory-title@npm:1.0.2" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: 9a9cf66babde0bad1e25d6c1087082bfde6dfc319a36cab67c89651cc1a53d0e21cdec83262b5a4c33bff49f0e3c8dc2a7bd464e991d40dbea166a8f9b37e5b2 - languageName: node - linkType: hard - -"micromark-factory-whitespace@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-factory-whitespace@npm:1.0.0" - dependencies: - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 0888386e6ea2dd665a5182c570d9b3d0a172d3f11694ca5a2a84e552149c9f1429f5b975ec26e1f0fa4388c55a656c9f359ce5e0603aff6175ba3e255076f20b - languageName: node - linkType: hard - -"micromark-util-character@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-character@npm:1.1.0" - dependencies: - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 504a4e3321f69bddf3fec9f0c1058239fc23336bda5be31d532b150491eda47965a251b37f8a7a9db0c65933b3aaa49cf88044fb1028be3af7c5ee6212bf8d5f - languageName: node - linkType: hard - -"micromark-util-chunked@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-chunked@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: c1efd56e8c4217bcf1c6f1a9fb9912b4a2a5503b00d031da902be922fb3fee60409ac53f11739991291357b2784fb0647ddfc74c94753a068646c0cb0fd71421 - languageName: node - linkType: hard - -"micromark-util-classify-character@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-classify-character@npm:1.0.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 180446e6a1dec653f625ded028f244784e1db8d10ad05c5d70f08af9de393b4a03dc6cf6fa5ed8ccc9c24bbece7837abf3bf66681c0b4adf159364b7d5236dfd - languageName: node - linkType: hard - -"micromark-util-combine-extensions@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-combine-extensions@npm:1.0.0" - dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-types: ^1.0.0 - checksum: 5304a820ef75340e1be69d6ad167055b6ba9a3bafe8171e5945a935752f462415a9dd61eb3490220c055a8a11167209a45bfa73f278338b7d3d61fa1464d3f35 - languageName: node - linkType: hard - -"micromark-util-decode-numeric-character-reference@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-decode-numeric-character-reference@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: f3ae2bb582a80f1e9d3face026f585c0c472335c064bd850bde152376f0394cb2831746749b6be6e0160f7d73626f67d10716026c04c87f402c0dd45a1a28633 - languageName: node - linkType: hard - -"micromark-util-decode-string@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-decode-string@npm:1.0.2" - dependencies: - decode-named-character-reference: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-symbol: ^1.0.0 - checksum: 2dbb41c9691cc71505d39706405139fb7d6699429d577a524c7c248ac0cfd09d3dd212ad8e91c143a00b2896f26f81136edc67c5bda32d20446f0834d261b17a - languageName: node - linkType: hard - -"micromark-util-encode@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-encode@npm:1.0.1" - checksum: 9290583abfdc79ea3e7eb92c012c47a0e14327888f8aaa6f57ff79b3058d8e7743716b9d91abca3646f15ab3d78fdad9779fdb4ccf13349cd53309dfc845253a - languageName: node - linkType: hard - -"micromark-util-html-tag-name@npm:^1.0.0": - version: 1.1.0 - resolution: "micromark-util-html-tag-name@npm:1.1.0" - checksum: a9b783cec89ec813648d59799464c1950fe281ae797b2a965f98ad0167d7fa1a247718eff023b4c015f47211a172f9446b8e6b98aad50e3cd44a3337317dad2c - languageName: node - linkType: hard - -"micromark-util-normalize-identifier@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-normalize-identifier@npm:1.0.0" - dependencies: - micromark-util-symbol: ^1.0.0 - checksum: d7c09d5e8318fb72f194af72664bd84a48a2928e3550b2b21c8fbc0ec22524f2a72e0f6663d2b95dc189a6957d3d7759b60716e888909710767cd557be821f8b - languageName: node - linkType: hard - -"micromark-util-resolve-all@npm:^1.0.0": - version: 1.0.0 - resolution: "micromark-util-resolve-all@npm:1.0.0" - dependencies: - micromark-util-types: ^1.0.0 - checksum: 409667f2bd126ef8acce009270d2aecaaa5584c5807672bc657b09e50aa91bd2e552cf41e5be1e6469244a83349cbb71daf6059b746b1c44e3f35446fef63e50 - languageName: node - linkType: hard - -"micromark-util-sanitize-uri@npm:^1.0.0, micromark-util-sanitize-uri@npm:^1.1.0": - version: 1.1.0 - resolution: "micromark-util-sanitize-uri@npm:1.1.0" - dependencies: - micromark-util-character: ^1.0.0 - micromark-util-encode: ^1.0.0 - micromark-util-symbol: ^1.0.0 - checksum: fe6093faa0adeb8fad606184d927ce37f207dcc2ec7256438e7f273c8829686245dd6161b597913ef25a3c4fb61863d3612a40cb04cf15f83ba1b4087099996b - languageName: node - linkType: hard - -"micromark-util-subtokenize@npm:^1.0.0": - version: 1.0.2 - resolution: "micromark-util-subtokenize@npm:1.0.2" - dependencies: - micromark-util-chunked: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.0 - uvu: ^0.5.0 - checksum: c32ee58a7e1384ab1161a9ee02fbb04ad7b6e96d0b8c93dba9803c329a53d07f22ab394c7a96b2e30d6b8fbe3585b85817dba07277b1317111fc234e166bd2d1 - languageName: node - linkType: hard - -"micromark-util-symbol@npm:^1.0.0": - version: 1.0.1 - resolution: "micromark-util-symbol@npm:1.0.1" - checksum: c6a3023b3a7432c15864b5e33a1bcb5042ac7aa097f2f452e587bef45433d42d39e0a5cce12fbea91e0671098ba0c3f62a2b30ce1cde66ecbb5e8336acf4391d - languageName: node - linkType: hard - -"micromark-util-types@npm:^1.0.0, micromark-util-types@npm:^1.0.1": - version: 1.0.2 - resolution: "micromark-util-types@npm:1.0.2" - checksum: 08dc901b7c06ee3dfeb54befca05cbdab9525c1cf1c1080967c3878c9e72cb9856c7e8ff6112816e18ead36ce6f99d55aaa91560768f2f6417b415dcba1244df - languageName: node - linkType: hard - -"micromark@npm:^3.0.0": - version: 3.1.0 - resolution: "micromark@npm:3.1.0" - dependencies: - "@types/debug": ^4.0.0 - debug: ^4.0.0 - decode-named-character-reference: ^1.0.0 - micromark-core-commonmark: ^1.0.1 - micromark-factory-space: ^1.0.0 - micromark-util-character: ^1.0.0 - micromark-util-chunked: ^1.0.0 - micromark-util-combine-extensions: ^1.0.0 - micromark-util-decode-numeric-character-reference: ^1.0.0 - micromark-util-encode: ^1.0.0 - micromark-util-normalize-identifier: ^1.0.0 - micromark-util-resolve-all: ^1.0.0 - micromark-util-sanitize-uri: ^1.0.0 - micromark-util-subtokenize: ^1.0.0 - micromark-util-symbol: ^1.0.0 - micromark-util-types: ^1.0.1 - uvu: ^0.5.0 - checksum: 5fe5bc3bf92e2ddd37b5f0034080fc3a4d4b3c1130dd5e435bb96ec75e9453091272852e71a4d74906a8fcf992d6f79d794607657c534bda49941e9950a92e28 - languageName: node - linkType: hard - -"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: ^3.0.2 - picomatch: ^2.3.1 - checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc - languageName: node - linkType: hard - -"mime-db@npm:1.52.0": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: 1.52.0 - checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 - languageName: node - linkType: hard - -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a - languageName: node - linkType: hard - -"minimatch@npm:4.2.3": - version: 4.2.3 - resolution: "minimatch@npm:4.2.3" - dependencies: - brace-expansion: ^1.1.7 - checksum: 3392388e3ef7de7ae9a3a48d48a27a323934452f4af81b925dfbe85ce2dc07da855e3dbcc69229888be4e5118f6c0b79847d30f3e7c0e0017b25e423c11c0409 - languageName: node - linkType: hard - -"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a - languageName: node - linkType: hard - -"minimatch@npm:^5.0.1": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" - dependencies: - brace-expansion: ^2.0.1 - checksum: 7564208ef81d7065a370f788d337cd80a689e981042cb9a1d0e6580b6c6a8c9279eba80010516e258835a988363f99f54a6f711a315089b8b42694f5da9d0d77 - languageName: node - linkType: hard - -"minimist@npm:^1.2.0, minimist@npm:^1.2.6": - version: 1.2.8 - resolution: "minimist@npm:1.2.8" - checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 - languageName: node - linkType: hard - -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" - dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 - languageName: node - linkType: hard - -"minipass-fetch@npm:^2.0.3": - version: 2.1.2 - resolution: "minipass-fetch@npm:2.1.2" - dependencies: - encoding: ^0.1.13 - minipass: ^3.1.6 - minipass-sized: ^1.0.3 - minizlib: ^2.1.2 - dependenciesMeta: - encoding: - optional: true - checksum: 3f216be79164e915fc91210cea1850e488793c740534985da017a4cbc7a5ff50506956d0f73bb0cb60e4fe91be08b6b61ef35101706d3ef5da2c8709b5f08f91 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: ^3.0.0 - checksum: 56269a0b22bad756a08a94b1ffc36b7c9c5de0735a4dd1ab2b06c066d795cfd1f0ac44a0fcae13eece5589b908ecddc867f04c745c7009be0b566421ea0944cf - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: ^3.0.0 - checksum: b14240dac0d29823c3d5911c286069e36d0b81173d7bdf07a7e4a91ecdef92cdff4baaf31ea3746f1c61e0957f652e641223970870e2353593f382112257971b - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: ^3.0.0 - checksum: 79076749fcacf21b5d16dd596d32c3b6bf4d6e62abb43868fac21674078505c8b15eaca4e47ed844985a4514854f917d78f588fcd029693709417d8f98b2bd60 - languageName: node - linkType: hard - -"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: ^4.0.0 - checksum: a30d083c8054cee83cdcdc97f97e4641a3f58ae743970457b1489ce38ee1167b3aaf7d815cd39ec7a99b9c40397fd4f686e83750e73e652b21cb516f6d845e48 - languageName: node - linkType: hard - -"minipass@npm:^4.0.0": - version: 4.2.5 - resolution: "minipass@npm:4.2.5" - checksum: 4f9c19af23a5d4a9e7156feefc9110634b178a8cff8f8271af16ec5ebf7e221725a97429952c856f5b17b30c2065ebd24c81722d90c93d2122611d75b952b48f - languageName: node - linkType: hard - -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f - languageName: node - linkType: hard - -"moment@npm:2.29.4": - version: 2.29.4 - resolution: "moment@npm:2.29.4" - checksum: 0ec3f9c2bcba38dc2451b1daed5daded747f17610b92427bebe1d08d48d8b7bdd8d9197500b072d14e326dd0ccf3e326b9e3d07c5895d3d49e39b6803b76e80e - languageName: node - linkType: hard - -"mri@npm:^1.1.0": - version: 1.2.0 - resolution: "mri@npm:1.2.0" - checksum: 83f515abbcff60150873e424894a2f65d68037e5a7fcde8a9e2b285ee9c13ac581b63cfc1e6826c4732de3aeb84902f7c1e16b7aff46cd3f897a0f757a894e85 - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:^2.0.0, ms@npm:^2.1.1": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d - languageName: node - linkType: hard - -"mute-stream@npm:0.0.8": - version: 0.0.8 - resolution: "mute-stream@npm:0.0.8" - checksum: ff48d251fc3f827e5b1206cda0ffdaec885e56057ee86a3155e1951bc940fd5f33531774b1cc8414d7668c10a8907f863f6561875ee6e8768931a62121a531a1 - languageName: node - linkType: hard - -"nanoid@npm:^3.3.4": - version: 3.3.4 - resolution: "nanoid@npm:3.3.4" - bin: - nanoid: bin/nanoid.cjs - checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c - languageName: node - linkType: hard - -"natural-compare-lite@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare-lite@npm:1.4.0" - checksum: 5222ac3986a2b78dd6069ac62cbb52a7bf8ffc90d972ab76dfe7b01892485d229530ed20d0c62e79a6b363a663b273db3bde195a1358ce9e5f779d4453887225 - languageName: node - linkType: hard - -"natural-compare@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" - checksum: 23ad088b08f898fc9b53011d7bb78ec48e79de7627e01ab5518e806033861bef68d5b0cd0e2205c2f36690ac9571ff6bcb05eb777ced2eeda8d4ac5b44592c3d - languageName: node - linkType: hard - -"negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 - languageName: node - linkType: hard - -"no-case@npm:^3.0.4": - version: 3.0.4 - resolution: "no-case@npm:3.0.4" - dependencies: - lower-case: ^2.0.2 - tslib: ^2.0.3 - checksum: 0b2ebc113dfcf737d48dde49cfebf3ad2d82a8c3188e7100c6f375e30eafbef9e9124aadc3becef237b042fd5eb0aad2fd78669c20972d045bbe7fea8ba0be5c - languageName: node - linkType: hard - -"node-addon-api@npm:^3.2.1": - version: 3.2.1 - resolution: "node-addon-api@npm:3.2.1" - dependencies: - node-gyp: latest - checksum: 2369986bb0881ccd9ef6bacdf39550e07e089a9c8ede1cbc5fc7712d8e2faa4d50da0e487e333d4125f8c7a616c730131d1091676c9d499af1d74560756b4a18 - languageName: node - linkType: hard - -"node-fetch@npm:2.6.7": - version: 2.6.7 - resolution: "node-fetch@npm:2.6.7" - dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 8d816ffd1ee22cab8301c7756ef04f3437f18dace86a1dae22cf81db8ef29c0bf6655f3215cb0cdb22b420b6fe141e64b26905e7f33f9377a7fa59135ea3e10b - languageName: node - linkType: hard - -"node-fetch@npm:^2.6.1": - version: 2.6.9 - resolution: "node-fetch@npm:2.6.9" - dependencies: - whatwg-url: ^5.0.0 - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: acb04f9ce7224965b2b59e71b33c639794d8991efd73855b0b250921382b38331ffc9d61bce502571f6cc6e11a8905ca9b1b6d4aeb586ab093e2756a1fd190d0 - languageName: node - linkType: hard - -"node-gyp-build@npm:^4.3.0": - version: 4.6.0 - resolution: "node-gyp-build@npm:4.6.0" - bin: - node-gyp-build: bin.js - node-gyp-build-optional: optional.js - node-gyp-build-test: build-test.js - checksum: 25d78c5ef1f8c24291f4a370c47ba52fcea14f39272041a90a7894cd50d766f7c8cb8fb06c0f42bf6f69b204b49d9be3c8fc344aac09714d5bdb95965499eb15 - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 9.3.1 - resolution: "node-gyp@npm:9.3.1" - dependencies: - env-paths: ^2.2.0 - glob: ^7.1.4 - graceful-fs: ^4.2.6 - make-fetch-happen: ^10.0.3 - nopt: ^6.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 - semver: ^7.3.5 - tar: ^6.1.2 - which: ^2.0.2 - bin: - node-gyp: bin/node-gyp.js - checksum: b860e9976fa645ca0789c69e25387401b4396b93c8375489b5151a6c55cf2640a3b6183c212b38625ef7c508994930b72198338e3d09b9d7ade5acc4aaf51ea7 - languageName: node - linkType: hard - -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: d0b30b1ee6d961851c60d5eaa745d30b5c95d94bc0e74b81e5292f7c42a49e3af87f1eb9e89f59456f80645d679202537de751b7d72e9e40ceea40c5e449057e - languageName: node - linkType: hard - -"node-releases@npm:^2.0.8": - version: 2.0.10 - resolution: "node-releases@npm:2.0.10" - checksum: d784ecde25696a15d449c4433077f5cce620ed30a1656c4abf31282bfc691a70d9618bae6868d247a67914d1be5cc4fde22f65a05f4398cdfb92e0fc83cadfbc - languageName: node - linkType: hard - -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" - dependencies: - abbrev: ^1.0.0 - bin: - nopt: bin/nopt.js - checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac - languageName: node - linkType: hard - -"normalize-path@npm:^2.1.1": - version: 2.1.1 - resolution: "normalize-path@npm:2.1.1" - dependencies: - remove-trailing-separator: ^1.0.1 - checksum: 7e9cbdcf7f5b8da7aa191fbfe33daf290cdcd8c038f422faf1b8a83c972bf7a6d94c5be34c4326cb00fb63bc0fd97d9fbcfaf2e5d6142332c2cd36d2e1b86cea - languageName: node - linkType: hard - -"npmlog@npm:^6.0.0": - version: 6.0.2 - resolution: "npmlog@npm:6.0.2" - dependencies: - are-we-there-yet: ^3.0.0 - console-control-strings: ^1.1.0 - gauge: ^4.0.3 - set-blocking: ^2.0.0 - checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a - languageName: node - linkType: hard - -"nullthrows@npm:^1.1.1": - version: 1.1.1 - resolution: "nullthrows@npm:1.1.1" - checksum: 10806b92121253eb1b08ecf707d92480f5331ba8ae5b23fa3eb0548ad24196eb797ed47606153006568a5733ea9e528a3579f21421f7828e09e7756f4bdd386f - languageName: node - linkType: hard - -"object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f - languageName: node - linkType: hard - -"object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": - version: 1.12.3 - resolution: "object-inspect@npm:1.12.3" - checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db - languageName: node - linkType: hard - -"object-is@npm:^1.1.5": - version: 1.1.5 - resolution: "object-is@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 989b18c4cba258a6b74dc1d74a41805c1a1425bce29f6cabb50dcb1a6a651ea9104a1b07046739a49a5bb1bc49727bcb00efd5c55f932f6ea04ec8927a7901fe - languageName: node - linkType: hard - -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a - languageName: node - linkType: hard - -"object.assign@npm:^4.1.2, object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - has-symbols: ^1.0.3 - object-keys: ^1.1.1 - checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 - languageName: node - linkType: hard - -"object.entries@npm:^1.1.5, object.entries@npm:^1.1.6": - version: 1.1.6 - resolution: "object.entries@npm:1.1.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 0f8c47517e6a9a980241eafe3b73de11e59511883173c2b93d67424a008e47e11b77c80e431ad1d8a806f6108b225a1cab9223e53e555776c612a24297117d28 - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.6": - version: 2.0.6 - resolution: "object.fromentries@npm:2.0.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 453c6d694180c0c30df451b60eaf27a5b9bca3fb43c37908fd2b78af895803dc631242bcf05582173afa40d8d0e9c96e16e8874b39471aa53f3ac1f98a085d85 - languageName: node - linkType: hard - -"object.hasown@npm:^1.1.2": - version: 1.1.2 - resolution: "object.hasown@npm:1.1.2" - dependencies: - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: b936572536db0cdf38eb30afd2f1026a8b6f2cc5d2c4497c9d9bbb01eaf3e980dead4fd07580cfdd098e6383e5a9db8212d3ea0c6bdd2b5e68c60aa7e3b45566 - languageName: node - linkType: hard - -"object.values@npm:^1.1.6": - version: 1.1.6 - resolution: "object.values@npm:1.1.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: f6fff9fd817c24cfd8107f50fb33061d81cd11bacc4e3dbb3852e9ff7692fde4dbce823d4333ea27cd9637ef1b6690df5fbb61f1ed314fa2959598dc3ae23d8e - languageName: node - linkType: hard - -"once@npm:^1.3.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - -"onetime@npm:^5.1.0": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: ^2.1.0 - checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 - languageName: node - linkType: hard - -"optimism@npm:^0.16.1": - version: 0.16.2 - resolution: "optimism@npm:0.16.2" - dependencies: - "@wry/context": ^0.7.0 - "@wry/trie": ^0.3.0 - checksum: a98ed9a0b8ee2b031010222099b60860d52860bf8182889f2695a7cf2185f21aca59020f78e2b47c0ae7697843caa576798d792967314ff59f6aa7c5d9de7f3a - languageName: node - linkType: hard - -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" - dependencies: - deep-is: ^0.1.3 - fast-levenshtein: ^2.0.6 - levn: ^0.4.1 - prelude-ls: ^1.2.1 - type-check: ^0.4.0 - word-wrap: ^1.2.3 - checksum: dbc6fa065604b24ea57d734261914e697bd73b69eff7f18e967e8912aa2a40a19a9f599a507fa805be6c13c24c4eae8c71306c239d517d42d4c041c942f508a0 - languageName: node - linkType: hard - -"ora@npm:^5.4.1": - version: 5.4.1 - resolution: "ora@npm:5.4.1" - dependencies: - bl: ^4.1.0 - chalk: ^4.1.0 - cli-cursor: ^3.1.0 - cli-spinners: ^2.5.0 - is-interactive: ^1.0.0 - is-unicode-supported: ^0.1.0 - log-symbols: ^4.1.0 - strip-ansi: ^6.0.0 - wcwidth: ^1.0.1 - checksum: 28d476ee6c1049d68368c0dc922e7225e3b5600c3ede88fade8052837f9ed342625fdaa84a6209302587c8ddd9b664f71f0759833cbdb3a4cf81344057e63c63 - languageName: node - linkType: hard - -"os-tmpdir@npm:~1.0.2": - version: 1.0.2 - resolution: "os-tmpdir@npm:1.0.2" - checksum: 5666560f7b9f10182548bf7013883265be33620b1c1b4a4d405c25be2636f970c5488ff3e6c48de75b55d02bde037249fe5dbfbb4c0fb7714953d56aed062e6d - languageName: node - linkType: hard - -"p-limit@npm:3.1.0, p-limit@npm:^3.0.2": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: ^0.1.0 - checksum: 7c3690c4dbf62ef625671e20b7bdf1cbc9534e83352a2780f165b0d3ceba21907e77ad63401708145ca4e25bfc51636588d89a8c0aeb715e6c37d1c066430360 - languageName: node - linkType: hard - -"p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: ^2.0.0 - checksum: 84ff17f1a38126c3314e91ecfe56aecbf36430940e2873dadaa773ffe072dc23b7af8e46d4b6485d302a11673fe94c6b67ca2cfbb60c989848b02100d0594ac1 - languageName: node - linkType: hard - -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: ^2.2.0 - checksum: 513bd14a455f5da4ebfcb819ef706c54adb09097703de6aeaa5d26fe5ea16df92b48d1ac45e01e3944ce1e6aa2a66f7f8894742b8c9d6e276e16cd2049a2b870 - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: ^3.0.2 - checksum: 1623088f36cf1cbca58e9b61c4e62bf0c60a07af5ae1ca99a720837356b5b6c5ba3eb1b2127e47a06865fee59dd0453cad7cc844cda9d5a62ac1a5a51b7c86d3 - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c - languageName: node - linkType: hard - -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: f8a8e9a7693659383f06aec604ad5ead237c7a261c18048a6e1b5b85a5f8a067e469aa24f5bc009b991ea3b058a87f5065ef4176793a200d4917349881216cae - languageName: node - linkType: hard - -"param-case@npm:^3.0.4": - version: 3.0.4 - resolution: "param-case@npm:3.0.4" - dependencies: - dot-case: ^3.0.4 - tslib: ^2.0.3 - checksum: b34227fd0f794e078776eb3aa6247442056cb47761e9cd2c4c881c86d84c64205f6a56ef0d70b41ee7d77da02c3f4ed2f88e3896a8fefe08bdfb4deca037c687 - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: ^3.0.0 - checksum: 6ba8b255145cae9470cf5551eb74be2d22281587af787a2626683a6c20fbb464978784661478dd2a3f1dad74d1e802d403e1b03c1a31fab310259eec8ac560ff - languageName: node - linkType: hard - -"parse-filepath@npm:^1.0.2": - version: 1.0.2 - resolution: "parse-filepath@npm:1.0.2" - dependencies: - is-absolute: ^1.0.0 - map-cache: ^0.2.0 - path-root: ^0.1.1 - checksum: 6794c3f38d3921f0f7cc63fb1fb0c4d04cd463356ad389c8ce6726d3c50793b9005971f4138975a6d7025526058d5e65e9bfe634d0765e84c4e2571152665a69 - languageName: node - linkType: hard - -"parse-json@npm:^5.0.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" - dependencies: - "@babel/code-frame": ^7.0.0 - error-ex: ^1.3.1 - json-parse-even-better-errors: ^2.3.0 - lines-and-columns: ^1.1.6 - checksum: 62085b17d64da57f40f6afc2ac1f4d95def18c4323577e1eced571db75d9ab59b297d1d10582920f84b15985cbfc6b6d450ccbf317644cfa176f3ed982ad87e2 - languageName: node - linkType: hard - -"parse5@npm:^6.0.0": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd - languageName: node - linkType: hard - -"pascal-case@npm:^3.1.2": - version: 3.1.2 - resolution: "pascal-case@npm:3.1.2" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - checksum: ba98bfd595fc91ef3d30f4243b1aee2f6ec41c53b4546bfa3039487c367abaa182471dcfc830a1f9e1a0df00c14a370514fa2b3a1aacc68b15a460c31116873e - languageName: node - linkType: hard - -"path-case@npm:^3.0.4": - version: 3.0.4 - resolution: "path-case@npm:3.0.4" - dependencies: - dot-case: ^3.0.4 - tslib: ^2.0.3 - checksum: 61de0526222629f65038a66f63330dd22d5b54014ded6636283e1d15364da38b3cf29e4433aa3f9d8b0dba407ae2b059c23b0104a34ee789944b1bc1c5c7e06d - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 505807199dfb7c50737b057dd8d351b82c033029ab94cb10a657609e00c1bc53b951cfdbccab8de04c5584d5eff31128ce6afd3db79281874a5ef2adbba55ed1 - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - -"path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 - languageName: node - linkType: hard - -"path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 49abf3d81115642938a8700ec580da6e830dde670be21893c62f4e10bd7dd4c3742ddc603fe24f898cba7eb0c6bc1777f8d9ac14185d34540c6d4d80cd9cae8a - languageName: node - linkType: hard - -"path-root-regex@npm:^0.1.0": - version: 0.1.2 - resolution: "path-root-regex@npm:0.1.2" - checksum: dcd75d1f8e93faabe35a58e875b0f636839b3658ff2ad8c289463c40bc1a844debe0dab73c3398ef9dc8f6ec6c319720aff390cf4633763ddcf3cf4b1bbf7e8b - languageName: node - linkType: hard - -"path-root@npm:^0.1.1": - version: 0.1.1 - resolution: "path-root@npm:0.1.1" - dependencies: - path-root-regex: ^0.1.0 - checksum: ff88aebfc1c59ace510cc06703d67692a11530989920427625e52b66a303ca9b3d4059b0b7d0b2a73248d1ad29bcb342b8b786ec00592f3101d38a45fd3b2e08 - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 5b1e2daa247062061325b8fdbfd1fb56dde0a448fb1455453276ea18c60685bdad23a445dc148cf87bc216be1573357509b7d4060494a6fd768c7efad833ee45 - languageName: node - linkType: hard - -"phoenix@npm:1.7.2": - version: 1.7.2 - resolution: "phoenix@npm:1.7.2" - checksum: f493d8325f83a5cc3db913fff68ba1c3eca1574ddeccf701000d4278533cb8371620fcabb8576eed0e0069aaaeb76aa2a21018d5c14de664334e10ce7d244cd8 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 - languageName: node - linkType: hard - -"picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.0.2": - version: 4.2.0 - resolution: "postcss-value-parser@npm:4.2.0" - checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f - languageName: node - linkType: hard - -"postcss@npm:^8.4.21": - version: 8.4.21 - resolution: "postcss@npm:8.4.21" - dependencies: - nanoid: ^3.3.4 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: e39ac60ccd1542d4f9d93d894048aac0d686b3bb38e927d8386005718e6793dbbb46930f0a523fe382f1bbd843c6d980aaea791252bf5e176180e5a4336d9679 - languageName: node - linkType: hard - -"prelude-ls@npm:^1.2.1": - version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" - checksum: cd192ec0d0a8e4c6da3bb80e4f62afe336df3f76271ac6deb0e6a36187133b6073a19e9727a1ff108cd8b9982e4768850d413baa71214dd80c7979617dca827a - languageName: node - linkType: hard - -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 22749483091d2c594261517f4f80e05226d4d5ecc1fc917e1886929da56e22b5718b7f2a75f3807e7a7d471bc3be2907fe92e6e8f373ddf5c64bae35b5af3981 - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: ^2.0.2 - retry: ^0.12.0 - checksum: f96a3f6d90b92b568a26f71e966cbbc0f63ab85ea6ff6c81284dc869b41510e6cdef99b6b65f9030f0db422bf7c96652a3fff9f2e8fb4a0f069d8f4430359429 - languageName: node - linkType: hard - -"promise@npm:^7.1.1": - version: 7.3.1 - resolution: "promise@npm:7.3.1" - dependencies: - asap: ~2.0.3 - checksum: 475bb069130179fbd27ed2ab45f26d8862376a137a57314cf53310bdd85cc986a826fd585829be97ebc0aaf10e9d8e68be1bfe5a4a0364144b1f9eedfa940cf1 - languageName: node - linkType: hard - -"prop-types@npm:15.8.1, prop-types@npm:^15.0.0, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": - version: 15.8.1 - resolution: "prop-types@npm:15.8.1" - dependencies: - loose-envify: ^1.4.0 - object-assign: ^4.1.1 - react-is: ^16.13.1 - checksum: c056d3f1c057cb7ff8344c645450e14f088a915d078dcda795041765047fa080d38e5d626560ccaac94a4e16e3aa15f3557c1a9a8d1174530955e992c675e459 - languageName: node - linkType: hard - -"property-information@npm:^6.0.0": - version: 6.2.0 - resolution: "property-information@npm:6.2.0" - checksum: 23afce07ba821cbe7d926e63cdd680991961c82be4bbb6c0b17c47f48894359c1be6e51cd74485fc10a9d3fd361b475388e1e39311ed2b53127718f72aab1955 - languageName: node - linkType: hard - -"punycode@npm:^1.3.2": - version: 1.4.1 - resolution: "punycode@npm:1.4.1" - checksum: fa6e698cb53db45e4628559e557ddaf554103d2a96a1d62892c8f4032cd3bc8871796cae9eabc1bc700e2b6677611521ce5bb1d9a27700086039965d0cf34518 - languageName: node - linkType: hard - -"punycode@npm:^2.1.0": - version: 2.3.0 - resolution: "punycode@npm:2.3.0" - checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 - languageName: node - linkType: hard - -"pvtsutils@npm:^1.3.2": - version: 1.3.2 - resolution: "pvtsutils@npm:1.3.2" - dependencies: - tslib: ^2.4.0 - checksum: 9b8155611363e2f40276879f2454e60204b45be0cd0482f9373f369308a2e9c76d5d74cdf661a3f5aae8022d75ea159eb0ba38ee78fc782ee3051e4722db98d0 - languageName: node - linkType: hard - -"pvutils@npm:^1.1.3": - version: 1.1.3 - resolution: "pvutils@npm:1.1.3" - checksum: 2ee26a9e5176c348977d6ec00d8ee80bff62f51743b1c5fe8abeeb4c5d29d9959cdfe0ce146707a9e6801bce88190fed3002d720b072dc87d031c692820b44c9 - languageName: node - linkType: hard - -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 - languageName: node - linkType: hard - -"react-animate-height@npm:3.1.0": - version: 3.1.0 - resolution: "react-animate-height@npm:3.1.0" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 46f802fe1e70d5d451d74fabece0dc8e2060543ea106dd56fc0ff544391e8939f8876af480323854dc39cbefd286d8cece29e509de3fb2d231fa9f77097532af - languageName: node - linkType: hard - -"react-dom@npm:18.2.0": - version: 18.2.0 - resolution: "react-dom@npm:18.2.0" - dependencies: - loose-envify: ^1.1.0 - scheduler: ^0.23.0 - peerDependencies: - react: ^18.2.0 - checksum: 7d323310bea3a91be2965f9468d552f201b1c27891e45ddc2d6b8f717680c95a75ae0bc1e3f5cf41472446a2589a75aed4483aee8169287909fcd59ad149e8cc - languageName: node - linkType: hard - -"react-is@npm:^16.13.1, react-is@npm:^16.7.0": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f - languageName: node - linkType: hard - -"react-is@npm:^18.0.0": - version: 18.2.0 - resolution: "react-is@npm:18.2.0" - checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e - languageName: node - linkType: hard - -"react-markdown@npm:8.0.5": - version: 8.0.5 - resolution: "react-markdown@npm:8.0.5" - dependencies: - "@types/hast": ^2.0.0 - "@types/prop-types": ^15.0.0 - "@types/unist": ^2.0.0 - comma-separated-tokens: ^2.0.0 - hast-util-whitespace: ^2.0.0 - prop-types: ^15.0.0 - property-information: ^6.0.0 - react-is: ^18.0.0 - remark-parse: ^10.0.0 - remark-rehype: ^10.0.0 - space-separated-tokens: ^2.0.0 - style-to-object: ^0.4.0 - unified: ^10.0.0 - unist-util-visit: ^4.0.0 - vfile: ^5.0.0 - peerDependencies: - "@types/react": ">=16" - react: ">=16" - checksum: 9d11b7aba16216d590e56b4744e05d2925141bfb0f5885b3d9400ccf006cd24b79ce3b3d20af8a083a01324215b58fa4c5979e44f69d54123ff1dd5dacb0dc89 - languageName: node - linkType: hard - -"react-merge-refs@npm:2.0.1": - version: 2.0.1 - resolution: "react-merge-refs@npm:2.0.1" - checksum: c0b6fdb384a92e9b2bb7d56128244a2db97b9343c0dcae70f172352c3732312266c078495902707e45f523625afcba78996a22edea3a8e7b2b17fe97347059fe - languageName: node - linkType: hard - -"react-refresh@npm:^0.14.0": - version: 0.14.0 - resolution: "react-refresh@npm:0.14.0" - checksum: dc69fa8c993df512f42dd0f1b604978ae89bd747c0ed5ec595c0cc50d535fb2696619ccd98ae28775cc01d0a7c146a532f0f7fb81dc22e1977c242a4912312f4 - languageName: node - linkType: hard - -"react-router-dom@npm:6.9.0": - version: 6.9.0 - resolution: "react-router-dom@npm:6.9.0" - dependencies: - "@remix-run/router": 1.4.0 - react-router: 6.9.0 - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 4d593491ab8db5611feda70002c62902baebb84d5c1c5e5b6172496f31f91130deee132bf4240dea634a88cb86c76d6da348f15b9cd5e5197be455efd88edf72 - languageName: node - linkType: hard - -"react-router@npm:6.9.0": - version: 6.9.0 - resolution: "react-router@npm:6.9.0" - dependencies: - "@remix-run/router": 1.4.0 - peerDependencies: - react: ">=16.8" - checksum: b2a5f42e042bee7a7f116ca7817b0e58359e5353d84887c9fe7a633d7490c03b1e0ae37cd01830c2a381e3d1e7d501bb4751e53cc3d491e25f36582d3f6e0546 - languageName: node - linkType: hard - -"react-spring@npm:9.6.1": - version: 9.6.1 - resolution: "react-spring@npm:9.6.1" - dependencies: - "@react-spring/core": ~9.6.1 - "@react-spring/konva": ~9.6.1 - "@react-spring/native": ~9.6.1 - "@react-spring/three": ~9.6.1 - "@react-spring/web": ~9.6.1 - "@react-spring/zdog": ~9.6.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: ee18d0fc4aa98b952c2d8c2a939c5fb05f160ca30d92b5b4a7d932910c1146120118f0506deb73fd671e147f891391a3556de512fb2cdf88b795a3c6f3b53219 - languageName: node - linkType: hard - -"react-textarea-autosize@npm:^8.4.0": - version: 8.4.0 - resolution: "react-textarea-autosize@npm:8.4.0" - dependencies: - "@babel/runtime": ^7.10.2 - use-composed-ref: ^1.3.0 - use-latest: ^1.2.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 055fb51b74e1ab6b286490cfcd8ed77a760f6fc90706053b5dfcb138199d02c56289a1060a1daf9f3ae37ffd66f73e9553f026d0fad446bc2243b713acf48e05 - languageName: node - linkType: hard - -"react-transition-group@npm:^4.4.5": - version: 4.4.5 - resolution: "react-transition-group@npm:4.4.5" - dependencies: - "@babel/runtime": ^7.5.5 - dom-helpers: ^5.0.1 - loose-envify: ^1.4.0 - prop-types: ^15.6.2 - peerDependencies: - react: ">=16.6.0" - react-dom: ">=16.6.0" - checksum: 75602840106aa9c6545149d6d7ae1502fb7b7abadcce70a6954c4b64a438ff1cd16fc77a0a1e5197cdd72da398f39eb929ea06f9005c45b132ed34e056ebdeb1 - languageName: node - linkType: hard - -"react-use-measure@npm:2.1.1": - version: 2.1.1 - resolution: "react-use-measure@npm:2.1.1" - dependencies: - debounce: ^1.2.1 - peerDependencies: - react: ">=16.13" - react-dom: ">=16.13" - checksum: b8e8939229d463c3c505f7b617925c0228efae0cd6f651371f463846417b06c9170be57df51293a61027c41770f8a090fdb8a08717c4e36290ccb496e0318f1f - languageName: node - linkType: hard - -"react-virtual@npm:2.10.4": - version: 2.10.4 - resolution: "react-virtual@npm:2.10.4" - dependencies: - "@reach/observe-rect": ^1.1.0 - peerDependencies: - react: ^16.6.3 || ^17.0.0 - checksum: 1bebc741b01057829a7d7f29256114caecf0597d41b187cb41e75af77f24a87c780bc1a81ec11205b78ee2e9c801fc5e36b20a9e1ab7ddc70a18dd95417795f8 - languageName: node - linkType: hard - -"react@npm:18.2.0": - version: 18.2.0 - resolution: "react@npm:18.2.0" - dependencies: - loose-envify: ^1.1.0 - checksum: 88e38092da8839b830cda6feef2e8505dec8ace60579e46aa5490fc3dc9bba0bd50336507dc166f43e3afc1c42939c09fe33b25fae889d6f402721dcd78fca1b - languageName: node - linkType: hard - -"readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": - version: 3.6.2 - resolution: "readable-stream@npm:3.6.2" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d - languageName: node - linkType: hard - -"regenerate-unicode-properties@npm:^10.1.0": - version: 10.1.0 - resolution: "regenerate-unicode-properties@npm:10.1.0" - dependencies: - regenerate: ^1.4.2 - checksum: b1a8929588433ab8b9dc1a34cf3665b3b472f79f2af6ceae00d905fc496b332b9af09c6718fb28c730918f19a00dc1d7310adbaa9b72a2ec7ad2f435da8ace17 - languageName: node - linkType: hard - -"regenerate@npm:^1.4.2": - version: 1.4.2 - resolution: "regenerate@npm:1.4.2" - checksum: 3317a09b2f802da8db09aa276e469b57a6c0dd818347e05b8862959c6193408242f150db5de83c12c3fa99091ad95fb42a6db2c3329bfaa12a0ea4cbbeb30cb0 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.10.5": - version: 0.10.5 - resolution: "regenerator-runtime@npm:0.10.5" - checksum: 35b33dbe5381d268b2be98f4ee4b028702acb38b012bff90723df067f915a337e5c979cce4dab4ed23febb223bbebb8820d46902f897742c55818c22c14e2a7c - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.11.0": - version: 0.11.1 - resolution: "regenerator-runtime@npm:0.11.1" - checksum: 3c97bd2c7b2b3247e6f8e2147a002eb78c995323732dad5dc70fac8d8d0b758d0295e7015b90d3d444446ae77cbd24b9f9123ec3a77018e81d8999818301b4f4 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.12.0": - version: 0.12.1 - resolution: "regenerator-runtime@npm:0.12.1" - checksum: 348c401336bcebe2be17fd4f24c5b0a1ed75bff3024dc817a69cdc776b48b98c7f6f3b98e1baa4220569440bb9215e1fff3dcb01c8aad3ff2ed3732e30d017bf - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.13.11": - version: 0.13.11 - resolution: "regenerator-runtime@npm:0.13.11" - checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4 - languageName: node - linkType: hard - -"regenerator-transform@npm:^0.15.1": - version: 0.15.1 - resolution: "regenerator-transform@npm:0.15.1" - dependencies: - "@babel/runtime": ^7.8.4 - checksum: 2d15bdeadbbfb1d12c93f5775493d85874dbe1d405bec323da5c61ec6e701bc9eea36167483e1a5e752de9b2df59ab9a2dfff6bf3784f2b28af2279a673d29a4 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 - languageName: node - linkType: hard - -"regexpp@npm:^3.2.0": - version: 3.2.0 - resolution: "regexpp@npm:3.2.0" - checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8 - languageName: node - linkType: hard - -"regexpu-core@npm:^5.3.1": - version: 5.3.2 - resolution: "regexpu-core@npm:5.3.2" - dependencies: - "@babel/regjsgen": ^0.8.0 - regenerate: ^1.4.2 - regenerate-unicode-properties: ^10.1.0 - regjsparser: ^0.9.1 - unicode-match-property-ecmascript: ^2.0.0 - unicode-match-property-value-ecmascript: ^2.1.0 - checksum: 95bb97088419f5396e07769b7de96f995f58137ad75fac5811fb5fe53737766dfff35d66a0ee66babb1eb55386ef981feaef392f9df6d671f3c124812ba24da2 - languageName: node - linkType: hard - -"regjsparser@npm:^0.9.1": - version: 0.9.1 - resolution: "regjsparser@npm:0.9.1" - dependencies: - jsesc: ~0.5.0 - bin: - regjsparser: bin/parser - checksum: 5e1b76afe8f1d03c3beaf9e0d935dd467589c3625f6d65fb8ffa14f224d783a0fed4bf49c2c1b8211043ef92b6117313419edf055a098ed8342e340586741afc - languageName: node - linkType: hard - -"rehype-raw@npm:6.1.1": - version: 6.1.1 - resolution: "rehype-raw@npm:6.1.1" - dependencies: - "@types/hast": ^2.0.0 - hast-util-raw: ^7.2.0 - unified: ^10.0.0 - checksum: a1f9d309e609f49fb1f1e06e722705f4dd2e569653a89f756eaccb33b612cf1bb511216a81d10a619d11d047afc161e4b3cb99b957df05a8ba8fdbd5843f949a - languageName: node - linkType: hard - -"relay-runtime@npm:12.0.0": - version: 12.0.0 - resolution: "relay-runtime@npm:12.0.0" - dependencies: - "@babel/runtime": ^7.0.0 - fbjs: ^3.0.0 - invariant: ^2.2.4 - checksum: 51cdc8a5e04188982452ae4e7c6ac7d6375ee769130d24ce8e8f9cdd45aa7e11ecd68670f56e30dcee1b4974585e88ecce19e69a9868b80cda0db7678c3b8f0a - languageName: node - linkType: hard - -"remark-parse@npm:^10.0.0": - version: 10.0.1 - resolution: "remark-parse@npm:10.0.1" - dependencies: - "@types/mdast": ^3.0.0 - mdast-util-from-markdown: ^1.0.0 - unified: ^10.0.0 - checksum: 505088e564ab53ff054433368adbb7b551f69240c7d9768975529837a86f1d0f085e72d6211929c5c42db315273df4afc94f3d3a8662ffdb69468534c6643d29 - languageName: node - linkType: hard - -"remark-rehype@npm:^10.0.0": - version: 10.1.0 - resolution: "remark-rehype@npm:10.1.0" - dependencies: - "@types/hast": ^2.0.0 - "@types/mdast": ^3.0.0 - mdast-util-to-hast: ^12.1.0 - unified: ^10.0.0 - checksum: b9ac8acff3383b204dfdc2599d0bdf86e6ca7e837033209584af2e6aaa6a9013e519a379afa3201299798cab7298c8f4b388de118c312c67234c133318aec084 - languageName: node - linkType: hard - -"remedial@npm:^1.0.7": - version: 1.0.8 - resolution: "remedial@npm:1.0.8" - checksum: 12df7c55eb92501d7f33cfe5f5ad12be13bb6ac0c53f494aaa9963d5a5155bb8be2143e8d5e17afa1a500ef5dc71d13642920d35350f2a31b65a9778afab6869 - languageName: node - linkType: hard - -"remove-accents@npm:0.4.2": - version: 0.4.2 - resolution: "remove-accents@npm:0.4.2" - checksum: 84a6988555dea24115e2d1954db99509588d43fe55a1590f0b5894802776f7b488b3151c37ceb9e4f4b646f26b80b7325dcea2fae58bc3865df146e1fa606711 - languageName: node - linkType: hard - -"remove-trailing-separator@npm:^1.0.1": - version: 1.1.0 - resolution: "remove-trailing-separator@npm:1.1.0" - checksum: d3c20b5a2d987db13e1cca9385d56ecfa1641bae143b620835ac02a6b70ab88f68f117a0021838db826c57b31373d609d52e4f31aca75fc490c862732d595419 - languageName: node - linkType: hard - -"remove-trailing-spaces@npm:^1.0.6": - version: 1.0.8 - resolution: "remove-trailing-spaces@npm:1.0.8" - checksum: 81f615c5cd8dd6a5e3017dcc9af598965575d176d42ef99cfd7b894529991f464e629fd68aba089f5c6bebf5bb8070a5eee56f3b621aba55e8ef524d6a4d4f69 - languageName: node - linkType: hard - -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: fb47e70bf0001fdeabdc0429d431863e9475e7e43ea5f94ad86503d918423c1543361cc5166d713eaa7029dd7a3d34775af04764bebff99ef413111a5af18c80 - languageName: node - linkType: hard - -"require-main-filename@npm:^2.0.0": - version: 2.0.0 - resolution: "require-main-filename@npm:2.0.0" - checksum: e9e294695fea08b076457e9ddff854e81bffbe248ed34c1eec348b7abbd22a0d02e8d75506559e2265e96978f3c4720bd77a6dad84755de8162b357eb6c778c7 - languageName: node - linkType: hard - -"resize-observer-polyfill@npm:1.5.1": - version: 1.5.1 - resolution: "resize-observer-polyfill@npm:1.5.1" - checksum: 57e7f79489867b00ba43c9c051524a5c8f162a61d5547e99333549afc23e15c44fd43f2f318ea0261ea98c0eb3158cca261e6f48d66e1ed1cd1f340a43977094 - languageName: node - linkType: hard - -"resize-observer@npm:^1.0.0": - version: 1.0.4 - resolution: "resize-observer@npm:1.0.4" - checksum: 43e2f45e40507279cad474f6bd2fe62e92de1fd1d67cd5285ece1fec6c1b664c4d3795b094b2be292244bf542b1b5402578670400beadc2cfedac8fb483a0976 - languageName: node - linkType: hard - -"resolve-from@npm:5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 4ceeb9113e1b1372d0cd969f3468fa042daa1dd9527b1b6bb88acb6ab55d8b9cd65dbf18819f9f9ddf0db804990901dcdaade80a215e7b2c23daae38e64f5bdf - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: f4ba0b8494846a5066328ad33ef8ac173801a51739eb4d63408c847da9a2e1c1de1e6cbbf72699211f3d13f8fc1325648b169bd15eb7da35688e30a5fb0e4a7f - languageName: node - linkType: hard - -"resolve@npm:^1.14.2, resolve@npm:^1.19.0, resolve@npm:^1.22.1": - version: 1.22.1 - resolution: "resolve@npm:1.22.1" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 07af5fc1e81aa1d866cbc9e9460fbb67318a10fa3c4deadc35c3ad8a898ee9a71a86a65e4755ac3195e0ea0cfbe201eb323ebe655ce90526fd61917313a34e4e - languageName: node - linkType: hard - -"resolve@npm:^2.0.0-next.4": - version: 2.0.0-next.4 - resolution: "resolve@npm:2.0.0-next.4" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: c438ac9a650f2030fd074219d7f12ceb983b475da2d89ad3d6dd05fbf6b7a0a8cd37d4d10b43cb1f632bc19f22246ab7f36ebda54d84a29bfb2910a0680906d3 - languageName: node - linkType: hard - -"resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": - version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=c3c19d" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 5656f4d0bedcf8eb52685c1abdf8fbe73a1603bb1160a24d716e27a57f6cecbe2432ff9c89c2bd57542c3a7b9d14b1882b73bfe2e9d7849c9a4c0b8b39f02b8b - languageName: node - linkType: hard - -"resolve@patch:resolve@^2.0.0-next.4#~builtin": - version: 2.0.0-next.4 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#~builtin::version=2.0.0-next.4&hash=c3c19d" - dependencies: - is-core-module: ^2.9.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: 4bf9f4f8a458607af90518ff73c67a4bc1a38b5a23fef2bb0ccbd45e8be89820a1639b637b0ba377eb2be9eedfb1739a84cde24fe4cd670c8207d8fea922b011 - languageName: node - linkType: hard - -"response-iterator@npm:^0.2.6": - version: 0.2.6 - resolution: "response-iterator@npm:0.2.6" - checksum: b0db3c0665a0d698d65512951de9623c086b9c84ce015a76076d4bd0bf733779601d0b41f0931d16ae38132fba29e1ce291c1f8e6550fc32daaa2dc3ab4f338d - languageName: node - linkType: hard - -"restore-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "restore-cursor@npm:3.1.0" - dependencies: - onetime: ^5.1.0 - signal-exit: ^3.0.2 - checksum: f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630 - languageName: node - linkType: hard - -"retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 623bd7d2e5119467ba66202d733ec3c2e2e26568074923bc0585b6b99db14f357e79bdedb63cab56cec47491c4a0da7e6021a7465ca6dc4f481d3898fdd3158c - languageName: node - linkType: hard - -"reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc - languageName: node - linkType: hard - -"rfdc@npm:^1.3.0": - version: 1.3.0 - resolution: "rfdc@npm:1.3.0" - checksum: fb2ba8512e43519983b4c61bd3fa77c0f410eff6bae68b08614437bc3f35f91362215f7b4a73cbda6f67330b5746ce07db5dd9850ad3edc91271ad6deea0df32 - languageName: node - linkType: hard - -"rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: ^7.1.3 - bin: - rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 - languageName: node - linkType: hard - -"rollup@npm:^3.18.0": - version: 3.20.0 - resolution: "rollup@npm:3.20.0" - dependencies: - fsevents: ~2.3.2 - dependenciesMeta: - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: ebf75f48eb81234f8233b4ed145b00841cefba26802d4f069f161247ffba085ca5bb165cc3cd662d9c36cfc135a67660dfff9088d3da2d2c6a70addc15f3233a - languageName: node - linkType: hard - -"run-async@npm:^2.4.0": - version: 2.4.1 - resolution: "run-async@npm:2.4.1" - checksum: a2c88aa15df176f091a2878eb840e68d0bdee319d8d97bbb89112223259cebecb94bc0defd735662b83c2f7a30bed8cddb7d1674eb48ae7322dc602b22d03797 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: ^1.2.2 - checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d - languageName: node - linkType: hard - -"rxjs@npm:^7.5.5": - version: 7.8.0 - resolution: "rxjs@npm:7.8.0" - dependencies: - tslib: ^2.1.0 - checksum: 61b4d4fd323c1043d8d6ceb91f24183b28bcf5def4f01ca111511d5c6b66755bc5578587fe714ef5d67cf4c9f2e26f4490d4e1d8cabf9bd5967687835e9866a2 - languageName: node - linkType: hard - -"sade@npm:^1.7.3": - version: 1.8.1 - resolution: "sade@npm:1.8.1" - dependencies: - mri: ^1.1.0 - checksum: 0756e5b04c51ccdc8221ebffd1548d0ce5a783a44a0fa9017a026659b97d632913e78f7dca59f2496aa996a0be0b0c322afd87ca72ccd909406f49dbffa0f45d - languageName: node - linkType: hard - -"safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 - languageName: node - linkType: hard - -"safe-regex-test@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-regex-test@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - is-regex: ^1.1.4 - checksum: bc566d8beb8b43c01b94e67de3f070fd2781685e835959bbbaaec91cc53381145ca91f69bd837ce6ec244817afa0a5e974fc4e40a2957f0aca68ac3add1ddd34 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 - languageName: node - linkType: hard - -"scheduler@npm:^0.23.0": - version: 0.23.0 - resolution: "scheduler@npm:0.23.0" - dependencies: - loose-envify: ^1.1.0 - checksum: d79192eeaa12abef860c195ea45d37cbf2bbf5f66e3c4dcd16f54a7da53b17788a70d109ee3d3dde1a0fd50e6a8fc171f4300356c5aee4fc0171de526bf35f8a - languageName: node - linkType: hard - -"scuid@npm:^1.1.0": - version: 1.1.0 - resolution: "scuid@npm:1.1.0" - checksum: cd094ac3718b0070a222f9a499b280c698fdea10268cc163fa244421099544c1766dd893fdee0e2a8eba5d53ab9d0bcb11067bedff166665030fa6fda25a096b - languageName: node - linkType: hard - -"semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" - bin: - semver: ./bin/semver.js - checksum: 1b26ecf6db9e8292dd90df4e781d91875c0dcc1b1909e70f5d12959a23c7eebb8f01ea581c00783bbee72ceeaad9505797c381756326073850dc36ed284b21b9 - languageName: node - linkType: hard - -"semver@npm:^7.3.5, semver@npm:^7.3.7": - version: 7.3.8 - resolution: "semver@npm:7.3.8" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: ba9c7cbbf2b7884696523450a61fee1a09930d888b7a8d7579025ad93d459b2d1949ee5bbfeb188b2be5f4ac163544c5e98491ad6152df34154feebc2cc337c1 - languageName: node - linkType: hard - -"sentence-case@npm:^3.0.4": - version: 3.0.4 - resolution: "sentence-case@npm:3.0.4" - dependencies: - no-case: ^3.0.4 - tslib: ^2.0.3 - upper-case-first: ^2.0.2 - checksum: 3cfe6c0143e649132365695706702d7f729f484fa7b25f43435876efe7af2478243eefb052bacbcce10babf9319fd6b5b6bc59b94c80a1c819bcbb40651465d5 - languageName: node - linkType: hard - -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 - languageName: node - linkType: hard - -"setimmediate@npm:^1.0.5": - version: 1.0.5 - resolution: "setimmediate@npm:1.0.5" - checksum: c9a6f2c5b51a2dabdc0247db9c46460152ffc62ee139f3157440bd48e7c59425093f42719ac1d7931f054f153e2d26cf37dfeb8da17a794a58198a2705e527fd - languageName: node - linkType: hard - -"shallowequal@npm:^1.1.0": - version: 1.1.0 - resolution: "shallowequal@npm:1.1.0" - checksum: f4c1de0837f106d2dbbfd5d0720a5d059d1c66b42b580965c8f06bb1db684be8783538b684092648c981294bf817869f743a066538771dbecb293df78f765e00 - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: ^3.0.0 - checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 - languageName: node - linkType: hard - -"shell-quote@npm:^1.7.3": - version: 1.8.0 - resolution: "shell-quote@npm:1.8.0" - checksum: 6ef7c5e308b9c77eedded882653a132214fa98b4a1512bb507588cf6cd2fc78bfee73e945d0c3211af028a1eabe09c6a19b96edd8977dc149810797e93809749 - languageName: node - linkType: hard - -"shorthash@npm:0.0.2": - version: 0.0.2 - resolution: "shorthash@npm:0.0.2" - checksum: 4048833f2a7f324350cc1a48a6b64bca268e5a2e9c59cb6cad3607c41fd800bf1739498fe4b8b6737709cdb540fb74125fb7254eba98bdd3dc41e8d9f7990b20 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 - languageName: node - linkType: hard - -"signedsource@npm:^1.0.0": - version: 1.0.0 - resolution: "signedsource@npm:1.0.0" - checksum: 64b2c8d7a48de9009cfd3aff62bb7c88abf3b8e0421f17ebb1d7f5ca9cc9c3ad10f5a1e3ae6cd804e4e6121c87b668202ae9057065f058ddfbf34ea65f63945d - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c - languageName: node - linkType: hard - -"slice-ansi@npm:^3.0.0": - version: 3.0.0 - resolution: "slice-ansi@npm:3.0.0" - dependencies: - ansi-styles: ^4.0.0 - astral-regex: ^2.0.0 - is-fullwidth-code-point: ^3.0.0 - checksum: 5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24 - languageName: node - linkType: hard - -"slice-ansi@npm:^4.0.0": - version: 4.0.0 - resolution: "slice-ansi@npm:4.0.0" - dependencies: - ansi-styles: ^4.0.0 - astral-regex: ^2.0.0 - is-fullwidth-code-point: ^3.0.0 - checksum: 4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756 - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: b5167a7142c1da704c0e3af85c402002b597081dd9575031a90b4f229ca5678e9a36e8a374f1814c8156a725d17008ae3bde63b92f9cfd132526379e580bec8b - languageName: node - linkType: hard - -"snake-case@npm:^3.0.4": - version: 3.0.4 - resolution: "snake-case@npm:3.0.4" - dependencies: - dot-case: ^3.0.4 - tslib: ^2.0.3 - checksum: 0a7a79900bbb36f8aaa922cf111702a3647ac6165736d5dc96d3ef367efc50465cac70c53cd172c382b022dac72ec91710608e5393de71f76d7142e6fd80e8a3 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "socks-proxy-agent@npm:7.0.0" - dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 - languageName: node - linkType: hard - -"socks@npm:^2.6.2": - version: 2.7.1 - resolution: "socks@npm:2.7.1" - dependencies: - ip: ^2.0.0 - smart-buffer: ^4.2.0 - checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 - languageName: node - linkType: hard - -"source-map-js@npm:^1.0.2": - version: 1.0.2 - resolution: "source-map-js@npm:1.0.2" - checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c - languageName: node - linkType: hard - -"source-map@npm:^0.5.7": - version: 0.5.7 - resolution: "source-map@npm:0.5.7" - checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d - languageName: node - linkType: hard - -"space-separated-tokens@npm:^2.0.0": - version: 2.0.2 - resolution: "space-separated-tokens@npm:2.0.2" - checksum: 202e97d7ca1ba0758a0aa4fe226ff98142073bcceeff2da3aad037968878552c3bbce3b3231970025375bbba5aee00c5b8206eda408da837ab2dc9c0f26be990 - languageName: node - linkType: hard - -"sponge-case@npm:^1.0.1": - version: 1.0.1 - resolution: "sponge-case@npm:1.0.1" - dependencies: - tslib: ^2.0.3 - checksum: 64f53d930f63c5a9e59d4cae487c1ffa87d25eab682833b01d572cc885e7e3fdbad4f03409a41f03ecb27f1f8959432253eb48332c7007c3388efddb24ba2792 - languageName: node - linkType: hard - -"ssri@npm:^9.0.0": - version: 9.0.1 - resolution: "ssri@npm:9.0.1" - dependencies: - minipass: ^3.1.1 - checksum: fb58f5e46b6923ae67b87ad5ef1c5ab6d427a17db0bead84570c2df3cd50b4ceb880ebdba2d60726588272890bae842a744e1ecce5bd2a2a582fccd5068309eb - languageName: node - linkType: hard - -"state-local@npm:^1.0.6": - version: 1.0.7 - resolution: "state-local@npm:1.0.7" - checksum: d1afcf1429e7e6eb08685b3a94be8797db847369316d4776fd51f3962b15b984dacc7f8e401ad20968e5798c9565b4b377afedf4e4c4d60fe7495e1cbe14a251 - languageName: node - linkType: hard - -"stop-iteration-iterator@npm:^1.0.0": - version: 1.0.0 - resolution: "stop-iteration-iterator@npm:1.0.0" - dependencies: - internal-slot: ^1.0.4 - checksum: d04173690b2efa40e24ab70e5e51a3ff31d56d699550cfad084104ab3381390daccb36652b25755e420245f3b0737de66c1879eaa2a8d4fc0a78f9bf892fcb42 - languageName: node - linkType: hard - -"streamsearch@npm:^1.1.0": - version: 1.1.0 - resolution: "streamsearch@npm:1.1.0" - checksum: 1cce16cea8405d7a233d32ca5e00a00169cc0e19fbc02aa839959985f267335d435c07f96e5e0edd0eadc6d39c98d5435fb5bbbdefc62c41834eadc5622ad942 - languageName: node - linkType: hard - -"string-env-interpolation@npm:1.0.1, string-env-interpolation@npm:^1.0.1": - version: 1.0.1 - resolution: "string-env-interpolation@npm:1.0.1" - checksum: d126329587f635bee65300e4451e7352b9b67e03daeb62f006ca84244cac12a1f6e45176b018653ba0c3ec3b5d980f9ca59d2eeed99cf799501cdaa7f871dc6f - languageName: node - linkType: hard - -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - -"string.prototype.matchall@npm:^4.0.8": - version: 4.0.8 - resolution: "string.prototype.matchall@npm:4.0.8" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - get-intrinsic: ^1.1.3 - has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - regexp.prototype.flags: ^1.4.3 - side-channel: ^1.0.4 - checksum: 952da3a818de42ad1c10b576140a5e05b4de7b34b8d9dbf00c3ac8c1293e9c0f533613a39c5cda53e0a8221f2e710bc2150e730b1c2278d60004a8a35726efb6 - languageName: node - linkType: hard - -"string.prototype.trim@npm:^1.2.7": - version: 1.2.7 - resolution: "string.prototype.trim@npm:1.2.7" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 05b7b2d6af63648e70e44c4a8d10d8cc457536df78b55b9d6230918bde75c5987f6b8604438c4c8652eb55e4fc9725d2912789eb4ec457d6995f3495af190c09 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimend@npm:1.0.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 0fdc34645a639bd35179b5a08227a353b88dc089adf438f46be8a7c197fc3f22f8514c1c9be4629b3cd29c281582730a8cbbad6466c60f76b5f99cf2addb132e - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimstart@npm:1.0.6" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.20.4 - checksum: 89080feef416621e6ef1279588994305477a7a91648d9436490d56010a1f7adc39167cddac7ce0b9884b8cdbef086987c4dcb2960209f2af8bac0d23ceff4f41 - languageName: node - linkType: hard - -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 - languageName: node - linkType: hard - -"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c - languageName: node - linkType: hard - -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 8d50ff27b7ebe5ecc78f1fe1e00fcdff7af014e73cf724b46fb81ef889eeb1015fc5184b64e81a2efe002180f3ba431bdd77e300da5c6685d702780fbf0c8d5b - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 - languageName: node - linkType: hard - -"style-to-object@npm:^0.4.0": - version: 0.4.1 - resolution: "style-to-object@npm:0.4.1" - dependencies: - inline-style-parser: 0.1.1 - checksum: 2ea213e98eed21764ae1d1dc9359231a9f2d480d6ba55344c4c15eb275f0809f1845786e66d4caf62414a5cc8f112ce9425a58d251c77224060373e0db48f8c2 - languageName: node - linkType: hard - -"styled-components@npm:5.3.9": - version: 5.3.9 - resolution: "styled-components@npm:5.3.9" - dependencies: - "@babel/helper-module-imports": ^7.0.0 - "@babel/traverse": ^7.4.5 - "@emotion/is-prop-valid": ^1.1.0 - "@emotion/stylis": ^0.8.4 - "@emotion/unitless": ^0.7.4 - babel-plugin-styled-components: ">= 1.12.0" - css-to-react-native: ^3.0.0 - hoist-non-react-statics: ^3.0.0 - shallowequal: ^1.1.0 - supports-color: ^5.5.0 - peerDependencies: - react: ">= 16.8.0" - react-dom: ">= 16.8.0" - react-is: ">= 16.8.0" - checksum: 404311cc7028259218674d3f9f39bdda2342fc02f2ebbba8f057ef560b2ad205c5bd63b82deed4d0bf217ac7eb960d0e1127510b0b606e32cbd5a48c10373ce8 - languageName: node - linkType: hard - -"styled-container-query@npm:1.3.5": - version: 1.3.5 - resolution: "styled-container-query@npm:1.3.5" - dependencies: - classnames: ^2.2.6 - hoist-non-react-statics: ^3.3.2 - resize-observer: ^1.0.0 - shorthash: 0.0.2 - peerDependencies: - react: ^16.9.0 - react-dom: ^16.9.0 - styled-components: ^4.3.2 - checksum: 4bc8e046234ce39b33df199603bf4a3887abb5239966d5b3904b45b79889385320bd0df7129a0805c945947aa692ca6b950296d041ee68b6b667f912926c3b77 - languageName: node - linkType: hard - -"stylis@npm:4.1.3": - version: 4.1.3 - resolution: "stylis@npm:4.1.3" - checksum: d04dbffcb9bf2c5ca8d8dc09534203c75df3bf711d33973ea22038a99cc475412a350b661ebd99cbc01daa50d7eedcf0d130d121800eb7318759a197023442a6 - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0, supports-color@npm:^5.5.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac - languageName: node - linkType: hard - -"supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: ^4.0.0 - checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 53b1e247e68e05db7b3808b99b892bd36fb096e6fba213a06da7fab22045e97597db425c724f2bbd6c99a3c295e1e73f3e4de78592289f38431049e1277ca0ae - languageName: node - linkType: hard - -"swap-case@npm:^2.0.2": - version: 2.0.2 - resolution: "swap-case@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: 6e21c9e1b3cd5735eb2af679a99ec3efc78a14e3d4d5e3fd594e254b91cfd37185b3d1c6e41b22f53a2cdf5d1b963ce30c0fe8b78337e3fd43d0137084670a5f - languageName: node - linkType: hard - -"symbol-observable@npm:^4.0.0": - version: 4.0.0 - resolution: "symbol-observable@npm:4.0.0" - checksum: 212c7edce6186634d671336a88c0e0bbd626c2ab51ed57498dc90698cce541839a261b969c2a1e8dd43762133d47672e8b62e0b1ce9cf4157934ba45fd172ba8 - languageName: node - linkType: hard - -"tabbable@npm:^6.0.1": - version: 6.1.1 - resolution: "tabbable@npm:6.1.1" - checksum: 348639497262241ce8e0ccb0664ea582a386183107299ee8f27cf7b56bc84f36e09eaf667d3cb4201e789634012a91f7129bcbd49760abe874fbace35b4cf429 - languageName: node - linkType: hard - -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.1.13 - resolution: "tar@npm:6.1.13" - dependencies: - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - minipass: ^4.0.0 - minizlib: ^2.1.1 - mkdirp: ^1.0.3 - yallist: ^4.0.0 - checksum: 8a278bed123aa9f53549b256a36b719e317c8b96fe86a63406f3c62887f78267cea9b22dc6f7007009738509800d4a4dccc444abd71d762287c90f35b002eb1c - languageName: node - linkType: hard - -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a - languageName: node - linkType: hard - -"through@npm:^2.3.6, through@npm:^2.3.8": - version: 2.3.8 - resolution: "through@npm:2.3.8" - checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd - languageName: node - linkType: hard - -"title-case@npm:^3.0.3": - version: 3.0.3 - resolution: "title-case@npm:3.0.3" - dependencies: - tslib: ^2.0.3 - checksum: e8b7ea006b53cf3208d278455d9f1e22c409459d7f9878da324fa3b18cc0aef8560924c19c744e870394a5d9cddfdbe029ebae9875909ee7f4fc562e7cbfc53e - languageName: node - linkType: hard - -"tmp@npm:^0.0.33": - version: 0.0.33 - resolution: "tmp@npm:0.0.33" - dependencies: - os-tmpdir: ~1.0.2 - checksum: 902d7aceb74453ea02abbf58c203f4a8fc1cead89b60b31e354f74ed5b3fb09ea817f94fb310f884a5d16987dd9fa5a735412a7c2dd088dd3d415aa819ae3a28 - languageName: node - linkType: hard - -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed - languageName: node - linkType: hard - -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 726321c5eaf41b5002e17ffbd1fb7245999a073e8979085dacd47c4b4e8068ff5777142fc6726d6ca1fd2ff16921b48788b87225cbc57c72636f6efa8efbffe3 - languageName: node - linkType: hard - -"trim-lines@npm:^3.0.0": - version: 3.0.1 - resolution: "trim-lines@npm:3.0.1" - checksum: e241da104682a0e0d807222cc1496b92e716af4db7a002f4aeff33ae6a0024fef93165d49eab11aa07c71e1347c42d46563f91dfaa4d3fb945aa535cdead53ed - languageName: node - linkType: hard - -"trough@npm:^2.0.0": - version: 2.1.0 - resolution: "trough@npm:2.1.0" - checksum: a577bb561c2b401cc0e1d9e188fcfcdf63b09b151ff56a668da12197fe97cac15e3d77d5b51f426ccfd94255744a9118e9e9935afe81a3644fa1be9783c82886 - languageName: node - linkType: hard - -"ts-invariant@npm:^0.10.3": - version: 0.10.3 - resolution: "ts-invariant@npm:0.10.3" - dependencies: - tslib: ^2.1.0 - checksum: bb07d56fe4aae69d8860e0301dfdee2d375281159054bc24bf1e49e513fb0835bf7f70a11351344d213a79199c5e695f37ebbf5a447188a377ce0cd81d91ddb5 - languageName: node - linkType: hard - -"ts-invariant@npm:^0.4.0": - version: 0.4.4 - resolution: "ts-invariant@npm:0.4.4" - dependencies: - tslib: ^1.9.3 - checksum: 58b32fb6b7c479e602e55b9eb63bb99a203c5db09367d3aa7c3cbe000ba62f919eea7f031f55172df9b6d362a6f1a87e906df84b04b8c74c88e507ac58f7a554 - languageName: node - linkType: hard - -"ts-log@npm:^2.2.3": - version: 2.2.5 - resolution: "ts-log@npm:2.2.5" - checksum: 28f78ab15b8555d56c089dbc243327d8ce4331219956242a29fc4cb3bad6bb0cb8234dd17a292381a1b1dba99a7e4849a2181b2e1a303e8247e9f4ca4e284f2d - languageName: node - linkType: hard - -"tsconfig-paths@npm:^3.14.1": - version: 3.14.2 - resolution: "tsconfig-paths@npm:3.14.2" - dependencies: - "@types/json5": ^0.0.29 - json5: ^1.0.2 - minimist: ^1.2.6 - strip-bom: ^3.0.0 - checksum: a6162eaa1aed680537f93621b82399c7856afd10ec299867b13a0675e981acac4e0ec00896860480efc59fc10fd0b16fdc928c0b885865b52be62cadac692447 - languageName: node - linkType: hard - -"tslib@npm:^1.10.0, tslib@npm:^1.8.1, tslib@npm:^1.9.3": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd - languageName: node - linkType: hard - -"tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:~2.5.0": - version: 2.5.0 - resolution: "tslib@npm:2.5.0" - checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 - languageName: node - linkType: hard - -"tslib@npm:~2.4.0": - version: 2.4.1 - resolution: "tslib@npm:2.4.1" - checksum: 19480d6e0313292bd6505d4efe096a6b31c70e21cf08b5febf4da62e95c265c8f571f7b36fcc3d1a17e068032f59c269fab3459d6cd3ed6949eafecf64315fca - languageName: node - linkType: hard - -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: ^1.8.1 - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 1843f4c1b2e0f975e08c4c21caa4af4f7f65a12ac1b81b3b8489366826259323feb3fc7a243123453d2d1a02314205a7634e048d4a8009921da19f99755cdc48 - languageName: node - linkType: hard - -"type-check@npm:^0.4.0, type-check@npm:~0.4.0": - version: 0.4.0 - resolution: "type-check@npm:0.4.0" - dependencies: - prelude-ls: ^1.2.1 - checksum: ec688ebfc9c45d0c30412e41ca9c0cdbd704580eb3a9ccf07b9b576094d7b86a012baebc95681999dd38f4f444afd28504cb3a89f2ef16b31d4ab61a0739025a - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 4fb3272df21ad1c552486f8a2f8e115c09a521ad7a8db3d56d53718d0c907b62c6e9141ba5f584af3f6830d0872c521357e512381f24f7c44acae583ad517d73 - languageName: node - linkType: hard - -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 - languageName: node - linkType: hard - -"typed-array-length@npm:^1.0.4": - version: 1.0.4 - resolution: "typed-array-length@npm:1.0.4" - dependencies: - call-bind: ^1.0.2 - for-each: ^0.3.3 - is-typed-array: ^1.1.9 - checksum: 2228febc93c7feff142b8c96a58d4a0d7623ecde6c7a24b2b98eb3170e99f7c7eff8c114f9b283085cd59dcd2bd43aadf20e25bba4b034a53c5bb292f71f8956 - languageName: node - linkType: hard - -"typescript@npm:4.9.4": - version: 4.9.4 - resolution: "typescript@npm:4.9.4" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: e782fb9e0031cb258a80000f6c13530288c6d63f1177ed43f770533fdc15740d271554cdae86701c1dd2c83b082cea808b07e97fd68b38a172a83dbf9e0d0ef9 - languageName: node - linkType: hard - -"typescript@npm:5.0.2": - version: 5.0.2 - resolution: "typescript@npm:5.0.2" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: bef1dcd166acfc6934b2ec4d72f93edb8961a5fab36b8dd2aaf6f4f4cd5c0210f2e0850aef4724f3b4913d5aef203a94a28ded731b370880c8bcff7e4ff91fc1 - languageName: node - linkType: hard - -"typescript@patch:typescript@4.9.4#~builtin": - version: 4.9.4 - resolution: "typescript@patch:typescript@npm%3A4.9.4#~builtin::version=4.9.4&hash=23ec76" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 3e2ab0772908676d9b9cb83398c70003a3b08e1c6b3b122409df9f4b520f2fdaefa20c3d7d57dce283fed760ac94b3ce94d4a7fa875127b67852904425a1f0dc - languageName: node - linkType: hard - -"typescript@patch:typescript@5.0.2#~builtin": - version: 5.0.2 - resolution: "typescript@patch:typescript@npm%3A5.0.2#~builtin::version=5.0.2&hash=1f5320" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: bdbf3d0aac0d6cf010fbe0536753dc19f278eb4aba88140dcd25487dfe1c56ca8b33abc0dcd42078790a939b08ebc4046f3e9bb961d77d3d2c3cfa9829da4d53 - languageName: node - linkType: hard - -"ua-parser-js@npm:^0.7.30": - version: 0.7.34 - resolution: "ua-parser-js@npm:0.7.34" - checksum: ddb7b8b590af49f37eaac37579ac98274f59fff3990610f45e33893aa62ce5b8fc265459cb78b9c9fa3fbbbaad5b2d7939303f18cbd7e8c25c96e57009443c42 - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - has-bigints: ^1.0.2 - has-symbols: ^1.0.3 - which-boxed-primitive: ^1.0.2 - checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 - languageName: node - linkType: hard - -"unc-path-regex@npm:^0.1.2": - version: 0.1.2 - resolution: "unc-path-regex@npm:0.1.2" - checksum: a05fa2006bf4606051c10fc7968f08ce7b28fa646befafa282813aeb1ac1a56f65cb1b577ca7851af2726198d59475bb49b11776036257b843eaacee2860a4ec - languageName: node - linkType: hard - -"unicode-canonical-property-names-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" - checksum: 39be078afd014c14dcd957a7a46a60061bc37c4508ba146517f85f60361acf4c7539552645ece25de840e17e293baa5556268d091ca6762747fdd0c705001a45 - languageName: node - linkType: hard - -"unicode-match-property-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-ecmascript@npm:2.0.0" - dependencies: - unicode-canonical-property-names-ecmascript: ^2.0.0 - unicode-property-aliases-ecmascript: ^2.0.0 - checksum: 1f34a7434a23df4885b5890ac36c5b2161a809887000be560f56ad4b11126d433c0c1c39baf1016bdabed4ec54829a6190ee37aa24919aa116dc1a5a8a62965a - languageName: node - linkType: hard - -"unicode-match-property-value-ecmascript@npm:^2.1.0": - version: 2.1.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" - checksum: 8d6f5f586b9ce1ed0e84a37df6b42fdba1317a05b5df0c249962bd5da89528771e2d149837cad11aa26bcb84c35355cb9f58a10c3d41fa3b899181ece6c85220 - languageName: node - linkType: hard - -"unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" - checksum: 243524431893649b62cc674d877bd64ef292d6071dd2fd01ab4d5ad26efbc104ffcd064f93f8a06b7e4ec54c172bf03f6417921a0d8c3a9994161fe1f88f815b - languageName: node - linkType: hard - -"unified@npm:^10.0.0": - version: 10.1.2 - resolution: "unified@npm:10.1.2" - dependencies: - "@types/unist": ^2.0.0 - bail: ^2.0.0 - extend: ^3.0.0 - is-buffer: ^2.0.0 - is-plain-obj: ^4.0.0 - trough: ^2.0.0 - vfile: ^5.0.0 - checksum: 053e7c65ede644607f87bd625a299e4b709869d2f76ec8138569e6e886903b6988b21cd9699e471eda42bee189527be0a9dac05936f1d069a5e65d0125d5d756 - languageName: node - linkType: hard - -"unique-filename@npm:^2.0.0": - version: 2.0.1 - resolution: "unique-filename@npm:2.0.1" - dependencies: - unique-slug: ^3.0.0 - checksum: 807acf3381aff319086b64dc7125a9a37c09c44af7620bd4f7f3247fcd5565660ac12d8b80534dcbfd067e6fe88a67e621386dd796a8af828d1337a8420a255f - languageName: node - linkType: hard - -"unique-slug@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-slug@npm:3.0.0" - dependencies: - imurmurhash: ^0.1.4 - checksum: 49f8d915ba7f0101801b922062ee46b7953256c93ceca74303bd8e6413ae10aa7e8216556b54dc5382895e8221d04f1efaf75f945c2e4a515b4139f77aa6640c - languageName: node - linkType: hard - -"unist-util-generated@npm:^2.0.0": - version: 2.0.1 - resolution: "unist-util-generated@npm:2.0.1" - checksum: 6221ad0571dcc9c8964d6b054f39ef6571ed59cc0ce3e88ae97ea1c70afe76b46412a5ffaa91f96814644ac8477e23fb1b477d71f8d70e625728c5258f5c0d99 - languageName: node - linkType: hard - -"unist-util-is@npm:^5.0.0": - version: 5.2.1 - resolution: "unist-util-is@npm:5.2.1" - dependencies: - "@types/unist": ^2.0.0 - checksum: ae76fdc3d35352cd92f1bedc3a0d407c3b9c42599a52ab9141fe89bdd786b51f0ec5a2ab68b93fb532e239457cae62f7e39eaa80229e1cb94875da2eafcbe5c4 - languageName: node - linkType: hard - -"unist-util-position@npm:^4.0.0": - version: 4.0.4 - resolution: "unist-util-position@npm:4.0.4" - dependencies: - "@types/unist": ^2.0.0 - checksum: e7487b6cec9365299695e3379ded270a1717074fa11fd2407c9b934fb08db6fe1d9077ddeaf877ecf1813665f8ccded5171693d3d9a7a01a125ec5cdd5e88691 - languageName: node - linkType: hard - -"unist-util-stringify-position@npm:^3.0.0": - version: 3.0.3 - resolution: "unist-util-stringify-position@npm:3.0.3" - dependencies: - "@types/unist": ^2.0.0 - checksum: dbd66c15183607ca942a2b1b7a9f6a5996f91c0d30cf8966fb88955a02349d9eefd3974e9010ee67e71175d784c5a9fea915b0aa0b0df99dcb921b95c4c9e124 - languageName: node - linkType: hard - -"unist-util-visit-parents@npm:^5.1.1": - version: 5.1.3 - resolution: "unist-util-visit-parents@npm:5.1.3" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - checksum: 8ecada5978994f846b64658cf13b4092cd78dea39e1ba2f5090a5de842ba4852712c02351a8ae95250c64f864635e7b02aedf3b4a093552bb30cf1bd160efbaa - languageName: node - linkType: hard - -"unist-util-visit@npm:^4.0.0": - version: 4.1.2 - resolution: "unist-util-visit@npm:4.1.2" - dependencies: - "@types/unist": ^2.0.0 - unist-util-is: ^5.0.0 - unist-util-visit-parents: ^5.1.1 - checksum: 95a34e3f7b5b2d4b68fd722b6229972099eb97b6df18913eda44a5c11df8b1e27efe7206dd7b88c4ed244a48c474a5b2e2629ab79558ff9eb936840295549cee - languageName: node - linkType: hard - -"unixify@npm:^1.0.0": - version: 1.0.0 - resolution: "unixify@npm:1.0.0" - dependencies: - normalize-path: ^2.1.1 - checksum: 3be30e48579fc6c7390bd59b4ab9e745fede0c164dfb7351cf710bd1dbef8484b1441186205af6bcb13b731c0c88caf9b33459f7bf8c89e79c046e656ae433f0 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.0.10": - version: 1.0.10 - resolution: "update-browserslist-db@npm:1.0.10" - dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 - peerDependencies: - browserslist: ">= 4.21.0" - bin: - browserslist-lint: cli.js - checksum: 12db73b4f63029ac407b153732e7cd69a1ea8206c9100b482b7d12859cd3cd0bc59c602d7ae31e652706189f1acb90d42c53ab24a5ba563ed13aebdddc5561a0 - languageName: node - linkType: hard - -"upper-case-first@npm:^2.0.2": - version: 2.0.2 - resolution: "upper-case-first@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: 4487db4701effe3b54ced4b3e4aa4d9ab06c548f97244d04aafb642eedf96a76d5a03cf5f38f10f415531d5792d1ac6e1b50f2a76984dc6964ad530f12876409 - languageName: node - linkType: hard - -"upper-case@npm:^2.0.2": - version: 2.0.2 - resolution: "upper-case@npm:2.0.2" - dependencies: - tslib: ^2.0.3 - checksum: 508723a2b03ab90cf1d6b7e0397513980fab821cbe79c87341d0e96cedefadf0d85f9d71eac24ab23f526a041d585a575cfca120a9f920e44eb4f8a7cf89121c - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: ^2.1.0 - checksum: 7167432de6817fe8e9e0c9684f1d2de2bb688c94388f7569f7dbdb1587c9f4ca2a77962f134ec90be0cc4d004c939ff0d05acc9f34a0db39a3c797dada262633 - languageName: node - linkType: hard - -"urlpattern-polyfill@npm:^6.0.2": - version: 6.0.2 - resolution: "urlpattern-polyfill@npm:6.0.2" - dependencies: - braces: ^3.0.2 - checksum: 564fb223761b67ea76d015f11dfec145db98c71cc35641015d1c9ec164da494b1fab614e652a844e14a72cda31236b9c3a59b22fdcca71166c315ab059fab676 - languageName: node - linkType: hard - -"use-composed-ref@npm:^1.3.0": - version: 1.3.0 - resolution: "use-composed-ref@npm:1.3.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: f771cbadfdc91e03b7ab9eb32d0fc0cc647755711801bf507e891ad38c4bbc5f02b2509acadf9c965ec9c5f2f642fd33bdfdfb17b0873c4ad0a9b1f5e5e724bf - languageName: node - linkType: hard - -"use-immer@npm:0.8.1": - version: 0.8.1 - resolution: "use-immer@npm:0.8.1" - peerDependencies: - immer: ">=2.0.0" - react: ^16.8.0 || ^17.0.1 || ^18.0.0 - checksum: 9ffc1a201a92b6b026c420718e6a00e72ba48b62420bb515927b379bb1d791b5b4766b57c755b4851c0e1f80000e639bc1cf8e73424e44466741c159391d35dd - languageName: node - linkType: hard - -"use-isomorphic-layout-effect@npm:^1.1.1": - version: 1.1.2 - resolution: "use-isomorphic-layout-effect@npm:1.1.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: a6532f7fc9ae222c3725ff0308aaf1f1ddbd3c00d685ef9eee6714fd0684de5cb9741b432fbf51e61a784e2955424864f7ea9f99734a02f237b17ad3e18ea5cb - languageName: node - linkType: hard - -"use-latest@npm:^1.2.1": - version: 1.2.1 - resolution: "use-latest@npm:1.2.1" - dependencies: - use-isomorphic-layout-effect: ^1.1.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: ed3f2ddddf6f21825e2ede4c2e0f0db8dcce5129802b69d1f0575fc1b42380436e8c76a6cd885d4e9aa8e292e60fb8b959c955f33c6a9123b83814a1a1875367 - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 - languageName: node - linkType: hard - -"uvu@npm:^0.5.0": - version: 0.5.6 - resolution: "uvu@npm:0.5.6" - dependencies: - dequal: ^2.0.0 - diff: ^5.0.0 - kleur: ^4.0.3 - sade: ^1.7.3 - bin: - uvu: bin.js - checksum: 09460a37975627de9fcad396e5078fb844d01aaf64a6399ebfcfd9e55f1c2037539b47611e8631f89be07656962af0cf48c334993db82b9ae9c3d25ce3862168 - languageName: node - linkType: hard - -"value-or-promise@npm:1.0.12, value-or-promise@npm:^1.0.11, value-or-promise@npm:^1.0.12": - version: 1.0.12 - resolution: "value-or-promise@npm:1.0.12" - checksum: f53a66c75b7447c90bbaf946a757ca09c094629cb80ba742f59c980ec3a69be0a385a0e75505dedb4e757862f1a994ca4beaf083a831f24d3ffb3d4bb18cd1e1 - languageName: node - linkType: hard - -"vfile-location@npm:^4.0.0": - version: 4.1.0 - resolution: "vfile-location@npm:4.1.0" - dependencies: - "@types/unist": ^2.0.0 - vfile: ^5.0.0 - checksum: c894e8e5224170d1f85288f4a1d1ebcee0780823ea2b49d881648ab360ebf01b37ecb09b1c4439a75f9a51f31a9f9742cd045e987763e367c352a1ef7c50d446 - languageName: node - linkType: hard - -"vfile-message@npm:^3.0.0": - version: 3.1.4 - resolution: "vfile-message@npm:3.1.4" - dependencies: - "@types/unist": ^2.0.0 - unist-util-stringify-position: ^3.0.0 - checksum: d0ee7da1973ad76513c274e7912adbed4d08d180eaa34e6bd40bc82459f4b7bc50fcaff41556135e3339995575eac5f6f709aba9332b80f775618ea4880a1367 - languageName: node - linkType: hard - -"vfile@npm:^5.0.0": - version: 5.3.7 - resolution: "vfile@npm:5.3.7" - dependencies: - "@types/unist": ^2.0.0 - is-buffer: ^2.0.0 - unist-util-stringify-position: ^3.0.0 - vfile-message: ^3.0.0 - checksum: 642cce703afc186dbe7cabf698dc954c70146e853491086f5da39e1ce850676fc96b169fcf7898aa3ff245e9313aeec40da93acd1e1fcc0c146dc4f6308b4ef9 - languageName: node - linkType: hard - -"vite@npm:4.2.1": - version: 4.2.1 - resolution: "vite@npm:4.2.1" - dependencies: - esbuild: ^0.17.5 - fsevents: ~2.3.2 - postcss: ^8.4.21 - resolve: ^1.22.1 - rollup: ^3.18.0 - peerDependencies: - "@types/node": ">= 14" - less: "*" - sass: "*" - stylus: "*" - sugarss: "*" - terser: ^5.4.0 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - less: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - bin: - vite: bin/vite.js - checksum: 70eb162ffc299017a3c310e3adc95e9661def6b17aafd1f8e5e02e516766060435590dbe3df1e4e95acc3583c728a76e91f07c546221d1e701f1b2b021293f45 - languageName: node - linkType: hard - -"wcwidth@npm:^1.0.1": - version: 1.0.1 - resolution: "wcwidth@npm:1.0.1" - dependencies: - defaults: ^1.0.3 - checksum: 814e9d1ddcc9798f7377ffa448a5a3892232b9275ebb30a41b529607691c0491de47cba426e917a4d08ded3ee7e9ba2f3fe32e62ee3cd9c7d3bafb7754bd553c - languageName: node - linkType: hard - -"web-namespaces@npm:^2.0.0": - version: 2.0.1 - resolution: "web-namespaces@npm:2.0.1" - checksum: b6d9f02f1a43d0ef0848a812d89c83801d5bbad57d8bb61f02eb6d7eb794c3736f6cc2e1191664bb26136594c8218ac609f4069722c6f56d9fc2d808fa9271c6 - languageName: node - linkType: hard - -"web-streams-polyfill@npm:^3.2.1": - version: 3.2.1 - resolution: "web-streams-polyfill@npm:3.2.1" - checksum: b119c78574b6d65935e35098c2afdcd752b84268e18746606af149e3c424e15621b6f1ff0b42b2676dc012fc4f0d313f964b41a4b5031e525faa03997457da02 - languageName: node - linkType: hard - -"webcrypto-core@npm:^1.7.7": - version: 1.7.7 - resolution: "webcrypto-core@npm:1.7.7" - dependencies: - "@peculiar/asn1-schema": ^2.3.6 - "@peculiar/json-schema": ^1.1.12 - asn1js: ^3.0.1 - pvtsutils: ^1.3.2 - tslib: ^2.4.0 - checksum: 1dc5aedb250372dd95e175a671b990ae50e36974f99c4efc85d88e6528c1bc52dd964d44a41b68043c21fb26aabfe8aad4f05a1c39ca28d61de5ca7388413d52 - languageName: node - linkType: hard - -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: c92a0a6ab95314bde9c32e1d0a6dfac83b578f8fa5f21e675bc2706ed6981bc26b7eb7e6a1fab158e5ce4adf9caa4a0aee49a52505d4d13c7be545f15021b17c - languageName: node - linkType: hard - -"whatwg-fetch@npm:^3.4.1": - version: 3.6.2 - resolution: "whatwg-fetch@npm:3.6.2" - checksum: ee976b7249e7791edb0d0a62cd806b29006ad7ec3a3d89145921ad8c00a3a67e4be8f3fb3ec6bc7b58498724fd568d11aeeeea1f7827e7e1e5eae6c8a275afed - languageName: node - linkType: hard - -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: ~0.0.3 - webidl-conversions: ^3.0.0 - checksum: b8daed4ad3356cc4899048a15b2c143a9aed0dfae1f611ebd55073310c7b910f522ad75d727346ad64203d7e6c79ef25eafd465f4d12775ca44b90fa82ed9e2c - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - dependencies: - is-bigint: ^1.0.1 - is-boolean-object: ^1.1.0 - is-number-object: ^1.0.4 - is-string: ^1.0.5 - is-symbol: ^1.0.3 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e - languageName: node - linkType: hard - -"which-collection@npm:^1.0.1": - version: 1.0.1 - resolution: "which-collection@npm:1.0.1" - dependencies: - is-map: ^2.0.1 - is-set: ^2.0.1 - is-weakmap: ^2.0.1 - is-weakset: ^2.0.1 - checksum: c815bbd163107ef9cb84f135e6f34453eaf4cca994e7ba85ddb0d27cea724c623fae2a473ceccfd5549c53cc65a5d82692de418166df3f858e1e5dc60818581c - languageName: node - linkType: hard - -"which-module@npm:^2.0.0": - version: 2.0.0 - resolution: "which-module@npm:2.0.0" - checksum: 809f7fd3dfcb2cdbe0180b60d68100c88785084f8f9492b0998c051d7a8efe56784492609d3f09ac161635b78ea29219eb1418a98c15ce87d085bce905705c9c - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "which-typed-array@npm:1.1.9" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.10 - checksum: fe0178ca44c57699ca2c0e657b64eaa8d2db2372a4e2851184f568f98c478ae3dc3fdb5f7e46c384487046b0cf9e23241423242b277e03e8ba3dabc7c84c98ef - languageName: node - linkType: hard - -"which@npm:^2.0.1, which@npm:^2.0.2": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: ^2.0.0 - bin: - node-which: ./bin/node-which - checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 - languageName: node - linkType: hard - -"wide-align@npm:^1.1.5": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" - dependencies: - string-width: ^1.0.2 || 2 || 3 || 4 - checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 - languageName: node - linkType: hard - -"word-wrap@npm:^1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f - languageName: node - linkType: hard - -"wrap-ansi@npm:^6.2.0": - version: 6.2.0 - resolution: "wrap-ansi@npm:6.2.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: 6cd96a410161ff617b63581a08376f0cb9162375adeb7956e10c8cd397821f7eb2a6de24eb22a0b28401300bf228c86e50617cd568209b5f6775b93c97d2fe3a - languageName: node - linkType: hard - -"wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - -"ws@npm:8.12.1": - version: 8.12.1 - resolution: "ws@npm:8.12.1" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 97301c1c4d838fc81bd413f370f75c12aabe44527b31323b761eab3043a9ecb7e32ffd668548382c9a6a5ad3a1c3a9249608e8338e6b939f2f9540f1e21970b5 - languageName: node - linkType: hard - -"ws@npm:^8.12.0": - version: 8.13.0 - resolution: "ws@npm:8.13.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 53e991bbf928faf5dc6efac9b8eb9ab6497c69feeb94f963d648b7a3530a720b19ec2e0ec037344257e05a4f35bd9ad04d9de6f289615ffb133282031b18c61c - languageName: node - linkType: hard - -"y18n@npm:^4.0.0": - version: 4.0.3 - resolution: "y18n@npm:4.0.3" - checksum: 014dfcd9b5f4105c3bb397c1c8c6429a9df004aa560964fb36732bfb999bfe83d45ae40aeda5b55d21b1ee53d8291580a32a756a443e064317953f08025b1aa4 - languageName: node - linkType: hard - -"y18n@npm:^5.0.5": - version: 5.0.8 - resolution: "y18n@npm:5.0.8" - checksum: 54f0fb95621ee60898a38c572c515659e51cc9d9f787fb109cef6fde4befbe1c4602dc999d30110feee37456ad0f1660fa2edcfde6a9a740f86a290999550d30 - languageName: node - linkType: hard - -"yallist@npm:^3.0.2": - version: 3.1.1 - resolution: "yallist@npm:3.1.1" - checksum: 48f7bb00dc19fc635a13a39fe547f527b10c9290e7b3e836b9a8f1ca04d4d342e85714416b3c2ab74949c9c66f9cebb0473e6bc353b79035356103b47641285d - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 - languageName: node - linkType: hard - -"yaml-ast-parser@npm:^0.0.43": - version: 0.0.43 - resolution: "yaml-ast-parser@npm:0.0.43" - checksum: fb5df4c067b6ccbd00953a46faf6ff27f0e290d623c712dc41f330251118f110e22cfd184bbff498bd969cbcda3cd27e0f9d0adb9e6d90eb60ccafc0d8e28077 - languageName: node - linkType: hard - -"yaml@npm:^1.10.0": - version: 1.10.2 - resolution: "yaml@npm:1.10.2" - checksum: ce4ada136e8a78a0b08dc10b4b900936912d15de59905b2bf415b4d33c63df1d555d23acb2a41b23cf9fb5da41c256441afca3d6509de7247daa062fd2c5ea5f - languageName: node - linkType: hard - -"yargs-parser@npm:^18.1.2": - version: 18.1.3 - resolution: "yargs-parser@npm:18.1.3" - dependencies: - camelcase: ^5.0.0 - decamelize: ^1.2.0 - checksum: 60e8c7d1b85814594d3719300ecad4e6ae3796748b0926137bfec1f3042581b8646d67e83c6fc80a692ef08b8390f21ddcacb9464476c39bbdf52e34961dd4d9 - languageName: node - linkType: hard - -"yargs-parser@npm:^21.1.1": - version: 21.1.1 - resolution: "yargs-parser@npm:21.1.1" - checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c - languageName: node - linkType: hard - -"yargs@npm:^15.3.1": - version: 15.4.1 - resolution: "yargs@npm:15.4.1" - dependencies: - cliui: ^6.0.0 - decamelize: ^1.2.0 - find-up: ^4.1.0 - get-caller-file: ^2.0.1 - require-directory: ^2.1.1 - require-main-filename: ^2.0.0 - set-blocking: ^2.0.0 - string-width: ^4.2.0 - which-module: ^2.0.0 - y18n: ^4.0.0 - yargs-parser: ^18.1.2 - checksum: 40b974f508d8aed28598087720e086ecd32a5fd3e945e95ea4457da04ee9bdb8bdd17fd91acff36dc5b7f0595a735929c514c40c402416bbb87c03f6fb782373 - languageName: node - linkType: hard - -"yargs@npm:^17.0.0": - version: 17.7.1 - resolution: "yargs@npm:17.7.1" - dependencies: - cliui: ^8.0.1 - escalade: ^3.1.1 - get-caller-file: ^2.0.5 - require-directory: ^2.1.1 - string-width: ^4.2.3 - y18n: ^5.0.5 - yargs-parser: ^21.1.1 - checksum: 3d8a43c336a4942bc68080768664aca85c7bd406f018bad362fd255c41c8f4e650277f42fd65d543fce99e084124ddafee7bbfc1a5c6a8fda4cec78609dcf8d4 - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: f77b3d8d00310def622123df93d4ee654fc6a0096182af8bd60679ddcdfb3474c56c6c7190817c84a2785648cdee9d721c0154eb45698c62176c322fb46fc700 - languageName: node - linkType: hard - -"zen-observable-ts@npm:^0.8.12, zen-observable-ts@npm:^0.8.21": - version: 0.8.21 - resolution: "zen-observable-ts@npm:0.8.21" - dependencies: - tslib: ^1.9.3 - zen-observable: ^0.8.0 - checksum: 2931628598937effcc77acf88ac8d3468c0584bbc4488726ae2c94f6a02615ff80e9d6dc0943b71bc874466ab371837737ce8245eed3bfea38daa466a2fdc6ce - languageName: node - linkType: hard - -"zen-observable-ts@npm:^1.2.5": - version: 1.2.5 - resolution: "zen-observable-ts@npm:1.2.5" - dependencies: - zen-observable: 0.8.15 - checksum: 3b707b7a0239a9bc40f73ba71b27733a689a957c1f364fabb9fa9cbd7d04b7c2faf0d517bf17004e3ed3f4330ac613e84c0d32313e450ddaa046f3350af44541 - languageName: node - linkType: hard - -"zen-observable@npm:0.8.11": - version: 0.8.11 - resolution: "zen-observable@npm:0.8.11" - checksum: 4b5e61c46cc5fc3906a5f30b6d3ac4c3c92f5101ff2867fd5ab1b147484a4117b440980d86cba22f3a44c9107ea19c6e9cd01789ec641a56b390e58550e1fcd6 - languageName: node - linkType: hard - -"zen-observable@npm:0.8.15, zen-observable@npm:^0.8.0": - version: 0.8.15 - resolution: "zen-observable@npm:0.8.15" - checksum: b7289084bc1fc74a559b7259faa23d3214b14b538a8843d2b001a35e27147833f4107590b1b44bf5bc7f6dfe6f488660d3a3725f268e09b3925b3476153b7821 - languageName: node - linkType: hard - -"zwitch@npm:^2.0.0": - version: 2.0.4 - resolution: "zwitch@npm:2.0.4" - checksum: f22ec5fc2d5f02c423c93d35cdfa83573a3a3bd98c66b927c368ea4d0e7252a500df2a90a6b45522be536a96a73404393c958e945fdba95e6832c200791702b6 - languageName: node - linkType: hard diff --git a/pkg/ui/window.go b/pkg/ui/window.go deleted file mode 100644 index ddb4bb208..000000000 --- a/pkg/ui/window.go +++ /dev/null @@ -1,48 +0,0 @@ -//go:build ui || generate - -package ui - -import ( - "context" - - "github.com/wailsapp/wails/v2/pkg/runtime" -) - -const ( - Width = 1024 - Height = 768 -) - -// Window struct -type Window struct { - ctx context.Context -} - -// startup is called when the app starts. The context is saved -// so we can call the runtime methods. -func (this *Window) startup(ctx context.Context) { - this.ctx = ctx -} - -func (this *Window) width() int { - return Width -} - -func (this *Window) height() int { - return Height -} - -// Close closes the application -func (this *Window) Close() { - runtime.Quit(this.ctx) -} - -// SetClipboard allows to copy provided text to OS clipboard -func (this *Window) SetClipboard(text string) error { - return runtime.ClipboardSetText(this.ctx, text) -} - -// NewWindow creates a new App application struct -func NewWindow() *Window { - return &Window{} -} diff --git a/pkg/up/ping.go b/pkg/up/ping.go index 7bc8a7832..3b72c7a68 100644 --- a/pkg/up/ping.go +++ b/pkg/up/ping.go @@ -60,8 +60,7 @@ func doTestDns(domain string) error { func ping(url string) error { ping := fmt.Sprintf("Pinging %s...\n", url) - success := "Found status code 200, console up!\n" - return retrier(ping, success, func() error { + return retrier(ping, "Found status code 200, console up!\n", func() error { resp, err := http.Get(url) if err == nil && resp.StatusCode == 200 { return nil @@ -82,7 +81,7 @@ func retrier(retryMsg, successMsg string, f func() error) error { fmt.Print(retryMsg) err := f() if err == nil { - utils.Success(successMsg) + utils.Success(successMsg) //nolint:govet done <- true return } diff --git a/pkg/utils/git/remote.go b/pkg/utils/git/remote.go index 311ff87d6..f33b670a0 100644 --- a/pkg/utils/git/remote.go +++ b/pkg/utils/git/remote.go @@ -1,9 +1,9 @@ package git import ( + e "errors" "fmt" "os" - "strings" gogit "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/plumbing/transport" @@ -18,27 +18,13 @@ func Clone(auth transport.AuthMethod, url, path string) (*gogit.Repository, erro }) } -func Repair(root string) error { - _, err := git(root, "diff-index", "--quiet", "HEAD", "--") - if err == nil { - return nil - } - - diff, _ := git(root, "--no-pager", "diff") - if strings.TrimSpace(diff) == "" && err != nil { - return Sync(root, "committing new encrypted files", false) - } - - return fmt.Errorf("There were non-repairable changes in your local git repository, you'll need to investigate them manually") -} - func Sync(root, msg string, force bool) error { if res, err := git(root, "add", "."); err != nil { - return errors.ErrorWrap(fmt.Errorf(res), "`git add .` failed") + return errors.ErrorWrap(e.New(res), "`git add .` failed") } if res, err := git(root, "commit", "-m", msg); err != nil { - return errors.ErrorWrap(fmt.Errorf(res), "failed to commit changes") + return errors.ErrorWrap(e.New(res), "failed to commit changes") } branch, err := CurrentBranch() @@ -52,7 +38,7 @@ func Sync(root, msg string, force bool) error { } if res, err := git(root, args...); err != nil { - return errors.ErrorWrap(fmt.Errorf(res), fmt.Sprintf("`git push origin %s` failed", branch)) + return errors.ErrorWrap(e.New(res), fmt.Sprintf("`git push origin %s` failed", branch)) } return nil diff --git a/pkg/utils/kind.go b/pkg/utils/kind.go deleted file mode 100644 index bb6705f8c..000000000 --- a/pkg/utils/kind.go +++ /dev/null @@ -1,31 +0,0 @@ -package utils - -import ( - "os/exec" - "strings" -) - -const noKindClustersError = "No kind clusters found." - -func IsKindClusterAlreadyExists(name string) bool { - cmd := exec.Command("kind", "get", "clusters") - out, err := ExecuteWithOutput(cmd) - if err != nil { - return false - } - if strings.Contains(out, noKindClustersError) { - return false - } - - return strings.Contains(out, name) -} - -func GetKindClusterKubeconfig(name string, internal bool) (string, error) { - kubeconfigArgs := []string{"get", "kubeconfig", "--name", name} - if internal { - kubeconfigArgs = append(kubeconfigArgs, "--internal") - } - - cmd := exec.Command("kind", kubeconfigArgs...) - return ExecuteWithOutput(cmd) -} diff --git a/pkg/utils/map.go b/pkg/utils/map.go index 3e33f5e2b..35a3ac272 100644 --- a/pkg/utils/map.go +++ b/pkg/utils/map.go @@ -5,9 +5,7 @@ import ( "reflect" jsonpatch "github.com/evanphx/json-patch" - "github.com/google/go-cmp/cmp" jsoniter "github.com/json-iterator/go" - "golang.org/x/exp/maps" "k8s.io/apimachinery/pkg/util/sets" ) @@ -81,57 +79,6 @@ func PatchInterfaceMap(defaultValues, values map[string]map[string]interface{}) return patch, nil } -type DiffCondition func(key string, value, diffValue any) bool - -var ( - equalDiffCondition DiffCondition = func(_ string, value, diffValue any) bool { - return cmp.Equal(value, diffValue) - } -) - -// DiffMap removes keys from the base map based on provided DiffCondition match against the same keys in provided -// diff map. It always uses an equal comparison for the values, but specific keys can use extended comparison -// if needed by passing custom DiffCondition function. -// -// Example: -// -// A: {a: 1, b: 1, c: 2} -// B: {a: 1, d: 2, c: 3} -// Result: {b: 1, c: 2} -// -// Note: It does not remove null value keys by default. -func DiffMap(base, diff map[string]interface{}, conditions ...DiffCondition) map[string]interface{} { - result := make(map[string]interface{}) - maps.Copy(result, base) - - if diff == nil { - diff = make(map[string]interface{}) - } - - for k, v := range base { - switch t := v.(type) { - case map[string]interface{}: - dValue, _ := diff[k].(map[string]interface{}) - if dMap := DiffMap(t, dValue, conditions...); len(dMap) > 0 { - result[k] = dMap - break - } - - delete(result, k) - default: - diffV := diff[k] - for _, condition := range append(conditions, equalDiffCondition) { - if condition(k, v, diffV) { - delete(result, k) - break - } - } - } - } - - return result -} - func cleanUpInterfaceArray(in []interface{}) []interface{} { result := make([]interface{}, len(in)) for i, v := range in { diff --git a/pkg/utils/print.go b/pkg/utils/print.go index c4f7e362b..abfe9653e 100644 --- a/pkg/utils/print.go +++ b/pkg/utils/print.go @@ -5,7 +5,6 @@ import ( "fmt" "os" "strings" - "syscall" "github.com/fatih/color" "github.com/olekukonko/tablewriter" @@ -15,9 +14,9 @@ import ( func ReadLine(prompt string) (string, error) { reader := bufio.NewReader(os.Stdin) - color.New(color.Bold).Printf(prompt) + _, _ = color.New(color.Bold).Printf(prompt) //nolint:govet res, err := reader.ReadString('\n') - return strings.TrimSpace(string(res)), err + return strings.TrimSpace(res), err } func ReadAlphaNum(prompt string) (string, error) { @@ -48,35 +47,30 @@ func ReadLineDefault(prompt string, def string) (string, error) { } func ReadPwd(prompt string) (string, error) { - color.New(color.Bold).Printf(prompt) - pwd, err := term.ReadPassword(int(syscall.Stdin)) + _, _ = color.New(color.Bold).Printf(prompt) //nolint:govet + pwd, err := term.ReadPassword(int(os.Stdin.Fd())) return strings.TrimSpace(string(pwd)), err } func Warn(line string, args ...interface{}) { - color.New(color.FgYellow, color.Bold).Fprintf(color.Error, line, args...) + _, _ = color.New(color.FgYellow, color.Bold).Fprintf(color.Error, line, args...) } func Success(line string, args ...interface{}) { - color.New(color.FgGreen, color.Bold).Printf(line, args...) + _, _ = color.New(color.FgGreen, color.Bold).Printf(line, args...) } func Error(line string, args ...interface{}) { - color.New(color.FgRed, color.Bold).Fprintf(color.Error, line, args...) + _, _ = color.New(color.FgRed, color.Bold).Fprintf(color.Error, line, args...) } func Highlight(line string, args ...interface{}) { - color.New(color.Bold).Printf(line, args...) -} - -func Note(line string, args ...interface{}) { - Warn("**NOTE** :: ") - Highlight(line, args...) + _, _ = color.New(color.Bold).Printf(line, args...) } func HighlightError(err error) error { if err != nil { - err = fmt.Errorf(color.New(color.FgRed, color.Bold).Sprint(err.Error())) + err = fmt.Errorf(color.New(color.FgRed, color.Bold).Sprint(err.Error())) //nolint:all } return err } @@ -100,15 +94,6 @@ func PrintTable[T any](list []T, headers []string, rowFun func(T) ([]string, err return nil } -func PrintAttributes(attrs map[string]string) { - table := tablewriter.NewWriter(os.Stdout) - table.SetHeader([]string{"Attribute", "Value"}) - for k, v := range attrs { - table.Append([]string{k, v}) - } - table.Render() -} - type Printer interface { PrettyPrint() } diff --git a/pkg/utils/validation.go b/pkg/utils/validation.go index 00a8c8c48..bdd5a90bd 100644 --- a/pkg/utils/validation.go +++ b/pkg/utils/validation.go @@ -1,6 +1,7 @@ package utils import ( + e "errors" "fmt" "os" "regexp" @@ -38,14 +39,14 @@ func ValidateRegex(val, regex, message string) error { return nil } - return errors.ErrorWrap(fmt.Errorf(message), "Validation Failure") + return errors.ErrorWrap(e.New(message), "Validation Failure") } func RegexValidator(regex, message string) survey.Validator { return func(val interface{}) error { str, ok := val.(string) if !ok { - return fmt.Errorf("Result is not a string") + return e.New("Result is not a string") } return ValidateRegex(str, regex, message) diff --git a/pkg/vpn/vpn.go b/pkg/vpn/vpn.go deleted file mode 100644 index 6bd9abad1..000000000 --- a/pkg/vpn/vpn.go +++ /dev/null @@ -1,36 +0,0 @@ -package vpn - -import ( - "github.com/pluralsh/plural-cli/pkg/kubernetes" - "github.com/pluralsh/plural-operator/apis/vpn/v1alpha1" - - v1 "k8s.io/api/core/v1" -) - -func ListServers(kube kubernetes.Kube, namespace string) (*v1alpha1.WireguardServerList, error) { - return kube.WireguardServerList(namespace) -} - -func GetServer(kube kubernetes.Kube, namespace string, name string) (*v1alpha1.WireguardServer, error) { - return kube.WireguardServer(namespace, name) -} - -func ListPeers(kube kubernetes.Kube, namespace string) (*v1alpha1.WireguardPeerList, error) { - return kube.WireguardPeerList(namespace) -} - -func GetPeer(kube kubernetes.Kube, namespace string, name string) (*v1alpha1.WireguardPeer, error) { - return kube.WireguardPeer(namespace, name) -} - -func GetPeerConfigSecret(kube kubernetes.Kube, namespace string, name string) (*v1.Secret, error) { - return kube.Secret(namespace, name) -} - -func CreatePeer(kube kubernetes.Kube, namespace string, peer *v1alpha1.WireguardPeer) (*v1alpha1.WireguardPeer, error) { - return kube.WireguardPeerCreate(namespace, peer) -} - -func DeletePeer(kube kubernetes.Kube, namespace string, name string) error { - return kube.WireguardPeerDelete(namespace, name) -} diff --git a/pkg/wkspace/actions.go b/pkg/wkspace/actions.go deleted file mode 100644 index 040238f37..000000000 --- a/pkg/wkspace/actions.go +++ /dev/null @@ -1,172 +0,0 @@ -package wkspace - -import ( - "fmt" - "os" - "path/filepath" - "strings" - "time" - - "go.mercari.io/hcledit" - "helm.sh/helm/v3/pkg/action" - - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/helm" - "github.com/pluralsh/plural-cli/pkg/kubernetes" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" -) - -type checker func(s string) bool - -var alwaysErr checker = func(s string) bool { return false } - -func (c checker) execSuppressed(command string, args ...string) (err error) { - for retry := 2; retry >= 0; retry-- { - utils.Highlight("%s %s ~> ", command, strings.Join(args, " ")) - cmd, out := executor.SuppressedCommand(command, args...) - err = executor.RunCommand(cmd, out) - if err == nil || c(out.Format()) { - break - } - fmt.Printf("retrying command, number of retries remaining: %d\n", retry) - } - - return -} - -func (w *Workspace) DestroyHelm() error { - // ensure current kubeconfig is correct before destroying stuff - if err := w.Provider.KubeConfig(); err != nil { - return err - } - - name := w.Installation.Repository.Name - namespace := w.Config.Namespace(name) - var err error - for retry := 2; retry >= 0; retry-- { - err = uninstallHelm(name, namespace) - if err == nil { - break - } - fmt.Printf("retrying command, number of retries remaining: %d\n", retry) - } - - return err - -} - -func (w *Workspace) Bounce() error { - return w.ToMinimal().BounceHelm(false, nil, nil, nil) -} - -func (w *Workspace) HelmDiff() error { - return w.ToMinimal().DiffHelm() -} - -func (w *Workspace) Destroy() error { - if err := w.DestroyHelm(); err != nil { - return err - } - - if err := w.DestroyTerraform(); err != nil { - return err - } - - return w.Reset() -} - -func (w *Workspace) Reset() error { - repo := w.Installation.Repository - repoRoot, err := git.Root() - if err != nil { - return err - } - - deployFile := pathing.SanitizeFilepath(filepath.Join(repoRoot, repo.Name, "deploy.hcl")) - editor, err := hcledit.ReadFile(deployFile) - if err != nil { - return err - } - if err := editor.Update("step.*.sha", ""); err != nil { - return err - } - if err := editor.OverWriteFile(); err != nil { - return err - } - - return nil -} - -func (w *Workspace) DestroyTerraform() error { - repo := w.Installation.Repository - repoRoot, err := git.Root() - if err != nil { - return err - } - path, err := filepath.Abs(pathing.SanitizeFilepath(filepath.Join(repoRoot, repo.Name, "terraform"))) - if err != nil { - return err - } - - time.AfterFunc(1*time.Minute, func() { - kube, err := kubernetes.Kubernetes() - if err != nil { - fmt.Printf("Could not set up k8s client due to %s\n", err) - return - } - - ns := w.Config.Namespace(repo.Name) - if err := kube.FinalizeNamespace(ns); err != nil { - return - } - }) - - if err := os.Chdir(path); err != nil { - return err - } - if err := alwaysErr.execSuppressed("terraform", "init", "-upgrade"); err != nil { - return err - } - - return alwaysErr.execSuppressed("terraform", "destroy", "-auto-approve") -} - -func uninstallHelm(name, namespace string) error { - exists, err := isReleaseAvailable(name, namespace) - if err != nil { - return err - } - if exists { - actionConfig, err := helm.GetActionConfig(namespace) - if err != nil { - return err - } - client := action.NewUninstall(actionConfig) - - _, err = client.Run(name) - if err != nil { - return err - } - } - return nil -} - -func isReleaseAvailable(name, namespace string) (bool, error) { - actionConfig, err := helm.GetActionConfig(namespace) - if err != nil { - return false, err - } - client := action.NewList(actionConfig) - resp, err := client.Run() - if err != nil { - return false, err - } - for _, rel := range resp { - if rel.Name == name { - return true, nil - } - } - return false, nil -} diff --git a/pkg/wkspace/builder.go b/pkg/wkspace/builder.go deleted file mode 100644 index 417dbce3e..000000000 --- a/pkg/wkspace/builder.go +++ /dev/null @@ -1,273 +0,0 @@ -package wkspace - -import ( - "fmt" - "os" - "path/filepath" - "strings" - - "golang.org/x/mod/semver" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/crypto" - "github.com/pluralsh/plural-cli/pkg/diff" - "github.com/pluralsh/plural-cli/pkg/executor" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/provider" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" - - "github.com/pluralsh/polly/algorithms" -) - -type Workspace struct { - Provider provider.Provider - Installation *api.Installation - Charts []*api.ChartInstallation - Terraform []*api.TerraformInstallation - Config *config.Config - Manifest *manifest.ProjectManifest - Context *manifest.Context - Links *manifest.Links -} - -func New(client api.Client, inst *api.Installation) (*Workspace, error) { - ci, ti, err := client.GetPackageInstallations(inst.Repository.Id) - if err != nil { - return nil, api.GetErrorResponse(err, "GetPackageInstallations") - } - - projPath, _ := filepath.Abs("workspace.yaml") - project, err := manifest.ReadProject(projPath) - if err != nil { - return nil, err - } - - prov, err := provider.FromManifest(project) - if err != nil { - return nil, err - } - - conf := config.Read() - ctx, err := manifest.ReadContext(manifest.ContextPath()) - if err != nil { - return nil, err - } - - manifestPath := manifestPath(inst.Repository.Name) - man, err := manifest.Read(manifestPath) - var links *manifest.Links - if err == nil { - links = man.Links - } - - wk := &Workspace{ - Provider: prov, - Installation: inst, - Charts: ci, - Terraform: ti, - Config: &conf, - Context: ctx, - Manifest: project, - Links: links, - } - return wk, nil -} - -func Configured(repo string) bool { - ctx, err := manifest.ReadContext(manifest.ContextPath()) - if err != nil { - return false - } - - _, ok := ctx.Configuration[repo] - return ok -} - -func (wk *Workspace) PrintLinks() { - if wk.Links == nil { - return - } - - fmt.Printf("\n") - doPrintLinks("helm", wk.Links.Helm) - doPrintLinks("terraform", wk.Links.Terraform) -} - -func (wk *Workspace) RequiredCliVsn() (vsn string, ok bool) { - cVsns := algorithms.Map(wk.Charts, func(c *api.ChartInstallation) string { return c.Version.Dependencies.CliVsn }) - tVsns := algorithms.Map(wk.Terraform, func(t *api.TerraformInstallation) string { return t.Version.Dependencies.CliVsn }) - vsns := algorithms.Filter(append(cVsns, tVsns...), func(v string) bool { return v != "" }) - vsns = algorithms.Map(vsns, func(v string) string { - if strings.HasPrefix(v, "v") { - return v - } - return fmt.Sprintf("v%s", v) - }) - vsns = algorithms.Filter(vsns, semver.IsValid) - if len(vsns) == 0 { - return - } - - semver.Sort(vsns) - return vsns[len(vsns)-1], true -} - -func doPrintLinks(name string, links map[string]string) { - if len(links) == 0 { - return - } - - utils.Highlight("configured %s links:\n", name) - for name, path := range links { - fmt.Printf("\t%s ==> %s\n", name, path) - } - - fmt.Printf("\n") -} - -func (wk *Workspace) ToMinimal() *MinimalWorkspace { - return &MinimalWorkspace{ - Name: wk.Installation.Repository.Name, - Provider: wk.Provider, - Config: wk.Config, - Manifest: wk.Manifest, - } -} - -func (wk *Workspace) Prepare() error { - repo := wk.Installation.Repository - repoRoot, err := git.Root() - if err != nil { - return err - } - - if err := mkdir(pathing.SanitizeFilepath(filepath.Join(repoRoot, repo.Name))); err != nil { - return err - } - - path, _ := manifest.ManifestPath(repo.Name) - prev, err := manifest.Read(path) - if err != nil { - prev = &manifest.Manifest{} - } - - man := wk.BuildManifest(prev) - if err := man.Write(path); err != nil { - return err - } - - if err := wk.buildExecution(repoRoot); err != nil { - return err - } - - if err := wk.buildDiff(repoRoot); err != nil { - return err - } - - return nil -} - -func (wk *Workspace) requiresWait() bool { - for _, ci := range wk.Charts { - if ci.Version.Dependencies.Wait { - return true - } - } - - for _, ti := range wk.Terraform { - if ti.Version.Dependencies.Wait { - return true - } - } - return false -} - -func (wk *Workspace) buildExecution(repoRoot string) error { - name := wk.Installation.Repository.Name - wkspaceRoot := filepath.Join(repoRoot, name) - - if err := mkdir(pathing.SanitizeFilepath(filepath.Join(wkspaceRoot, ".plural"))); err != nil { - return err - } - - onceFile := pathing.SanitizeFilepath(filepath.Join(wkspaceRoot, ".plural", "ONCE")) - if err := os.WriteFile(onceFile, []byte("once"), 0644); err != nil { - return err - } - - nonceFile := pathing.SanitizeFilepath(filepath.Join(wkspaceRoot, ".plural", "NONCE")) - if err := os.WriteFile(nonceFile, []byte(crypto.RandString(32)), 0644); err != nil { - return err - } - - if err := executor.Ignore(wkspaceRoot); err != nil { - return err - } - - exec, _ := executor.GetExecution(pathing.SanitizeFilepath(wkspaceRoot), "deploy") - - return executor.DefaultExecution(name, exec).Flush(repoRoot) -} - -func (wk *Workspace) buildDiff(repoRoot string) error { - name := wk.Installation.Repository.Name - wkspaceRoot := pathing.SanitizeFilepath(filepath.Join(repoRoot, name)) - - d, _ := diff.GetDiff(pathing.SanitizeFilepath(wkspaceRoot), "diff") - - return diff.DefaultDiff(name, d).Flush(repoRoot) -} - -func DiffedRepos() ([]string, error) { - files, err := git.Modified() - repos := make(map[string]bool) - if err != nil { - return nil, err - } - - for _, file := range files { - // we don't want to respect the OS separators here, it is always a forwards slash on git - parts := strings.Split(file, "/") - if len(parts) <= 1 { - continue - } - - maybeRepo := parts[0] - if utils.Exists(manifestPath(maybeRepo)) && file != manifestPath(maybeRepo) { - repos[maybeRepo] = true - } - } - - result := make([]string, len(repos)) - count := 0 - for repo := range repos { - result[count] = repo - count++ - } - - return result, nil -} - -func isRepo(name string) bool { - repoRoot, err := git.Root() - if err != nil { - return false - } - - return utils.Exists(pathing.SanitizeFilepath(filepath.Join(repoRoot, name, "manifest.yaml"))) -} - -func mkdir(path string) error { - if err := os.MkdirAll(path, os.ModePerm); err != nil { - return err - } - return nil -} - -func manifestPath(repo string) string { - path, _ := filepath.Abs(pathing.SanitizeFilepath(filepath.Join(repo, "manifest.yaml"))) - return path -} diff --git a/pkg/wkspace/builder_test.go b/pkg/wkspace/builder_test.go deleted file mode 100644 index 44f79719a..000000000 --- a/pkg/wkspace/builder_test.go +++ /dev/null @@ -1,59 +0,0 @@ -package wkspace - -import ( - "testing" - - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/stretchr/testify/assert" -) - -func TestRequiredCliVersion(t *testing.T) { - w := &Workspace{ - Charts: []*api.ChartInstallation{ - { - Version: &api.Version{ - Dependencies: &api.Dependencies{ - CliVsn: "0.1.0", - }, - }, - }, - }, - Terraform: []*api.TerraformInstallation{ - { - Version: &api.Version{ - Dependencies: &api.Dependencies{ - CliVsn: "0.2.0", - }, - }, - }, - }, - } - vsn, ok := w.RequiredCliVsn() - assert.True(t, ok) - assert.Equal(t, "v0.2.0", vsn) -} - -func TestRequiredCliVersionEmpty(t *testing.T) { - w := &Workspace{ - Charts: []*api.ChartInstallation{ - { - Version: &api.Version{ - Dependencies: &api.Dependencies{ - CliVsn: "bogus", - }, - }, - }, - }, - Terraform: []*api.TerraformInstallation{ - { - Version: &api.Version{ - Dependencies: &api.Dependencies{ - CliVsn: "", - }, - }, - }, - }, - } - _, ok := w.RequiredCliVsn() - assert.False(t, ok) -} diff --git a/pkg/wkspace/graph.go b/pkg/wkspace/graph.go deleted file mode 100644 index 20af16f73..000000000 --- a/pkg/wkspace/graph.go +++ /dev/null @@ -1,113 +0,0 @@ -package wkspace - -import ( - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/polly/algorithms" - "github.com/pluralsh/polly/containers" - "github.com/samber/lo" -) - -func SortAndFilter(installations []*api.Installation) ([]string, error) { - names := lo.FilterMap(installations, func(i *api.Installation, ind int) (string, bool) { - name := i.Repository.Name - return name, isRepo(name) - }) - return TopSortNames(names) -} - -func TopSort(client api.Client, installations []*api.Installation) ([]*api.Installation, error) { - repoMap := map[string]*api.Installation{} - g := containers.NewGraph[string]() - for _, installation := range installations { - repo := installation.Repository.Name - repoMap[repo] = installation - g.AddNode(repo) - - ci, tf, err := client.GetPackageInstallations(installation.Repository.Id) - if err != nil { - return nil, api.GetErrorResponse(err, "GetPackageInstallations") - } - deps := algorithms.Map(buildDependencies(repo, ci, tf), func(d *manifest.Dependency) string { return d.Repo }) - for _, d := range deps { - g.AddEdge(d, repo) - } - } - - names, err := algorithms.TopsortGraph(g) - if err != nil { - return nil, err - } - - insts := lo.FilterMap(names, func(r string, ind int) (i *api.Installation, ok bool) { - i, ok = repoMap[r] - return - }) - return insts, nil -} - -func TopSortNames(repos []string) ([]string, error) { - g := containers.NewGraph[string]() - for _, r := range repos { - g.AddNode(r) - deps, err := findDependencies(r) - if err != nil { - return nil, err - } - - for _, dep := range deps { - g.AddEdge(dep, r) - } - } - - return algorithms.TopsortGraph(g) -} - -func findDependencies(repo string) ([]string, error) { - man, err := manifest.Read(manifestPath(repo)) - if err != nil { - return nil, err - } - - return lo.FilterMap(man.Dependencies, func(d *manifest.Dependency, ind int) (string, bool) { return d.Repo, isRepo(d.Repo) }), nil -} - -func AllDependencies(repos []string) ([]string, error) { - deps := []string{} - visit := func(r string) error { - deps = append(deps, r) - return nil - } - for _, repo := range repos { - if err := algorithms.DFS(repo, findDependencies, visit); err != nil { - return deps, err - } - } - - return TopSortNames(lo.Uniq(deps)) -} - -func Dependencies(repo string) ([]string, error) { - // dfs from the repo to find all dependencies - deps := []string{} - visit := func(r string) error { - deps = append(deps, r) - return nil - } - if err := algorithms.DFS(repo, findDependencies, visit); err != nil { - return nil, err - } - - // topsort only those to find correct ordering - return TopSortNames(deps) -} - -func UntilRepo(client api.Client, repo string, installations []*api.Installation) ([]*api.Installation, error) { - topsorted, err := TopSort(client, installations) - if err != nil || repo == "" { - return topsorted, err - } - - ind := algorithms.Index(topsorted, func(i *api.Installation) bool { return i.Repository.Name == repo }) - return topsorted[:(ind + 1)], err -} diff --git a/pkg/wkspace/manifest.go b/pkg/wkspace/manifest.go deleted file mode 100644 index 0bcd2668e..000000000 --- a/pkg/wkspace/manifest.go +++ /dev/null @@ -1,82 +0,0 @@ -package wkspace - -import ( - "github.com/pluralsh/plural-cli/pkg/api" - "github.com/pluralsh/plural-cli/pkg/manifest" -) - -func (wk *Workspace) BuildManifest(prev *manifest.Manifest) *manifest.Manifest { - repository := wk.Installation.Repository - charts := make([]*manifest.ChartManifest, len(wk.Charts)) - terraform := make([]*manifest.TerraformManifest, len(wk.Terraform)) - - for i, ci := range wk.Charts { - charts[i] = buildChartManifest(ci) - } - for i, ti := range wk.Terraform { - terraform[i] = buildTerraformManifest(ti) - } - - return &manifest.Manifest{ - Id: repository.Id, - Name: repository.Name, - Cluster: wk.Provider.Cluster(), - Project: wk.Provider.Project(), - Bucket: wk.Provider.Bucket(), - Provider: wk.Provider.Name(), - Region: wk.Provider.Region(), - License: wk.Installation.LicenseKey, - Wait: wk.requiresWait(), - Charts: charts, - Terraform: terraform, - Dependencies: buildDependencies(repository.Name, wk.Charts, wk.Terraform), - Context: wk.Provider.Context(), - Links: prev.Links, - } -} - -func buildDependencies(repo string, charts []*api.ChartInstallation, tfs []*api.TerraformInstallation) []*manifest.Dependency { - var deps []*manifest.Dependency - var seen = make(map[string]bool) - - for _, chart := range charts { - for _, dep := range chart.Chart.Dependencies.Dependencies { - _, ok := seen[dep.Repo] - if ok { - continue - } - - if dep.Repo != repo { - deps = append(deps, &manifest.Dependency{Repo: dep.Repo}) - seen[dep.Repo] = true - } - } - } - - for _, tf := range tfs { - for _, dep := range tf.Terraform.Dependencies.Dependencies { - _, ok := seen[dep.Repo] - if ok { - continue - } - - if dep.Repo != repo { - deps = append(deps, &manifest.Dependency{Repo: dep.Repo}) - seen[dep.Repo] = true - } - } - } - - return deps -} - -func buildChartManifest(chartInstallation *api.ChartInstallation) *manifest.ChartManifest { - chart := chartInstallation.Chart - version := chartInstallation.Version - return &manifest.ChartManifest{Id: chart.Id, Name: chart.Name, VersionId: version.Id, Version: version.Version} -} - -func buildTerraformManifest(tfInstallation *api.TerraformInstallation) *manifest.TerraformManifest { - terraform := tfInstallation.Terraform - return &manifest.TerraformManifest{Id: terraform.Id, Name: terraform.Name} -} diff --git a/pkg/wkspace/minimal.go b/pkg/wkspace/minimal.go deleted file mode 100644 index e4168b3e4..000000000 --- a/pkg/wkspace/minimal.go +++ /dev/null @@ -1,408 +0,0 @@ -package wkspace - -import ( - "bytes" - "fmt" - "io" - "os" - "os/exec" - "path/filepath" - "strings" - "text/template" - "time" - - helmdiff "github.com/databus23/helm-diff/v3/diff" - diffmanifest "github.com/databus23/helm-diff/v3/manifest" - "github.com/google/go-cmp/cmp" - "github.com/helm/helm-mapkubeapis/pkg/common" - release "github.com/helm/helm-mapkubeapis/pkg/v3" - "github.com/imdario/mergo" - "github.com/mitchellh/go-homedir" - "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chart/loader" - relutil "helm.sh/helm/v3/pkg/releaseutil" - "helm.sh/helm/v3/pkg/storage/driver" - "helm.sh/helm/v3/pkg/strvals" - "sigs.k8s.io/yaml" - - "github.com/pluralsh/plural-cli/pkg/config" - "github.com/pluralsh/plural-cli/pkg/diff" - "github.com/pluralsh/plural-cli/pkg/helm" - "github.com/pluralsh/plural-cli/pkg/manifest" - "github.com/pluralsh/plural-cli/pkg/output" - "github.com/pluralsh/plural-cli/pkg/provider" - "github.com/pluralsh/plural-cli/pkg/utils" - "github.com/pluralsh/plural-cli/pkg/utils/git" - "github.com/pluralsh/plural-cli/pkg/utils/pathing" -) - -const ( - valuesYaml = "values.yaml" - defaultValuesYaml = "default-values.yaml" - helm2TestSuccessHook = "test-success" - helm3TestHook = "test" -) - -type MinimalWorkspace struct { - Name string - Provider provider.Provider - Config *config.Config - Manifest *manifest.ProjectManifest - HelmConfig *action.Configuration -} - -func Minimal(name string, helmConfig *action.Configuration) (*MinimalWorkspace, error) { - root, err := git.Root() - if err != nil { - return nil, err - } - - prov, err := provider.GetProvider() - if err != nil { - return nil, err - } - - project, _ := manifest.ReadProject(pathing.SanitizeFilepath(filepath.Join(root, "workspace.yaml"))) - conf := config.Read() - return &MinimalWorkspace{Name: name, Provider: prov, Config: &conf, Manifest: project, HelmConfig: helmConfig}, nil -} - -func FormatValues(w io.Writer, vals string, output *output.Output) (err error) { - tmpl, err := template.New("gotpl").Parse(vals) - if err != nil { - return - } - err = tmpl.Execute(w, map[string]interface{}{"Import": *output}) - return -} - -func (m *MinimalWorkspace) BounceHelm(wait bool, skipArgs, setArgs, setJSONArgs []string) error { - path, err := filepath.Abs(pathing.SanitizeFilepath(filepath.Join("helm", m.Name))) - if err != nil { - return err - } - defaultVals, err := getValues(m.Name) - if err != nil { - return err - } - - for _, arg := range skipArgs { - if err := strvals.ParseInto(arg, defaultVals); err != nil { - return err - } - } - for _, arg := range setArgs { - if err := strvals.ParseInto(arg, defaultVals); err != nil { - return err - } - } - for _, arg := range setJSONArgs { - if err := strvals.ParseJSON(arg, defaultVals); err != nil { - return err - } - } - - namespace := m.Config.Namespace(m.Name) - if m.HelmConfig == nil { - m.HelmConfig, err = helm.GetActionConfig(namespace) - if err != nil { - return err - } - } - - utils.Warn("helm upgrade --install --skip-crds --namespace %s %s %s\n", namespace, m.Name, path) - chart, err := loader.Load(path) - if err != nil { - return err - } - // If a release does not exist, install it. - histClient := action.NewHistory(m.HelmConfig) - histClient.Max = 5 - - if _, err := histClient.Run(m.Name); errors.Is(err, driver.ErrReleaseNotFound) { - instClient := action.NewInstall(m.HelmConfig) - instClient.Namespace = namespace - instClient.ReleaseName = m.Name - instClient.SkipCRDs = true - instClient.Timeout = time.Minute * 10 - instClient.Wait = wait - - if req := chart.Metadata.Dependencies; req != nil { - if err := action.CheckDependencies(chart, req); err != nil { - return err - } - } - _, err := instClient.Run(chart, defaultVals) - return err - } - - client := action.NewUpgrade(m.HelmConfig) - client.Namespace = namespace - client.SkipCRDs = true - client.Timeout = time.Minute * 10 - client.Wait = wait - _, err = client.Run(m.Name, chart, defaultVals) - if err != nil { - current, errReleases := m.HelmConfig.Releases.Last(m.Name) - if errReleases != nil { - return errors.Wrap(err, fmt.Sprintf("can't get the last release %v", errReleases)) - } - if !current.Info.Status.IsPending() { - return err - } - deployedReleases, errDeployed := m.HelmConfig.Releases.ListDeployed() - if errDeployed != nil { - return errors.Wrap(err, fmt.Sprintf("can't get deployed releases %v", errDeployed)) - } - rollback := action.NewRollback(m.HelmConfig) - if len(deployedReleases) > 0 { - relutil.Reverse(deployedReleases, relutil.SortByRevision) - lastDeployed := deployedReleases[0].Version - rollback.Version = lastDeployed - utils.LogInfo().Printf("Rollback current: %d to last deployed %d \n", current.Version, deployedReleases[0].Version) - } - return rollback.Run(m.Name) - } - return err -} - -func getValues(name string) (map[string]interface{}, error) { - values := make(map[string]interface{}) - defaultVals := make(map[string]interface{}) - - path, err := getHelmPath(name) - if err != nil { - return nil, err - } - defaultValuesPath := pathing.SanitizeFilepath(filepath.Join(path, defaultValuesYaml)) - valuesPath := pathing.SanitizeFilepath(filepath.Join(path, valuesYaml)) - valsContent, err := os.ReadFile(valuesPath) - if err != nil { - return nil, err - } - valsContent, err = templateTerraformInputs(name, string(valsContent)) - if err != nil { - return nil, err - } - if err := yaml.Unmarshal(valsContent, &values); err != nil { - return nil, err - } - if utils.Exists(defaultValuesPath) { - defaultValsContent, err := os.ReadFile(defaultValuesPath) - if err != nil { - return nil, err - } - defaultValsContent, err = templateTerraformInputs(name, string(defaultValsContent)) - if err != nil { - return nil, err - } - if err := yaml.Unmarshal(defaultValsContent, &defaultVals); err != nil { - return nil, err - } - } - - err = mergo.Merge(&defaultVals, values, mergo.WithOverride) - if err != nil { - return nil, err - } - return defaultVals, nil -} - -func (m *MinimalWorkspace) TemplateHelm() error { - path, err := filepath.Abs(pathing.SanitizeFilepath(filepath.Join("helm", m.Name))) - if err != nil { - return err - } - namespace := m.Config.Namespace(m.Name) - manifest, err := m.getTemplate(false, false) - if err != nil { - return err - } - utils.Warn("helm template --skip-crds --namespace %s %s %s\n", namespace, m.Name, path) - fmt.Printf("%s", manifest) - return nil -} - -func (m *MinimalWorkspace) DiffHelm() error { - path, err := filepath.Abs(m.Name) - if err != nil { - return err - } - namespace := m.Config.Namespace(m.Name) - utils.Warn("helm diff upgrade --install --show-secrets --reset-values %s %s\n", m.Name, path) - releaseManifest, err := m.getRelease() - if err != nil { - return err - } - installManifest, err := m.getTemplate(true, true) - if err != nil { - return err - } - - diffFolder, err := m.constructDiffFolder() - if err != nil { - return err - } - outfile, err := os.Create(pathing.SanitizeFilepath(pathing.SanitizeFilepath(filepath.Join(diffFolder, "helm")))) - if err != nil { - return err - } - defer func(outfile *os.File) { - _ = outfile.Close() - }(outfile) - - mw := io.MultiWriter(os.Stdout, outfile) - currentSpecs := diffmanifest.Parse(string(releaseManifest), namespace, false, helm3TestHook, helm2TestSuccessHook) - newSpecs := diffmanifest.Parse(string(installManifest), namespace, false, helm3TestHook, helm2TestSuccessHook) - helmdiff.Manifests(currentSpecs, newSpecs, &helmdiff.Options{ - OutputFormat: "diff", - OutputContext: -1, - StripTrailingCR: false, - ShowSecrets: true, - SuppressedKinds: []string{}, - FindRenames: 0, - }, mw) - return nil -} - -func (m *MinimalWorkspace) DiffTerraform() error { - return m.runDiff("terraform", "plan") -} - -func (m *MinimalWorkspace) MapKubeApis() error { - namespace := m.Config.Namespace(m.Name) - utils.Warn("helm mapkubeapis %s --namespace %s\n", m.Name, namespace) - return mapKubeApis(m.Name, namespace) -} - -func (m *MinimalWorkspace) runDiff(command string, args ...string) error { - diffFolder, err := m.constructDiffFolder() - if err != nil { - return err - } - outfile, err := os.Create(pathing.SanitizeFilepath(pathing.SanitizeFilepath(filepath.Join(diffFolder, command)))) - if err != nil { - return err - } - defer func(outfile *os.File) { - _ = outfile.Close() - }(outfile) - - cmd := exec.Command(command, args...) - cmd.Stdout = &diff.TeeWriter{File: outfile} - cmd.Stderr = os.Stdout - return cmd.Run() -} - -func (m *MinimalWorkspace) constructDiffFolder() (string, error) { - root, err := git.Root() - if err != nil { - return "", err - } - - diffFolder, _ := filepath.Abs(pathing.SanitizeFilepath(filepath.Join(root, "diffs", m.Name))) - if err := os.MkdirAll(diffFolder, os.ModePerm); err != nil { - return diffFolder, err - } - - return diffFolder, err -} - -func (m *MinimalWorkspace) getRelease() ([]byte, error) { - namespace := m.Config.Namespace(m.Name) - var err error - if m.HelmConfig == nil { - m.HelmConfig, err = helm.GetActionConfig(namespace) - if err != nil { - return nil, err - } - } - client := action.NewGet(m.HelmConfig) - rel, err := client.Run(m.Name) - if err != nil { - return nil, err - } - return []byte(rel.Manifest), nil -} - -func (m *MinimalWorkspace) getTemplate(isUpgrade, validate bool) ([]byte, error) { - path, err := getHelmPath(m.Name) - if err != nil { - return nil, err - } - defaultVals, err := getValues(m.Name) - if err != nil { - return nil, err - } - - namespace := m.Config.Namespace(m.Name) - - if m.HelmConfig == nil { - m.HelmConfig, err = helm.GetActionConfig(namespace) - if err != nil { - return nil, err - } - } - - return helm.Template(m.HelmConfig, m.Name, namespace, path, isUpgrade, validate, defaultVals) -} - -func templateTerraformInputs(name, vals string) ([]byte, error) { - root, _ := utils.ProjectRoot() - out, err := output.Read(pathing.SanitizeFilepath(filepath.Join(root, name, "output.yaml"))) - if err != nil { - out = output.New() - } - - var buf bytes.Buffer - buf.Grow(5 * 1024) - - err = FormatValues(&buf, vals, out) - if err != nil { - return nil, err - } - - templatedData := buf.String() - - // This is a workaround for https://github.com/golang/go/issues/24963 - // In case terraform outputs are not there it will print '' and break helm templating - sanitized := strings.ReplaceAll(templatedData, "", "") - - if len(templatedData) != len(sanitized) { - msg := "Replaced '' with empty string to sanitize helm values:\n%s" - utils.Warn(msg, cmp.Diff(templatedData, sanitized)) - } - - return []byte(sanitized), nil -} - -func getHelmPath(name string) (string, error) { - root, found := utils.ProjectRoot() - if !found { - return "", fmt.Errorf("couldn't find the root project path") - } - return filepath.Abs(pathing.SanitizeFilepath(filepath.Join(root, name, "helm", name))) -} - -func mapKubeApis(name, namespace string) error { - p, err := homedir.Expand("~/.plural") - if err != nil { - return err - } - mapFile := filepath.Join(p, "Map.yaml") - if !utils.Exists(mapFile) { - err := utils.DownloadFile(mapFile, "https://raw.githubusercontent.com/helm/helm-mapkubeapis/main/config/Map.yaml") - if err != nil { - return err - } - } - options := common.MapOptions{ - DryRun: false, - KubeConfig: common.KubeConfig{}, - MapFile: mapFile, - ReleaseName: name, - ReleaseNamespace: namespace, - } - return release.MapReleaseWithUnSupportedAPIs(options) -} diff --git a/pkg/wkspace/notes.go b/pkg/wkspace/notes.go deleted file mode 100644 index 25c18bd27..000000000 --- a/pkg/wkspace/notes.go +++ /dev/null @@ -1 +0,0 @@ -package wkspace diff --git a/pkg/wkspace/validator.go b/pkg/wkspace/validator.go index 92cd81487..68fc5ebfc 100644 --- a/pkg/wkspace/validator.go +++ b/pkg/wkspace/validator.go @@ -4,7 +4,6 @@ import ( "fmt" "os/exec" - "github.com/pluralsh/plural-cli/pkg/api" "github.com/pluralsh/plural-cli/pkg/utils" ) @@ -33,51 +32,3 @@ func Preflight() (bool, error) { return true, nil } - -func (wk *Workspace) Validate() error { - for _, tf := range wk.Terraform { - if err := wk.providersValid(tf.Terraform.Dependencies.Providers); err != nil { - return err - } - } - - for _, chart := range wk.Charts { - if err := wk.providersValid(chart.Chart.Dependencies.Providers); err != nil { - return err - } - } - - return nil -} - -func (wk *Workspace) providersValid(providers []string) error { - if len(providers) == 0 { - return nil - } - - pass := false - for _, provider := range providers { - if wk.match(provider) { - pass = true - } - } - - if !pass { - return fmt.Errorf("provider %s is not supported for any of %v", wk.Provider.Name(), providers) - } - - return nil -} - -func (wk *Workspace) match(prov string) bool { - switch wk.Provider.Name() { - case api.ProviderGCP: - return prov == "GCP" - case api.ProviderAWS: - return prov == "AWS" - case api.ProviderAzure: - return prov == "AZURE" - default: - return false - } -} diff --git a/plural/stacks/data.yaml b/plural/stacks/data.yaml deleted file mode 100644 index 980fc56f9..000000000 --- a/plural/stacks/data.yaml +++ /dev/null @@ -1,29 +0,0 @@ -name: data -description: A full open source datastack deployable on Plural. -displayName: Data -featured: true -collections: -- provider: AWS - bundles: - - name: airbyte-aws - repo: airbyte - - name: dagster-aws - repo: dagster - - name: superset-aws - repo: superset -- provider: GCP - bundles: - - name: airbyte-gcp - repo: airbyte - - name: dagster-gcp - repo: dagster - - name: superset-gcp - repo: superset -- provider: AZURE - bundles: - - name: airbyte-azure - repo: airbyte - - name: dagster-azure - repo: dagster - - name: superset-azure - repo: superset \ No newline at end of file diff --git a/plural/stacks/devops.yaml b/plural/stacks/devops.yaml deleted file mode 100644 index 83a91a94c..000000000 --- a/plural/stacks/devops.yaml +++ /dev/null @@ -1,35 +0,0 @@ -name: devops -description: All the tools you need for your software engineering back office on Plural. -featured: true -displayName: DevOps -collections: -- provider: AWS - bundles: - - name: argo-cd-aws - repo: argo-cd - - name: aws-sentry - repo: sentry - - name: aws-grafana - repo: grafana - - name: kubecost-aws - repo: kubecost -- provider: GCP - bundles: - - name: argo-cd-gcp - repo: argo-cd - - name: gcp-sentry - repo: sentry - - name: gcp-grafana - repo: grafana - - name: kubecost-gcp - repo: kubecost -- provider: AZURE - bundles: - - name: argo-cd-azure - repo: argo-cd - - name: azure-sentry - repo: sentry - - name: azure-grafana - repo: grafana - - name: kubecost-azure - repo: kubecost \ No newline at end of file diff --git a/plural/stacks/security.yaml b/plural/stacks/security.yaml deleted file mode 100644 index 2b25e15d2..000000000 --- a/plural/stacks/security.yaml +++ /dev/null @@ -1,29 +0,0 @@ -name: security -description: End-to-end K8s security using Plural. -featured: true -displayName: Security -collections: -- provider: AWS - bundles: - - name: kubescape-aws - repo: kubescape - - name: istio-aws - repo: istio - - name: vault-aws - repo: vault -- provider: GCP - bundles: - - name: kubescape-gcp - repo: kubescape - - name: istio-gcp - repo: istio - - name: vault-gcp - repo: vault -- provider: AZURE - bundles: - - name: kubescape-azure - repo: kubescape - - name: istio-azure - repo: istio - - name: vault-azure - repo: vault \ No newline at end of file diff --git a/plural_bootstrap_procedure.drawio b/plural_bootstrap_procedure.drawio deleted file mode 100644 index fc5d6a65d..000000000 --- a/plural_bootstrap_procedure.drawio +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plural_bootstrap_procedure.drawio.png b/plural_bootstrap_procedure.drawio.png deleted file mode 100644 index a200ff536..000000000 Binary files a/plural_bootstrap_procedure.drawio.png and /dev/null differ diff --git a/wails.json b/wails.json deleted file mode 100644 index 6bbc76bac..000000000 --- a/wails.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://wails.io/schemas/config.v2.json", - "name": "plural", - "appargs": "install", - "outputfilename": "plural", - "frontend:dir": "pkg/ui/web", - "frontend:install": "yarn install", - "frontend:build": "yarn build", - "frontend:dev:watcher": "yarn dev", - "frontend:dev:serverUrl": "auto", - "author": { - "name": "Sebastian Florek", - "email": "sebastian@plural.sh" - } -}