Skip to content

Commit 7a21db0

Browse files
committed
chore(utils): updated class name generation
1 parent 653e82d commit 7a21db0

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@
8686
},
8787
"scripts": {
8888
"vscode:prepublish": "npm run package",
89+
"build": "esbuild src/extension.ts --bundle --outfile=dist/extension.js --platform=node --external:vscode --format=cjs",
8990
"compile": "npm run check-types && npm run lint && node esbuild.js",
9091
"watch": "npm-run-all -p watch:*",
9192
"watch:esbuild": "node esbuild.js --watch",

src/utils/dartGenUtils.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,12 @@ function generateDartModel(json: any, className: string, generated: Set<string>
2828
const toJsonLines: string[] = [];
2929
const nestedClasses: string[] = [];
3030

31-
// Determine model type based on class name
3231
const isRequest = className.toLowerCase().includes('request');
3332
const isResponse = className.toLowerCase().includes('response');
3433

34+
// Extract the base name by removing "Request"/"Response"
35+
const baseName = className.replace(/(Request|Response)$/i, '');
36+
3537
for (const [key, value] of Object.entries(json)) {
3638
let type = 'dynamic';
3739
const varName = toCamelCase(key);
@@ -48,7 +50,8 @@ function generateDartModel(json: any, className: string, generated: Set<string>
4850
type = 'dynamic';
4951
} else if (Array.isArray(value)) {
5052
if (value.length > 0 && typeof value[0] === 'object' && value[0] !== null) {
51-
const nestedClass = `${className}${pascalCase(key)}Item`;
53+
// Fixed: Put the suffix after the property name
54+
const nestedClass = `${baseName}${pascalCase(key)}${isResponse ? 'Response' : isRequest ? 'Request' : ''}`;
5255
type = `List<${nestedClass}>`;
5356
parseCode = `(json['${key}'] as List).map((e) => ${nestedClass}.fromJson(e)).toList()`;
5457
toJsonCode = `'${key}': ${varName}.map((e) => e.toJson()).toList()`;
@@ -59,7 +62,8 @@ function generateDartModel(json: any, className: string, generated: Set<string>
5962
toJsonCode = `'${key}': ${varName}`;
6063
}
6164
} else if (typeof value === 'object') {
62-
const nestedClass = `${className}${pascalCase(key)}`;
65+
// Fixed: Put the suffix after the property name, not the base name
66+
const nestedClass = `${baseName}${pascalCase(key)}${isResponse ? 'Response' : isRequest ? 'Request' : ''}`;
6367
type = nestedClass;
6468
parseCode = `${nestedClass}.fromJson(json['${key}'])`;
6569
toJsonCode = `'${key}': ${varName}.toJson()`;
@@ -73,22 +77,17 @@ function generateDartModel(json: any, className: string, generated: Set<string>
7377
}
7478

7579
let methods = '';
76-
77-
// Generate fromJson for Response models or if neither Request nor Response is specified
7880
if (isResponse || (!isRequest && !isResponse)) {
7981
methods += `
80-
8182
factory ${className}.fromJson(Map<String, dynamic> json) {
8283
return ${className}(
8384
${fromJsonLines.join('\n')}
8485
);
8586
}`;
8687
}
8788

88-
// Generate toJson for Request models or if neither Request nor Response is specified
8989
if (isRequest || (!isRequest && !isResponse)) {
9090
methods += `
91-
9291
Map<String, dynamic> toJson() {
9392
return {
9493
${toJsonLines.join('\n')}

0 commit comments

Comments
 (0)