Skip to content

Commit 98fc410

Browse files
committed
feat(typescript): add sortModelPropertiesByName helper method
Add a protected helper method to sort model properties alphabetically, ensuring deterministic code generation across all TypeScript generators. The method sorts vars, allVars, requiredVars, optionalVars, readOnlyVars, readWriteVars, and parentVars by property name.
1 parent 9fa18d0 commit 98fc410

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1023,6 +1023,21 @@ protected void addImport(CodegenModel m, String type) {
10231023
}
10241024
}
10251025

1026+
/**
1027+
* Sort model properties alphabetically to ensure deterministic code generation.
1028+
* Subclasses that override postProcessModels should call this method for each CodegenModel.
1029+
*/
1030+
protected void sortModelPropertiesByName(CodegenModel cm) {
1031+
Comparator<CodegenProperty> comparator = Comparator.comparing(p -> p.name);
1032+
Collections.sort(cm.vars, comparator);
1033+
Collections.sort(cm.allVars, comparator);
1034+
Collections.sort(cm.requiredVars, comparator);
1035+
Collections.sort(cm.optionalVars, comparator);
1036+
Collections.sort(cm.readOnlyVars, comparator);
1037+
Collections.sort(cm.readWriteVars, comparator);
1038+
Collections.sort(cm.parentVars, comparator);
1039+
}
1040+
10261041
@Override
10271042
public ModelsMap postProcessModels(ModelsMap objs) {
10281043
// process enum in models
@@ -1044,6 +1059,9 @@ public ModelsMap postProcessModels(ModelsMap objs) {
10441059
}
10451060
}
10461061
}
1062+
1063+
// Sort model properties alphabetically to ensure deterministic code generation
1064+
sortModelPropertiesByName(cm);
10471065
}
10481066

10491067
return objs;

0 commit comments

Comments
 (0)