Skip to content

Commit 566f49f

Browse files
committed
wip
Signed-off-by: Jan Kowalleck <[email protected]>
1 parent 788a9ff commit 566f49f

File tree

4 files changed

+21
-11
lines changed

4 files changed

+21
-11
lines changed

src/serialize/json/normalize.ts

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

295295
export class ToolsNormalizer extends BaseJsonNormalizer<Models.Tools> {
296296
normalize(data: Models.Tools, options: NormalizerOptions): Normalized.ToolsType {
297-
if (data.tools.size > 0) {
297+
if (data.tools.size > 0 || !this._factory.spec.supportsToolsComponentsServices) {
298298
return this._factory.makeForTool().normalizeIterable(
299299
new ToolRepository(chainI<Models.Tool>(
300300
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
@@ -258,7 +258,7 @@ export class MetadataNormalizer extends BaseXmlNormalizer<Models.Metadata> {
258258
}
259259
: undefined
260260
const tools: SimpleXml.Element | undefined = data.tools.size > 0
261-
? this._factory.makeForTools().normalize(data.tools, options)
261+
? this._factory.makeForTools().normalize(data.tools, options, 'tools')
262262
: undefined
263263
const authors: SimpleXml.Element | undefined = data.authors.size > 0
264264
? {
@@ -376,7 +376,7 @@ export class ToolNormalizer extends BaseXmlNormalizer<Models.Tool> {
376376
export class ToolsNormalizer extends BaseXmlNormalizer<Models.Tools> {
377377
normalize (data: Models.Tools, options: NormalizerOptions, elementName: string): SimpleXml.Element {
378378
let children: SimpleXml.Element[]
379-
if (data.tools.size > 0) {
379+
if (data.tools.size > 0 || !this._factory.spec.supportsToolsComponentsServices) {
380380
children = this._factory.makeForTool().normalizeIterable(
381381
new ToolRepository(chainI<Models.Tool>(
382382
Array.from(data.components, Tool.fromComponent),
@@ -968,11 +968,7 @@ export class VulnerabilityNormalizer extends BaseXmlNormalizer<Models.Vulnerabil
968968
}
969969
: undefined
970970
const tools: SimpleXml.Element | undefined = data.tools.size > 0
971-
? {
972-
type: 'element',
973-
name: 'tools',
974-
children: this._factory.makeForTools().normalize(data.tools, options)
975-
}
971+
? this._factory.makeForTools().normalize(data.tools, options, 'tools')
976972
: undefined
977973
const affects: SimpleXml.Element | undefined = data.affects.size > 0
978974
? {

src/spec/_protocol.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ export interface _SpecProtocol {
4848
supportsExternalReferenceHashes: boolean
4949
supportsLicenseAcknowledgement: boolean
5050
supportsServices:boolean
51+
supportsToolsComponentsServices:boolean
5152
}
5253

5354
/**
@@ -77,6 +78,7 @@ export class _Spec implements _SpecProtocol {
7778
readonly #supportsExternalReferenceHashes: boolean
7879
readonly #supportsLicenseAcknowledgement: boolean
7980
readonly #supportsServices: boolean
81+
readonly #supportsToolsComponentsServices:boolean
8082

8183
constructor (
8284
version: Version,
@@ -98,6 +100,8 @@ export class _Spec implements _SpecProtocol {
98100
supportsExternalReferenceHashes: boolean,
99101
supportsLicenseAcknowledgement: boolean,
100102
supportsServices:boolean
103+
supportsLicenseAcknowledgement: boolean,
104+
supportsToolsComponentsServices:boolean
101105
) {
102106
this.#version = version
103107
this.#formats = new Set(formats)
@@ -118,6 +122,7 @@ export class _Spec implements _SpecProtocol {
118122
this.#supportsExternalReferenceHashes = supportsExternalReferenceHashes
119123
this.#supportsLicenseAcknowledgement = supportsLicenseAcknowledgement
120124
this.#supportsServices = supportsServices
125+
this.#supportsToolsComponentsServices=supportsToolsComponentsServices
121126
}
122127

123128
get version (): Version {
@@ -202,4 +207,8 @@ export class _Spec implements _SpecProtocol {
202207
get supportsServices (): boolean {
203208
return this.#supportsServices
204209
}
210+
211+
get supportsToolsComponentsServices(): boolean {
212+
return this.#supportsToolsComponentsServices
213+
}
205214
}

src/spec/consts.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ export const Spec1dot2: Readonly<_SpecProtocol> = Object.freeze(new _Spec(
8686
false,
8787
false,
8888
false,
89-
true
89+
true,
90+
false
9091
))
9192

9293
/** Specification v1.3 */
@@ -150,7 +151,8 @@ export const Spec1dot3: Readonly<_SpecProtocol> = Object.freeze(new _Spec(
150151
true,
151152
true,
152153
false,
153-
true
154+
true,
155+
false
154156
))
155157

156158
/** Specification v1.4 */
@@ -221,7 +223,8 @@ export const Spec1dot4: Readonly<_SpecProtocol> = Object.freeze(new _Spec(
221223
true,
222224
true,
223225
false,
224-
true
226+
true,
227+
false
225228
))
226229

227230
/** Specification v1.5 */
@@ -321,6 +324,7 @@ export const Spec1dot5: Readonly<_SpecProtocol> = Object.freeze(new _Spec(
321324
true,
322325
true,
323326
false,
327+
true,
324328
true
325329
))
326330

@@ -426,6 +430,7 @@ export const Spec1dot6: Readonly<_SpecProtocol> = Object.freeze(new _Spec(
426430
true,
427431
true,
428432
true,
433+
true,
429434
true
430435
))
431436

0 commit comments

Comments
 (0)