@@ -41,31 +41,6 @@ export function parsePartialJsonObjectSingle(content: string): {
4141 return { lastParamComplete : true , params : { } }
4242}
4343
44- export function parsePartialJsonObject (
45- content : string ,
46- previous : string
47- ) : {
48- lastParamComplete : boolean
49- params : any
50- prevParams : any
51- } {
52- const { lastParamComplete, params } = parsePartialJsonObjectSingle ( content )
53- const lastParam = Object . entries ( params ) [ - 1 ]
54-
55- const { lastParamComplete : prevLastParamComplete , params : prevParams } =
56- parsePartialJsonObjectSingle ( previous )
57- const prevLastParam = Object . entries ( prevParams ) [ - 1 ]
58-
59- return {
60- lastParamComplete :
61- lastParam === prevLastParam
62- ? lastParamComplete && ! prevLastParamComplete
63- : lastParamComplete ,
64- params,
65- prevParams,
66- }
67- }
68-
6944export function getPartialJsonDelta (
7045 content : string ,
7146 previous : string
@@ -79,18 +54,21 @@ export function getPartialJsonDelta(
7954 `Content must be previous content plus new content. Content ${ JSON . stringify ( content ) } does not start with previous content ${ JSON . stringify ( previous ) } `
8055 )
8156 }
82- const {
83- lastParamComplete,
84- params : current ,
85- prevParams,
86- } = parsePartialJsonObject ( content , previous )
57+ const { lastParamComplete, params } = parsePartialJsonObjectSingle ( content )
58+ const lastParam = Object . keys ( params ) . pop ( )
8759
88- const entries = Object . entries ( current )
89- const lastKey = ( entries [ entries . length - 1 ] ?? [ undefined ] ) [ 0 ]
60+ const { lastParamComplete : prevLastParamComplete , params : prevParams } =
61+ parsePartialJsonObjectSingle ( previous )
62+ const prevLastParam = Object . keys ( prevParams ) . pop ( )
63+
64+ const entries = Object . entries ( params )
9065
9166 const delta : Record < string , any > = { }
92- for ( const [ key , value ] of Object . entries ( current ) ) {
67+ for ( const [ key , value ] of entries ) {
9368 if ( prevParams [ key ] === value ) {
69+ if ( prevLastParam === key && ! prevLastParamComplete ) {
70+ delta [ key ] = ''
71+ }
9472 continue
9573 }
9674 if ( typeof value === 'string' ) {
@@ -102,10 +80,13 @@ export function getPartialJsonDelta(
10280
10381 return {
10482 delta,
105- result : current ,
83+ result : params ,
10684 lastParam : {
107- key : lastKey ,
108- complete : lastParamComplete ,
85+ key : lastParam ,
86+ complete :
87+ prevLastParam === lastParam
88+ ? lastParamComplete && ! prevLastParamComplete
89+ : lastParamComplete ,
10990 } ,
11091 }
11192}
0 commit comments