From df0426d6023cfd9bc0498bc838c2d9ca47489528 Mon Sep 17 00:00:00 2001 From: Jake Scaltreto Date: Mon, 29 Jun 2026 16:28:07 -0400 Subject: [PATCH 1/3] chore: regenerate vendored openapi specs Refresh the QuickNode and Streams API clients from the upstream specs. The Streams spec adds several networks (including arc-mainnet), datasets, and destination types. --- api/quicknode/openapi.json | 26 ++++++++- api/quicknode/quicknode.gen.go | 96 ++++++++++++++++++-------------- api/streams/streams-openapi.json | 14 +++++ api/streams/streams.gen.go | 10 ++++ 4 files changed, 104 insertions(+), 42 deletions(-) diff --git a/api/quicknode/openapi.json b/api/quicknode/openapi.json index f0c525a..9be5a4c 100644 --- a/api/quicknode/openapi.json +++ b/api/quicknode/openapi.json @@ -1094,6 +1094,9 @@ "responses": { "200": { "description": "referrer created" + }, + "400": { + "description": "referrer is missing" } }, "requestBody": { @@ -1155,6 +1158,21 @@ } } } + }, + "400": { + "description": "method is missing", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "error": { + "type": "string" + } + } + } + } + } } }, "requestBody": { @@ -1307,6 +1325,9 @@ "responses": { "200": { "description": "success" + }, + "400": { + "description": "ip is missing" } }, "requestBody": { @@ -1387,6 +1408,9 @@ "responses": { "200": { "description": "success" + }, + "400": { + "description": "name is missing" } }, "requestBody": { @@ -3979,7 +4003,7 @@ "tags": [ "Usage" ], - "description": "If start_time or end_time are missing, current billing period is used and remaining credits for the period are returned.", + "description": "If neither start_time nor end_time are provided, current billing period is used and remaining credits for the period are returned. If one bound is omitted, the supplied bound is honored: missing start_time defaults to the current period start, and missing end_time defaults to the current time.", "operationId": "usage", "parameters": [ { diff --git a/api/quicknode/quicknode.gen.go b/api/quicknode/quicknode.gen.go index 15ac81b..7ff41e7 100644 --- a/api/quicknode/quicknode.gen.go +++ b/api/quicknode/quicknode.gen.go @@ -6416,6 +6416,9 @@ type CreateRequestFilterResponse struct { } `json:"data,omitempty"` Error *string `json:"error"` } + JSON400 *struct { + Error *string `json:"error,omitempty"` + } } // Status returns HTTPResponse.Status @@ -8901,6 +8904,15 @@ func ParseCreateRequestFilterResponse(rsp *http.Response) (*CreateRequestFilterR } response.JSON200 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest struct { + Error *string `json:"error,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + } return response, nil @@ -9866,47 +9878,49 @@ var swaggerSpec = []string{ "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", + "8gAA", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/streams/streams-openapi.json b/api/streams/streams-openapi.json index 747f69c..3ddb6e4 100644 --- a/api/streams/streams-openapi.json +++ b/api/streams/streams-openapi.json @@ -637,6 +637,7 @@ "arbitrum-mainnet", "arbitrum-sepolia", "arc-testnet", + "arc-mainnet", "ault-mainnet", "ault-testnet", "avalanche-fuji", @@ -712,6 +713,7 @@ "polygon-amoy", "polygon-mainnet", "robinhood-testnet", + "robinhood-mainnet", "sahara-testnet", "scroll-mainnet", "scroll-testnet", @@ -814,6 +816,11 @@ "type": "boolean", "example": true }, + "restream_batch_on_reorg": { + "type": "boolean", + "example": false, + "description": "Restream the entire batch on reorg: true. Disabled: false" + }, "destination": { "type": "string", "enum": [ @@ -931,6 +938,11 @@ "type": "boolean", "example": true }, + "restream_batch_on_reorg": { + "type": "boolean", + "example": false, + "description": "Restream the entire batch on reorg: true. Disabled: false" + }, "destination": { "type": "string", "enum": [ @@ -1016,6 +1028,7 @@ "arbitrum-mainnet", "arbitrum-sepolia", "arc-testnet", + "arc-mainnet", "ault-mainnet", "ault-testnet", "avalanche-fuji", @@ -1091,6 +1104,7 @@ "polygon-amoy", "polygon-mainnet", "robinhood-testnet", + "robinhood-mainnet", "sahara-testnet", "scroll-mainnet", "scroll-testnet", diff --git a/api/streams/streams.gen.go b/api/streams/streams.gen.go index 1a45268..820963f 100644 --- a/api/streams/streams.gen.go +++ b/api/streams/streams.gen.go @@ -64,6 +64,7 @@ const ( CreateStreamDtoNetworkAbstractTestnet CreateStreamDtoNetwork = "abstract-testnet" CreateStreamDtoNetworkArbitrumMainnet CreateStreamDtoNetwork = "arbitrum-mainnet" CreateStreamDtoNetworkArbitrumSepolia CreateStreamDtoNetwork = "arbitrum-sepolia" + CreateStreamDtoNetworkArcMainnet CreateStreamDtoNetwork = "arc-mainnet" CreateStreamDtoNetworkArcTestnet CreateStreamDtoNetwork = "arc-testnet" CreateStreamDtoNetworkAultMainnet CreateStreamDtoNetwork = "ault-mainnet" CreateStreamDtoNetworkAultTestnet CreateStreamDtoNetwork = "ault-testnet" @@ -139,6 +140,7 @@ const ( CreateStreamDtoNetworkPlasmaTestnet CreateStreamDtoNetwork = "plasma-testnet" CreateStreamDtoNetworkPolygonAmoy CreateStreamDtoNetwork = "polygon-amoy" CreateStreamDtoNetworkPolygonMainnet CreateStreamDtoNetwork = "polygon-mainnet" + CreateStreamDtoNetworkRobinhoodMainnet CreateStreamDtoNetwork = "robinhood-mainnet" CreateStreamDtoNetworkRobinhoodTestnet CreateStreamDtoNetwork = "robinhood-testnet" CreateStreamDtoNetworkSaharaTestnet CreateStreamDtoNetwork = "sahara-testnet" CreateStreamDtoNetworkScrollMainnet CreateStreamDtoNetwork = "scroll-mainnet" @@ -272,6 +274,7 @@ const ( TestFilterFunctionDtoNetworkAbstractTestnet TestFilterFunctionDtoNetwork = "abstract-testnet" TestFilterFunctionDtoNetworkArbitrumMainnet TestFilterFunctionDtoNetwork = "arbitrum-mainnet" TestFilterFunctionDtoNetworkArbitrumSepolia TestFilterFunctionDtoNetwork = "arbitrum-sepolia" + TestFilterFunctionDtoNetworkArcMainnet TestFilterFunctionDtoNetwork = "arc-mainnet" TestFilterFunctionDtoNetworkArcTestnet TestFilterFunctionDtoNetwork = "arc-testnet" TestFilterFunctionDtoNetworkAultMainnet TestFilterFunctionDtoNetwork = "ault-mainnet" TestFilterFunctionDtoNetworkAultTestnet TestFilterFunctionDtoNetwork = "ault-testnet" @@ -347,6 +350,7 @@ const ( TestFilterFunctionDtoNetworkPlasmaTestnet TestFilterFunctionDtoNetwork = "plasma-testnet" TestFilterFunctionDtoNetworkPolygonAmoy TestFilterFunctionDtoNetwork = "polygon-amoy" TestFilterFunctionDtoNetworkPolygonMainnet TestFilterFunctionDtoNetwork = "polygon-mainnet" + TestFilterFunctionDtoNetworkRobinhoodMainnet TestFilterFunctionDtoNetwork = "robinhood-mainnet" TestFilterFunctionDtoNetworkRobinhoodTestnet TestFilterFunctionDtoNetwork = "robinhood-testnet" TestFilterFunctionDtoNetworkSaharaTestnet TestFilterFunctionDtoNetwork = "sahara-testnet" TestFilterFunctionDtoNetworkScrollMainnet TestFilterFunctionDtoNetwork = "scroll-mainnet" @@ -450,6 +454,9 @@ type CreateStreamDto struct { NotificationEmail *string `json:"notification_email,omitempty"` Region CreateStreamDtoRegion `json:"region"` + // RestreamBatchOnReorg Restream the entire batch on reorg: true. Disabled: false + RestreamBatchOnReorg *bool `json:"restream_batch_on_reorg,omitempty"` + // StartRange Stream start at block number. If not provided, the stream will start at the latest block. StartRange *int `json:"start_range,omitempty"` Status CreateStreamDtoStatus `json:"status"` @@ -594,6 +601,9 @@ type UpdateStreamDto struct { // NotificationEmail Notify when stream is terminated NotificationEmail *string `json:"notification_email,omitempty"` + // RestreamBatchOnReorg Restream the entire batch on reorg: true. Disabled: false + RestreamBatchOnReorg *bool `json:"restream_batch_on_reorg,omitempty"` + // StartRange Stream start at block number. If not provided, the stream will start at the latest block. StartRange *int `json:"start_range,omitempty"` Status *UpdateStreamDtoStatus `json:"status,omitempty"` From 1462d4016135902960928ee71412de3c638a9c51 Mon Sep 17 00:00:00 2001 From: Jake Scaltreto Date: Mon, 29 Jun 2026 16:28:08 -0400 Subject: [PATCH 2/3] feat: derive stream enum validators from openapi spec Generate network, dataset, destination, and region validator values from CreateStreamDto in the Streams OpenAPI spec instead of hand-maintaining them. A go:generate step (wired into make vendor) writes enums.gen.go, so the validators no longer drift from the API. StatusValidator stays hand-maintained because streams can be read back with status values the create schema does not accept. --- api/streams/enums.gen.go | 185 +++++++++++++++++++++++ api/streams/gen/generate.go | 138 +++++++++++++++++ api/streams/streams.go | 1 + internal/validators/stream_validators.go | 53 ++----- 4 files changed, 335 insertions(+), 42 deletions(-) create mode 100644 api/streams/enums.gen.go create mode 100644 api/streams/gen/generate.go diff --git a/api/streams/enums.gen.go b/api/streams/enums.gen.go new file mode 100644 index 0000000..921bfce --- /dev/null +++ b/api/streams/enums.gen.go @@ -0,0 +1,185 @@ +// Copyright 2025 Circle Internet Group, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by gen/generate.go from streams-openapi.json; DO NOT EDIT. + +package streams + +// Networks are the valid stream network values accepted by the Streams API. +var Networks = []string{ + "abstract-mainnet", + "abstract-testnet", + "arbitrum-mainnet", + "arbitrum-sepolia", + "arc-testnet", + "arc-mainnet", + "ault-mainnet", + "ault-testnet", + "avalanche-fuji", + "avalanche-mainnet", + "b3-mainnet", + "b3-sepolia", + "base-mainnet", + "base-sepolia", + "bera-mainnet", + "bera-bepolia", + "bch-mainnet", + "bch-testnet", + "bitcoin-mainnet", + "bitcoin-testnet4", + "blast-mainnet", + "blast-sepolia", + "bnbchain-mainnet", + "bnbchain-testnet", + "celo-mainnet", + "cyber-mainnet", + "cyber-sepolia", + "doge-mainnet", + "ethereum-hoodi", + "ethereum-mainnet", + "ethereum-sepolia", + "fantom-mainnet", + "flare-mainnet", + "flare-testnet", + "flow-mainnet", + "flow-testnet", + "fluent-testnet", + "fraxtal-mainnet", + "gnosis-mainnet", + "gravity-alpham", + "hedera-mainnet", + "hedera-testnet", + "hemi-mainnet", + "hemi-testnet", + "hyperevm-mainnet", + "hyperevm-testnet", + "hypercore-mainnet", + "imx-mainnet", + "imx-testnet", + "injective-mainnet", + "injective-testnet", + "ink-mainnet", + "ink-sepolia", + "joc-mainnet", + "kaia-mainnet", + "kaia-testnet", + "katana-mainnet", + "lens-mainnet", + "lens-testnet", + "linea-mainnet", + "lisk-mainnet", + "ltc-mainnet", + "ltc-testnet", + "mantle-mainnet", + "mantle-sepolia", + "megaeth-mainnet", + "moca-testnet", + "mode-mainnet", + "monad-mainnet", + "monad-testnet", + "morph-hoodi", + "morph-mainnet", + "nova-mainnet", + "optimism-mainnet", + "optimism-sepolia", + "peaq-mainnet", + "plasma-testnet", + "plasma-mainnet", + "polygon-amoy", + "polygon-mainnet", + "robinhood-testnet", + "robinhood-mainnet", + "sahara-testnet", + "scroll-mainnet", + "scroll-testnet", + "sei-mainnet", + "sei-testnet", + "solana-devnet", + "solana-mainnet", + "solana-testnet", + "soneium-mainnet", + "sonic-mainnet", + "sophon-mainnet", + "stellar-mainnet", + "stellar-testnet", + "story-aeneid", + "story-mainnet", + "tempo-mainnet", + "tempo-testnet", + "tron-mainnet", + "unichain-mainnet", + "unichain-sepolia", + "vana-mainnet", + "vana-moksha", + "worldchain-mainnet", + "worldchain-sepolia", + "xai-mainnet", + "xai-sepolia", + "xlayer-mainnet", + "xlayer-testnet", + "xrp-mainnet", + "xrp-testnet", + "xrplevm-mainnet", + "xrplevm-testnet", + "zerog-galileo", + "zerog-mainnet", + "zec-mainnet", + "zec-testnet", + "zkevm-cardona", + "zkevm-mainnet", + "zksync-mainnet", + "zksync-sepolia", + "zora-mainnet", +} + +// Datasets are the valid stream dataset values accepted by the Streams API. +var Datasets = []string{ + "block", + "block_with_receipts", + "receipts", + "logs", + "transactions", + "trace_blocks", + "debug_traces", + "block_with_receipts_debug_trace", + "block_with_receipts_trace_block", + "programs_with_logs", + "ledger", + "events", + "orders", + "trades", + "book_updates", + "twap", + "writer_actions", + "events_with_orders", + "block_with_beacon", +} + +// Destinations are the valid stream destination types accepted by the Streams API. +var Destinations = []string{ + "webhook", + "s3", + "azure", + "postgres", + "kafka", +} + +// Regions are the valid stream region values accepted by the Streams API. +var Regions = []string{ + "usa_east", + "europe_central", + "asia_east", +} diff --git a/api/streams/gen/generate.go b/api/streams/gen/generate.go new file mode 100644 index 0000000..b8672da --- /dev/null +++ b/api/streams/gen/generate.go @@ -0,0 +1,138 @@ +// Copyright 2025 Circle Internet Group, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +//go:build ignore + +// Command gen extracts enum values from the Streams OpenAPI spec and writes +// them to enums.gen.go, keeping the provider's validators in sync with the +// API. It is invoked via go:generate in streams.go and runs as part of +// `make vendor`. +package main + +import ( + "bytes" + "encoding/json" + "go/format" + "log" + "os" + "text/template" +) + +const ( + specFile = "streams-openapi.json" + outFile = "enums.gen.go" + // dtoName is the schema whose properties define the create-time input + // enums. Read-only status values (terminated, completed) deliberately do + // not live here, so those validators stay hand-maintained. + dtoName = "CreateStreamDto" +) + +// enums maps each generated Go variable to the CreateStreamDto property whose +// enum it mirrors. Add an entry here to surface another spec enum. +var enums = []struct { + Var, Prop, Doc string +}{ + {"Networks", "network", "valid stream network values"}, + {"Datasets", "dataset", "valid stream dataset values"}, + {"Destinations", "destination", "valid stream destination types"}, + {"Regions", "region", "valid stream region values"}, +} + +type spec struct { + Components struct { + Schemas map[string]struct { + Properties map[string]struct { + Enum []string `json:"enum"` + } `json:"properties"` + } `json:"schemas"` + } `json:"components"` +} + +var tmpl = template.Must(template.New("enums").Parse(`// Copyright 2025 Circle Internet Group, Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// SPDX-License-Identifier: Apache-2.0 + +// Code generated by gen/generate.go from {{.Spec}}; DO NOT EDIT. + +package streams +{{range .Enums}} +// {{.Var}} are the {{.Doc}} accepted by the Streams API. +var {{.Var}} = []string{ +{{- range .Values}} + {{printf "%q" .}}, +{{- end}} +} +{{end}}`)) + +func main() { + raw, err := os.ReadFile(specFile) + if err != nil { + log.Fatalf("read spec: %v", err) + } + + var s spec + if err := json.Unmarshal(raw, &s); err != nil { + log.Fatalf("parse spec: %v", err) + } + + dto, ok := s.Components.Schemas[dtoName] + if !ok { + log.Fatalf("schema %q not found in %s", dtoName, specFile) + } + + type enumData struct { + Var, Doc string + Values []string + } + data := struct { + Spec string + Enums []enumData + }{Spec: specFile} + + for _, e := range enums { + prop, ok := dto.Properties[e.Prop] + if !ok || len(prop.Enum) == 0 { + log.Fatalf("%s.%s has no enum in %s", dtoName, e.Prop, specFile) + } + data.Enums = append(data.Enums, enumData{Var: e.Var, Doc: e.Doc, Values: prop.Enum}) + } + + var buf bytes.Buffer + if err := tmpl.Execute(&buf, data); err != nil { + log.Fatalf("render: %v", err) + } + + formatted, err := format.Source(buf.Bytes()) + if err != nil { + log.Fatalf("gofmt: %v\n%s", err, buf.String()) + } + + if err := os.WriteFile(outFile, formatted, 0o644); err != nil { + log.Fatalf("write %s: %v", outFile, err) + } +} diff --git a/api/streams/streams.go b/api/streams/streams.go index dbb1102..31cd38a 100644 --- a/api/streams/streams.go +++ b/api/streams/streams.go @@ -17,3 +17,4 @@ package streams //go:generate go tool oapi-codegen --package streams --generate models,client -o streams.gen.go streams-openapi.json +//go:generate go run gen/generate.go diff --git a/internal/validators/stream_validators.go b/internal/validators/stream_validators.go index b9682d0..23c9761 100644 --- a/internal/validators/stream_validators.go +++ b/internal/validators/stream_validators.go @@ -22,6 +22,8 @@ import ( "regexp" "github.com/hashicorp/terraform-plugin-framework/schema/validator" + + "github.com/circlefin/terraform-provider-quicknode/api/streams" ) type StringOneOfValidator struct { @@ -115,58 +117,25 @@ func (v Int64RangeValidator) ValidateInt64(ctx context.Context, req validator.In } var ( - NetworkValidator = StringOneOfValidator{ - values: []string{ - "abstract-mainnet", "abstract-testnet", "arbitrum-mainnet", "arbitrum-sepolia", "arc-testnet", - "avalanche-fuji", "avalanche-mainnet", "b3-mainnet", "b3-sepolia", - "base-mainnet", "base-sepolia", "bera-mainnet", "bera-bepolia", - "bitcoin-mainnet", "blast-mainnet", "blast-sepolia", "bnbchain-mainnet", - "bnbchain-testnet", "celo-mainnet", "cyber-mainnet", "cyber-sepolia", - "ethereum-holesky", "ethereum-hoodi", "ethereum-mainnet", "ethereum-sepolia", - "fantom-mainnet", "flow-mainnet", "flow-testnet", "gnosis-mainnet", - "gravity-alpham", "hedera-mainnet", "hedera-testnet", "hemi-mainnet", - "hemi-testnet", "hyperliquid-mainnet", "imx-mainnet", "imx-testnet", - "injective-mainnet", "injective-testnet", "ink-mainnet", "ink-sepolia", - "joc-mainnet", "kaia-mainnet", "kaia-testnet", "lens-mainnet", - "lens-testnet", "linea-mainnet", "mantle-mainnet", "mantle-sepolia", - "monad-testnet", "morph-holesky", "morph-mainnet", "nova-mainnet", - "omni-mainnet", "omni-omega", "optimism-mainnet", "optimism-sepolia", - "peaq-mainnet", "plasma-testnet", "polygon-amoy", "polygon-mainnet", - "race-mainnet", "race-testnet", "sahara-testnet", "scroll-mainnet", - "scroll-testnet", "sei-mainnet", "sei-testnet", "solana-devnet", - "solana-mainnet", "solana-testnet", "soneium-mainnet", "sonic-mainnet", - "sophon-mainnet", "sophon-testnet", "story-aeneid", "story-mainnet", - "tron-mainnet", "unichain-mainnet", "unichain-sepolia", "vana-mainnet", - "vana-moksha", "worldchain-mainnet", "worldchain-sepolia", "xai-mainnet", - "xai-sepolia", "xrp-mainnet", "xrp-testnet", "zerog-galileo", - "zkevm-cardona", "zkevm-mainnet", "zksync-mainnet", "zksync-sepolia", - "zora-mainnet", - }, - } - - DatasetValidator = StringOneOfValidator{ - values: []string{ - "block", "block_with_receipts", "receipts", "logs", "transactions", - "trace_blocks", "debug_traces", "block_with_receipts_debug_trace", - "block_with_receipts_trace_block", "programs_with_logs", "ledger", - }, - } + // Network, Dataset, Destination, and Region values are generated from the + // OpenAPI spec (see api/streams/enums.gen.go) and refreshed by `make vendor`. + NetworkValidator = StringOneOfValidator{values: streams.Networks} + + DatasetValidator = StringOneOfValidator{values: streams.Datasets} MetadataValidator = StringOneOfValidator{ values: []string{"body", "header", "none"}, } - DestinationValidator = StringOneOfValidator{ - values: []string{"webhook", "s3", "function", "postgres"}, - } + DestinationValidator = StringOneOfValidator{values: streams.Destinations} + // StatusValidator is hand-maintained: CreateStreamDto only permits active + // and paused, but a stream can be read back as terminated or completed. StatusValidator = StringOneOfValidator{ values: []string{"active", "paused", "terminated", "completed"}, } - RegionValidator = StringOneOfValidator{ - values: []string{"usa_east", "europe_central", "asia_east"}, - } + RegionValidator = StringOneOfValidator{values: streams.Regions} CompressionValidator = StringOneOfValidator{ values: []string{"none", "gzip"}, From 7c4c433874bfb10f66706835b29820d3489f2536 Mon Sep 17 00:00:00 2001 From: Jake Scaltreto Date: Mon, 29 Jun 2026 16:46:44 -0400 Subject: [PATCH 3/3] fix(deps): bump golang.org/x/{crypto,net,sys} for CVEs Resolve Trivy findings from newly-disclosed CVEs in transitive deps: - golang.org/x/crypto v0.46.0 -> v0.52.0 (x/crypto/ssh advisories) - golang.org/x/net v0.48.0 -> v0.55.0 - golang.org/x/sys v0.39.0 -> v0.45.0 trivy fs now reports 0 vulnerabilities; go build and go vet pass. --- go.mod | 14 +++++++------- go.sum | 32 ++++++++++++++++---------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/go.mod b/go.mod index de11acf..93be5e7 100644 --- a/go.mod +++ b/go.mod @@ -91,15 +91,15 @@ require ( github.com/yuin/goldmark-meta v1.1.0 // indirect github.com/zclconf/go-cty v1.15.0 // indirect go.abhg.dev/goldmark/frontmatter v0.2.0 // indirect - golang.org/x/crypto v0.46.0 // indirect + golang.org/x/crypto v0.52.0 // indirect golang.org/x/exp v0.0.0-20251209150349-8475f28825e9 // indirect golang.org/x/exp/typeparams v0.0.0-20231108232855-2478ac86f678 // indirect - golang.org/x/mod v0.31.0 // indirect - golang.org/x/net v0.48.0 // indirect - golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.39.0 // indirect - golang.org/x/text v0.32.0 // indirect - golang.org/x/tools v0.40.0 // indirect + golang.org/x/mod v0.35.0 // indirect + golang.org/x/net v0.55.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.45.0 // indirect + golang.org/x/text v0.37.0 // indirect + golang.org/x/tools v0.44.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect google.golang.org/grpc v1.79.3 // indirect diff --git a/go.sum b/go.sum index de03d29..64336e8 100644 --- a/go.sum +++ b/go.sum @@ -297,16 +297,16 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= -golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988= +golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc= golang.org/x/exp v0.0.0-20251209150349-8475f28825e9 h1:MDfG8Cvcqlt9XXrmEiD4epKn7VJHZO84hejP9Jmp0MM= golang.org/x/exp v0.0.0-20251209150349-8475f28825e9/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU= golang.org/x/exp/typeparams v0.0.0-20231108232855-2478ac86f678 h1:1P7xPZEwZMoBoz0Yze5Nx2/4pxj6nw9ZqHWXqP0iRgQ= golang.org/x/exp/typeparams v0.0.0-20231108232855-2478ac86f678/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI= -golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg= +golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= +golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -316,15 +316,15 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= -golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= +golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/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-20201020160332-67f06af15bc9/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.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -347,28 +347,28 @@ golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY= +golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= -golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg= +golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4= +golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk= golang.org/x/text v0.3.0/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.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.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc= +golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA= -golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= +golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= +golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=