1616
1717import {
1818 ApiAudienceTransition ,
19+ ApiBuilder ,
1920 CompareContext ,
2021 CompareOperationsPairContext ,
2122 OperationChanges ,
@@ -33,7 +34,6 @@ import {
3334 getOperationMetadata ,
3435 getOperationsHashMapByApiType ,
3536 getOperationTags ,
36- getOperationTypesFromTwoVersions ,
3737 getUniqueApiTypesFromVersions ,
3838 takeSubstringIf ,
3939 totalChanges ,
@@ -45,14 +45,12 @@ import {
4545 calculateImpactedSummary ,
4646 executeInBatches ,
4747 getSplittedVersionKey ,
48- IGNORE_PATH_PARAM_UNIFIED_PLACEHOLDER ,
4948 removeFirstSlash ,
5049 removeObjectDuplicates ,
5150 slugify ,
5251} from '../../utils'
5352import { asyncDebugPerformance , DebugPerformanceContext } from '../../utils/logs'
5453import { validateBwcBreakingChanges } from './bwc.validation'
55- import { REST_API_TYPE } from '../../apitypes'
5654
5755export async function compareVersionsOperations (
5856 prev : VersionParams ,
@@ -137,8 +135,8 @@ async function compareCurrentApiType(
137135 const { operations : prevOperations = [ ] } = await versionOperationsResolver ( apiType , prev ?. version ?? '' , prev ?. packageId ?? '' , undefined , false ) || { }
138136 const { operations : currOperations = [ ] } = await versionOperationsResolver ( apiType , curr ?. version ?? '' , curr ?. packageId ?? '' , undefined , false ) || { }
139137
140- const [ prevReducedOperationIdToHashMap , prevReducedOperationIdToOriginal ] = getOperationsHashMapByApiType ( apiType , prevOperations , ctx )
141- const [ currReducedOperationIdToHashMap , currReducedOperationIdToOriginal ] = getOperationsHashMapByApiType ( apiType , currOperations , ctx , true )
138+ const [ prevReducedOperationIdToHashMap , prevReducedOperationIdToOriginal ] = getOperationsHashMapByApiType ( apiBuilder , prevOperations , ctx )
139+ const [ currReducedOperationIdToHashMap , currReducedOperationIdToOriginal ] = getOperationsHashMapByApiType ( apiBuilder , currOperations , ctx , true )
142140
143141 const reducedOperationIds = new Set ( [ ...Object . keys ( prevReducedOperationIdToHashMap ) , ...Object . keys ( currReducedOperationIdToHashMap ) ] )
144142 const operationsMapping : OperationsMappingResult = { [ HANDLE_TYPE_ADDED ] : [ ] , [ HANDLE_TYPE_REMOVED ] : [ ] , [ HANDLE_TYPE_CHANGED ] : { } }
@@ -249,7 +247,7 @@ async function compareCurrentApiType(
249247 const { operations : currOperationsWithoutData = [ ] } = await versionOperationsResolver ( apiType , currVersion , currPackageId , previousBatch , false ) || { }
250248 const { operations : prevOperationsWithoutData = [ ] } = await versionOperationsResolver ( apiType , prevVersion , prevPackageId , currentBatch , false ) || { }
251249
252- const pairOperationsMap = createPairOperationsMap ( currGroupSlug , prevGroupSlug , currOperationsWithoutData , prevOperationsWithoutData )
250+ const pairOperationsMap = createPairOperationsMap ( currGroupSlug , prevGroupSlug , currOperationsWithoutData , prevOperationsWithoutData , apiBuilder )
253251 Object . values ( pairOperationsMap ) . forEach ( ( pair ) => {
254252 calculateApiAudienceTransitions ( pair . current , pair . previous , apiAudienceTransitions )
255253 } )
@@ -359,19 +357,26 @@ async function compareCurrentApiType(
359357 ]
360358}
361359
362- const createPairOperationsMap = ( currGroupSlug : string , prevGroupSlug : string , currentOperations : ResolvedOperation [ ] , previousOperations : ResolvedOperation [ ] ) : Record < string , { previous ?: ResolvedOperation ; current : ResolvedOperation } > => {
360+ const createPairOperationsMap = (
361+ currGroupSlug : string ,
362+ prevGroupSlug : string ,
363+ currentOperations : ResolvedOperation [ ] ,
364+ previousOperations : ResolvedOperation [ ] ,
365+ apiBuilder : ApiBuilder ,
366+ ) : Record < string , {
367+ previous ?: ResolvedOperation
368+ current : ResolvedOperation
369+ } > => {
363370
364371 const operationsMap : Record < string , { previous ?: ResolvedOperation ; current : ResolvedOperation } > = { }
365372
366373 for ( const currentOperation of currentOperations ) {
367- // todo
368- const normalizedOperationId = currentOperation . apiType === REST_API_TYPE ? slugify ( `${ currentOperation . metadata . path } -${ currentOperation . metadata . method } ` , [ ] , IGNORE_PATH_PARAM_UNIFIED_PLACEHOLDER ) : currentOperation . operationId
374+ const normalizedOperationId = apiBuilder . createNormalizedOperationId ?.( currentOperation ) ?? currentOperation . operationId
369375 operationsMap [ takeSubstringIf ( ! ! currGroupSlug , normalizedOperationId , currGroupSlug . length ) ] = { current : currentOperation }
370376 }
371377
372378 for ( const previousOperation of previousOperations ) {
373- // todo
374- const normalizedOperationId = previousOperation . apiType === REST_API_TYPE ? slugify ( `${ previousOperation . metadata . path } -${ previousOperation . metadata . method } ` , [ ] , IGNORE_PATH_PARAM_UNIFIED_PLACEHOLDER ) : previousOperation . operationId
379+ const normalizedOperationId = apiBuilder . createNormalizedOperationId ?.( previousOperation ) ?? previousOperation . operationId
375380 const prevOperationId = takeSubstringIf ( ! ! prevGroupSlug , normalizedOperationId , prevGroupSlug . length )
376381 const operationsMappingElement = operationsMap [ prevOperationId ]
377382 if ( operationsMappingElement ) {
0 commit comments