diff --git a/CHANGELOG.md b/CHANGELOG.md index e572e83..ec24ac3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ CHANGELOG ========= +## 0.3.4 - 2024-07-16 +Update to Terraform Provider [0.8.4](https://github.com/MaterializeInc/terraform-provider-materialize/releases/tag/v0.8.4). + ## 0.3.3 - 2024-07-08 Update to Terraform Provider [0.8.3](https://github.com/MaterializeInc/terraform-provider-materialize/releases/tag/v0.8.3). diff --git a/examples/mocks/frontegg/mock_server.go b/examples/mocks/frontegg/mock_server.go index bd7e4c9..24e4621 100644 --- a/examples/mocks/frontegg/mock_server.go +++ b/examples/mocks/frontegg/mock_server.go @@ -219,6 +219,7 @@ func (app *App) routes() { app.Router.HandleFunc("/identity/resources/users/v2", app.handleUserRequest).Methods("POST") app.Router.HandleFunc("/identity/resources/roles/v2", app.handleRolesRequest).Methods("GET") app.Router.HandleFunc("/identity/resources/users/v3", app.handleUserV3Request).Methods("GET") + app.Router.HandleFunc("/frontegg/team/resources/members/v1", app.handleUpdateUserRoles).Methods("PUT") app.Router.HandleFunc("/frontegg/team/resources/sso/v1/configurations", app.handleSSOConfigRequest).Methods("GET", "POST") app.Router.HandleFunc("/frontegg/team/resources/sso/v1/configurations/{id}", app.handleSSOConfigAndDomainRequest).Methods("GET", "PATCH", "DELETE") app.Router.HandleFunc("/frontegg/team/resources/sso/v1/configurations/{id}/domains", app.handleDomainRequests).Methods("GET", "POST") @@ -227,6 +228,7 @@ func (app *App) routes() { app.Router.HandleFunc("/frontegg/team/resources/sso/v1/configurations/{id}/groups/{groupId}", app.handleGroupMappingRequests).Methods("GET", "PATCH", "DELETE") app.Router.HandleFunc("/frontegg/team/resources/sso/v1/configurations/{id}/roles", app.handleDefaultRolesRequests).Methods("GET", "PUT", "DELETE") app.Router.HandleFunc("/frontegg/identity/resources/groups/v1", app.handleSCIMGroupsRequest).Methods("GET", "POST") + app.Router.HandleFunc("/frontegg/identity/resources/groups/v1/{id}/", app.handleSCIMGroupsParamRequest).Methods("GET") app.Router.HandleFunc("/frontegg/identity/resources/groups/v1/{id}", app.handleSCIMGroupsParamRequest).Methods("GET", "PATCH", "DELETE") app.Router.HandleFunc("/frontegg/identity/resources/groups/v1/{id}/roles", app.handleAddRolesToGroup).Methods("POST", "DELETE") app.Router.HandleFunc("/frontegg/identity/resources/groups/v1/{id}/users", app.handleAddUsersToGroup).Methods("POST", "DELETE") @@ -318,6 +320,10 @@ func (app *App) handleUserV3Request(w http.ResponseWriter, r *http.Request) { app.getUsersV3(w, r) } +func (app *App) handleUpdateUserRoles(w http.ResponseWriter, r *http.Request) { + app.updateUserRoles(w, r) +} + func (app *App) handleRolesRequest(w http.ResponseWriter, r *http.Request) { roles := []FronteggRole{ {ID: "1", Name: "Organization Admin"}, @@ -699,6 +705,46 @@ func (app *App) getUsersV3(w http.ResponseWriter, r *http.Request) { sendJSONResponse(w, http.StatusOK, response) } +func (app *App) updateUserRoles(w http.ResponseWriter, r *http.Request) { + var req struct { + ID string `json:"id"` + Email string `json:"email"` + RoleIDs []string `json:"roleIds"` + } + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + app.Store.Mu.Lock() + defer app.Store.Mu.Unlock() + + user, exists := app.Store.Users[req.ID] + if !exists { + http.Error(w, "User not found", http.StatusNotFound) + return + } + + user.Roles = []FronteggRole{} + for _, roleID := range req.RoleIDs { + roleName := "" + switch roleID { + case "1": + roleName = "Organization Admin" + case "2": + roleName = "Organization Member" + default: + roleName = "Unknown Role" + } + user.Roles = append(user.Roles, FronteggRole{ID: roleID, Name: roleName}) + } + + app.Store.Users[req.ID] = user + + sendJSONResponse(w, http.StatusOK, user) +} + func (app *App) createSSOConfig(w http.ResponseWriter, r *http.Request) { var newConfig SSOConfig if err := json.NewDecoder(r.Body).Decode(&newConfig); err != nil { diff --git a/provider/cmd/pulumi-resource-materialize/schema.json b/provider/cmd/pulumi-resource-materialize/schema.json index 386a4d9..eeea55f 100644 --- a/provider/cmd/pulumi-resource-materialize/schema.json +++ b/provider/cmd/pulumi-resource-materialize/schema.json @@ -1932,9 +1932,17 @@ "type": "string", "willReplaceOnChanges": true }, + "keyCompatibilityLevel": { + "type": "string", + "willReplaceOnChanges": true + }, "schemaRegistryConnection": { "$ref": "#/types/materialize:index/SinkKafkaFormatAvroSchemaRegistryConnection:SinkKafkaFormatAvroSchemaRegistryConnection", "willReplaceOnChanges": true + }, + "valueCompatibilityLevel": { + "type": "string", + "willReplaceOnChanges": true } }, "type": "object", @@ -2751,28 +2759,23 @@ "properties": { "databaseName": { "type": "string", - "description": "The database of the table in Materialize.\n", - "willReplaceOnChanges": true + "description": "The database of the table in Materialize.\n" }, "name": { "type": "string", - "description": "The name for the table, used in Materialize.\n", - "willReplaceOnChanges": true + "description": "The name for the table, used in Materialize.\n" }, "schemaName": { "type": "string", - "description": "The schema of the table in Materialize.\n", - "willReplaceOnChanges": true + "description": "The schema of the table in Materialize.\n" }, "upstreamName": { "type": "string", - "description": "The name of the table in the upstream MySQL database.\n", - "willReplaceOnChanges": true + "description": "The name of the table in the upstream MySQL database.\n" }, "upstreamSchemaName": { "type": "string", - "description": "The schema of the table in the upstream MySQL database.\n", - "willReplaceOnChanges": true + "description": "The schema of the table in the upstream MySQL database.\n" } }, "type": "object", @@ -4279,6 +4282,10 @@ "type": "string", "description": "The name of a topic that Kafka sinks can use to track internal consistency metadata.\n" }, + "progressTopicReplicationFactor": { + "type": "integer", + "description": "The replication factor to use when creating the Kafka progress topic (if the Kafka topic does not already exist).\n" + }, "qualifiedSqlName": { "type": "string", "description": "The fully qualified name of the connection.\n" @@ -4368,6 +4375,11 @@ "description": "The name of a topic that Kafka sinks can use to track internal consistency metadata.\n", "willReplaceOnChanges": true }, + "progressTopicReplicationFactor": { + "type": "integer", + "description": "The replication factor to use when creating the Kafka progress topic (if the Kafka topic does not already exist).\n", + "willReplaceOnChanges": true + }, "region": { "type": "string", "description": "The region to use for the resource connection. If not set, the default region is used.\n", @@ -4451,6 +4463,11 @@ "description": "The name of a topic that Kafka sinks can use to track internal consistency metadata.\n", "willReplaceOnChanges": true }, + "progressTopicReplicationFactor": { + "type": "integer", + "description": "The replication factor to use when creating the Kafka progress topic (if the Kafka topic does not already exist).\n", + "willReplaceOnChanges": true + }, "qualifiedSqlName": { "type": "string", "description": "The fully qualified name of the connection.\n" @@ -8351,7 +8368,7 @@ } }, "materialize:index/sinkKafka:SinkKafka": { - "description": "A Kafka sink establishes a link to a Kafka cluster that you want Materialize to write data to.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as materialize from \"@pulumi/materialize\";\n\nconst exampleSinkKafka = new materialize.SinkKafka(\"exampleSinkKafka\", {\n clusterName: \"quickstart\",\n envelope: {\n upsert: true,\n },\n format: {\n avro: {\n schemaRegistryConnection: {\n databaseName: \"database\",\n name: \"csr_connection\",\n schemaName: \"schema\",\n },\n },\n },\n from: {\n name: \"table\",\n },\n kafkaConnection: {\n name: \"kafka_connection\",\n },\n schemaName: \"schema\",\n topic: \"test_avro_topic\",\n});\n```\n```python\nimport pulumi\nimport pulumi_materialize as materialize\n\nexample_sink_kafka = materialize.SinkKafka(\"exampleSinkKafka\",\n cluster_name=\"quickstart\",\n envelope=materialize.SinkKafkaEnvelopeArgs(\n upsert=True,\n ),\n format=materialize.SinkKafkaFormatArgs(\n avro=materialize.SinkKafkaFormatAvroArgs(\n schema_registry_connection=materialize.SinkKafkaFormatAvroSchemaRegistryConnectionArgs(\n database_name=\"database\",\n name=\"csr_connection\",\n schema_name=\"schema\",\n ),\n ),\n ),\n from_=materialize.SinkKafkaFromArgs(\n name=\"table\",\n ),\n kafka_connection=materialize.SinkKafkaKafkaConnectionArgs(\n name=\"kafka_connection\",\n ),\n schema_name=\"schema\",\n topic=\"test_avro_topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Materialize = Pulumi.Materialize;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleSinkKafka = new Materialize.SinkKafka(\"exampleSinkKafka\", new()\n {\n ClusterName = \"quickstart\",\n Envelope = new Materialize.Inputs.SinkKafkaEnvelopeArgs\n {\n Upsert = true,\n },\n Format = new Materialize.Inputs.SinkKafkaFormatArgs\n {\n Avro = new Materialize.Inputs.SinkKafkaFormatAvroArgs\n {\n SchemaRegistryConnection = new Materialize.Inputs.SinkKafkaFormatAvroSchemaRegistryConnectionArgs\n {\n DatabaseName = \"database\",\n Name = \"csr_connection\",\n SchemaName = \"schema\",\n },\n },\n },\n From = new Materialize.Inputs.SinkKafkaFromArgs\n {\n Name = \"table\",\n },\n KafkaConnection = new Materialize.Inputs.SinkKafkaKafkaConnectionArgs\n {\n Name = \"kafka_connection\",\n },\n SchemaName = \"schema\",\n Topic = \"test_avro_topic\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-materialize/sdk/go/materialize\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := materialize.NewSinkKafka(ctx, \"exampleSinkKafka\", \u0026materialize.SinkKafkaArgs{\n\t\t\tClusterName: pulumi.String(\"quickstart\"),\n\t\t\tEnvelope: \u0026materialize.SinkKafkaEnvelopeArgs{\n\t\t\t\tUpsert: pulumi.Bool(true),\n\t\t\t},\n\t\t\tFormat: \u0026materialize.SinkKafkaFormatArgs{\n\t\t\t\tAvro: \u0026materialize.SinkKafkaFormatAvroArgs{\n\t\t\t\t\tSchemaRegistryConnection: \u0026materialize.SinkKafkaFormatAvroSchemaRegistryConnectionArgs{\n\t\t\t\t\t\tDatabaseName: pulumi.String(\"database\"),\n\t\t\t\t\t\tName: pulumi.String(\"csr_connection\"),\n\t\t\t\t\t\tSchemaName: pulumi.String(\"schema\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tFrom: \u0026materialize.SinkKafkaFromArgs{\n\t\t\t\tName: pulumi.String(\"table\"),\n\t\t\t},\n\t\t\tKafkaConnection: \u0026materialize.SinkKafkaKafkaConnectionArgs{\n\t\t\t\tName: pulumi.String(\"kafka_connection\"),\n\t\t\t},\n\t\t\tSchemaName: pulumi.String(\"schema\"),\n\t\t\tTopic: pulumi.String(\"test_avro_topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.materialize.SinkKafka;\nimport com.pulumi.materialize.SinkKafkaArgs;\nimport com.pulumi.materialize.inputs.SinkKafkaEnvelopeArgs;\nimport com.pulumi.materialize.inputs.SinkKafkaFormatArgs;\nimport com.pulumi.materialize.inputs.SinkKafkaFormatAvroArgs;\nimport com.pulumi.materialize.inputs.SinkKafkaFormatAvroSchemaRegistryConnectionArgs;\nimport com.pulumi.materialize.inputs.SinkKafkaFromArgs;\nimport com.pulumi.materialize.inputs.SinkKafkaKafkaConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleSinkKafka = new SinkKafka(\"exampleSinkKafka\", SinkKafkaArgs.builder() \n .clusterName(\"quickstart\")\n .envelope(SinkKafkaEnvelopeArgs.builder()\n .upsert(true)\n .build())\n .format(SinkKafkaFormatArgs.builder()\n .avro(SinkKafkaFormatAvroArgs.builder()\n .schemaRegistryConnection(SinkKafkaFormatAvroSchemaRegistryConnectionArgs.builder()\n .databaseName(\"database\")\n .name(\"csr_connection\")\n .schemaName(\"schema\")\n .build())\n .build())\n .build())\n .from(SinkKafkaFromArgs.builder()\n .name(\"table\")\n .build())\n .kafkaConnection(SinkKafkaKafkaConnectionArgs.builder()\n .name(\"kafka_connection\")\n .build())\n .schemaName(\"schema\")\n .topic(\"test_avro_topic\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleSinkKafka:\n type: materialize:SinkKafka\n properties:\n clusterName: quickstart\n envelope:\n upsert: true\n format:\n avro:\n schemaRegistryConnection:\n databaseName: database\n name: csr_connection\n schemaName: schema\n from:\n name: table\n kafkaConnection:\n name: kafka_connection\n schemaName: schema\n topic: test_avro_topic\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nSinks can be imported using the sink id\n\n```sh\n $ pulumi import materialize:index/sinkKafka:SinkKafka example_sink_kafka \u003cregion\u003e:\u003csink_id\u003e\n```\n\n Sink id and information be found in the `mz_catalog.mz_sinks` table The region is the region where the database is located (e.g. aws/us-east-1) ", + "description": "A Kafka sink establishes a link to a Kafka cluster that you want Materialize to write data to.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as materialize from \"@pulumi/materialize\";\n\nconst exampleSinkKafka = new materialize.SinkKafka(\"exampleSinkKafka\", {\n clusterName: \"quickstart\",\n envelope: {\n upsert: true,\n },\n format: {\n avro: {\n schemaRegistryConnection: {\n databaseName: \"database\",\n name: \"csr_connection\",\n schemaName: \"schema\",\n },\n },\n },\n from: {\n name: \"table\",\n },\n kafkaConnection: {\n name: \"kafka_connection\",\n },\n schemaName: \"schema\",\n topic: \"test_avro_topic\",\n});\n```\n```python\nimport pulumi\nimport pulumi_materialize as materialize\n\nexample_sink_kafka = materialize.SinkKafka(\"exampleSinkKafka\",\n cluster_name=\"quickstart\",\n envelope=materialize.SinkKafkaEnvelopeArgs(\n upsert=True,\n ),\n format=materialize.SinkKafkaFormatArgs(\n avro=materialize.SinkKafkaFormatAvroArgs(\n schema_registry_connection=materialize.SinkKafkaFormatAvroSchemaRegistryConnectionArgs(\n database_name=\"database\",\n name=\"csr_connection\",\n schema_name=\"schema\",\n ),\n ),\n ),\n from_=materialize.SinkKafkaFromArgs(\n name=\"table\",\n ),\n kafka_connection=materialize.SinkKafkaKafkaConnectionArgs(\n name=\"kafka_connection\",\n ),\n schema_name=\"schema\",\n topic=\"test_avro_topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Materialize = Pulumi.Materialize;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleSinkKafka = new Materialize.SinkKafka(\"exampleSinkKafka\", new()\n {\n ClusterName = \"quickstart\",\n Envelope = new Materialize.Inputs.SinkKafkaEnvelopeArgs\n {\n Upsert = true,\n },\n Format = new Materialize.Inputs.SinkKafkaFormatArgs\n {\n Avro = new Materialize.Inputs.SinkKafkaFormatAvroArgs\n {\n SchemaRegistryConnection = new Materialize.Inputs.SinkKafkaFormatAvroSchemaRegistryConnectionArgs\n {\n DatabaseName = \"database\",\n Name = \"csr_connection\",\n SchemaName = \"schema\",\n },\n },\n },\n From = new Materialize.Inputs.SinkKafkaFromArgs\n {\n Name = \"table\",\n },\n KafkaConnection = new Materialize.Inputs.SinkKafkaKafkaConnectionArgs\n {\n Name = \"kafka_connection\",\n },\n SchemaName = \"schema\",\n Topic = \"test_avro_topic\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-materialize/sdk/go/materialize\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := materialize.NewSinkKafka(ctx, \"exampleSinkKafka\", \u0026materialize.SinkKafkaArgs{\n\t\t\tClusterName: pulumi.String(\"quickstart\"),\n\t\t\tEnvelope: \u0026materialize.SinkKafkaEnvelopeArgs{\n\t\t\t\tUpsert: pulumi.Bool(true),\n\t\t\t},\n\t\t\tFormat: \u0026materialize.SinkKafkaFormatArgs{\n\t\t\t\tAvro: \u0026materialize.SinkKafkaFormatAvroArgs{\n\t\t\t\t\tSchemaRegistryConnection: \u0026materialize.SinkKafkaFormatAvroSchemaRegistryConnectionArgs{\n\t\t\t\t\t\tDatabaseName: pulumi.String(\"database\"),\n\t\t\t\t\t\tName: pulumi.String(\"csr_connection\"),\n\t\t\t\t\t\tSchemaName: pulumi.String(\"schema\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tFrom: \u0026materialize.SinkKafkaFromArgs{\n\t\t\t\tName: pulumi.String(\"table\"),\n\t\t\t},\n\t\t\tKafkaConnection: \u0026materialize.SinkKafkaKafkaConnectionArgs{\n\t\t\t\tName: pulumi.String(\"kafka_connection\"),\n\t\t\t},\n\t\t\tSchemaName: pulumi.String(\"schema\"),\n\t\t\tTopic: pulumi.String(\"test_avro_topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.materialize.SinkKafka;\nimport com.pulumi.materialize.SinkKafkaArgs;\nimport com.pulumi.materialize.inputs.SinkKafkaEnvelopeArgs;\nimport com.pulumi.materialize.inputs.SinkKafkaFormatArgs;\nimport com.pulumi.materialize.inputs.SinkKafkaFormatAvroArgs;\nimport com.pulumi.materialize.inputs.SinkKafkaFormatAvroSchemaRegistryConnectionArgs;\nimport com.pulumi.materialize.inputs.SinkKafkaFromArgs;\nimport com.pulumi.materialize.inputs.SinkKafkaKafkaConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleSinkKafka = new SinkKafka(\"exampleSinkKafka\", SinkKafkaArgs.builder() \n .clusterName(\"quickstart\")\n .envelope(SinkKafkaEnvelopeArgs.builder()\n .upsert(true)\n .build())\n .format(SinkKafkaFormatArgs.builder()\n .avro(SinkKafkaFormatAvroArgs.builder()\n .schemaRegistryConnection(SinkKafkaFormatAvroSchemaRegistryConnectionArgs.builder()\n .databaseName(\"database\")\n .name(\"csr_connection\")\n .schemaName(\"schema\")\n .build())\n .build())\n .build())\n .from(SinkKafkaFromArgs.builder()\n .name(\"table\")\n .build())\n .kafkaConnection(SinkKafkaKafkaConnectionArgs.builder()\n .name(\"kafka_connection\")\n .build())\n .schemaName(\"schema\")\n .topic(\"test_avro_topic\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleSinkKafka:\n type: materialize:SinkKafka\n properties:\n clusterName: quickstart\n envelope:\n upsert: true\n # Optional topic configuration parameters:\n # // topic_replication_factor = 1\n # // topic_partition_count = 6\n # // topic_config = {\n # // \"cleanup.policy\" = \"compact\"\n # // \"retention.ms\" = \"86400000\"\n # // }\n format:\n avro:\n schemaRegistryConnection:\n databaseName: database\n name: csr_connection\n schemaName: schema\n from:\n name: table\n kafkaConnection:\n name: kafka_connection\n schemaName: schema\n topic: test_avro_topic\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nSinks can be imported using the sink id\n\n```sh\n $ pulumi import materialize:index/sinkKafka:SinkKafka example_sink_kafka \u003cregion\u003e:\u003csink_id\u003e\n```\n\n Sink id and information be found in the `mz_catalog.mz_sinks` table The region is the region where the database is located (e.g. aws/us-east-1) ", "properties": { "clusterName": { "type": "string", @@ -8431,6 +8448,21 @@ "topic": { "type": "string", "description": "The Kafka topic you want to subscribe to.\n" + }, + "topicConfig": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Any topic-level configs to use when creating the Kafka topic (if the Kafka topic does not already exist).\n" + }, + "topicPartitionCount": { + "type": "integer", + "description": "The partition count to use when creating the Kafka topic (if the Kafka topic does not already exist).\n" + }, + "topicReplicationFactor": { + "type": "integer", + "description": "The replication factor to use when creating the Kafka topic (if the Kafka topic does not already exist).\n" } }, "required": [ @@ -8528,6 +8560,24 @@ "type": "string", "description": "The Kafka topic you want to subscribe to.\n", "willReplaceOnChanges": true + }, + "topicConfig": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Any topic-level configs to use when creating the Kafka topic (if the Kafka topic does not already exist).\n", + "willReplaceOnChanges": true + }, + "topicPartitionCount": { + "type": "integer", + "description": "The partition count to use when creating the Kafka topic (if the Kafka topic does not already exist).\n", + "willReplaceOnChanges": true + }, + "topicReplicationFactor": { + "type": "integer", + "description": "The replication factor to use when creating the Kafka topic (if the Kafka topic does not already exist).\n", + "willReplaceOnChanges": true } }, "requiredInputs": [ @@ -8629,6 +8679,24 @@ "type": "string", "description": "The Kafka topic you want to subscribe to.\n", "willReplaceOnChanges": true + }, + "topicConfig": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Any topic-level configs to use when creating the Kafka topic (if the Kafka topic does not already exist).\n", + "willReplaceOnChanges": true + }, + "topicPartitionCount": { + "type": "integer", + "description": "The partition count to use when creating the Kafka topic (if the Kafka topic does not already exist).\n", + "willReplaceOnChanges": true + }, + "topicReplicationFactor": { + "type": "integer", + "description": "The replication factor to use when creating the Kafka topic (if the Kafka topic does not already exist).\n", + "willReplaceOnChanges": true } }, "type": "object" @@ -9408,8 +9476,7 @@ "items": { "$ref": "#/types/materialize:index/SourceMysqlTable:SourceMysqlTable" }, - "description": "Specify the tables to be included in the source. If not specified, all tables are included.\n", - "willReplaceOnChanges": true + "description": "Specify the tables to be included in the source. If not specified, all tables are included.\n" }, "textColumns": { "type": "array", @@ -9487,8 +9554,7 @@ "items": { "$ref": "#/types/materialize:index/SourceMysqlTable:SourceMysqlTable" }, - "description": "Specify the tables to be included in the source. If not specified, all tables are included.\n", - "willReplaceOnChanges": true + "description": "Specify the tables to be included in the source. If not specified, all tables are included.\n" }, "textColumns": { "type": "array", @@ -10349,8 +10415,7 @@ "items": { "type": "string" }, - "description": "The roles to assign to the user. Allowed values are 'Member' and 'Admin'.\n", - "willReplaceOnChanges": true + "description": "The roles to assign to the user. Allowed values are 'Member' and 'Admin'.\n" }, "sendActivationEmail": { "type": "boolean", @@ -10381,8 +10446,7 @@ "items": { "type": "string" }, - "description": "The roles to assign to the user. Allowed values are 'Member' and 'Admin'.\n", - "willReplaceOnChanges": true + "description": "The roles to assign to the user. Allowed values are 'Member' and 'Admin'.\n" }, "sendActivationEmail": { "type": "boolean", diff --git a/provider/go.mod b/provider/go.mod index f64ad77..55c285b 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -5,7 +5,7 @@ go 1.20 replace github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20240520223432-0c0bf0d65f10 require ( - github.com/MaterializeInc/terraform-provider-materialize v0.8.3 + github.com/MaterializeInc/terraform-provider-materialize v0.8.4 github.com/pulumi/pulumi-terraform-bridge/v3 v3.59.0 github.com/pulumi/pulumi/sdk/v3 v3.81.0 ) @@ -136,7 +136,7 @@ require ( github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hashicorp/hcl/v2 v2.20.1 // indirect + github.com/hashicorp/hcl/v2 v2.21.0 // indirect github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 // indirect github.com/hashicorp/logutils v1.0.0 // indirect github.com/hashicorp/terraform-plugin-go v0.23.0 // indirect @@ -238,17 +238,17 @@ require ( go.uber.org/atomic v1.9.0 // indirect gocloud.dev v0.27.0 // indirect gocloud.dev/secrets/hashivault v0.27.0 // indirect - golang.org/x/crypto v0.23.0 // indirect + golang.org/x/crypto v0.25.0 // indirect golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.23.0 // indirect + golang.org/x/net v0.25.0 // indirect golang.org/x/oauth2 v0.17.0 // indirect - golang.org/x/sync v0.6.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/term v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect - golang.org/x/tools v0.15.0 // indirect + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.162.0 // indirect google.golang.org/appengine v1.6.8 // indirect diff --git a/provider/go.sum b/provider/go.sum index aa3e3b2..a5f9a1c 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1257,8 +1257,8 @@ github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYr github.com/Masterminds/sprig/v3 v3.2.1/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/MaterializeInc/terraform-provider-materialize v0.8.3 h1:GwozIdqFBDjA6BTO9dkAjyWcc1SNWBcvXc4NFln7LmQ= -github.com/MaterializeInc/terraform-provider-materialize v0.8.3/go.mod h1:LUEZUKVCP+Zy0V0uSD7SIRLDdW92HvExCu2BHo1xnQk= +github.com/MaterializeInc/terraform-provider-materialize v0.8.4 h1:KbEH7ZBke9TF13m7UFkL2k2aj7ugom7OLCiYWMNdTGU= +github.com/MaterializeInc/terraform-provider-materialize v0.8.4/go.mod h1:sjI7LGjeQGeK7s+nIUfeShsLhU2dwAHim9Cn6o1/9kg= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= @@ -2225,8 +2225,8 @@ 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.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= -github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= +github.com/hashicorp/hcl/v2 v2.21.0 h1:lve4q/o/2rqwYOgUg3y3V2YPyD1/zkCLGjIV74Jit14= +github.com/hashicorp/hcl/v2 v2.21.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 h1:T1Q6ag9tCwun16AW+XK3tAql24P4uTGUMIn1/92WsQQ= github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE= github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= @@ -2254,7 +2254,7 @@ github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwU github.com/hashicorp/terraform-plugin-sdk v1.7.0 h1:B//oq0ZORG+EkVrIJy0uPGSonvmXqxSzXe8+GhknoW0= github.com/hashicorp/terraform-plugin-sdk v1.7.0/go.mod h1:OjgQmey5VxnPej/buEhe+YqKm0KNvV3QqU4hkqHqPCY= github.com/hashicorp/terraform-plugin-test v1.2.0/go.mod h1:QIJHYz8j+xJtdtLrFTlzQVC0ocr3rf/OjIpgZLK56Hs= -github.com/hashicorp/terraform-plugin-testing v1.8.0 h1:wdYIgwDk4iO933gC4S8KbKdnMQShu6BXuZQPScmHvpk= +github.com/hashicorp/terraform-plugin-testing v1.9.0 h1:xOsQRqqlHKXpFq6etTxih3ubdK3HVDtfE1IY7Rpd37o= github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI= github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM= github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= @@ -3050,8 +3050,8 @@ github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgr github.com/zclconf/go-cty v1.14.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zclconf/go-cty v1.14.4 h1:uXXczd9QDGsgu0i/QFR/hzI5NYCHLf6NQw/atrbnhq8= github.com/zclconf/go-cty v1.14.4/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= +github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo= github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= @@ -3225,8 +3225,8 @@ golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72 golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +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= @@ -3398,8 +3398,8 @@ golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= 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= @@ -3462,8 +3462,8 @@ 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.4.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 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -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-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= @@ -3634,8 +3634,8 @@ 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.16.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.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.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/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -3658,8 +3658,8 @@ 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.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +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= @@ -3681,8 +3681,8 @@ 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.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.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= @@ -3798,8 +3798,8 @@ 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.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= -golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= -golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=