encoding/protobuf: move to new-style definitions
Change-Id: Ic5ce67f8e8258eab16d48b96cec63e424f24007f
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/5943
Reviewed-by: Marcel van Lohuizen <mpvl@google.com>
diff --git a/cmd/cue/cmd/testdata/script/def_proto.txt b/cmd/cue/cmd/testdata/script/def_proto.txt
index bbb8ec0..684aded 100644
--- a/cmd/cue/cmd/testdata/script/def_proto.txt
+++ b/cmd/cue/cmd/testdata/script/def_proto.txt
@@ -8,14 +8,14 @@
import "time"
// Attributes defines attributes.
-Attributes :: {
+#Attributes: {
// A map of attribute name to its value.
attributes?: {
- [string]: AttributeValue
+ [string]: #AttributeValue
} @protobuf(1,type=map<string,AttributeValue>)
// Specifies one attribute value with different type.
- AttributeValue :: {
+ #AttributeValue: {
// The attribute value.
close({}) | close({
stringValue: string @protobuf(2,name=string_value)
@@ -31,12 +31,12 @@
timestampValue: time.Time @protobuf(7,type=google.protobuf.Timestamp,name=timestamp_value)
}) | close({
// Used for values of type STRING_MAP
- stringMapValue: StringMap @protobuf(9,name=string_map_value)
+ stringMapValue: #StringMap @protobuf(9,name=string_map_value)
})
}
// Defines a string map.
- StringMap :: {
+ #StringMap: {
// Holds a set of name/value pairs.
entries?: {
[string]: string
diff --git a/cmd/cue/cmd/testdata/script/import_proto.txt b/cmd/cue/cmd/testdata/script/import_proto.txt
index 7ea596f..6ab00a8 100644
--- a/cmd/cue/cmd/testdata/script/import_proto.txt
+++ b/cmd/cue/cmd/testdata/script/import_proto.txt
@@ -21,7 +21,7 @@
-- root/cue.mod/gen/googleapis.com/acme/test/test/test_proto_gen.cue --
package test_test
-AnotherTest: {
+#AnotherTest: {
test?: int32 @protobuf(1)
}
-- root/mixer/v1/attributes.proto --
@@ -170,14 +170,14 @@
)
// Attributes defines attributes.
-Attributes :: {
+#Attributes: {
// A map of attribute name to its value.
attributes?: {
- [string]: AttributeValue
+ [string]: #AttributeValue
} @protobuf(1,type=map<string,AttributeValue>)
// Specifies one attribute value with different type.
- AttributeValue :: {
+ #AttributeValue: {
// The attribute value.
close({}) | close({
stringValue: string @protobuf(2,name=string_value)
@@ -193,16 +193,16 @@
timestampValue: time.Time @protobuf(7,type=google.protobuf.Timestamp,name=timestamp_value)
}) | close({
// Used for values of type STRING_MAP
- stringMapValue: StringMap @protobuf(9,name=string_map_value)
+ stringMapValue: #StringMap @protobuf(9,name=string_map_value)
}) | close({
- testValue: test.Test @protobuf(10,type=acme.test.Test,name=test_value)
+ testValue: test.#Test @protobuf(10,type=acme.test.Test,name=test_value)
}) | close({
- testValue: test_test.AnotherTest @protobuf(11,type=acme.test.test.AnotherTest,name=test_value)
+ testValue: test_test.#AnotherTest @protobuf(11,type=acme.test.test.AnotherTest,name=test_value)
})
}
// Defines a string map.
- StringMap :: {
+ #StringMap: {
// Holds a set of name/value pairs.
entries?: {
[string]: string
@@ -216,14 +216,14 @@
import "acme.com/api/mixer/v1"
// Defines the per-service client configuration.
-ServiceConfig :: {
- disableCheckCalls?: bool @protobuf(1,name=disable_check_calls)
- disableReportCalls?: bool @protobuf(2,name=disable_report_calls)
- mixerAttributes?: v1.Attributes @protobuf(3,type=Attributes,name=mixer_attributes)
+#ServiceConfig: {
+ disableCheckCalls?: bool @protobuf(1,name=disable_check_calls)
+ disableReportCalls?: bool @protobuf(2,name=disable_report_calls)
+ mixerAttributes?: v1.#Attributes @protobuf(3,type=Attributes,name=mixer_attributes)
}
-- expect-test_proto_gen.cue --
package test
-Test :: {
+#Test: {
test?: int32 @protobuf(1)
}
diff --git a/encoding/protobuf/examples_test.go b/encoding/protobuf/examples_test.go
index 43cf758..a0a7f5d 100644
--- a/encoding/protobuf/examples_test.go
+++ b/encoding/protobuf/examples_test.go
@@ -46,7 +46,7 @@
// package basic
//
// // This is my type.
- // MyType :: {
+ // #MyType: {
// stringValue?: string @protobuf(1,name=string_value) // just any 'ole string
//
// // A method must start with a capital letter.
diff --git a/encoding/protobuf/parse.go b/encoding/protobuf/parse.go
index 7274b00..833b731 100644
--- a/encoding/protobuf/parse.go
+++ b/encoding/protobuf/parse.go
@@ -195,9 +195,10 @@
}
type mapping struct {
- ref string
- alias string // alias for the type, if exists.
- pkg *protoConverter
+ ref string
+ cueName string
+ alias string // alias for the type, if exists.
+ pkg *protoConverter
}
func (p *protoConverter) importPath() string {
@@ -223,12 +224,12 @@
return p.tfile.Pos(pos.Offset, 0)
}
-func (p *protoConverter) addRef(pos scanner.Position, name string) {
+func (p *protoConverter) addRef(pos scanner.Position, name, cuename string) {
top := p.scope[len(p.scope)-1]
if _, ok := top[name]; ok {
failf(pos, "entity %q already defined", name)
}
- top[name] = mapping{ref: name}
+ top[name] = mapping{ref: name, cueName: cuename}
}
func (p *protoConverter) addNames(elems []proto.Visitee) {
@@ -260,7 +261,7 @@
}
sym := strings.Join(append(p.path, name), ".")
p.symbols[sym] = true
- p.addRef(pos, name)
+ p.addRef(pos, name, "#"+name)
}
}
@@ -268,7 +269,7 @@
p.scope = p.scope[:len(p.scope)-1]
}
-func (p *protoConverter) uniqueTop(name string) string {
+func (p *protoConverter) uniqueTop(name string, asIs bool) string {
a := strings.SplitN(name, ".", 2)
for i := len(p.scope) - 1; i > 0; i-- {
if _, ok := p.scope[i][a[0]]; ok {
@@ -283,19 +284,32 @@
})
p.aliases[first] = alias
}
- if len(a) > 1 {
- alias += "." + a[1]
+ a[0] = alias
+ if len(a) > 1 && !asIs {
+ a[1] = "#" + a[1]
}
- return alias
+ return strings.Join(a, ".")
}
}
- return name
+
+ if e, ok := p.scope[0][name]; ok {
+ return e.cueName
+ }
+ // TODO: do something more principled.
+ switch name {
+ case "time.Time", "time.Duration":
+ return name
+ }
+ if !asIs {
+ a[len(a)-1] = "#" + a[len(a)-1]
+ }
+ return strings.Join(a, ".")
}
func (p *protoConverter) toExpr(pos scanner.Position, name string) (expr ast.Expr) {
expr, err := parser.ParseExpr("", name, parser.ParseComments)
if err != nil {
- panic(err)
+ panic(fmt.Sprintf("error parsing name %q: %v", name, err))
}
ast.SetPos(expr, p.toCUEPos(pos))
return expr
@@ -303,14 +317,14 @@
func (p *protoConverter) resolve(pos scanner.Position, name string, options []*proto.Option) string {
if s, ok := protoToCUE(name, options); ok {
- return p.uniqueTop(s)
+ return p.uniqueTop(s, true)
}
if strings.HasPrefix(name, ".") {
return p.resolveTopScope(pos, name[1:], options)
}
for i := len(p.scope) - 1; i > 0; i-- {
if m, ok := p.scope[i][name]; ok {
- return m.ref
+ return m.cueName
}
}
return p.resolveTopScope(pos, name, options)
@@ -324,12 +338,14 @@
i = len(name)
}
if m, ok := p.scope[0][name[:i]]; ok {
+ isPkg := false
if m.pkg != nil {
p.imported[m.pkg.importPath()] = true
// TODO: do something more principled.
+ isPkg = true
}
cueName := name[i:]
- return p.uniqueTop(m.ref + cueName)
+ return p.uniqueTop(m.ref+cueName, !isPkg || m.ref == m.cueName)
}
}
failf(pos, "name %q not found", name)
@@ -385,7 +401,7 @@
if imp.importPath() == p.importPath() {
pkg = nil
}
- p.scope[0][ref] = mapping{prefix + k, "", pkg}
+ p.scope[0][ref] = mapping{prefix + k, prefix + toCue(k), "", pkg}
}
}
if len(pkgNamespace) == 0 {
@@ -400,6 +416,15 @@
return nil
}
+// TODO: this doesn't work. Do something more principled.
+func toCue(name string) string {
+ a := strings.Split(name, ".")
+ for i, s := range a {
+ a[i] = "#" + s
+ }
+ return strings.Join(a, ".")
+}
+
func (p *protoConverter) stringLit(pos scanner.Position, s string) *ast.BasicLit {
return &ast.BasicLit{
ValuePos: p.toCUEPos(pos),
@@ -412,13 +437,14 @@
}
func (p *protoConverter) ref(pos scanner.Position) *ast.Ident {
- return &ast.Ident{NamePos: p.toCUEPos(pos), Name: p.path[len(p.path)-1]}
+ name := "#" + p.path[len(p.path)-1]
+ return &ast.Ident{NamePos: p.toCUEPos(pos), Name: name}
}
func (p *protoConverter) subref(pos scanner.Position, name string) *ast.Ident {
return &ast.Ident{
NamePos: p.toCUEPos(pos),
- Name: name,
+ Name: "#" + name,
}
}
@@ -485,7 +511,7 @@
if v.Comment == nil {
ref.NamePos = newSection
}
- f := &ast.Field{Label: ref, Token: token.ISA, Value: s}
+ f := &ast.Field{Label: ref, Value: s}
addComments(f, 1, v.Comment, nil)
p.addDecl(f)
@@ -607,14 +633,14 @@
}
// Top-level enum entry.
- enum := &ast.Field{Label: name, Token: token.ISA}
+ enum := &ast.Field{Label: name}
addComments(enum, 1, x.Comment, nil)
// Top-level enum values entry.
valueName := ast.NewIdent(name.Name + "_value")
valueName.NamePos = newSection
valueMap := &ast.StructLit{}
- d := &ast.Field{Label: valueName, Token: token.ISA, Value: valueMap}
+ d := &ast.Field{Label: valueName, Value: valueMap}
// addComments(valueMap, 1, x.Comment, nil)
if strings.Contains(name.Name, "google") {
@@ -727,7 +753,7 @@
// body of @protobuf tag: sequence[,type][,name=<name>][,...]
o.tags += fmt.Sprint(x.Sequence)
- if x.Type != typ {
+ if x.Type != strings.TrimLeft(typ, "#") {
o.tags += ",type=" + x.Type
}
if x.Name != name.Name {
diff --git a/encoding/protobuf/testdata/attributes.proto.out.cue b/encoding/protobuf/testdata/attributes.proto.out.cue
index d0f6618..1c3ff05 100644
--- a/encoding/protobuf/testdata/attributes.proto.out.cue
+++ b/encoding/protobuf/testdata/attributes.proto.out.cue
@@ -19,7 +19,7 @@
"time"
)
-StructWrap :: {
+#StructWrap: {
struct?: {} @protobuf(1,type=google.protobuf.Struct)
any?: _ @protobuf(2,type=google.protobuf.Value)
listVal?: [...] @protobuf(3,type=google.protobuf.ListValue)
@@ -45,14 +45,14 @@
// target.service: example
// ```
//
-Attributes :: {
+#Attributes: {
// A map of attribute name to its value.
attributes?: {
- [string]: AttributeValue
+ [string]: #AttributeValue
} @protobuf(1,type=map<string,AttributeValue>)
// Specifies one attribute value with different type.
- AttributeValue :: {
+ #AttributeValue: {
// The attribute value.
close({}) | close({
// Used for values of type STRING, DNS_NAME, EMAIL_ADDRESS, and URI
@@ -77,16 +77,16 @@
durationValue: time.Duration @protobuf(8,type=google.protobuf.Duration,name=duration_value)
}) | close({
// Used for values of type STRING_MAP
- stringMapValue: StringMap @protobuf(9,name=string_map_value)
+ stringMapValue: #StringMap @protobuf(9,name=string_map_value)
}) | close({
- testValue: test.Test @protobuf(10,type=acme.test.Test,name=test_value)
+ testValue: test.#Test @protobuf(10,type=acme.test.Test,name=test_value)
}) | close({
- testValue: test_test.AnotherTest @protobuf(11,type=acme.test.test.AnotherTest,name=test_value)
+ testValue: test_test.#AnotherTest @protobuf(11,type=acme.test.test.AnotherTest,name=test_value)
})
}
// Defines a string map.
- StringMap :: {
+ #StringMap: {
// Holds a set of name/value pairs.
entries?: {
[string]: string
@@ -101,7 +101,7 @@
// dictionary instead. The message-level dictionary is carried by the
// `words` field of this message, the deployment-wide dictionary is determined via
// configuration.
-CompressedAttributes :: {
+#CompressedAttributes: {
// The message-level dictionary.
words?: [...string] @protobuf(1)
@@ -142,7 +142,7 @@
// Holds attributes of type STRING_MAP
stringMaps?: {
- [string]: StringMap
+ [string]: #StringMap
} @protobuf(9,type=map<sint32,StringMap>,string_maps,"(gogoproto.nullable)=false")
}
let _time_ = time
@@ -150,7 +150,7 @@
// A map of string to string. The keys and values in this map are dictionary
// indices (see the [Attributes][istio.mixer.v1.CompressedAttributes] message for an explanation)
-StringMap :: {
+#StringMap: {
// Holds a set of name/value pairs.
entries?: {
[string]: int32
diff --git a/encoding/protobuf/testdata/client_config.proto.out.cue b/encoding/protobuf/testdata/client_config.proto.out.cue
index 8e12f61..5bf1119 100644
--- a/encoding/protobuf/testdata/client_config.proto.out.cue
+++ b/encoding/protobuf/testdata/client_config.proto.out.cue
@@ -25,17 +25,17 @@
)
// Specifies the behavior when the client is unable to connect to Mixer.
-NetworkFailPolicy :: {
+#NetworkFailPolicy: {
// Example of single-value enum.
- FailPolicy ::
+ #FailPolicy:
// If network connection fails, request is allowed and delivered to the
// service.
"FAIL_OPEN"
- FailPolicy_value :: FAIL_OPEN: 0
+ #FailPolicy_value: FAIL_OPEN: 0
// Specifies the behavior when the client is unable to connect to Mixer.
- policy?: FailPolicy @protobuf(1)
+ policy?: #FailPolicy @protobuf(1)
// Max retries on transport error.
maxRetry?: uint32 @protobuf(2,name=max_retry)
@@ -49,7 +49,7 @@
}
// Defines the per-service client configuration.
-ServiceConfig :: {
+#ServiceConfig: {
// If true, do not call Mixer Check.
disableCheckCalls?: bool @protobuf(1,name=disable_check_calls)
@@ -60,19 +60,19 @@
// typically includes the "destination.service" attribute.
// In case of a per-route override, per-route attributes take precedence
// over the attributes supplied in the client configuration.
- mixerAttributes?: v1.Attributes @protobuf(3,type=Attributes,name=mixer_attributes)
+ mixerAttributes?: v1.#Attributes @protobuf(3,type=Attributes,name=mixer_attributes)
// HTTP API specifications to generate API attributes.
- httpApiSpec?: [...HTTPAPISpec] @protobuf(4,name=http_api_spec)
+ httpApiSpec?: [...#HTTPAPISpec] @protobuf(4,name=http_api_spec)
// Quota specifications to generate quota requirements.
- quotaSpec?: [...QuotaSpec] @protobuf(5,name=quota_spec)
+ quotaSpec?: [...#QuotaSpec] @protobuf(5,name=quota_spec)
// Specifies the behavior when the client is unable to connect to Mixer.
// This is the service-level policy. It overrides
// [mesh-level
// policy][istio.mixer.v1.config.client.TransportConfig.network_fail_policy].
- networkFailPolicy?: NetworkFailPolicy @protobuf(7,name=network_fail_policy)
+ networkFailPolicy?: #NetworkFailPolicy @protobuf(7,name=network_fail_policy)
// Default attributes to forward to upstream. This typically
// includes the "source.ip" and "source.uid" attributes.
@@ -86,11 +86,11 @@
// 3. forwarded attributes from the source filter config (if any);
// 4. forwarded attributes from the source route config (if any);
// 5. derived attributes from the request metadata.
- forwardAttributes?: v1.Attributes @protobuf(8,type=Attributes,name=forward_attributes)
+ forwardAttributes?: v1.#Attributes @protobuf(8,type=Attributes,name=forward_attributes)
}
// Defines the transport config on how to call Mixer.
-TransportConfig :: {
+#TransportConfig: {
// The flag to disable check cache.
disableCheckCache?: bool @protobuf(1,name=disable_check_cache)
@@ -102,7 +102,7 @@
// Specifies the behavior when the client is unable to connect to Mixer.
// This is the mesh level policy. The default value for policy is FAIL_OPEN.
- networkFailPolicy?: NetworkFailPolicy @protobuf(4,name=network_fail_policy)
+ networkFailPolicy?: #NetworkFailPolicy @protobuf(4,name=network_fail_policy)
// Specify refresh interval to write Mixer client statistics to Envoy share
// memory. If not specified, the interval is 10 seconds.
@@ -131,19 +131,19 @@
// Default attributes to forward to Mixer upstream. This typically
// includes the "source.ip" and "source.uid" attributes. These
// attributes are consumed by the proxy in front of mixer.
- attributesForMixerProxy?: v1.Attributes @protobuf(8,type=Attributes,name=attributes_for_mixer_proxy)
+ attributesForMixerProxy?: v1.#Attributes @protobuf(8,type=Attributes,name=attributes_for_mixer_proxy)
}
// Defines the client config for HTTP.
-HttpClientConfig :: {
+#HttpClientConfig: {
// The transport config.
- transport?: TransportConfig @protobuf(1)
+ transport?: #TransportConfig @protobuf(1)
// Map of control configuration indexed by destination.service. This
// is used to support per-service configuration for cases where a
// mixerclient serves multiple services.
serviceConfigs?: {
- [string]: ServiceConfig
+ [string]: #ServiceConfig
} @protobuf(2,type=map<string,ServiceConfig>,service_configs)
// Default destination service name if none was specified in the
@@ -153,22 +153,22 @@
// Default attributes to send to Mixer in both Check and
// Report. This typically includes "destination.ip" and
// "destination.uid" attributes.
- mixerAttributes?: v1.Attributes @protobuf(4,type=Attributes,name=mixer_attributes)
+ mixerAttributes?: v1.#Attributes @protobuf(4,type=Attributes,name=mixer_attributes)
// Default attributes to forward to upstream. This typically
// includes the "source.ip" and "source.uid" attributes.
- forwardAttributes?: v1.Attributes @protobuf(5,type=Attributes,name=forward_attributes)
+ forwardAttributes?: v1.#Attributes @protobuf(5,type=Attributes,name=forward_attributes)
}
// Defines the client config for TCP.
-TcpClientConfig :: {
+#TcpClientConfig: {
// The transport config.
- transport?: TransportConfig @protobuf(1)
+ transport?: #TransportConfig @protobuf(1)
// Default attributes to send to Mixer in both Check and
// Report. This typically includes "destination.ip" and
// "destination.uid" attributes.
- mixerAttributes?: v1.Attributes @protobuf(2,type=Attributes,name=mixer_attributes)
+ mixerAttributes?: v1.#Attributes @protobuf(2,type=Attributes,name=mixer_attributes)
// If set to true, disables Mixer check calls.
disableCheckCalls?: bool @protobuf(3,name=disable_check_calls)
@@ -178,7 +178,7 @@
// Quota specifications to generate quota requirements.
// It applies on the new TCP connections.
- connectionQuotaSpec?: QuotaSpec @protobuf(5,name=connection_quota_spec)
+ connectionQuotaSpec?: #QuotaSpec @protobuf(5,name=connection_quota_spec)
// Specify report interval to send periodical reports for long TCP
// connections. If not specified, the interval is 10 seconds. This interval
diff --git a/encoding/protobuf/testdata/gateway.proto.out.cue b/encoding/protobuf/testdata/gateway.proto.out.cue
index b5e3056..d0d5330 100644
--- a/encoding/protobuf/testdata/gateway.proto.out.cue
+++ b/encoding/protobuf/testdata/gateway.proto.out.cue
@@ -203,9 +203,9 @@
//
package v1alpha3
-Gateway :: {
+#Gateway: {
// REQUIRED: A list of server specifications.
- servers?: [...Server] @protobuf(1)
+ servers?: [...#Server] @protobuf(1)
// REQUIRED: One or more labels that indicate a specific set of pods/VMs
// on which this gateway configuration should be applied. The scope of
@@ -279,10 +279,10 @@
// serverCertificate: /etc/certs/server.pem
// privateKey: /etc/certs/privatekey.pem
// ```
-Server :: {
+#Server: {
// REQUIRED: The Port on which the proxy should listen for incoming
// connections.
- port?: Port @protobuf(1)
+ port?: #Port @protobuf(1)
port?: >10 & <100
// $hide_from_docs
@@ -318,13 +318,13 @@
// `DestinationRule`, and `ServiceEntry` configurations for details.
hosts?: [...string] @protobuf(2)
- TLSOptions :: {
+ #TLSOptions: {
// If set to true, the load balancer will send a 301 redirect for all
// http connections, asking the clients to use HTTPS.
httpsRedirect?: bool @protobuf(1,name=https_redirect)
// TLS modes enforced by the proxy
- TLSmode ::
+ #TLSmode:
// The SNI string presented by the client will be used as the match
// criterion in a VirtualService TLS route to determine the
// destination service from the service registry.
@@ -349,7 +349,7 @@
// source and the destination are using Istio mTLS to secure traffic.
"AUTO_PASSTHROUGH"
- TLSmode_value :: {
+ #TLSmode_value: {
PASSTHROUGH: 0
SIMPLE: 1
MUTUAL: 2
@@ -359,7 +359,7 @@
// Optional: Indicates whether connections to this port should be
// secured using TLS. The value of this field determines how TLS is
// enforced.
- mode?: TLSmode @protobuf(2)
+ mode?: #TLSmode @protobuf(2)
// Extra comment.
@@ -399,13 +399,13 @@
subjectAltNames?: [...string] @protobuf(6,name=subject_alt_names)
// TLS protocol versions.
- TLSProtocol :: "TLS_AUTO" | // Automatically choose the optimal TLS version.
+ #TLSProtocol: "TLS_AUTO" | // Automatically choose the optimal TLS version.
"TLSV1_0" | // TLS version 1.0
"TLSV1_1" | // TLS version 1.1
"TLSV1_2" | // TLS version 1.2
"TLSV1_3" // TLS version 1.3
- TLSProtocol_value :: {
+ #TLSProtocol_value: {
TLS_AUTO: 0
TLSV1_0: 1
TLSV1_1: 2
@@ -414,10 +414,10 @@
}
// Optional: Minimum TLS protocol version.
- minProtocolVersion?: TLSProtocol @protobuf(7,name=min_protocol_version)
+ minProtocolVersion?: #TLSProtocol @protobuf(7,name=min_protocol_version)
// Optional: Maximum TLS protocol version.
- maxProtocolVersion?: TLSProtocol @protobuf(8,name=max_protocol_version)
+ maxProtocolVersion?: #TLSProtocol @protobuf(8,name=max_protocol_version)
// Optional: If specified, only support the specified cipher list.
// Otherwise default to the default cipher list supported by Envoy.
@@ -427,7 +427,7 @@
// Set of TLS related options that govern the server's behavior. Use
// these options to control if all http requests should be redirected to
// https, and the TLS modes to use.
- tls?: TLSOptions @protobuf(3)
+ tls?: #TLSOptions @protobuf(3)
// The loopback IP endpoint or Unix domain socket to which traffic should
// be forwarded to by default. Format should be `127.0.0.1:PORT` or
@@ -436,7 +436,7 @@
}
// Port describes the properties of a specific port of a service.
-Port :: {
+#Port: {
// REQUIRED: A valid non-negative integer port number.
number?: uint32 @protobuf(1)
diff --git a/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor_proto_gen.cue
index 9d0254f..ae8f090 100644
--- a/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor_proto_gen.cue
@@ -74,12 +74,12 @@
// The protocol compiler can output a FileDescriptorSet containing the .proto
// files it parses.
-FileDescriptorSet :: {
- file?: [...FileDescriptorProto] @protobuf(1)
+#FileDescriptorSet: {
+ file?: [...#FileDescriptorProto] @protobuf(1)
}
// Describes a complete .proto file.
-FileDescriptorProto :: {
+#FileDescriptorProto: {
name?: string @protobuf(1) // file name, relative to root of source tree
package?: string @protobuf(2) // e.g. "foo", "foo.bar", etc.
@@ -94,17 +94,17 @@
weakDependency?: [...int32] @protobuf(11,name=weak_dependency)
// All top-level definitions in this file.
- messageType?: [...DescriptorProto] @protobuf(4,name=message_type)
- enumType?: [...EnumDescriptorProto] @protobuf(5,name=enum_type)
- service?: [...ServiceDescriptorProto] @protobuf(6)
- extension?: [...FieldDescriptorProto] @protobuf(7)
- options?: FileOptions @protobuf(8)
+ messageType?: [...#DescriptorProto] @protobuf(4,name=message_type)
+ enumType?: [...#EnumDescriptorProto] @protobuf(5,name=enum_type)
+ service?: [...#ServiceDescriptorProto] @protobuf(6)
+ extension?: [...#FieldDescriptorProto] @protobuf(7)
+ options?: #FileOptions @protobuf(8)
// This field contains optional information about the original source code.
// You may safely remove this entire field without harming runtime
// functionality of the descriptors -- the information is needed only by
// development tools.
- sourceCodeInfo?: SourceCodeInfo @protobuf(9,name=source_code_info)
+ sourceCodeInfo?: #SourceCodeInfo @protobuf(9,name=source_code_info)
// The syntax of the proto file.
// The supported values are "proto2" and "proto3".
@@ -112,44 +112,44 @@
}
// Describes a message type.
-DescriptorProto :: {
+#DescriptorProto: {
name?: string @protobuf(1)
- field?: [...FieldDescriptorProto] @protobuf(2)
- extension?: [...FieldDescriptorProto] @protobuf(6)
- nestedType?: [...DescriptorProto] @protobuf(3,name=nested_type)
- enumType?: [...EnumDescriptorProto] @protobuf(4,name=enum_type)
+ field?: [...#FieldDescriptorProto] @protobuf(2)
+ extension?: [...#FieldDescriptorProto] @protobuf(6)
+ nestedType?: [...#DescriptorProto] @protobuf(3,name=nested_type)
+ enumType?: [...#EnumDescriptorProto] @protobuf(4,name=enum_type)
- ExtensionRange :: {
- start?: int32 @protobuf(1) // Inclusive.
- end?: int32 @protobuf(2) // Exclusive.
- options?: ExtensionRangeOptions @protobuf(3)
+ #ExtensionRange: {
+ start?: int32 @protobuf(1) // Inclusive.
+ end?: int32 @protobuf(2) // Exclusive.
+ options?: #ExtensionRangeOptions @protobuf(3)
}
- extensionRange?: [...ExtensionRange] @protobuf(5,name=extension_range)
- oneofDecl?: [...OneofDescriptorProto] @protobuf(8,name=oneof_decl)
- options?: MessageOptions @protobuf(7)
+ extensionRange?: [...#ExtensionRange] @protobuf(5,name=extension_range)
+ oneofDecl?: [...#OneofDescriptorProto] @protobuf(8,name=oneof_decl)
+ options?: #MessageOptions @protobuf(7)
// Range of reserved tag numbers. Reserved tag numbers may not be used by
// fields or extension ranges in the same message. Reserved ranges may
// not overlap.
- ReservedRange :: {
+ #ReservedRange: {
start?: int32 @protobuf(1) // Inclusive.
end?: int32 @protobuf(2) // Exclusive.
}
- reservedRange?: [...ReservedRange] @protobuf(9,name=reserved_range)
+ reservedRange?: [...#ReservedRange] @protobuf(9,name=reserved_range)
// Reserved field names, which may not be used by fields in the same message.
// A given name may only be reserved once.
reservedName?: [...string] @protobuf(10,name=reserved_name)
}
-ExtensionRangeOptions :: {
+#ExtensionRangeOptions: {
// The parser stores options it doesn't recognize here. See above.
- uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
+ uninterpretedOption?: [...#UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
// Describes a field within a message.
-FieldDescriptorProto :: {
- Type ::
+#FieldDescriptorProto: {
+ #Type:
"TYPE_DOUBLE" |
"TYPE_FLOAT" |
@@ -185,7 +185,7 @@
// Order is weird for historical reasons.
"TYPE_SINT64" // Uses ZigZag encoding.
- Type_value :: {
+ #Type_value: {
"TYPE_DOUBLE": 1
"TYPE_FLOAT": 2
"TYPE_INT64": 3
@@ -205,24 +205,24 @@
"TYPE_SINT32": 17
"TYPE_SINT64": 18
}
- Label ::
+ #Label:
// 0 is reserved for errors
"LABEL_OPTIONAL" |
"LABEL_REQUIRED" |
"LABEL_REPEATED"
- Label_value :: {
+ #Label_value: {
"LABEL_OPTIONAL": 1
"LABEL_REQUIRED": 2
"LABEL_REPEATED": 3
}
name?: string @protobuf(1)
number?: int32 @protobuf(3)
- label?: Label @protobuf(4)
+ label?: #Label @protobuf(4)
// If type_name is set, this need not be set. If both this and type_name
// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
- type?: Type @protobuf(5)
+ type?: #Type @protobuf(5)
// For message and enum types, this is the name of the type. If the name
// starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
@@ -250,21 +250,21 @@
// user has set a "json_name" option on this field, that option's value
// will be used. Otherwise, it's deduced from the field's name by converting
// it to camelCase.
- jsonName?: string @protobuf(10,name=json_name)
- options?: FieldOptions @protobuf(8)
+ jsonName?: string @protobuf(10,name=json_name)
+ options?: #FieldOptions @protobuf(8)
}
// Describes a oneof.
-OneofDescriptorProto :: {
- name?: string @protobuf(1)
- options?: OneofOptions @protobuf(2)
+#OneofDescriptorProto: {
+ name?: string @protobuf(1)
+ options?: #OneofOptions @protobuf(2)
}
// Describes an enum type.
-EnumDescriptorProto :: {
+#EnumDescriptorProto: {
name?: string @protobuf(1)
- value?: [...EnumValueDescriptorProto] @protobuf(2)
- options?: EnumOptions @protobuf(3)
+ value?: [...#EnumValueDescriptorProto] @protobuf(2)
+ options?: #EnumOptions @protobuf(3)
// Range of reserved numeric values. Reserved values may not be used by
// entries in the same enum. Reserved ranges may not overlap.
@@ -272,7 +272,7 @@
// Note that this is distinct from DescriptorProto.ReservedRange in that it
// is inclusive such that it can appropriately represent the entire int32
// domain.
- EnumReservedRange :: {
+ #EnumReservedRange: {
start?: int32 @protobuf(1) // Inclusive.
end?: int32 @protobuf(2) // Inclusive.
}
@@ -280,7 +280,7 @@
// Range of reserved numeric values. Reserved numeric values may not be used
// by enum values in the same enum declaration. Reserved ranges may not
// overlap.
- reservedRange?: [...EnumReservedRange] @protobuf(4,name=reserved_range)
+ reservedRange?: [...#EnumReservedRange] @protobuf(4,name=reserved_range)
// Reserved enum value names, which may not be reused. A given name may only
// be reserved once.
@@ -288,28 +288,28 @@
}
// Describes a value within an enum.
-EnumValueDescriptorProto :: {
- name?: string @protobuf(1)
- number?: int32 @protobuf(2)
- options?: EnumValueOptions @protobuf(3)
+#EnumValueDescriptorProto: {
+ name?: string @protobuf(1)
+ number?: int32 @protobuf(2)
+ options?: #EnumValueOptions @protobuf(3)
}
// Describes a service.
-ServiceDescriptorProto :: {
+#ServiceDescriptorProto: {
name?: string @protobuf(1)
- method?: [...MethodDescriptorProto] @protobuf(2)
- options?: ServiceOptions @protobuf(3)
+ method?: [...#MethodDescriptorProto] @protobuf(2)
+ options?: #ServiceOptions @protobuf(3)
}
// Describes a method of a service.
-MethodDescriptorProto :: {
+#MethodDescriptorProto: {
name?: string @protobuf(1)
// Input and output type names. These are resolved in the same way as
// FieldDescriptorProto.type_name, but must refer to a message type.
- inputType?: string @protobuf(2,name=input_type)
- outputType?: string @protobuf(3,name=output_type)
- options?: MethodOptions @protobuf(4)
+ inputType?: string @protobuf(2,name=input_type)
+ outputType?: string @protobuf(3,name=output_type)
+ options?: #MethodOptions @protobuf(4)
// Identifies if client streams multiple client messages
clientStreaming?: bool @protobuf(5,name=client_streaming,"default=false")
@@ -318,7 +318,7 @@
serverStreaming?: bool @protobuf(6,name=server_streaming,"default=false")
}
-FileOptions :: {
+#FileOptions: {
// Sets the Java package where classes generated from this .proto will be
// placed. By default, the proto package is used, but this is often
// inappropriate because proto packages do not normally start with backwards
@@ -352,18 +352,18 @@
javaStringCheckUtf8?: bool @protobuf(27,name=java_string_check_utf8,"default=false")
// Generated classes can be optimized for speed or code size.
- OptimizeMode :: "SPEED" | // Generate complete code for parsing, serialization,
+ #OptimizeMode: "SPEED" | // Generate complete code for parsing, serialization,
// etc.
"CODE_SIZE" |
"LITE_RUNTIME" // Generate code using MessageLite and the lite runtime.
- OptimizeMode_value :: {
+ #OptimizeMode_value: {
"SPEED": 1
"CODE_SIZE": 2 // Use ReflectionOps to implement these methods.
"LITE_RUNTIME": 3
}
- optimizeFor?: OptimizeMode @protobuf(9,name=optimize_for,"default=SPEED")
+ optimizeFor?: #OptimizeMode @protobuf(9,name=optimize_for,"default=SPEED")
// Sets the Go package where structs generated from this .proto will be
// placed. If omitted, the Go package will be derived from the following:
@@ -431,10 +431,10 @@
// The parser stores options it doesn't recognize here.
// See the documentation for the "Options" section above.
- uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
+ uninterpretedOption?: [...#UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
-MessageOptions :: {
+#MessageOptions: {
// Set true to use the old proto1 MessageSet wire format for extensions.
// This is provided for backwards-compatibility with the MessageSet wire
// format. You should not use this for any other reason: It's less
@@ -490,22 +490,22 @@
mapEntry?: bool @protobuf(7,name=map_entry)
// The parser stores options it doesn't recognize here. See above.
- uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
+ uninterpretedOption?: [...#UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
-FieldOptions :: {
+#FieldOptions: {
// The ctype option instructs the C++ code generator to use a different
// representation of the field than it normally would. See the specific
// options below. This option is not yet implemented in the open source
// release -- sorry, we'll try to include it in a future version!
- ctype?: CType @protobuf(1,"default=STRING")
- CType ::
+ ctype?: #CType @protobuf(1,"default=STRING")
+ #CType:
// Default mode.
"STRING" |
"CORD" |
"STRING_PIECE"
- CType_value :: {
+ #CType_value: {
"STRING": 0
"CORD": 1
"STRING_PIECE": 2
@@ -529,8 +529,8 @@
//
// This option is an enum to permit additional types to be added, e.g.
// goog.math.Integer.
- jstype?: JSType @protobuf(6,"default=JS_NORMAL")
- JSType ::
+ jstype?: #JSType @protobuf(6,"default=JS_NORMAL")
+ #JSType:
// Use the default type.
"JS_NORMAL" |
@@ -540,7 +540,7 @@
// Use JavaScript numbers.
"JS_NUMBER"
- JSType_value :: {
+ #JSType_value: {
"JS_NORMAL": 0
"JS_STRING": 1
"JS_NUMBER": 2
@@ -586,15 +586,15 @@
weak?: bool @protobuf(10,"default=false")
// The parser stores options it doesn't recognize here. See above.
- uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
+ uninterpretedOption?: [...#UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
-OneofOptions :: {
+#OneofOptions: {
// The parser stores options it doesn't recognize here. See above.
- uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
+ uninterpretedOption?: [...#UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
-EnumOptions :: {
+#EnumOptions: {
// Set this option to true to allow mapping different tag names to the same
// value.
allowAlias?: bool @protobuf(2,name=allow_alias)
@@ -606,10 +606,10 @@
deprecated?: bool @protobuf(3,"default=false")
// The parser stores options it doesn't recognize here. See above.
- uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
+ uninterpretedOption?: [...#UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
-EnumValueOptions :: {
+#EnumValueOptions: {
// Is this enum value deprecated?
// Depending on the target platform, this can emit Deprecated annotations
// for the enum value, or it will be completely ignored; in the very least,
@@ -617,10 +617,10 @@
deprecated?: bool @protobuf(1,"default=false")
// The parser stores options it doesn't recognize here. See above.
- uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
+ uninterpretedOption?: [...#UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
-ServiceOptions :: {
+#ServiceOptions: {
// Note: Field numbers 1 through 32 are reserved for Google's internal RPC
// framework. We apologize for hoarding these numbers to ourselves, but
@@ -634,10 +634,10 @@
deprecated?: bool @protobuf(33,"default=false")
// The parser stores options it doesn't recognize here. See above.
- uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
+ uninterpretedOption?: [...#UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
-MethodOptions :: {
+#MethodOptions: {
// Note: Field numbers 1 through 32 are reserved for Google's internal RPC
// framework. We apologize for hoarding these numbers to ourselves, but
@@ -653,19 +653,19 @@
// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
// or neither? HTTP based RPC implementation may choose GET verb for safe
// methods, and PUT verb for idempotent methods instead of the default POST.
- IdempotencyLevel :: "IDEMPOTENCY_UNKNOWN" |
+ #IdempotencyLevel: "IDEMPOTENCY_UNKNOWN" |
"NO_SIDE_EFFECTS" | // implies idempotent
"IDEMPOTENT" // idempotent, but may have side effects
- IdempotencyLevel_value :: {
+ #IdempotencyLevel_value: {
"IDEMPOTENCY_UNKNOWN": 0
"NO_SIDE_EFFECTS": 1
"IDEMPOTENT": 2
}
- idempotencyLevel?: IdempotencyLevel @protobuf(34,name=idempotency_level,"default=IDEMPOTENCY_UNKNOWN")
+ idempotencyLevel?: #IdempotencyLevel @protobuf(34,name=idempotency_level,"default=IDEMPOTENCY_UNKNOWN")
// The parser stores options it doesn't recognize here. See above.
- uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
+ uninterpretedOption?: [...#UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
// A message representing a option the parser does not recognize. This only
@@ -674,17 +674,17 @@
// options protos in descriptor objects (e.g. returned by Descriptor::options(),
// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
// in them.
-UninterpretedOption :: {
+#UninterpretedOption: {
// The name of the uninterpreted option. Each string represents a segment in
// a dot-separated name. is_extension is true iff a segment represents an
// extension (denoted with parentheses in options specs in .proto files).
// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
// "foo.(bar.baz).qux".
- NamePart :: {
+ #NamePart: {
namePart?: string @protobuf(1,name=name_part)
isExtension?: bool @protobuf(2,name=is_extension)
}
- name?: [...NamePart] @protobuf(2)
+ name?: [...#NamePart] @protobuf(2)
// The value of the uninterpreted option, in whatever type the tokenizer
// identified it as during parsing. Exactly one of these should be set.
@@ -698,7 +698,7 @@
// Encapsulates information about the original source file from which a
// FileDescriptorProto was generated.
-SourceCodeInfo :: {
+#SourceCodeInfo: {
// A Location identifies a piece of source code in a .proto file which
// corresponds to a particular definition. This information is intended
// to be useful to IDEs, code indexers, documentation generators, and similar
@@ -742,9 +742,9 @@
// - Code which tries to interpret locations should probably be designed to
// ignore those that it doesn't understand, as more types of locations could
// be recorded in the future.
- location?: [...Location] @protobuf(1)
+ location?: [...#Location] @protobuf(1)
- Location :: {
+ #Location: {
// Identifies which part of the FileDescriptorProto was defined at this
// location.
//
@@ -833,12 +833,12 @@
// Describes the relationship between generated code and its original source
// file. A GeneratedCodeInfo message is associated with only one generated
// source file, but may contain references to different source .proto files.
-GeneratedCodeInfo :: {
+#GeneratedCodeInfo: {
// An Annotation connects some span of text in generated code to an element
// of its generating .proto file.
- annotation?: [...Annotation] @protobuf(1)
+ annotation?: [...#Annotation] @protobuf(1)
- Annotation :: {
+ #Annotation: {
// Identifies the element in the original source .proto file. This field
// is formatted the same as SourceCodeInfo.Location.path.
path?: [...int32] @protobuf(1,packed)
diff --git a/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/google.golang.org/genproto/googleapis/rpc/status/status_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/google.golang.org/genproto/googleapis/rpc/status/status_proto_gen.cue
index 2a660eb..2bfc322 100644
--- a/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/google.golang.org/genproto/googleapis/rpc/status/status_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/google.golang.org/genproto/googleapis/rpc/status/status_proto_gen.cue
@@ -66,7 +66,7 @@
//
// - Logging. If some API errors are stored in logs, the message `Status` could
// be used directly after any stripping needed for security/privacy reasons.
-Status :: {
+#Status: {
// The status code, which should be an enum value of
// [google.rpc.Code][google.rpc.Code].
code?: int32 @protobuf(1)
diff --git a/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/googleapis.com/acme/test/test/test_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/googleapis.com/acme/test/test/test_proto_gen.cue
index 531a95c..7946c97 100644
--- a/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/googleapis.com/acme/test/test/test_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/googleapis.com/acme/test/test/test_proto_gen.cue
@@ -1,5 +1,5 @@
package test_test
-AnotherTest :: {
+#AnotherTest: {
test?: int32 @protobuf(1)
}
diff --git a/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/googleapis.com/acme/test/test_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/googleapis.com/acme/test/test_proto_gen.cue
index 834c4dd..10b74a6 100644
--- a/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/googleapis.com/acme/test/test_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/cue.mod/gen/googleapis.com/acme/test/test_proto_gen.cue
@@ -1,5 +1,5 @@
package test
-Test :: {
+#Test: {
test?: int32 @protobuf(1)
}
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/attributes_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/attributes_proto_gen.cue
index d0f6618..1c3ff05 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/attributes_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/attributes_proto_gen.cue
@@ -19,7 +19,7 @@
"time"
)
-StructWrap :: {
+#StructWrap: {
struct?: {} @protobuf(1,type=google.protobuf.Struct)
any?: _ @protobuf(2,type=google.protobuf.Value)
listVal?: [...] @protobuf(3,type=google.protobuf.ListValue)
@@ -45,14 +45,14 @@
// target.service: example
// ```
//
-Attributes :: {
+#Attributes: {
// A map of attribute name to its value.
attributes?: {
- [string]: AttributeValue
+ [string]: #AttributeValue
} @protobuf(1,type=map<string,AttributeValue>)
// Specifies one attribute value with different type.
- AttributeValue :: {
+ #AttributeValue: {
// The attribute value.
close({}) | close({
// Used for values of type STRING, DNS_NAME, EMAIL_ADDRESS, and URI
@@ -77,16 +77,16 @@
durationValue: time.Duration @protobuf(8,type=google.protobuf.Duration,name=duration_value)
}) | close({
// Used for values of type STRING_MAP
- stringMapValue: StringMap @protobuf(9,name=string_map_value)
+ stringMapValue: #StringMap @protobuf(9,name=string_map_value)
}) | close({
- testValue: test.Test @protobuf(10,type=acme.test.Test,name=test_value)
+ testValue: test.#Test @protobuf(10,type=acme.test.Test,name=test_value)
}) | close({
- testValue: test_test.AnotherTest @protobuf(11,type=acme.test.test.AnotherTest,name=test_value)
+ testValue: test_test.#AnotherTest @protobuf(11,type=acme.test.test.AnotherTest,name=test_value)
})
}
// Defines a string map.
- StringMap :: {
+ #StringMap: {
// Holds a set of name/value pairs.
entries?: {
[string]: string
@@ -101,7 +101,7 @@
// dictionary instead. The message-level dictionary is carried by the
// `words` field of this message, the deployment-wide dictionary is determined via
// configuration.
-CompressedAttributes :: {
+#CompressedAttributes: {
// The message-level dictionary.
words?: [...string] @protobuf(1)
@@ -142,7 +142,7 @@
// Holds attributes of type STRING_MAP
stringMaps?: {
- [string]: StringMap
+ [string]: #StringMap
} @protobuf(9,type=map<sint32,StringMap>,string_maps,"(gogoproto.nullable)=false")
}
let _time_ = time
@@ -150,7 +150,7 @@
// A map of string to string. The keys and values in this map are dictionary
// indices (see the [Attributes][istio.mixer.v1.CompressedAttributes] message for an explanation)
-StringMap :: {
+#StringMap: {
// Holds a set of name/value pairs.
entries?: {
[string]: int32
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/api_spec_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/api_spec_proto_gen.cue
index b3aadd3..33ff9d5 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/api_spec_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/api_spec_proto_gen.cue
@@ -70,14 +70,14 @@
// api_keys:
// - query: api-key
// ```
-HTTPAPISpec :: {
+#HTTPAPISpec: {
// List of attributes that are generated when *any* of the HTTP
// patterns match. This list typically includes the "api.service"
// and "api.version" attributes.
- attributes?: v1.Attributes @protobuf(1,type=Attributes)
+ attributes?: v1.#Attributes @protobuf(1,type=Attributes)
// List of HTTP patterns to match.
- patterns?: [...HTTPAPISpecPattern] @protobuf(2)
+ patterns?: [...#HTTPAPISpecPattern] @protobuf(2)
// List of APIKey that describes how to extract an API-KEY from an
// HTTP request. The first API-Key match found in the list is used,
@@ -88,7 +88,7 @@
//
// `query: key, `query: api_key`, and then `header: x-api-key`
//
- apiKeys?: [...APIKey] @protobuf(3,name=api_keys)
+ apiKeys?: [...#APIKey] @protobuf(3,name=api_keys)
}
// HTTPAPISpecPattern defines a single pattern to match against
@@ -104,11 +104,11 @@
// httpMethod: GET
// uriTemplate: /foo/bar
// ```
-HTTPAPISpecPattern :: {
+#HTTPAPISpecPattern: {
// List of attributes that are generated if the HTTP request matches
// the specified http_method and uri_template. This typically
// includes the "api.operation" attribute.
- attributes?: v1.Attributes @protobuf(1,type=Attributes)
+ attributes?: v1.#Attributes @protobuf(1,type=Attributes)
// HTTP request method to match against as defined by
// [rfc7231](https://tools.ietf.org/html/rfc7231#page-21). For
@@ -143,7 +143,7 @@
//
// See [API Keys](https://swagger.io/docs/specification/authentication/api-keys)
// for a general overview of API keys as defined by OpenAPI.
-APIKey :: {
+#APIKey: {
close({}) | close({
// API Key is sent as a query parameter. `query` represents the
// query string parameter name.
@@ -188,7 +188,7 @@
// - name: foo
// namespace: bar
// ```
-HTTPAPISpecReference :: {
+#HTTPAPISpecReference: {
// REQUIRED. The short name of the HTTPAPISpec. This is the resource
// name defined by the metadata name field.
name?: string @protobuf(1)
@@ -216,12 +216,12 @@
// - name: petstore
// namespace: default
// ```
-HTTPAPISpecBinding :: {
+#HTTPAPISpecBinding: {
// REQUIRED. One or more services to map the listed HTTPAPISpec onto.
- services?: [...IstioService] @protobuf(1)
+ services?: [...#IstioService] @protobuf(1)
// REQUIRED. One or more HTTPAPISpec references that should be mapped to
// the specified service(s). The aggregate collection of match
// conditions defined in the HTTPAPISpecs should not overlap.
- apiSpecs?: [...HTTPAPISpecReference] @protobuf(2,name=api_specs)
+ apiSpecs?: [...#HTTPAPISpecReference] @protobuf(2,name=api_specs)
}
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/client_config_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/client_config_proto_gen.cue
index e50b8e0..f032d06 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/client_config_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/client_config_proto_gen.cue
@@ -25,17 +25,17 @@
)
// Specifies the behavior when the client is unable to connect to Mixer.
-NetworkFailPolicy :: {
+#NetworkFailPolicy: {
// Example of single-value enum.
- FailPolicy ::
+ #FailPolicy:
// If network connection fails, request is allowed and delivered to the
// service.
"FAIL_OPEN"
- FailPolicy_value :: "FAIL_OPEN": 0
+ #FailPolicy_value: "FAIL_OPEN": 0
// Specifies the behavior when the client is unable to connect to Mixer.
- policy?: FailPolicy @protobuf(1)
+ policy?: #FailPolicy @protobuf(1)
// Max retries on transport error.
maxRetry?: uint32 @protobuf(2,name=max_retry)
@@ -49,7 +49,7 @@
}
// Defines the per-service client configuration.
-ServiceConfig :: {
+#ServiceConfig: {
// If true, do not call Mixer Check.
disableCheckCalls?: bool @protobuf(1,name=disable_check_calls)
@@ -60,19 +60,19 @@
// typically includes the "destination.service" attribute.
// In case of a per-route override, per-route attributes take precedence
// over the attributes supplied in the client configuration.
- mixerAttributes?: v1.Attributes @protobuf(3,type=Attributes,name=mixer_attributes)
+ mixerAttributes?: v1.#Attributes @protobuf(3,type=Attributes,name=mixer_attributes)
// HTTP API specifications to generate API attributes.
- httpApiSpec?: [...HTTPAPISpec] @protobuf(4,name=http_api_spec)
+ httpApiSpec?: [...#HTTPAPISpec] @protobuf(4,name=http_api_spec)
// Quota specifications to generate quota requirements.
- quotaSpec?: [...QuotaSpec] @protobuf(5,name=quota_spec)
+ quotaSpec?: [...#QuotaSpec] @protobuf(5,name=quota_spec)
// Specifies the behavior when the client is unable to connect to Mixer.
// This is the service-level policy. It overrides
// [mesh-level
// policy][istio.mixer.v1.config.client.TransportConfig.network_fail_policy].
- networkFailPolicy?: NetworkFailPolicy @protobuf(7,name=network_fail_policy)
+ networkFailPolicy?: #NetworkFailPolicy @protobuf(7,name=network_fail_policy)
// Default attributes to forward to upstream. This typically
// includes the "source.ip" and "source.uid" attributes.
@@ -86,11 +86,11 @@
// 3. forwarded attributes from the source filter config (if any);
// 4. forwarded attributes from the source route config (if any);
// 5. derived attributes from the request metadata.
- forwardAttributes?: v1.Attributes @protobuf(8,type=Attributes,name=forward_attributes)
+ forwardAttributes?: v1.#Attributes @protobuf(8,type=Attributes,name=forward_attributes)
}
// Defines the transport config on how to call Mixer.
-TransportConfig :: {
+#TransportConfig: {
// The flag to disable check cache.
disableCheckCache?: bool @protobuf(1,name=disable_check_cache)
@@ -102,7 +102,7 @@
// Specifies the behavior when the client is unable to connect to Mixer.
// This is the mesh level policy. The default value for policy is FAIL_OPEN.
- networkFailPolicy?: NetworkFailPolicy @protobuf(4,name=network_fail_policy)
+ networkFailPolicy?: #NetworkFailPolicy @protobuf(4,name=network_fail_policy)
// Specify refresh interval to write Mixer client statistics to Envoy share
// memory. If not specified, the interval is 10 seconds.
@@ -131,19 +131,19 @@
// Default attributes to forward to Mixer upstream. This typically
// includes the "source.ip" and "source.uid" attributes. These
// attributes are consumed by the proxy in front of mixer.
- attributesForMixerProxy?: v1.Attributes @protobuf(8,type=Attributes,name=attributes_for_mixer_proxy)
+ attributesForMixerProxy?: v1.#Attributes @protobuf(8,type=Attributes,name=attributes_for_mixer_proxy)
}
// Defines the client config for HTTP.
-HttpClientConfig :: {
+#HttpClientConfig: {
// The transport config.
- transport?: TransportConfig @protobuf(1)
+ transport?: #TransportConfig @protobuf(1)
// Map of control configuration indexed by destination.service. This
// is used to support per-service configuration for cases where a
// mixerclient serves multiple services.
serviceConfigs?: {
- [string]: ServiceConfig
+ [string]: #ServiceConfig
} @protobuf(2,type=map<string,ServiceConfig>,service_configs)
// Default destination service name if none was specified in the
@@ -153,22 +153,22 @@
// Default attributes to send to Mixer in both Check and
// Report. This typically includes "destination.ip" and
// "destination.uid" attributes.
- mixerAttributes?: v1.Attributes @protobuf(4,type=Attributes,name=mixer_attributes)
+ mixerAttributes?: v1.#Attributes @protobuf(4,type=Attributes,name=mixer_attributes)
// Default attributes to forward to upstream. This typically
// includes the "source.ip" and "source.uid" attributes.
- forwardAttributes?: v1.Attributes @protobuf(5,type=Attributes,name=forward_attributes)
+ forwardAttributes?: v1.#Attributes @protobuf(5,type=Attributes,name=forward_attributes)
}
// Defines the client config for TCP.
-TcpClientConfig :: {
+#TcpClientConfig: {
// The transport config.
- transport?: TransportConfig @protobuf(1)
+ transport?: #TransportConfig @protobuf(1)
// Default attributes to send to Mixer in both Check and
// Report. This typically includes "destination.ip" and
// "destination.uid" attributes.
- mixerAttributes?: v1.Attributes @protobuf(2,type=Attributes,name=mixer_attributes)
+ mixerAttributes?: v1.#Attributes @protobuf(2,type=Attributes,name=mixer_attributes)
// If set to true, disables Mixer check calls.
disableCheckCalls?: bool @protobuf(3,name=disable_check_calls)
@@ -178,7 +178,7 @@
// Quota specifications to generate quota requirements.
// It applies on the new TCP connections.
- connectionQuotaSpec?: QuotaSpec @protobuf(5,name=connection_quota_spec)
+ connectionQuotaSpec?: #QuotaSpec @protobuf(5,name=connection_quota_spec)
// Specify report interval to send periodical reports for long TCP
// connections. If not specified, the interval is 10 seconds. This interval
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/quota_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/quota_proto_gen.cue
index c7d0e4c..12ecef7 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/quota_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/quota_proto_gen.cue
@@ -54,25 +54,25 @@
package client
// Determines the quotas used for individual requests.
-QuotaSpec :: {
+#QuotaSpec: {
// A list of Quota rules.
- rules?: [...QuotaRule] @protobuf(1)
+ rules?: [...#QuotaRule] @protobuf(1)
}
// Specifies a rule with list of matches and list of quotas.
// If any clause matched, the list of quotas will be used.
-QuotaRule :: {
+#QuotaRule: {
// If empty, match all request.
// If any of match is true, it is matched.
- match?: [...AttributeMatch] @protobuf(1)
+ match?: [...#AttributeMatch] @protobuf(1)
// The list of quotas to charge.
- quotas?: [...Quota] @protobuf(2)
+ quotas?: [...#Quota] @protobuf(2)
}
// Describes how to match a given string in HTTP headers. Match is
// case-sensitive.
-StringMatch :: {
+#StringMatch: {
close({}) | close({
// exact string match
exact: string @protobuf(1)
@@ -86,7 +86,7 @@
}
// Specifies a match clause to match Istio attributes
-AttributeMatch :: {
+#AttributeMatch: {
// Map of attribute names to StringMatch type.
// Each map element specifies one condition to match.
//
@@ -98,12 +98,12 @@
// request.http_method:
// exact: POST
clause?: {
- [string]: StringMatch
+ [string]: #StringMatch
} @protobuf(1,type=map<string,StringMatch>)
}
// Specifies a quota to use with quota name and amount.
-Quota :: {
+#Quota: {
// The quota name to charge
quota?: string @protobuf(1)
@@ -113,13 +113,13 @@
// QuotaSpecBinding defines the binding between QuotaSpecs and one or more
// IstioService.
-QuotaSpecBinding :: {
+#QuotaSpecBinding: {
// REQUIRED. One or more services to map the listed QuotaSpec onto.
- services?: [...IstioService] @protobuf(1)
+ services?: [...#IstioService] @protobuf(1)
// QuotaSpecReference uniquely identifies the QuotaSpec used in the
// Binding.
- QuotaSpecReference :: {
+ #QuotaSpecReference: {
// REQUIRED. The short name of the QuotaSpec. This is the resource
// name defined by the metadata name field.
name?: string @protobuf(1)
@@ -132,5 +132,5 @@
// REQUIRED. One or more QuotaSpec references that should be mapped to
// the specified service(s). The aggregate collection of match
// conditions defined in the QuotaSpecs should not overlap.
- quotaSpecs?: [...QuotaSpecReference] @protobuf(2,name=quota_specs)
+ quotaSpecs?: [...#QuotaSpecReference] @protobuf(2,name=quota_specs)
}
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/service_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/service_proto_gen.cue
index f218dda..726c181 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/service_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/service_proto_gen.cue
@@ -25,7 +25,7 @@
// IstioService identifies a service and optionally service version.
// The FQDN of the service is composed from the name, namespace, and implementation-specific domain suffix
// (e.g. on Kubernetes, "reviews" + "default" + "svc.cluster.local" -> "reviews.default.svc.cluster.local").
-IstioService :: {
+#IstioService: {
// The short name of the service such as "foo".
name?: string @protobuf(1)
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/mixer_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/mixer_proto_gen.cue
index 1da46a3..59535a4 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/mixer_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/mixer_proto_gen.cue
@@ -22,9 +22,9 @@
)
// Used to get a thumbs-up/thumbs-down before performing an action.
-CheckRequest :: {
+#CheckRequest: {
// parameters for a quota allocation
- QuotaParams :: {
+ #QuotaParams: {
// Amount of quota to allocate
amount?: int64 @protobuf(1)
@@ -36,7 +36,7 @@
//
// Mixer's configuration determines how these attributes are used to
// establish the result returned in the response.
- attributes?: CompressedAttributes @protobuf(1,"(gogoproto.nullable)=false")
+ attributes?: #CompressedAttributes @protobuf(1,"(gogoproto.nullable)=false")
// The number of words in the global dictionary, used with to populate the attributes.
// This value is used as a quick way to determine whether the client is using a dictionary that
@@ -49,17 +49,17 @@
// The individual quotas to allocate
quotas?: {
- [string]: QuotaParams
+ [string]: #QuotaParams
} @protobuf(4,type=map<string,QuotaParams>,"(gogoproto.nullable)=false")
}
// The response generated by the Check method.
-CheckResponse :: {
+#CheckResponse: {
// Expresses the result of a precondition check.
- PreconditionResult :: {
+ #PreconditionResult: {
// A status code of OK indicates all preconditions were satisfied. Any other code indicates not
// all preconditions were satisfied and details describe why.
- status?: _status_.Status @protobuf(1,type=google.rpc.Status,"(gogoproto.nullable)=false")
+ status?: _status_.#Status @protobuf(1,type=google.rpc.Status,"(gogoproto.nullable)=false")
// The amount of time for which this result can be considered valid.
validDuration?: time.Duration @protobuf(2,type=google.protobuf.Duration,name=valid_duration,"(gogoproto.nullable)=false","(gogoproto.stdduration)")
@@ -69,15 +69,15 @@
// The total set of attributes that were used in producing the result
// along with matching conditions.
- referencedAttributes?: ReferencedAttributes @protobuf(5,name=referenced_attributes)
+ referencedAttributes?: #ReferencedAttributes @protobuf(5,name=referenced_attributes)
// An optional routing directive, used to manipulate the traffic metadata
// whenever all preconditions are satisfied.
- routeDirective?: RouteDirective @protobuf(6,name=route_directive)
+ routeDirective?: #RouteDirective @protobuf(6,name=route_directive)
}
// Expresses the result of a quota allocation.
- QuotaResult :: {
+ #QuotaResult: {
// The amount of time for which this result can be considered valid.
validDuration?: time.Duration @protobuf(1,type=google.protobuf.Duration,name=valid_duration,"(gogoproto.nullable)=false","(gogoproto.stdduration)")
@@ -87,29 +87,29 @@
// The total set of attributes that were used in producing the result
// along with matching conditions.
- referencedAttributes?: ReferencedAttributes @protobuf(5,name=referenced_attributes,"(gogoproto.nullable)=false")
+ referencedAttributes?: #ReferencedAttributes @protobuf(5,name=referenced_attributes,"(gogoproto.nullable)=false")
}
// The precondition check results.
- precondition?: PreconditionResult @protobuf(2,"(gogoproto.nullable)=false")
+ precondition?: #PreconditionResult @protobuf(2,"(gogoproto.nullable)=false")
// The resulting quota, one entry per requested quota.
quotas?: {
- [string]: QuotaResult
+ [string]: #QuotaResult
} @protobuf(3,type=map<string,QuotaResult>,"(gogoproto.nullable)=false")
}
let _status_ = status
// Describes the attributes that were used to determine the response.
// This can be used to construct a response cache.
-ReferencedAttributes :: {
+#ReferencedAttributes: {
// How an attribute's value was matched
- Condition :: "CONDITION_UNSPECIFIED" | // should not occur
+ #Condition: "CONDITION_UNSPECIFIED" | // should not occur
"ABSENCE" | // match when attribute doesn't exist
"EXACT" | // match when attribute value is an exact byte-for-byte match
"REGEX" // match when attribute value matches the included regex
- Condition_value :: {
+ #Condition_value: {
"CONDITION_UNSPECIFIED": 0
"ABSENCE": 1
"EXACT": 2
@@ -117,13 +117,13 @@
}
// Describes a single attribute match.
- AttributeMatch :: {
+ #AttributeMatch: {
// The name of the attribute. This is a dictionary index encoded in a manner identical
// to all strings in the [CompressedAttributes][istio.mixer.v1.CompressedAttributes] message.
name?: int32 @protobuf(1,type=sint32)
// The kind of match against the attribute value.
- condition?: Condition @protobuf(2)
+ condition?: #Condition @protobuf(2)
// If a REGEX condition is provided for a STRING_MAP attribute,
// clients should use the regex value to match against map keys.
@@ -147,20 +147,20 @@
words?: [...string] @protobuf(1)
// Describes a set of attributes.
- attributeMatches?: [...AttributeMatch] @protobuf(2,name=attribute_matches,"(gogoproto.nullable)=false")
+ attributeMatches?: [...#AttributeMatch] @protobuf(2,name=attribute_matches,"(gogoproto.nullable)=false")
}
// Operation on HTTP headers to replace, append, or remove a header. Header
// names are normalized to lower-case with dashes, e.g. "x-request-id".
// Pseudo-headers ":path", ":authority", and ":method" are supported to modify
// the request headers.
-HeaderOperation :: {
+#HeaderOperation: {
// Operation type.
- Operation :: "REPLACE" | // replaces the header with the given name
+ #Operation: "REPLACE" | // replaces the header with the given name
"REMOVE" | // removes the header with the given name (the value is ignored)
"APPEND" // appends the value to the header value, or sets it if not present
- Operation_value :: {
+ #Operation_value: {
"REPLACE": 0
"REMOVE": 1
"APPEND": 2
@@ -173,17 +173,17 @@
value?: string @protobuf(2)
// Header operation.
- operation?: Operation @protobuf(3)
+ operation?: #Operation @protobuf(3)
}
// Expresses the routing manipulation actions to be performed on behalf of
// Mixer in response to a precondition check.
-RouteDirective :: {
+#RouteDirective: {
// Operations on the request headers.
- requestHeaderOperations?: [...HeaderOperation] @protobuf(1,name=request_header_operations,"(gogoproto.nullable)=false")
+ requestHeaderOperations?: [...#HeaderOperation] @protobuf(1,name=request_header_operations,"(gogoproto.nullable)=false")
// Operations on the response headers.
- responseHeaderOperations?: [...HeaderOperation] @protobuf(2,name=response_header_operations,"(gogoproto.nullable)=false")
+ responseHeaderOperations?: [...#HeaderOperation] @protobuf(2,name=response_header_operations,"(gogoproto.nullable)=false")
// If set, enables a direct response without proxying the request to the routing
// destination. Required to be a value in the 2xx or 3xx range.
@@ -195,12 +195,12 @@
}
// Used to report telemetry after performing one or more actions.
-ReportRequest :: {
+#ReportRequest: {
// next value: 5
// Used to signal how the sets of compressed attributes should be reconstitued server-side.
- RepeatedAttributesSemantics ::
+ #RepeatedAttributesSemantics:
// Use delta encoding between sets of compressed attributes to reduce the overall on-wire
// request size. Each individual set of attributes is used to modify the previous set.
// NOTE: There is no way with this encoding to specify attribute value deletion. This
@@ -212,7 +212,7 @@
// will allow for proper accounting of absent values in overall encoding.
"INDEPENDENT_ENCODING"
- RepeatedAttributesSemantics_value :: {
+ #RepeatedAttributesSemantics_value: {
"DELTA_ENCODING": 0
"INDEPENDENT_ENCODING": 1
}
@@ -222,10 +222,10 @@
// Each `Attributes` element represents the state of a single action. Multiple actions
// can be provided in a single message in order to improve communication efficiency. The
// client can accumulate a set of actions and send them all in one single message.
- attributes?: [...CompressedAttributes] @protobuf(1,"(gogoproto.nullable)=false")
+ attributes?: [...#CompressedAttributes] @protobuf(1,"(gogoproto.nullable)=false")
// Indicates how to decode the attributes sets in this request.
- repeatedAttributesSemantics?: RepeatedAttributesSemantics @protobuf(4,name=repeated_attributes_semantics)
+ repeatedAttributesSemantics?: #RepeatedAttributesSemantics @protobuf(4,name=repeated_attributes_semantics)
// The default message-level dictionary for all the attributes.
// Individual attribute messages can have their own dictionaries, but if they don't
@@ -241,5 +241,5 @@
}
// Used to carry responses to telemetry reports
-ReportResponse :: {
+#ReportResponse: {
}
diff --git a/encoding/protobuf/testdata/istio.io/api/networking/v1alpha3/gateway_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/networking/v1alpha3/gateway_proto_gen.cue
index e9136a6..5d26865 100644
--- a/encoding/protobuf/testdata/istio.io/api/networking/v1alpha3/gateway_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/networking/v1alpha3/gateway_proto_gen.cue
@@ -203,9 +203,9 @@
//
package v1alpha3
-Gateway :: {
+#Gateway: {
// REQUIRED: A list of server specifications.
- servers?: [...Server] @protobuf(1)
+ servers?: [...#Server] @protobuf(1)
// REQUIRED: One or more labels that indicate a specific set of pods/VMs
// on which this gateway configuration should be applied. The scope of
@@ -279,10 +279,10 @@
// serverCertificate: /etc/certs/server.pem
// privateKey: /etc/certs/privatekey.pem
// ```
-Server :: {
+#Server: {
// REQUIRED: The Port on which the proxy should listen for incoming
// connections.
- port?: Port @protobuf(1)
+ port?: #Port @protobuf(1)
port?: >10 & <100
// $hide_from_docs
@@ -318,13 +318,13 @@
// `DestinationRule`, and `ServiceEntry` configurations for details.
hosts?: [...string] @protobuf(2)
- TLSOptions :: {
+ #TLSOptions: {
// If set to true, the load balancer will send a 301 redirect for all
// http connections, asking the clients to use HTTPS.
httpsRedirect?: bool @protobuf(1,name=https_redirect)
// TLS modes enforced by the proxy
- TLSmode ::
+ #TLSmode:
// The SNI string presented by the client will be used as the match
// criterion in a VirtualService TLS route to determine the
// destination service from the service registry.
@@ -349,7 +349,7 @@
// source and the destination are using Istio mTLS to secure traffic.
"AUTO_PASSTHROUGH"
- TLSmode_value :: {
+ #TLSmode_value: {
"PASSTHROUGH": 0
"SIMPLE": 1
"MUTUAL": 2
@@ -359,7 +359,7 @@
// Optional: Indicates whether connections to this port should be
// secured using TLS. The value of this field determines how TLS is
// enforced.
- mode?: TLSmode @protobuf(2)
+ mode?: #TLSmode @protobuf(2)
// Extra comment.
@@ -399,13 +399,13 @@
subjectAltNames?: [...string] @protobuf(6,name=subject_alt_names)
// TLS protocol versions.
- TLSProtocol :: "TLS_AUTO" | // Automatically choose the optimal TLS version.
+ #TLSProtocol: "TLS_AUTO" | // Automatically choose the optimal TLS version.
"TLSV1_0" | // TLS version 1.0
"TLSV1_1" | // TLS version 1.1
"TLSV1_2" | // TLS version 1.2
"TLSV1_3" // TLS version 1.3
- TLSProtocol_value :: {
+ #TLSProtocol_value: {
"TLS_AUTO": 0
"TLSV1_0": 1
"TLSV1_1": 2
@@ -414,10 +414,10 @@
}
// Optional: Minimum TLS protocol version.
- minProtocolVersion?: TLSProtocol @protobuf(7,name=min_protocol_version)
+ minProtocolVersion?: #TLSProtocol @protobuf(7,name=min_protocol_version)
// Optional: Maximum TLS protocol version.
- maxProtocolVersion?: TLSProtocol @protobuf(8,name=max_protocol_version)
+ maxProtocolVersion?: #TLSProtocol @protobuf(8,name=max_protocol_version)
// Optional: If specified, only support the specified cipher list.
// Otherwise default to the default cipher list supported by Envoy.
@@ -427,7 +427,7 @@
// Set of TLS related options that govern the server's behavior. Use
// these options to control if all http requests should be redirected to
// https, and the TLS modes to use.
- tls?: TLSOptions @protobuf(3)
+ tls?: #TLSOptions @protobuf(3)
// The loopback IP endpoint or Unix domain socket to which traffic should
// be forwarded to by default. Format should be `127.0.0.1:PORT` or
@@ -436,7 +436,7 @@
}
// Port describes the properties of a specific port of a service.
-Port :: {
+#Port: {
// REQUIRED: A valid non-negative integer port number.
number?: uint32 @protobuf(1)
diff --git a/encoding/protobuf/types.go b/encoding/protobuf/types.go
index 687819b..5628660 100644
--- a/encoding/protobuf/types.go
+++ b/encoding/protobuf/types.go
@@ -49,7 +49,7 @@
}
func (p *protoConverter) setBuiltin(from, to string, pkg *protoConverter) {
- p.scope[0][from] = mapping{to, "", pkg}
+ p.scope[0][from] = mapping{to, to, "", pkg}
}
var (