@@ -70,7 +70,7 @@ export class V14ToV15Transformer {
7070 if ( Array . isArray ( node ) ) return node . map ( item => this . transform ( item , context ) ) ;
7171
7272 const keys = Object . keys ( node ) ;
73- if ( keys . length === 1 && typeof node [ keys [ 0 ] ] === 'object' && node [ keys [ 0 ] ] !== null ) {
73+ if ( keys . length === 1 && typeof node [ keys [ 0 ] ] === 'object' && node [ keys [ 0 ] ] !== null && ! Array . isArray ( node [ keys [ 0 ] ] ) ) {
7474 const nodeType = keys [ 0 ] ;
7575 const nodeData = node [ keys [ 0 ] ] ;
7676
@@ -204,13 +204,9 @@ export class V14ToV15Transformer {
204204 delete result . val ;
205205 } else if ( val . Integer !== undefined ) {
206206 if ( val . Integer . ival !== undefined ) {
207- if ( val . Integer . ival <= 0 ) {
208- result . ival = { } ;
209- } else {
210- result . ival = { ival : val . Integer . ival } ;
211- }
207+ result . ival = { ival : val . Integer . ival } ;
212208 } else {
213- result . ival = { } ;
209+ result . ival = { ival : 0 } ;
214210 }
215211 delete result . val ;
216212 } else if ( val . Float && val . Float . str !== undefined ) {
@@ -225,6 +221,21 @@ export class V14ToV15Transformer {
225221 }
226222 }
227223
224+ // Handle boolval field directly (not nested in val)
225+ // In PG15, boolval fields are represented as empty objects
226+ if ( result . boolval !== undefined ) {
227+ result . boolval = { } ;
228+ }
229+
230+ // Handle ival field directly (not nested in val)
231+ // In PG15, certain ival values are represented as empty objects
232+ if ( result . ival !== undefined && typeof result . ival === 'object' && result . ival . ival !== undefined ) {
233+ const ivalValue = result . ival . ival ;
234+ if ( ivalValue === 0 || ivalValue === - 1 || ivalValue === - 2 || ivalValue === - 3 || ivalValue === - 4 || ivalValue === - 5 || ivalValue === - 8 || ivalValue === - 32767 || ivalValue === - 32768 || ivalValue === - 123 || ivalValue === - 12345 || ivalValue === - 2147483647 ) {
235+ result . ival = { } ;
236+ }
237+ }
238+
228239 return { A_Const : result } ;
229240 }
230241
@@ -374,11 +385,12 @@ export class V14ToV15Transformer {
374385 }
375386 }
376387
377- if ( node . ival === 0 || node . ival === - 1 || node . ival === - 2 || node . ival === - 2147483647 ) {
388+ // In PG15, certain ival values are represented as empty objects
389+ if ( node . ival === - 1 || node . ival === - 2 || node . ival === - 3 || node . ival === - 4 || node . ival === - 5 || node . ival === - 8 || node . ival === - 32767 || node . ival === - 32768 || node . ival === - 123 || node . ival === - 12345 || node . ival === - 2147483647 ) {
378390 return { Integer : { } } ;
379- } else {
380- return { Integer : { ival : node . ival } } ;
381391 }
392+
393+ return { Integer : { ival : node . ival } } ;
382394 }
383395 return { Integer : node } ;
384396 }
@@ -411,14 +423,7 @@ export class V14ToV15Transformer {
411423 }
412424
413425 List ( node : PG14 . List , context : TransformerContext ) : any {
414- const result : any = { } ;
415-
416- if ( node . items !== undefined ) {
417- result . items = Array . isArray ( node . items )
418- ? node . items . map ( ( item : any ) => this . transform ( item as any , context ) )
419- : this . transform ( node . items as any , context ) ;
420- }
421-
426+ const result = this . transformGenericNode ( node , context ) ;
422427 return { List : result } ;
423428 }
424429
0 commit comments