Skip to content

Commit

Permalink
fix: duplicate inner messages name
Browse files Browse the repository at this point in the history
  • Loading branch information
askuzminov committed Sep 8, 2021
1 parent 55eb047 commit 21c5888
Show file tree
Hide file tree
Showing 10 changed files with 799 additions and 9 deletions.
18 changes: 18 additions & 0 deletions proto/whisk/api/user/v2/user.proto
Original file line number Diff line number Diff line change
Expand Up @@ -300,3 +300,21 @@ message ApiUpdateBusinessApp {
google.protobuf.FieldMask mask_any_name = 3
[ required = true, mask = app_any ];
}

message CookingIntentAttribute {
message IntAttributeValue {
int32 value = 1;
}
oneof value {
IntAttributeValue int_value = 1;
}
}

message CookingIntentAttributePayload {
message IntAttributeValue {
int32 value = 1;
}
oneof value {
IntAttributeValue int_value = 1;
}
}
18 changes: 14 additions & 4 deletions src/generator/message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,7 @@ function message(
if (item.fields.length > 0) {
out.dts.push(`export type ${baseName} = {`);
for (const field of item.fields) {
const find = list.find(i => i.name === field.map?.to || i.name === field.type);
const fieldPack = isPresent(find) ? find.pack : pack;
const fieldPack = getFieldPack(list, field, baseName, pack);
const naming = camelCase(field.name);
const required = isRequiredField(field, isMessageRequired);

Expand Down Expand Up @@ -102,8 +101,7 @@ function message(
out.dts.push(` ${one}?:`);

for (const field of oneof[one]) {
const find = list.find(i => i.name === field.map?.to || i.name === field.type);
const fieldPack = isPresent(find) ? find.pack : pack;
const fieldPack = getFieldPack(list, field, baseName, pack);

getComment(field, out);

Expand Down Expand Up @@ -142,6 +140,7 @@ function message(
}
out.js.push(']; }');
}

function getComment(field: Parser.Field, out: MakeOuts) {
let comment = '';
if (isText(field.options.deprecated)) {
Expand All @@ -158,3 +157,14 @@ function getComment(field: Parser.Field, out: MakeOuts) {
out.dts.push(toComment(comment));
}
}

function getFieldPack(list: List[], field: Parser.Field, baseName: string, pack: string) {
// baseName for avoid duplicate name
const find = list.find(i => i.name === field.map?.to || (i.name === field.type && baseName === safeString(i.pack)));
if (isPresent(find)) {
return find.pack;
} else {
const findTop = list.find(i => i.name === field.map?.to || i.name === field.type);
return isPresent(findTop) ? findTop.pack : pack;
}
}
84 changes: 84 additions & 0 deletions tests/proto/debug/whisk/api/user/v2/user.json
Original file line number Diff line number Diff line change
Expand Up @@ -1655,6 +1655,90 @@
"extends": [],
"extensions": [],
"reserved": []
},
{
"name": "CookingIntentAttribute",
"enums": [],
"options": {},
"messages": [
{
"name": "IntAttributeValue",
"enums": [],
"options": {},
"messages": [],
"fields": [
{
"name": "value",
"type": "int32",
"tag": 1,
"required": false,
"repeated": false,
"optional": false,
"options": {}
}
],
"extends": [],
"extensions": [],
"reserved": []
}
],
"fields": [
{
"name": "int_value",
"type": "IntAttributeValue",
"tag": 1,
"required": false,
"repeated": false,
"optional": false,
"options": {},
"oneof": "value"
}
],
"extends": [],
"extensions": [],
"reserved": []
},
{
"name": "CookingIntentAttributePayload",
"enums": [],
"options": {},
"messages": [
{
"name": "IntAttributeValue",
"enums": [],
"options": {},
"messages": [],
"fields": [
{
"name": "value",
"type": "int32",
"tag": 1,
"required": false,
"repeated": false,
"optional": false,
"options": {}
}
],
"extends": [],
"extensions": [],
"reserved": []
}
],
"fields": [
{
"name": "int_value",
"type": "IntAttributeValue",
"tag": 1,
"required": false,
"repeated": false,
"optional": false,
"options": {},
"oneof": "value"
}
],
"extends": [],
"extensions": [],
"reserved": []
}
],
"options": {
Expand Down
22 changes: 21 additions & 1 deletion tests/proto/esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -949,6 +949,26 @@ export function whisk_api_user_v2_ApiUpdateBusinessApp() {
[3, "maskAnyName", google_protobuf_FieldMask, 1],
];
}
export function whisk_api_user_v2_CookingIntentAttribute() {
return [
[1, "intValue", whisk_api_user_v2_CookingIntentAttribute_IntAttributeValue, 0, "value"],
];
}
export function whisk_api_user_v2_CookingIntentAttribute_IntAttributeValue() {
return [
[1, "value", "int32", 1],
];
}
export function whisk_api_user_v2_CookingIntentAttributePayload() {
return [
[1, "intValue", whisk_api_user_v2_CookingIntentAttributePayload_IntAttributeValue, 0, "value"],
];
}
export function whisk_api_user_v2_CookingIntentAttributePayload_IntAttributeValue() {
return [
[1, "value", "int32", 1],
];
}
export function whisk_api_user_v2_GetMeRequest() {
return [];
}
Expand Down Expand Up @@ -1008,7 +1028,7 @@ export function whisk_api_user_v2_UpdateListRequest_Fields() {
export function whisk_api_user_v2_UpdateItemRequest() {
return [
[1, "id", "string", 1],
[2, "fields", whisk_api_user_v2_UpdateListRequest_Fields, 0],
[2, "fields", whisk_api_user_v2_UpdateItemRequest_Fields, 0],
[3, "mask", google_protobuf_FieldMask, 0],
[4, "newOrder", "int32", 1],
];
Expand Down
22 changes: 20 additions & 2 deletions tests/proto/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -745,7 +745,7 @@ export const whisk_api_user_v2_Weight_Unit: {
export type whisk_api_user_v2_Weight_Unit = Values<typeof whisk_api_user_v2_Weight_Unit>;
export type whisk_api_user_v2_Weight = {
value: number;
unit?: whisk_api_user_v2_Height_Unit;
unit?: whisk_api_user_v2_Weight_Unit;
};
export const whisk_api_user_v2_Weight: Field<whisk_api_user_v2_Weight>;
export type whisk_api_user_v2_FoodPreferences = {
Expand Down Expand Up @@ -934,6 +934,24 @@ export type whisk_api_user_v2_ApiUpdateBusinessApp = {
maskAnyName: google_protobuf_FieldMask;
};
export const whisk_api_user_v2_ApiUpdateBusinessApp: Field<whisk_api_user_v2_ApiUpdateBusinessApp>;
export type whisk_api_user_v2_CookingIntentAttribute = {
value?:
| { oneof: 'intValue'; value?: whisk_api_user_v2_CookingIntentAttribute_IntAttributeValue; };
};
export const whisk_api_user_v2_CookingIntentAttribute: Field<whisk_api_user_v2_CookingIntentAttribute>;
export type whisk_api_user_v2_CookingIntentAttribute_IntAttributeValue = {
value: number;
};
export const whisk_api_user_v2_CookingIntentAttribute_IntAttributeValue: Field<whisk_api_user_v2_CookingIntentAttribute_IntAttributeValue>;
export type whisk_api_user_v2_CookingIntentAttributePayload = {
value?:
| { oneof: 'intValue'; value?: whisk_api_user_v2_CookingIntentAttributePayload_IntAttributeValue; };
};
export const whisk_api_user_v2_CookingIntentAttributePayload: Field<whisk_api_user_v2_CookingIntentAttributePayload>;
export type whisk_api_user_v2_CookingIntentAttributePayload_IntAttributeValue = {
value: number;
};
export const whisk_api_user_v2_CookingIntentAttributePayload_IntAttributeValue: Field<whisk_api_user_v2_CookingIntentAttributePayload_IntAttributeValue>;
export type whisk_api_user_v2_GetMeRequest = FieldEmpty;
export const whisk_api_user_v2_GetMeRequest: Field<whisk_api_user_v2_GetMeRequest>;
export type whisk_api_user_v2_GetMeResponse = {
Expand Down Expand Up @@ -985,7 +1003,7 @@ export type whisk_api_user_v2_UpdateListRequest_Fields = {
export const whisk_api_user_v2_UpdateListRequest_Fields: Field<whisk_api_user_v2_UpdateListRequest_Fields>;
export type whisk_api_user_v2_UpdateItemRequest = {
id: string;
fields?: whisk_api_user_v2_UpdateListRequest_Fields;
fields?: whisk_api_user_v2_UpdateItemRequest_Fields;
mask?: google_protobuf_FieldMask;
newOrder: number;
};
Expand Down
28 changes: 26 additions & 2 deletions tests/proto/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.google_protobuf_GeneratedCodeInfo_Annotation = exports.google_protobuf_GeneratedCodeInfo = exports.google_protobuf_SourceCodeInfo_Location = exports.google_protobuf_SourceCodeInfo = exports.google_protobuf_UninterpretedOption_NamePart = exports.google_protobuf_UninterpretedOption = exports.google_protobuf_MethodOptions = exports.google_protobuf_MethodOptions_IdempotencyLevel = exports.google_protobuf_ServiceOptions = exports.google_protobuf_EnumValueOptions = exports.google_protobuf_EnumOptions = exports.google_protobuf_OneofOptions = exports.google_protobuf_FieldOptions = exports.google_protobuf_FieldOptions_JSType = exports.google_protobuf_FieldOptions_CType = exports.google_protobuf_MessageOptions = exports.google_protobuf_FileOptions = exports.google_protobuf_FileOptions_OptimizeMode = exports.google_protobuf_MethodDescriptorProto = exports.google_protobuf_ServiceDescriptorProto = exports.google_protobuf_EnumValueDescriptorProto = exports.google_protobuf_EnumDescriptorProto_EnumReservedRange = exports.google_protobuf_EnumDescriptorProto = exports.google_protobuf_OneofDescriptorProto = exports.google_protobuf_FieldDescriptorProto = exports.google_protobuf_FieldDescriptorProto_Label = exports.google_protobuf_FieldDescriptorProto_Type = exports.google_protobuf_ExtensionRangeOptions = exports.google_protobuf_DescriptorProto_ReservedRange = exports.google_protobuf_DescriptorProto_ExtensionRange = exports.google_protobuf_DescriptorProto = exports.google_protobuf_FileDescriptorProto = exports.google_protobuf_FileDescriptorSet = exports.google_protobuf_Mixin = exports.google_protobuf_Method = exports.google_protobuf_Api = exports.google_protobuf_Any = exports.google_api_HttpBody = exports.google_api_CustomHttpPattern = exports.google_api_HttpRule = exports.google_api_Http = exports.whisk_api_user_v2_EthicalPreference = exports.whisk_api_user_v2_BudgetGoal = exports.whisk_api_user_v2_CookingExperience = exports.whisk_api_user_v2_OrganicPreference = exports.whisk_api_user_v2_Gender = exports.whisk_api_user_v2_ActivityLevel = exports.whisk_api_user_v2_HealthGoal = exports.google_protobuf_Syntax = exports.google_protobuf_NullValue = void 0;
exports.whisk_api_user_v2_FoodPreferences_Ingredients = exports.whisk_api_user_v2_FoodPreferences_Dates = exports.whisk_api_user_v2_FoodPreferences = exports.whisk_api_user_v2_Weight = exports.whisk_api_user_v2_Weight_Unit = exports.whisk_api_user_v2_Height = exports.whisk_api_user_v2_Height_Unit = exports.whisk_api_user_v2_PersonalDetails_HealthGoals = exports.whisk_api_user_v2_PersonalDetails = exports.whisk_api_user_v2_UserSettings = exports.whisk_api_user_v2_User = exports.whisk_api_user_v2_Week = exports.whisk_api_user_v2_Day = exports.whisk_api_user_v2_Test = exports.whisk_api_shared_v1_Wrapper = exports.whisk_api_shared_v1_Double = exports.whisk_api_shared_v1_Sign = exports.whisk_api_shared_v1_Big = exports.whisk_api_shared_v1_Primitive = exports.whisk_api_shared_v1_Time = exports.whisk_api_shared_v1_Date = exports.whisk_api_shared_v1_Outer = exports.whisk_api_shared_v1_Test_Inner_InnerInner = exports.whisk_api_shared_v1_Test_Inner = exports.whisk_api_shared_v1_Test = exports.whisk_api_shared_v1_Test_Enum = exports.google_protobuf_BytesValue = exports.google_protobuf_StringValue = exports.google_protobuf_BoolValue = exports.google_protobuf_UInt32Value = exports.google_protobuf_Int32Value = exports.google_protobuf_UInt64Value = exports.google_protobuf_Int64Value = exports.google_protobuf_FloatValue = exports.google_protobuf_DoubleValue = exports.google_protobuf_Option = exports.google_protobuf_EnumValue = exports.google_protobuf_Enum = exports.google_protobuf_Field = exports.google_protobuf_Field_Cardinality = exports.google_protobuf_Field_Kind = exports.google_protobuf_Type = exports.google_protobuf_Timestamp = exports.google_protobuf_ListValue = exports.google_protobuf_Value = exports.google_protobuf_Struct = exports.google_protobuf_SourceContext = exports.google_protobuf_FieldMask = exports.google_protobuf_Empty = exports.google_protobuf_Duration = void 0;
exports.whisk_api_user_v2_UserAPI_UpdateSettings = exports.whisk_api_user_v2_UserAPI_Get = exports.whisk_api_user_v2_UserAPI_GetMe = exports.whisk_api_user_v2_UserSettings2 = exports.whisk_api_user_v2_UpdateBusinessApp = exports.whisk_api_user_v2_UpdateSettingsRequestOld = exports.whisk_api_user_v2_UpdateItemRequest_Fields = exports.whisk_api_user_v2_UpdateItemRequest = exports.whisk_api_user_v2_UpdateListRequest_Fields = exports.whisk_api_user_v2_UpdateListRequest = exports.whisk_api_user_v2_UpdateRecipeRequest = exports.whisk_api_user_v2_SaveRecipeRequest = exports.whisk_api_user_v2_ExtractRecipeRequest = exports.whisk_api_user_v2_UpdateSettingsResponse = exports.whisk_api_user_v2_UpdateSettingsRequest = exports.whisk_api_user_v2_GetMeResponse = exports.whisk_api_user_v2_GetMeRequest = exports.whisk_api_user_v2_ApiUpdateBusinessApp = exports.whisk_api_user_v2_DeepCheck = exports.whisk_api_user_v2_SearchRecipesResponse_Height = exports.whisk_api_user_v2_SearchRecipesResponse_Height_Unit2 = exports.whisk_api_user_v2_SearchRecipesResponse_Hit = exports.whisk_api_user_v2_SearchRecipesResponse_Empty = exports.whisk_api_user_v2_SearchRecipesResponse_MatchedIngredient_Recommendations = exports.whisk_api_user_v2_SearchRecipesResponse_MatchedIngredient = exports.whisk_api_user_v2_SearchRecipesResponse = exports.whisk_api_user_v2_MatchedIngredient_Calories = exports.whisk_api_user_v2_MatchedIngredient = exports.whisk_api_user_v2_TestEmpty_GlobalRegion = exports.whisk_api_user_v2_TestEmpty = exports.whisk_api_user_v2_TestOneof = exports.whisk_api_user_v2_TestItem = exports.whisk_api_user_v2_Recommendations = exports.whisk_api_user_v2_Ingredient = exports.whisk_api_user_v2_ShoppingPreferences_EthicalPreferences = exports.whisk_api_user_v2_ShoppingPreferences_PreferredRetailers = exports.whisk_api_user_v2_ShoppingPreferences = exports.whisk_api_user_v2_Device = exports.whisk_api_user_v2_Device_DeviceType = exports.whisk_api_user_v2_CookingPreferences_Devices = exports.whisk_api_user_v2_CookingPreferences_CookingMaxTime = exports.whisk_api_user_v2_CookingPreferences_HouseholdMembers = exports.whisk_api_user_v2_CookingPreferences = void 0;
exports.whisk_api_user_v2_UserAPI_UpdateSettings = exports.whisk_api_user_v2_UserAPI_Get = exports.whisk_api_user_v2_UserAPI_GetMe = exports.whisk_api_user_v2_UserSettings2 = exports.whisk_api_user_v2_UpdateBusinessApp = exports.whisk_api_user_v2_UpdateSettingsRequestOld = exports.whisk_api_user_v2_UpdateItemRequest_Fields = exports.whisk_api_user_v2_UpdateItemRequest = exports.whisk_api_user_v2_UpdateListRequest_Fields = exports.whisk_api_user_v2_UpdateListRequest = exports.whisk_api_user_v2_UpdateRecipeRequest = exports.whisk_api_user_v2_SaveRecipeRequest = exports.whisk_api_user_v2_ExtractRecipeRequest = exports.whisk_api_user_v2_UpdateSettingsResponse = exports.whisk_api_user_v2_UpdateSettingsRequest = exports.whisk_api_user_v2_GetMeResponse = exports.whisk_api_user_v2_GetMeRequest = exports.whisk_api_user_v2_CookingIntentAttributePayload_IntAttributeValue = exports.whisk_api_user_v2_CookingIntentAttributePayload = exports.whisk_api_user_v2_CookingIntentAttribute_IntAttributeValue = exports.whisk_api_user_v2_CookingIntentAttribute = exports.whisk_api_user_v2_ApiUpdateBusinessApp = exports.whisk_api_user_v2_DeepCheck = exports.whisk_api_user_v2_SearchRecipesResponse_Height = exports.whisk_api_user_v2_SearchRecipesResponse_Height_Unit2 = exports.whisk_api_user_v2_SearchRecipesResponse_Hit = exports.whisk_api_user_v2_SearchRecipesResponse_Empty = exports.whisk_api_user_v2_SearchRecipesResponse_MatchedIngredient_Recommendations = exports.whisk_api_user_v2_SearchRecipesResponse_MatchedIngredient = exports.whisk_api_user_v2_SearchRecipesResponse = exports.whisk_api_user_v2_MatchedIngredient_Calories = exports.whisk_api_user_v2_MatchedIngredient = exports.whisk_api_user_v2_TestEmpty_GlobalRegion = exports.whisk_api_user_v2_TestEmpty = exports.whisk_api_user_v2_TestOneof = exports.whisk_api_user_v2_TestItem = exports.whisk_api_user_v2_Recommendations = exports.whisk_api_user_v2_Ingredient = exports.whisk_api_user_v2_ShoppingPreferences_EthicalPreferences = exports.whisk_api_user_v2_ShoppingPreferences_PreferredRetailers = exports.whisk_api_user_v2_ShoppingPreferences = exports.whisk_api_user_v2_Device = exports.whisk_api_user_v2_Device_DeviceType = exports.whisk_api_user_v2_CookingPreferences_Devices = exports.whisk_api_user_v2_CookingPreferences_CookingMaxTime = exports.whisk_api_user_v2_CookingPreferences_HouseholdMembers = exports.whisk_api_user_v2_CookingPreferences = void 0;
exports.google_protobuf_NullValue = {
NULL_VALUE: 0,
};
Expand Down Expand Up @@ -1057,6 +1057,30 @@ function whisk_api_user_v2_ApiUpdateBusinessApp() {
];
}
exports.whisk_api_user_v2_ApiUpdateBusinessApp = whisk_api_user_v2_ApiUpdateBusinessApp;
function whisk_api_user_v2_CookingIntentAttribute() {
return [
[1, "intValue", whisk_api_user_v2_CookingIntentAttribute_IntAttributeValue, 0, "value"],
];
}
exports.whisk_api_user_v2_CookingIntentAttribute = whisk_api_user_v2_CookingIntentAttribute;
function whisk_api_user_v2_CookingIntentAttribute_IntAttributeValue() {
return [
[1, "value", "int32", 1],
];
}
exports.whisk_api_user_v2_CookingIntentAttribute_IntAttributeValue = whisk_api_user_v2_CookingIntentAttribute_IntAttributeValue;
function whisk_api_user_v2_CookingIntentAttributePayload() {
return [
[1, "intValue", whisk_api_user_v2_CookingIntentAttributePayload_IntAttributeValue, 0, "value"],
];
}
exports.whisk_api_user_v2_CookingIntentAttributePayload = whisk_api_user_v2_CookingIntentAttributePayload;
function whisk_api_user_v2_CookingIntentAttributePayload_IntAttributeValue() {
return [
[1, "value", "int32", 1],
];
}
exports.whisk_api_user_v2_CookingIntentAttributePayload_IntAttributeValue = whisk_api_user_v2_CookingIntentAttributePayload_IntAttributeValue;
function whisk_api_user_v2_GetMeRequest() {
return [];
}
Expand Down Expand Up @@ -1125,7 +1149,7 @@ exports.whisk_api_user_v2_UpdateListRequest_Fields = whisk_api_user_v2_UpdateLis
function whisk_api_user_v2_UpdateItemRequest() {
return [
[1, "id", "string", 1],
[2, "fields", whisk_api_user_v2_UpdateListRequest_Fields, 0],
[2, "fields", whisk_api_user_v2_UpdateItemRequest_Fields, 0],
[3, "mask", google_protobuf_FieldMask, 0],
[4, "newOrder", "int32", 1],
];
Expand Down
50 changes: 50 additions & 0 deletions tests/protobufjs/json-module.js
Original file line number Diff line number Diff line change
Expand Up @@ -2198,6 +2198,56 @@ const $root = ($protobuf.roots["default"] || ($protobuf.roots["default"] = new $
}
}
},
CookingIntentAttribute: {
oneofs: {
value: {
oneof: [
"intValue"
]
}
},
fields: {
intValue: {
type: "IntAttributeValue",
id: 1
}
},
nested: {
IntAttributeValue: {
fields: {
value: {
type: "int32",
id: 1
}
}
}
}
},
CookingIntentAttributePayload: {
oneofs: {
value: {
oneof: [
"intValue"
]
}
},
fields: {
intValue: {
type: "IntAttributeValue",
id: 1
}
},
nested: {
IntAttributeValue: {
fields: {
value: {
type: "int32",
id: 1
}
}
}
}
},
UserAPI: {
methods: {
GetMe: {
Expand Down

0 comments on commit 21c5888

Please sign in to comment.