@@ -199,7 +199,10 @@ export class SourceTracking extends AsyncCreatable {
199
199
await this . ensureRemoteTracking ( ) ;
200
200
const remoteChanges = await this . remoteSourceTrackingService . retrieveUpdates ( ) ;
201
201
this . logger . debug ( 'remoteChanges' , remoteChanges ) ;
202
- const filteredChanges = remoteChanges . filter ( remoteFilterByState [ options . state ] ) ;
202
+ const filteredChanges = remoteChanges
203
+ . filter ( remoteFilterByState [ options . state ] )
204
+ // skip any remote types not in the registry. Will emit node warnings
205
+ . filter ( ( rce ) => this . registrySupportsType ( rce . type ) ) ;
203
206
if ( options . format === 'ChangeResult' ) {
204
207
return filteredChanges . map ( ( change ) => remoteChangeElementToChangeResult ( change ) ) as T [ ] ;
205
208
}
@@ -554,6 +557,13 @@ export class SourceTracking extends AsyncCreatable {
554
557
return results ;
555
558
}
556
559
560
+ private registrySupportsType ( type : string ) : boolean {
561
+ if ( this . registry . findType ( ( metadataType ) => metadataType . name === type ) ) {
562
+ return true ;
563
+ }
564
+ process . emitWarning ( `Unable to find type ${ type } in registry` ) ;
565
+ return false ;
566
+ }
557
567
/**
558
568
* uses SDR to translate remote metadata records into local file paths
559
569
*/
@@ -565,26 +575,24 @@ export class SourceTracking extends AsyncCreatable {
565
575
this . logger . debug ( 'populateFilePaths for change elements' , elements ) ;
566
576
// component set generated from an array of ComponentLike from all the remote changes
567
577
// but exclude the ones that aren't in the registry
578
+ const expectedSkippedElements : ChangeResult [ ] = [ ] ;
568
579
const remoteChangesAsComponentLike = elements
569
580
. map ( ( element ) => {
570
- if (
571
- typeof element . type === 'string' &&
572
- typeof element . name === 'string' &&
573
- this . registry . getTypeByName ( element . type )
574
- ) {
581
+ if ( typeof element . type === 'string' && typeof element . name === 'string' ) {
575
582
return {
576
583
type : element . type ,
577
- fullName : element ? .name ,
584
+ fullName : element . name ,
578
585
} ;
579
586
}
580
587
process . emitWarning ( `Not present in registry: ${ element . type } ` ) ;
588
+ expectedSkippedElements . push ( element ) ;
581
589
} )
582
590
. filter ( componentLikeGuard ) as ComponentLike [ ] ;
583
591
584
592
const remoteChangesAsComponentSet = new ComponentSet ( remoteChangesAsComponentLike ) ;
585
593
586
594
this . logger . debug ( ` the generated component set has ${ remoteChangesAsComponentSet . size . toString ( ) } items` ) ;
587
- if ( remoteChangesAsComponentSet . size < elements . length ) {
595
+ if ( remoteChangesAsComponentSet . size < elements . length - expectedSkippedElements . length ) {
588
596
// iterate the elements to see which ones didn't make it into the component set
589
597
throw new Error (
590
598
`unable to generate complete component set for ${ elements
0 commit comments