@@ -544,6 +544,7 @@ export class CredentialSchema extends Versioned {
544544
545545 static validateGeneric ( schema : object , ignoreKeys : Set < string > = new Set ( ) ) {
546546 const [ names , values ] = this . flattenSchemaObj ( schema ) ;
547+
547548 for ( let i = 0 ; i < names . length ; i ++ ) {
548549 if ( ignoreKeys . has ( names [ i ] ) ) {
549550 continue ;
@@ -644,16 +645,16 @@ export class CredentialSchema extends Versioned {
644645 properties : {
645646 id : {
646647 type : 'string'
647- } ,
648- } ,
648+ }
649+ }
649650 } ,
650651 proof : {
651652 type : 'object' ,
652653 properties : {
653654 type : {
654655 type : 'string'
655- } ,
656- } ,
656+ }
657+ }
657658 }
658659 }
659660 } ;
@@ -1101,13 +1102,20 @@ export class CredentialSchema extends Versioned {
11011102 } else if ( schemaProps [ key ] [ 'type' ] == 'object' && typ == 'object' ) {
11021103 const schemaKeys = new Set ( [ ...Object . keys ( schemaProps [ key ] [ 'properties' ] ) ] ) ;
11031104 const valKeys = new Set ( [ ...Object . keys ( value ) ] ) ;
1104- for ( const vk of valKeys ) {
1105- CredentialSchema . generateFromCredential ( value , schemaProps [ key ] [ 'properties' ] ) ;
1106- }
1107- // Delete extra keys not in cred
1108- for ( const sk of schemaKeys ) {
1109- if ( value [ sk ] === undefined ) {
1110- delete schemaKeys [ sk ] ;
1105+
1106+ // If empty object, skip it here otherwise causes problems downstream
1107+ if ( schemaKeys . size === 0 ) {
1108+ delete schemaProps [ key ] ;
1109+ } else {
1110+ for ( const vk of valKeys ) {
1111+ // TODO: why this loop? seems useless?
1112+ CredentialSchema . generateFromCredential ( value , schemaProps [ key ] [ 'properties' ] ) ;
1113+ }
1114+ // Delete extra keys not in cred
1115+ for ( const sk of schemaKeys ) {
1116+ if ( value [ sk ] === undefined ) {
1117+ delete schemaKeys [ sk ] ;
1118+ }
11111119 }
11121120 }
11131121 } else {
0 commit comments