@@ -14,6 +14,7 @@ export class AuditParser {
1414 private static readonly electiveMatcher = / E L E C T I V E @ + / ;
1515 private static readonly wildcardMatcher = / \w @ / ;
1616 private static readonly rangeMatcher = / - \w + / ;
17+ private requirementIdMap = new Map < string , string > ( ) ;
1718
1819 constructor ( private readonly db : ReturnType < typeof database > ) {
1920 console . log ( "[AuditParser.new] AuditParser initialized" ) ;
@@ -100,27 +101,24 @@ export class AuditParser {
100101 . limit ( 1 ) ;
101102 }
102103
103- requirementIdMap = new Map < string , string > ( ) ;
104- generateRequirementId ( rule : Rule , downstreamIdentifier = "" ) : string {
104+ generateRequirementId ( rule : Rule , childRequirementBlockId : string ) : string {
105105 const requirementObjectStr = JSON . stringify ( {
106106 label : rule . label ,
107107 labelTag : rule . labelTag ,
108108 ruleType : rule . ruleType ,
109109 ruleId : rule . ruleId ,
110110 nodeId : rule . nodeId ,
111- downstreamIdentifier ,
111+ childRequirementBlockId ,
112112 } ) ;
113113
114114 const requirementId = createHash ( "md5" )
115115 . update ( requirementObjectStr )
116116 . digest ( "base64url" )
117117 . slice ( 0 , 10 ) ;
118118
119- if (
120- this . requirementIdMap . has ( requirementId ) &&
121- this . requirementIdMap . get ( requirementId ) !== requirementObjectStr
122- ) {
123- console . log ( "Collision detected between two requirementIds" ) ;
119+ const existingRequirementObjectStr = this . requirementIdMap . get ( rule . ruleId ) ;
120+ if ( existingRequirementObjectStr && existingRequirementObjectStr !== requirementObjectStr ) {
121+ console . error ( "Collision detected between two requirementIds" ) ;
124122 }
125123 this . requirementIdMap . set ( requirementId , requirementObjectStr ) ;
126124
@@ -228,10 +226,11 @@ export class AuditParser {
228226 }
229227 case "Complete" :
230228 case "Incomplete" : {
231- const downstreamIdentifier = AuditParser . suppressLabelPolymorphism ( rule . label ) ;
229+ const label = AuditParser . suppressLabelPolymorphism ( rule . label ) ;
230+ const downstreamIdentifier = label ;
232231 const requirementId = this . generateRequirementId ( rule , downstreamIdentifier ) ;
233232 ret . push ( {
234- label : AuditParser . suppressLabelPolymorphism ( rule . label ) ,
233+ label,
235234 requirementId,
236235 requirementType : "Marker" ,
237236 } ) ;
0 commit comments