@@ -27,15 +27,15 @@ import { LogLevel } from '../lib/logger.js';
2727import { loadLocalArtifacts } from './local-artifact-loader.js' ;
2828
2929export interface CompareResult {
30- totalTypes : number ;
31- totalResources : number ;
3230 totalDifferences : number ;
3331 differences : ComparisonDifference [ ] ;
3432}
3533
3634export interface ComparisonDifference {
35+ instance ?: 'source' | 'target' ;
3736 resourceType : string ;
3837 resourceName : string ;
38+ displayName ?: string ;
3939 diffType : 'missing' | 'extra' | 'property-diff' ;
4040 diffs ?: ResourceDiff [ ] ;
4141}
@@ -66,8 +66,6 @@ export async function compareApimInstances(
6666 } ;
6767
6868 const differences : ComparisonDifference [ ] = [ ] ;
69- let totalTypes = 0 ;
70- let totalResources = 0 ;
7169
7270 // Get clients from config
7371 const sourceClient : IApimClient = config . sourceClient ;
@@ -113,8 +111,6 @@ export async function compareApimInstances(
113111 typeConfig . skipLoggerCreds ?? false ,
114112 ) ;
115113 differences . push ( ...typeDiffs ) ;
116- totalTypes ++ ;
117- totalResources += typeDiffs . length ;
118114 }
119115
120116 // Compare APIs
@@ -128,8 +124,6 @@ export async function compareApimInstances(
128124 EXCLUDE_APIS ,
129125 ) ;
130126 differences . push ( ...apiDiffs ) ;
131- totalTypes ++ ;
132- totalResources += apiDiffs . length ;
133127
134128 // Enumerate APIs for child resource comparison
135129 const sourceApis = await safeListResources (
@@ -170,8 +164,6 @@ export async function compareApimInstances(
170164 config . target ,
171165 ) ;
172166 differences . push ( ...childDiffs ) ;
173- totalTypes ++ ;
174- totalResources += childDiffs . length ;
175167 }
176168
177169 // API Operation Policies
@@ -195,8 +187,6 @@ export async function compareApimInstances(
195187 config . target ,
196188 ) ;
197189 differences . push ( ...opPolicyDiffs ) ;
198- totalTypes ++ ;
199- totalResources += opPolicyDiffs . length ;
200190 }
201191
202192 // API Resolver Policies
@@ -220,8 +210,6 @@ export async function compareApimInstances(
220210 config . target ,
221211 ) ;
222212 differences . push ( ...resolverPolicyDiffs ) ;
223- totalTypes ++ ;
224- totalResources += resolverPolicyDiffs . length ;
225213 }
226214 }
227215
@@ -259,8 +247,6 @@ export async function compareApimInstances(
259247 config . target ,
260248 ) ;
261249 differences . push ( ...childDiffs ) ;
262- totalTypes ++ ;
263- totalResources += childDiffs . length ;
264250 }
265251 }
266252
@@ -283,8 +269,6 @@ export async function compareApimInstances(
283269 config . target ,
284270 ) ;
285271 differences . push ( ...gatewayApiDiffs ) ;
286- totalTypes ++ ;
287- totalResources += gatewayApiDiffs . length ;
288272 }
289273
290274 // Note: Workspace comparison disabled - Workspace types not yet defined in ResourceType enum
@@ -326,8 +310,6 @@ export async function compareApimInstances(
326310 config.target,
327311 );
328312 differences.push(...childDiffs);
329- totalTypes++;
330- totalResources += childDiffs.length;
331313 }
332314 }
333315 */
@@ -337,8 +319,6 @@ export async function compareApimInstances(
337319 ) . length ;
338320
339321 return {
340- totalTypes,
341- totalResources,
342322 totalDifferences,
343323 differences,
344324 } ;
@@ -657,21 +637,31 @@ function compareResourceLists(
657637 // Find missing resources (in source but not in target)
658638 for ( const name of sourceMap . keys ( ) ) {
659639 if ( ! targetMap . has ( name ) ) {
640+ const sourceResource = sourceMap . get ( name ) ! ;
641+ const displayName = getComparisonDisplayName ( sourceResource ) ;
642+
660643 differences . push ( {
661644 resourceType : typeLabel ,
662645 resourceName : name ,
663646 diffType : 'missing' ,
647+ ...( displayName === undefined ? { } : { displayName } ) ,
648+ instance : 'source' ,
664649 } ) ;
665650 }
666651 }
667652
668653 // Find extra resources (in target but not in source)
669654 for ( const name of targetMap . keys ( ) ) {
670655 if ( ! sourceMap . has ( name ) ) {
656+ const targetResource = targetMap . get ( name ) ! ;
657+ const displayName = getComparisonDisplayName ( targetResource ) ;
658+
671659 differences . push ( {
672660 resourceType : typeLabel ,
673661 resourceName : name ,
674662 diffType : 'extra' ,
663+ ...( displayName === undefined ? { } : { displayName } ) ,
664+ instance : 'target' ,
675665 } ) ;
676666 }
677667 }
@@ -682,6 +672,9 @@ function compareResourceLists(
682672
683673 const sourceResource = sourceMap . get ( name ) ! ;
684674 const targetResource = targetMap . get ( name ) ! ;
675+ const displayName =
676+ getComparisonDisplayName ( sourceResource ) ??
677+ getComparisonDisplayName ( targetResource ) ;
685678
686679 const sourceNorm = normalizeResource ( sourceResource , normalizeContext ) ;
687680 const targetNorm = normalizeResource ( targetResource , normalizeContext ) ;
@@ -728,6 +721,7 @@ function compareResourceLists(
728721 resourceType : typeLabel ,
729722 resourceName : name ,
730723 diffType : 'property-diff' ,
724+ ...( displayName === undefined ? { } : { displayName } ) ,
731725 diffs,
732726 } ) ;
733727 }
@@ -736,6 +730,25 @@ function compareResourceLists(
736730 return differences ;
737731}
738732
733+ function getComparisonDisplayName (
734+ resource : Record < string , unknown > ,
735+ ) : string | undefined {
736+ const properties = resource . properties ;
737+ if ( typeof properties === 'object' && properties !== null ) {
738+ const displayName = ( properties as Record < string , unknown > ) . displayName ;
739+ if ( typeof displayName === 'string' && displayName . length > 0 ) {
740+ return displayName ;
741+ }
742+ }
743+
744+ const displayName = resource . displayName ;
745+ if ( typeof displayName === 'string' && displayName . length > 0 ) {
746+ return displayName ;
747+ }
748+
749+ return undefined ;
750+ }
751+
739752/**
740753 * Builds a resource map keyed by name, handling auto-generated IDs
741754 */
@@ -844,8 +857,6 @@ export async function compareLocalArtifacts(
844857 } ;
845858
846859 const differences : ComparisonDifference [ ] = [ ] ;
847- let totalTypes = 0 ;
848- let totalResources = 0 ;
849860
850861 // Get all unique resource types from both sources
851862 const allTypes = new Set < string > ( ) ;
@@ -872,17 +883,13 @@ export async function compareLocalArtifacts(
872883 ) ;
873884
874885 differences . push ( ...typeDiffs ) ;
875- totalTypes ++ ;
876- totalResources += Math . max ( sourceResources . length , targetResources . length ) ;
877886 }
878887
879888 const totalDifferences = differences . filter (
880889 ( d ) => d . diffType !== 'property-diff' || ( d . diffs && d . diffs . length > 0 ) ,
881890 ) . length ;
882891
883892 return {
884- totalTypes,
885- totalResources,
886893 totalDifferences,
887894 differences,
888895 } ;
0 commit comments