Skip to content

Commit c0ded10

Browse files
committed
fix(#44): enable both snake_case and camelCase for message fields
1 parent 20f4564 commit c0ded10

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

__tests__/simple-service/proto/simple.proto

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import "google/protobuf/empty.proto";
66

77
message SimpleMessage {
88
string id = 1;
9+
string snake_case_field = 2;
10+
string camelCaseField = 3;
911
}
1012

1113
message LongIntegersMessage {

__tests__/simple-service/src/generated/proto/simple.ts

+27-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ export const protobufPackage = "simple_package.v1";
1414

1515
export interface SimpleMessage {
1616
id: string;
17+
snakeCaseField: string;
18+
camelCaseField: string;
1719
}
1820

1921
export interface LongIntegersMessage {
@@ -25,7 +27,7 @@ export interface LongIntegersMessage {
2527
}
2628

2729
function createBaseSimpleMessage(): SimpleMessage {
28-
return { id: "" };
30+
return { id: "", snakeCaseField: "", camelCaseField: "" };
2931
}
3032

3133
export const SimpleMessage = {
@@ -36,6 +38,12 @@ export const SimpleMessage = {
3638
if (message.id !== "") {
3739
writer.uint32(10).string(message.id);
3840
}
41+
if (message.snakeCaseField !== "") {
42+
writer.uint32(18).string(message.snakeCaseField);
43+
}
44+
if (message.camelCaseField !== "") {
45+
writer.uint32(26).string(message.camelCaseField);
46+
}
3947
return writer;
4048
},
4149

@@ -49,6 +57,12 @@ export const SimpleMessage = {
4957
case 1:
5058
message.id = reader.string();
5159
break;
60+
case 2:
61+
message.snakeCaseField = reader.string();
62+
break;
63+
case 3:
64+
message.camelCaseField = reader.string();
65+
break;
5266
default:
5367
reader.skipType(tag & 7);
5468
break;
@@ -60,12 +74,22 @@ export const SimpleMessage = {
6074
fromJSON(object: any): SimpleMessage {
6175
return {
6276
id: isSet(object.id) ? String(object.id) : "",
77+
snakeCaseField: isSet(object.snakeCaseField)
78+
? String(object.snakeCaseField)
79+
: "",
80+
camelCaseField: isSet(object.camelCaseField)
81+
? String(object.camelCaseField)
82+
: "",
6383
};
6484
},
6585

6686
toJSON(message: SimpleMessage): unknown {
6787
const obj: any = {};
6888
message.id !== undefined && (obj.id = message.id);
89+
message.snakeCaseField !== undefined &&
90+
(obj.snakeCaseField = message.snakeCaseField);
91+
message.camelCaseField !== undefined &&
92+
(obj.camelCaseField = message.camelCaseField);
6993
return obj;
7094
},
7195

@@ -74,6 +98,8 @@ export const SimpleMessage = {
7498
): SimpleMessage {
7599
const message = createBaseSimpleMessage();
76100
message.id = object.id ?? "";
101+
message.snakeCaseField = object.snakeCaseField ?? "";
102+
message.camelCaseField = object.camelCaseField ?? "";
77103
return message;
78104
},
79105
};

src/core/protobuf/protobuf-loader.ts

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ function instanceOfMethodDefinition(object: any): object is MethodDefinition<obj
1919
export class ProtobufLoader {
2020
static async loadFromFile(options: GrpcOptions): Promise<PackageDefinition> {
2121
const ast = await protoloader.load(options.path, {
22+
keepCase: true,
2223
includeDirs: options.includeDirs || [],
2324
longs: String,
2425
});

0 commit comments

Comments
 (0)