@@ -18,7 +18,7 @@ Copyright (c) OWASP Foundation. All Rights Reserved.
1818*/
1919
2020import { isNotUndefined } from '../../_helpers/notUndefined'
21- import type { Sortable } from '../../_helpers/sortable'
21+ import type { SortableIterable } from '../../_helpers/sortable'
2222import type { Stringable } from '../../_helpers/stringable'
2323import { treeIteratorSymbol } from '../../_helpers/tree'
2424import * as Models from '../../models'
@@ -98,9 +98,7 @@ const xmlNamespace: ReadonlyMap<SpecVersion, string> = new Map([
9898 [ SpecVersion . v1dot4 , 'http://cyclonedx.org/schema/bom/1.4' ]
9999] )
100100
101- type SortableIterable < T > = Iterable < T > & Sortable < T >
102-
103- interface Normalizer < TModel , TNormalized > {
101+ interface XmlNormalizer < TModel , TNormalized > {
104102 normalize : ( data : TModel , options : NormalizerOptions , elementName ?: string ) => TNormalized | undefined
105103
106104 /** @since 1.5.1 */
@@ -109,10 +107,10 @@ interface Normalizer<TModel, TNormalized> {
109107 normalizeRepository ?: [ 'normalizeIterable' ]
110108}
111109
112- abstract class Base < TModel , TNormalized = SimpleXml . Element > implements Normalizer < TModel , TNormalized > {
110+ abstract class BaseXmlNormalizer < TModel , TNormalized = SimpleXml . Element > implements XmlNormalizer < TModel , TNormalized > {
113111 protected readonly _factory : Factory
114112
115- constructor ( factory : Base < TModel , TNormalized > [ 'factory' ] ) {
113+ constructor ( factory : Factory ) {
116114 this . _factory = factory
117115 }
118116
@@ -130,7 +128,7 @@ abstract class Base<TModel, TNormalized=SimpleXml.Element> implements Normalizer
130128 * since empty strings need to be treated as undefined/null
131129 */
132130
133- export class BomNormalizer extends Base < Models . Bom > {
131+ export class BomNormalizer extends BaseXmlNormalizer < Models . Bom > {
134132 normalize ( data : Models . Bom , options : NormalizerOptions ) : SimpleXml . Element {
135133 const components : SimpleXml . Element = {
136134 // spec < 1.4 always requires a 'components' element
@@ -162,7 +160,7 @@ export class BomNormalizer extends Base<Models.Bom> {
162160 }
163161}
164162
165- export class MetadataNormalizer extends Base < Models . Metadata > {
163+ export class MetadataNormalizer extends BaseXmlNormalizer < Models . Metadata > {
166164 normalize ( data : Models . Metadata , options : NormalizerOptions , elementName : string ) : SimpleXml . Element {
167165 const orgEntityNormalizer = this . _factory . makeForOrganizationalEntity ( )
168166 const timestamp : SimpleXml . Element | undefined = data . timestamp === undefined
@@ -208,7 +206,7 @@ export class MetadataNormalizer extends Base<Models.Metadata> {
208206 }
209207}
210208
211- export class ToolNormalizer extends Base < Models . Tool > {
209+ export class ToolNormalizer extends BaseXmlNormalizer < Models . Tool > {
212210 normalize ( data : Models . Tool , options : NormalizerOptions , elementName : string ) : SimpleXml . Element {
213211 const hashes : SimpleXml . Element | undefined = data . hashes . size > 0
214212 ? {
@@ -252,7 +250,7 @@ export class ToolNormalizer extends Base<Models.Tool> {
252250 normalizeRepository = this . normalizeIterable
253251}
254252
255- export class HashNormalizer extends Base < Models . Hash > {
253+ export class HashNormalizer extends BaseXmlNormalizer < Models . Hash > {
256254 normalize ( [ algorithm , content ] : Models . Hash , options : NormalizerOptions , elementName : string ) : SimpleXml . Element | undefined {
257255 const spec = this . _factory . spec
258256 return spec . supportsHashAlgorithm ( algorithm ) && spec . supportsHashValue ( content )
@@ -280,7 +278,7 @@ export class HashNormalizer extends Base<Models.Hash> {
280278 normalizeRepository = this . normalizeIterable
281279}
282280
283- export class OrganizationalContactNormalizer extends Base < Models . OrganizationalContact > {
281+ export class OrganizationalContactNormalizer extends BaseXmlNormalizer < Models . OrganizationalContact > {
284282 normalize ( data : Models . OrganizationalContact , options : NormalizerOptions , elementName : string ) : SimpleXml . Element {
285283 return {
286284 type : 'element' ,
@@ -306,7 +304,7 @@ export class OrganizationalContactNormalizer extends Base<Models.OrganizationalC
306304 normalizeRepository = this . normalizeIterable
307305}
308306
309- export class OrganizationalEntityNormalizer extends Base < Models . OrganizationalEntity > {
307+ export class OrganizationalEntityNormalizer extends BaseXmlNormalizer < Models . OrganizationalEntity > {
310308 normalize ( data : Models . OrganizationalEntity , options : NormalizerOptions , elementName : string ) : SimpleXml . Element {
311309 return {
312310 type : 'element' ,
@@ -321,7 +319,7 @@ export class OrganizationalEntityNormalizer extends Base<Models.OrganizationalEn
321319 }
322320}
323321
324- export class ComponentNormalizer extends Base < Models . Component > {
322+ export class ComponentNormalizer extends BaseXmlNormalizer < Models . Component > {
325323 normalize ( data : Models . Component , options : NormalizerOptions , elementName : string ) : SimpleXml . Element | undefined {
326324 const spec = this . _factory . spec
327325 if ( ! spec . supportsComponentType ( data . type ) ) {
@@ -421,7 +419,7 @@ export class ComponentNormalizer extends Base<Models.Component> {
421419 normalizeRepository = this . normalizeIterable
422420}
423421
424- export class LicenseNormalizer extends Base < Models . License > {
422+ export class LicenseNormalizer extends BaseXmlNormalizer < Models . License > {
425423 normalize ( data : Models . License , options : NormalizerOptions ) : SimpleXml . Element {
426424 switch ( true ) {
427425 case data instanceof Models . NamedLicense :
@@ -487,7 +485,7 @@ export class LicenseNormalizer extends Base<Models.License> {
487485 normalizeRepository = this . normalizeIterable
488486}
489487
490- export class SWIDNormalizer extends Base < Models . SWID > {
488+ export class SWIDNormalizer extends BaseXmlNormalizer < Models . SWID > {
491489 normalize ( data : Models . SWID , options : NormalizerOptions , elementName : string ) : SimpleXml . Element {
492490 const url = data . url ?. toString ( )
493491 return {
@@ -514,7 +512,7 @@ export class SWIDNormalizer extends Base<Models.SWID> {
514512 }
515513}
516514
517- export class ExternalReferenceNormalizer extends Base < Models . ExternalReference > {
515+ export class ExternalReferenceNormalizer extends BaseXmlNormalizer < Models . ExternalReference > {
518516 normalize ( data : Models . ExternalReference , options : NormalizerOptions , elementName : string ) : SimpleXml . Element | undefined {
519517 const url = data . url . toString ( )
520518 return this . _factory . spec . supportsExternalReferenceType ( data . type ) &&
@@ -548,7 +546,7 @@ export class ExternalReferenceNormalizer extends Base<Models.ExternalReference>
548546 normalizeRepository = this . normalizeIterable
549547}
550548
551- export class AttachmentNormalizer extends Base < Models . Attachment > {
549+ export class AttachmentNormalizer extends BaseXmlNormalizer < Models . Attachment > {
552550 normalize ( data : Models . Attachment , options : NormalizerOptions , elementName : string ) : SimpleXml . Element {
553551 return {
554552 type : 'element' ,
@@ -562,7 +560,7 @@ export class AttachmentNormalizer extends Base<Models.Attachment> {
562560 }
563561}
564562
565- export class PropertyNormalizer extends Base < Models . Property > {
563+ export class PropertyNormalizer extends BaseXmlNormalizer < Models . Property > {
566564 normalize ( data : Models . Property , options : NormalizerOptions , elementName : string ) : SimpleXml . Element {
567565 return {
568566 type : 'element' ,
@@ -587,7 +585,7 @@ export class PropertyNormalizer extends Base<Models.Property> {
587585 normalizeRepository = this . normalizeIterable
588586}
589587
590- export class DependencyGraphNormalizer extends Base < Models . Bom > {
588+ export class DependencyGraphNormalizer extends BaseXmlNormalizer < Models . Bom > {
591589 normalize ( data : Models . Bom , options : NormalizerOptions , elementName : string ) : SimpleXml . Element | undefined {
592590 const allRefs = new Map < Models . BomRef , Models . BomRefRepository > ( )
593591 if ( data . metadata . component !== undefined ) {
0 commit comments