Skip to content

Commit 94a299f

Browse files
fix: improve objname transformation logic to handle array/object conversions
Co-Authored-By: Dan Lynch <[email protected]>
1 parent 472cf5a commit 94a299f

File tree

1 file changed

+23
-2
lines changed

1 file changed

+23
-2
lines changed

packages/transform/src/transformers/v13-to-v14.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,29 @@ export class V13ToV14Transformer {
8787
for (const [key, value] of Object.entries(nodeData)) {
8888
if (key === 'ctes' && Array.isArray(value)) {
8989
transformedData[key] = value.map(item => this.transform(item as any, context));
90-
} else if (key === 'objname' && typeof value === 'object' && value !== null && !Array.isArray(value)) {
91-
transformedData[key] = this.transform(value as any, context);
90+
} else if (key === 'objname' && typeof value === 'object' && value !== null) {
91+
console.log('transformGenericNode: Processing objname:', {
92+
isArray: Array.isArray(value),
93+
value: JSON.stringify(value, null, 2),
94+
keys: Object.keys(value)
95+
});
96+
if (Array.isArray(value)) {
97+
console.log('transformGenericNode: objname is array, transforming items');
98+
transformedData[key] = value.map(item => this.transform(item as any, context));
99+
} else {
100+
const keys = Object.keys(value);
101+
const isNumericKeysObject = keys.every(k => /^\d+$/.test(k));
102+
console.log('transformGenericNode: objname is object, isNumericKeysObject:', isNumericKeysObject, 'keys:', keys);
103+
if (isNumericKeysObject && keys.length > 0) {
104+
const sortedKeys = keys.sort((a, b) => parseInt(a) - parseInt(b));
105+
console.log('transformGenericNode: Converting numeric keys object to array, sortedKeys:', sortedKeys);
106+
transformedData[key] = sortedKeys.map(k => this.transform((value as any)[k], context));
107+
} else {
108+
// Regular object transformation
109+
console.log('transformGenericNode: Regular object transformation for objname');
110+
transformedData[key] = this.transform(value as any, context);
111+
}
112+
}
92113
} else if (Array.isArray(value)) {
93114
transformedData[key] = value.map(item => this.transform(item as any, context));
94115
} else if (typeof value === 'object' && value !== null) {

0 commit comments

Comments
 (0)