diff --git a/src/index.js b/src/index.js index 23ea0790..889e99a8 100644 --- a/src/index.js +++ b/src/index.js @@ -1583,19 +1583,25 @@ function processProtoDescriptor( ) { const statements = []; + + // Process enums + for (const enumDescriptor of descriptor.getEnumTypeList()) { + statements.push(createEnum(enumDescriptor)); + } + + // Process messages - if (descriptor.getMessageTypeList) { - for (messageDescriptor of descriptor.getMessageTypeList()) { - statements.push( - ...processMessageDescriptor( - rootDescriptor, - messageDescriptor, - pbIdentifier, - getNamedImport - ) - ); - } + for (messageDescriptor of descriptor.getMessageTypeList()) { + statements.push( + ...processMessageDescriptor( + rootDescriptor, + messageDescriptor, + pbIdentifier, + getNamedImport + ) + ); } + return statements; } diff --git a/test/protos/complex.proto b/test/protos/complex.proto new file mode 100644 index 00000000..244b4126 --- /dev/null +++ b/test/protos/complex.proto @@ -0,0 +1,57 @@ +// taken from https://github.com/spica-engine/spica/blob/master/stacks/api/function/queue/proto/event.proto +syntax = "proto3"; + +package event; + +message SchedulingContext { + repeated Env env = 2; + int32 timeout = 3; + Batch batch = 4; + message Env { + string key = 1; + string value = 2; + } + + message Batch { + uint64 limit = 1; + uint64 deadline = 2; + } +} + +message Target { + string id = 1; + string cwd = 2; + string handler = 3; + SchedulingContext context = 4; +} + +enum Type { + HTTP = 0; + DATABASE = 1; + SCHEDULE = 3; + FIREHOSE = 4; + SYSTEM = 5; + BUCKET = 6; +} + +message Event { + string id = 1; + Type type = 2; + Target target = 3; +} + +message Pop { + string id = 1; +} + +message Complete { + string id = 1; + message Result {} +} + + + +service Queue { + rpc pop(Pop) returns (Event); + rpc complete(Complete) returns (Complete.Result); +}