Skip to content

Commit 06c66df

Browse files
committed
wip
Signed-off-by: Jan Kowalleck <[email protected]>
1 parent bdd6c7f commit 06c66df

File tree

4 files changed

+19
-10
lines changed

4 files changed

+19
-10
lines changed

src/serialize/json/normalize.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ export class ToolNormalizer extends BaseJsonNormalizer<Models.Tool> {
287287

288288
export class ToolsNormalizer extends BaseJsonNormalizer<Models.Tools> {
289289
normalize(data: Models.Tools, options: NormalizerOptions): Normalized.ToolsType {
290-
if (data.tools.size > 0) {
290+
if (data.tools.size > 0 || !this._factory.spec.supportsToolsComponentsServices) {
291291
return this._factory.makeForTool().normalizeIterable(
292292
new ToolRepository(chainI<Models.Tool>(
293293
Array.from(data.components, Tool.fromComponent),

src/serialize/xml/normalize.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ export class MetadataNormalizer extends BaseXmlNormalizer<Models.Metadata> {
244244
}
245245
: undefined
246246
const tools: SimpleXml.Element | undefined = data.tools.size > 0
247-
? this._factory.makeForTools().normalize(data.tools, options)
247+
? this._factory.makeForTools().normalize(data.tools, options, 'tools')
248248
: undefined
249249
const authors: SimpleXml.Element | undefined = data.authors.size > 0
250250
? {
@@ -362,7 +362,7 @@ export class ToolNormalizer extends BaseXmlNormalizer<Models.Tool> {
362362
export class ToolsNormalizer extends BaseXmlNormalizer<Models.Tools> {
363363
normalize (data: Models.Tools, options: NormalizerOptions, elementName: string): SimpleXml.Element {
364364
let children: SimpleXml.Element[]
365-
if (data.tools.size > 0) {
365+
if (data.tools.size > 0 || !this._factory.spec.supportsToolsComponentsServices) {
366366
children = this._factory.makeForTool().normalizeIterable(
367367
new ToolRepository(chainI<Models.Tool>(
368368
Array.from(data.components, Tool.fromComponent),
@@ -885,11 +885,7 @@ export class VulnerabilityNormalizer extends BaseXmlNormalizer<Models.Vulnerabil
885885
}
886886
: undefined
887887
const tools: SimpleXml.Element | undefined = data.tools.size > 0
888-
? {
889-
type: 'element',
890-
name: 'tools',
891-
children: this._factory.makeForTools().normalize(data.tools, options)
892-
}
888+
? this._factory.makeForTools().normalize(data.tools, options, 'tools')
893889
: undefined
894890
const affects: SimpleXml.Element | undefined = data.affects.size > 0
895891
? {

src/spec/_protocol.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ export interface _SpecProtocol {
4747
supportsMetadataProperties: boolean
4848
supportsExternalReferenceHashes: boolean
4949
supportsLicenseAcknowledgement: boolean
50+
supportsToolsComponentsServices:boolean
5051
}
5152

5253
/**
@@ -75,6 +76,7 @@ export class _Spec implements _SpecProtocol {
7576
readonly #supportsMetadataProperties: boolean
7677
readonly #supportsExternalReferenceHashes: boolean
7778
readonly #supportsLicenseAcknowledgement: boolean
79+
readonly #supportsToolsComponentsServices:boolean
7880

7981
constructor (
8082
version: Version,
@@ -94,7 +96,8 @@ export class _Spec implements _SpecProtocol {
9496
supportsMetadataLicenses: boolean,
9597
supportsMetadataProperties: boolean,
9698
supportsExternalReferenceHashes: boolean,
97-
supportsLicenseAcknowledgement: boolean
99+
supportsLicenseAcknowledgement: boolean,
100+
supportsToolsComponentsServices:boolean
98101
) {
99102
this.#version = version
100103
this.#formats = new Set(formats)
@@ -114,6 +117,7 @@ export class _Spec implements _SpecProtocol {
114117
this.#supportsMetadataProperties = supportsMetadataProperties
115118
this.#supportsExternalReferenceHashes = supportsExternalReferenceHashes
116119
this.#supportsLicenseAcknowledgement = supportsLicenseAcknowledgement
120+
this.#supportsToolsComponentsServices=supportsToolsComponentsServices
117121
}
118122

119123
get version (): Version {
@@ -194,4 +198,8 @@ export class _Spec implements _SpecProtocol {
194198
get supportsLicenseAcknowledgement (): boolean {
195199
return this.#supportsLicenseAcknowledgement
196200
}
201+
202+
get supportsToolsComponentsServices(): boolean {
203+
return this.#supportsToolsComponentsServices
204+
}
197205
}

src/spec/consts.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ export const Spec1dot2: Readonly<_SpecProtocol> = Object.freeze(new _Spec(
8585
false,
8686
false,
8787
false,
88+
false,
8889
false
8990
))
9091

@@ -148,6 +149,7 @@ export const Spec1dot3: Readonly<_SpecProtocol> = Object.freeze(new _Spec(
148149
true,
149150
true,
150151
true,
152+
false,
151153
false
152154
))
153155

@@ -218,6 +220,7 @@ export const Spec1dot4: Readonly<_SpecProtocol> = Object.freeze(new _Spec(
218220
true,
219221
true,
220222
true,
223+
false,
221224
false
222225
))
223226

@@ -317,7 +320,8 @@ export const Spec1dot5: Readonly<_SpecProtocol> = Object.freeze(new _Spec(
317320
true,
318321
true,
319322
true,
320-
false
323+
false,
324+
true
321325
))
322326

323327
/** Specification v1.6 */
@@ -421,6 +425,7 @@ export const Spec1dot6: Readonly<_SpecProtocol> = Object.freeze(new _Spec(
421425
true,
422426
true,
423427
true,
428+
true,
424429
true
425430
))
426431

0 commit comments

Comments
 (0)