sbom-cyclonedx 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +15 -0
  3. data/.gitlab-ci.yml +49 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +72 -0
  6. data/.vscode/settings.json +6 -0
  7. data/CHANGELOG.md +9 -0
  8. data/CODE_OF_CONDUCT.md +132 -0
  9. data/Gemfile +26 -0
  10. data/Gemfile.lock +179 -0
  11. data/LICENSE.txt +21 -0
  12. data/README.md +39 -0
  13. data/Rakefile +36 -0
  14. data/Steepfile +14 -0
  15. data/bin/console +11 -0
  16. data/bin/rbs_spec +9 -0
  17. data/bin/setup +8 -0
  18. data/bom-1.6.schema.json +7334 -0
  19. data/lib/email_address_extension.rb +26 -0
  20. data/lib/sbom/cyclone_dx/enum.rb +2178 -0
  21. data/lib/sbom/cyclone_dx/field.rb +404 -0
  22. data/lib/sbom/cyclone_dx/pattern.rb +43 -0
  23. data/lib/sbom/cyclone_dx/record/advisory.rb +17 -0
  24. data/lib/sbom/cyclone_dx/record/annotation.rb +46 -0
  25. data/lib/sbom/cyclone_dx/record/attachment.rb +21 -0
  26. data/lib/sbom/cyclone_dx/record/base.rb +244 -0
  27. data/lib/sbom/cyclone_dx/record/cipher_suite.rb +23 -0
  28. data/lib/sbom/cyclone_dx/record/co2_measure.rb +18 -0
  29. data/lib/sbom/cyclone_dx/record/command.rb +18 -0
  30. data/lib/sbom/cyclone_dx/record/commit.rb +25 -0
  31. data/lib/sbom/cyclone_dx/record/component.rb +126 -0
  32. data/lib/sbom/cyclone_dx/record/component_data.rb +46 -0
  33. data/lib/sbom/cyclone_dx/record/component_evidence.rb +68 -0
  34. data/lib/sbom/cyclone_dx/record/component_identity_evidence.rb +36 -0
  35. data/lib/sbom/cyclone_dx/record/composition.rb +33 -0
  36. data/lib/sbom/cyclone_dx/record/condition.rb +20 -0
  37. data/lib/sbom/cyclone_dx/record/copyright.rb +16 -0
  38. data/lib/sbom/cyclone_dx/record/crypto_properties.rb +137 -0
  39. data/lib/sbom/cyclone_dx/record/data_governance.rb +21 -0
  40. data/lib/sbom/cyclone_dx/record/data_governance_responsible_party.rb +22 -0
  41. data/lib/sbom/cyclone_dx/record/declarations.rb +193 -0
  42. data/lib/sbom/cyclone_dx/record/definitions.rb +17 -0
  43. data/lib/sbom/cyclone_dx/record/dependency.rb +21 -0
  44. data/lib/sbom/cyclone_dx/record/diff.rb +18 -0
  45. data/lib/sbom/cyclone_dx/record/energy_consumption.rb +31 -0
  46. data/lib/sbom/cyclone_dx/record/energy_measure.rb +18 -0
  47. data/lib/sbom/cyclone_dx/record/energy_provider.rb +31 -0
  48. data/lib/sbom/cyclone_dx/record/environmental_consideration.rb +20 -0
  49. data/lib/sbom/cyclone_dx/record/event.rb +31 -0
  50. data/lib/sbom/cyclone_dx/record/external_reference.rb +25 -0
  51. data/lib/sbom/cyclone_dx/record/fairness_assessment.rb +22 -0
  52. data/lib/sbom/cyclone_dx/record/formula.rb +29 -0
  53. data/lib/sbom/cyclone_dx/record/graphic.rb +19 -0
  54. data/lib/sbom/cyclone_dx/record/graphics_collection.rb +19 -0
  55. data/lib/sbom/cyclone_dx/record/hash_data.rb +18 -0
  56. data/lib/sbom/cyclone_dx/record/identifiable_action.rb +21 -0
  57. data/lib/sbom/cyclone_dx/record/input.rb +34 -0
  58. data/lib/sbom/cyclone_dx/record/input_output_ml_parameter.rb +17 -0
  59. data/lib/sbom/cyclone_dx/record/issue.rb +36 -0
  60. data/lib/sbom/cyclone_dx/record/license.rb +90 -0
  61. data/lib/sbom/cyclone_dx/record/license_choice.rb +35 -0
  62. data/lib/sbom/cyclone_dx/record/metadata.rb +55 -0
  63. data/lib/sbom/cyclone_dx/record/model_card.rb +89 -0
  64. data/lib/sbom/cyclone_dx/record/note.rb +20 -0
  65. data/lib/sbom/cyclone_dx/record/organizational_contact.rb +26 -0
  66. data/lib/sbom/cyclone_dx/record/organizational_entity.rb +28 -0
  67. data/lib/sbom/cyclone_dx/record/output.rb +34 -0
  68. data/lib/sbom/cyclone_dx/record/parameter.rb +20 -0
  69. data/lib/sbom/cyclone_dx/record/patch.rb +23 -0
  70. data/lib/sbom/cyclone_dx/record/performance_metric.rb +30 -0
  71. data/lib/sbom/cyclone_dx/record/postal_address.rb +34 -0
  72. data/lib/sbom/cyclone_dx/record/property.rb +18 -0
  73. data/lib/sbom/cyclone_dx/record/rating.rb +27 -0
  74. data/lib/sbom/cyclone_dx/record/release_notes.rb +44 -0
  75. data/lib/sbom/cyclone_dx/record/resource_reference_choice.rb +22 -0
  76. data/lib/sbom/cyclone_dx/record/risk.rb +18 -0
  77. data/lib/sbom/cyclone_dx/record/root.rb +63 -0
  78. data/lib/sbom/cyclone_dx/record/secured_by.rb +20 -0
  79. data/lib/sbom/cyclone_dx/record/service.rb +54 -0
  80. data/lib/sbom/cyclone_dx/record/service_data.rb +32 -0
  81. data/lib/sbom/cyclone_dx/record/signature.rb +85 -0
  82. data/lib/sbom/cyclone_dx/record/standard.rb +72 -0
  83. data/lib/sbom/cyclone_dx/record/step.rb +24 -0
  84. data/lib/sbom/cyclone_dx/record/swid.rb +29 -0
  85. data/lib/sbom/cyclone_dx/record/task.rb +56 -0
  86. data/lib/sbom/cyclone_dx/record/tools.rb +20 -0
  87. data/lib/sbom/cyclone_dx/record/trigger.rb +48 -0
  88. data/lib/sbom/cyclone_dx/record/version.rb +24 -0
  89. data/lib/sbom/cyclone_dx/record/volume.rb +33 -0
  90. data/lib/sbom/cyclone_dx/record/vulnerability.rb +119 -0
  91. data/lib/sbom/cyclone_dx/record/vulnerability_source.rb +20 -0
  92. data/lib/sbom/cyclone_dx/record/workflow.rb +59 -0
  93. data/lib/sbom/cyclone_dx/record/workspace.rb +45 -0
  94. data/lib/sbom/cyclone_dx/record.rb +12 -0
  95. data/lib/sbom/cyclone_dx/validator/array_validator.rb +66 -0
  96. data/lib/sbom/cyclone_dx/validator/base_validator.rb +43 -0
  97. data/lib/sbom/cyclone_dx/validator/boolean_validator.rb +16 -0
  98. data/lib/sbom/cyclone_dx/validator/date_time_validator.rb +29 -0
  99. data/lib/sbom/cyclone_dx/validator/email_address_validator.rb +31 -0
  100. data/lib/sbom/cyclone_dx/validator/float_validator.rb +30 -0
  101. data/lib/sbom/cyclone_dx/validator/integer_validator.rb +30 -0
  102. data/lib/sbom/cyclone_dx/validator/record_validator.rb +26 -0
  103. data/lib/sbom/cyclone_dx/validator/string_validator.rb +33 -0
  104. data/lib/sbom/cyclone_dx/validator/union_validator.rb +39 -0
  105. data/lib/sbom/cyclone_dx/validator/uri_validator.rb +32 -0
  106. data/lib/sbom/cyclone_dx/validator.rb +32 -0
  107. data/lib/sbom/cyclone_dx/version.rb +7 -0
  108. data/lib/sbom/cyclone_dx.rb +39 -0
  109. data/rbs_collection.lock.yaml +288 -0
  110. data/rbs_collection.yaml +31 -0
  111. data/sbom-cyclone_dx.gemspec +32 -0
  112. data/sig/email_address_extension.rbs +14 -0
  113. data/sig/sbom/cyclone_dx/enum.rbs +93 -0
  114. data/sig/sbom/cyclone_dx/field.rbs +434 -0
  115. data/sig/sbom/cyclone_dx/pattern.rbs +24 -0
  116. data/sig/sbom/cyclone_dx/record/advisory.rbs +19 -0
  117. data/sig/sbom/cyclone_dx/record/annotation.rbs +63 -0
  118. data/sig/sbom/cyclone_dx/record/attachment.rbs +24 -0
  119. data/sig/sbom/cyclone_dx/record/base.rbs +62 -0
  120. data/sig/sbom/cyclone_dx/record/cipher_suite.rbs +24 -0
  121. data/sig/sbom/cyclone_dx/record/co2_measure.rbs +14 -0
  122. data/sig/sbom/cyclone_dx/record/command.rbs +19 -0
  123. data/sig/sbom/cyclone_dx/record/commit.rbs +34 -0
  124. data/sig/sbom/cyclone_dx/record/component.rbs +203 -0
  125. data/sig/sbom/cyclone_dx/record/component_data.rbs +73 -0
  126. data/sig/sbom/cyclone_dx/record/component_evidence.rbs +115 -0
  127. data/sig/sbom/cyclone_dx/record/component_identity_evidence.rbs +53 -0
  128. data/sig/sbom/cyclone_dx/record/composition.rbs +39 -0
  129. data/sig/sbom/cyclone_dx/record/condition.rbs +24 -0
  130. data/sig/sbom/cyclone_dx/record/copyright.rbs +14 -0
  131. data/sig/sbom/cyclone_dx/record/crypto_properties.rbs +268 -0
  132. data/sig/sbom/cyclone_dx/record/data_governance.rbs +24 -0
  133. data/sig/sbom/cyclone_dx/record/data_governance_responsible_party.rbs +19 -0
  134. data/sig/sbom/cyclone_dx/record/declarations.rbs +352 -0
  135. data/sig/sbom/cyclone_dx/record/definitions.rbs +14 -0
  136. data/sig/sbom/cyclone_dx/record/dependency.rbs +24 -0
  137. data/sig/sbom/cyclone_dx/record/diff.rbs +19 -0
  138. data/sig/sbom/cyclone_dx/record/energy_consumption.rbs +39 -0
  139. data/sig/sbom/cyclone_dx/record/energy_measure.rbs +14 -0
  140. data/sig/sbom/cyclone_dx/record/energy_provider.rbs +39 -0
  141. data/sig/sbom/cyclone_dx/record/environmental_consideration.rbs +19 -0
  142. data/sig/sbom/cyclone_dx/record/event.rbs +44 -0
  143. data/sig/sbom/cyclone_dx/record/external_reference.rbs +29 -0
  144. data/sig/sbom/cyclone_dx/record/fairness_assessment.rbs +29 -0
  145. data/sig/sbom/cyclone_dx/record/formula.rbs +34 -0
  146. data/sig/sbom/cyclone_dx/record/graphic.rbs +19 -0
  147. data/sig/sbom/cyclone_dx/record/graphics_collection.rbs +19 -0
  148. data/sig/sbom/cyclone_dx/record/hash_data.rbs +19 -0
  149. data/sig/sbom/cyclone_dx/record/identifiable_action.rbs +24 -0
  150. data/sig/sbom/cyclone_dx/record/input.rbs +44 -0
  151. data/sig/sbom/cyclone_dx/record/input_output_ml_parameter.rbs +14 -0
  152. data/sig/sbom/cyclone_dx/record/issue.rbs +53 -0
  153. data/sig/sbom/cyclone_dx/record/license.rbs +134 -0
  154. data/sig/sbom/cyclone_dx/record/license_choice.rbs +39 -0
  155. data/sig/sbom/cyclone_dx/record/metadata.rbs +82 -0
  156. data/sig/sbom/cyclone_dx/record/model_card.rbs +143 -0
  157. data/sig/sbom/cyclone_dx/record/note.rbs +19 -0
  158. data/sig/sbom/cyclone_dx/record/organizational_contact.rbs +29 -0
  159. data/sig/sbom/cyclone_dx/record/organizational_entity.rbs +34 -0
  160. data/sig/sbom/cyclone_dx/record/output.rbs +44 -0
  161. data/sig/sbom/cyclone_dx/record/parameter.rbs +24 -0
  162. data/sig/sbom/cyclone_dx/record/patch.rbs +24 -0
  163. data/sig/sbom/cyclone_dx/record/performance_metric.rbs +43 -0
  164. data/sig/sbom/cyclone_dx/record/postal_address.rbs +44 -0
  165. data/sig/sbom/cyclone_dx/record/property.rbs +19 -0
  166. data/sig/sbom/cyclone_dx/record/rating.rbs +39 -0
  167. data/sig/sbom/cyclone_dx/record/release_notes.rbs +64 -0
  168. data/sig/sbom/cyclone_dx/record/resource_reference_choice.rbs +19 -0
  169. data/sig/sbom/cyclone_dx/record/risk.rbs +19 -0
  170. data/sig/sbom/cyclone_dx/record/root.rbs +84 -0
  171. data/sig/sbom/cyclone_dx/record/secured_by.rbs +19 -0
  172. data/sig/sbom/cyclone_dx/record/service.rbs +99 -0
  173. data/sig/sbom/cyclone_dx/record/service_data.rbs +44 -0
  174. data/sig/sbom/cyclone_dx/record/signature.rbs +130 -0
  175. data/sig/sbom/cyclone_dx/record/standard.rbs +132 -0
  176. data/sig/sbom/cyclone_dx/record/step.rbs +29 -0
  177. data/sig/sbom/cyclone_dx/record/swid.rbs +44 -0
  178. data/sig/sbom/cyclone_dx/record/task.rbs +84 -0
  179. data/sig/sbom/cyclone_dx/record/tools.rbs +19 -0
  180. data/sig/sbom/cyclone_dx/record/trigger.rbs +69 -0
  181. data/sig/sbom/cyclone_dx/record/version.rbs +24 -0
  182. data/sig/sbom/cyclone_dx/record/volume.rbs +49 -0
  183. data/sig/sbom/cyclone_dx/record/vulnerability.rbs +209 -0
  184. data/sig/sbom/cyclone_dx/record/vulnerability_source.rbs +19 -0
  185. data/sig/sbom/cyclone_dx/record/workflow.rbs +94 -0
  186. data/sig/sbom/cyclone_dx/record/workspace.rbs +69 -0
  187. data/sig/sbom/cyclone_dx/record.rbs +161 -0
  188. data/sig/sbom/cyclone_dx/type.rbs +16 -0
  189. data/sig/sbom/cyclone_dx/validator/array_validator.rbs +31 -0
  190. data/sig/sbom/cyclone_dx/validator/base_validator.rbs +21 -0
  191. data/sig/sbom/cyclone_dx/validator/boolean_validator.rbs +9 -0
  192. data/sig/sbom/cyclone_dx/validator/date_time_validator.rbs +10 -0
  193. data/sig/sbom/cyclone_dx/validator/email_address_validator.rbs +10 -0
  194. data/sig/sbom/cyclone_dx/validator/float_validator.rbs +12 -0
  195. data/sig/sbom/cyclone_dx/validator/integer_validator.rbs +12 -0
  196. data/sig/sbom/cyclone_dx/validator/record_validator.rbs +12 -0
  197. data/sig/sbom/cyclone_dx/validator/string_validator.rbs +14 -0
  198. data/sig/sbom/cyclone_dx/validator/union_validator.rbs +24 -0
  199. data/sig/sbom/cyclone_dx/validator/uri_validator.rbs +10 -0
  200. data/sig/sbom/cyclone_dx/validator.rbs +66 -0
  201. data/sig/sbom/cyclone_dx.rbs +13 -0
  202. data/sig/types.rbs +45 -0
  203. data/spec/email_address_extension_spec.rb +27 -0
  204. data/spec/factories/factory_helper.rb +78 -0
  205. data/spec/factories/record/advisory_factory.rb +11 -0
  206. data/spec/factories/record/annotation_factory.rb +63 -0
  207. data/spec/factories/record/attachment_factory.rb +9 -0
  208. data/spec/factories/record/cipher_suite_factory.rb +26 -0
  209. data/spec/factories/record/co2_measure_factory.rb +9 -0
  210. data/spec/factories/record/command_factory.rb +10 -0
  211. data/spec/factories/record/commit_factory.rb +13 -0
  212. data/spec/factories/record/component_data_factory.rb +28 -0
  213. data/spec/factories/record/component_evidence_factory.rb +44 -0
  214. data/spec/factories/record/component_factory.rb +102 -0
  215. data/spec/factories/record/component_identity_evidence_factory.rb +25 -0
  216. data/spec/factories/record/composition_factory.rb +20 -0
  217. data/spec/factories/record/condition_factory.rb +11 -0
  218. data/spec/factories/record/copyright_factory.rb +9 -0
  219. data/spec/factories/record/crypto_properties_factory.rb +191 -0
  220. data/spec/factories/record/data_governance_factory.rb +11 -0
  221. data/spec/factories/record/data_governance_responsible_party_factory.rb +31 -0
  222. data/spec/factories/record/declarations_factory.rb +145 -0
  223. data/spec/factories/record/definitions_factory.rb +9 -0
  224. data/spec/factories/record/dependency_factory.rb +12 -0
  225. data/spec/factories/record/diff_factory.rb +24 -0
  226. data/spec/factories/record/energy_consumption_factory.rb +15 -0
  227. data/spec/factories/record/energy_measure_factory.rb +9 -0
  228. data/spec/factories/record/energy_provider_factory.rb +15 -0
  229. data/spec/factories/record/environmental_consideration_factory.rb +10 -0
  230. data/spec/factories/record/event_factory.rb +15 -0
  231. data/spec/factories/record/external_reference_factory.rb +13 -0
  232. data/spec/factories/record/fairness_assessment_factory.rb +12 -0
  233. data/spec/factories/record/formula_factory.rb +13 -0
  234. data/spec/factories/record/graphic_factory.rb +10 -0
  235. data/spec/factories/record/graphics_collection_factory.rb +10 -0
  236. data/spec/factories/record/hash_data_factory.rb +10 -0
  237. data/spec/factories/record/identifiable_action_factory.rb +11 -0
  238. data/spec/factories/record/input_factory.rb +36 -0
  239. data/spec/factories/record/input_output_ml_parameter_factory.rb +9 -0
  240. data/spec/factories/record/issue_factory.rb +22 -0
  241. data/spec/factories/record/license_choice_factory.rb +23 -0
  242. data/spec/factories/record/license_factory.rb +99 -0
  243. data/spec/factories/record/metadata_factory.rb +38 -0
  244. data/spec/factories/record/model_card_factory.rb +59 -0
  245. data/spec/factories/record/note_factory.rb +11 -0
  246. data/spec/factories/record/organizational_contact_factory.rb +12 -0
  247. data/spec/factories/record/organizational_entity_factory.rb +13 -0
  248. data/spec/factories/record/output_factory.rb +32 -0
  249. data/spec/factories/record/parameter_factory.rb +11 -0
  250. data/spec/factories/record/patch_factory.rb +12 -0
  251. data/spec/factories/record/performance_metric_factory.rb +20 -0
  252. data/spec/factories/record/postal_address_factory.rb +14 -0
  253. data/spec/factories/record/property_factory.rb +11 -0
  254. data/spec/factories/record/rating_factory.rb +14 -0
  255. data/spec/factories/record/release_notes_factory.rb +20 -0
  256. data/spec/factories/record/resource_reference_choice_factory.rb +27 -0
  257. data/spec/factories/record/risk_factory.rb +10 -0
  258. data/spec/factories/record/root_factory.rb +23 -0
  259. data/spec/factories/record/secured_by_factory.rb +10 -0
  260. data/spec/factories/record/service_data_factory.rb +16 -0
  261. data/spec/factories/record/service_factory.rb +27 -0
  262. data/spec/factories/record/signature_factory.rb +50 -0
  263. data/spec/factories/record/standard_factory.rb +37 -0
  264. data/spec/factories/record/step_factory.rb +12 -0
  265. data/spec/factories/record/swid_factory.rb +16 -0
  266. data/spec/factories/record/task_factory.rb +24 -0
  267. data/spec/factories/record/tools_factory.rb +10 -0
  268. data/spec/factories/record/trigger_factory.rb +21 -0
  269. data/spec/factories/record/version_factory.rb +19 -0
  270. data/spec/factories/record/volume_factory.rb +16 -0
  271. data/spec/factories/record/vulnerability_factory.rb +70 -0
  272. data/spec/factories/record/vulnerability_source_factory.rb +10 -0
  273. data/spec/factories/record/workflow_factory.rb +26 -0
  274. data/spec/factories/record/workspace_factory.rb +21 -0
  275. data/spec/factories/record_factory.rb +159 -0
  276. data/spec/fixtures/cipher_info.yml +948 -0
  277. data/spec/fixtures/purl_data.yml +0 -0
  278. data/spec/sbom/cyclone_dx/enum_spec.rb +30 -0
  279. data/spec/sbom/cyclone_dx/field_spec.rb +104 -0
  280. data/spec/sbom/cyclone_dx/pattern_spec.rb +18 -0
  281. data/spec/sbom/cyclone_dx/record/advisory_spec.rb +14 -0
  282. data/spec/sbom/cyclone_dx/record/annotation_spec.rb +31 -0
  283. data/spec/sbom/cyclone_dx/record/attachment_spec.rb +14 -0
  284. data/spec/sbom/cyclone_dx/record/base_spec.rb +363 -0
  285. data/spec/sbom/cyclone_dx/record/cipher_suite_spec.rb +14 -0
  286. data/spec/sbom/cyclone_dx/record/co2_measure_spec.rb +14 -0
  287. data/spec/sbom/cyclone_dx/record/command_spec.rb +14 -0
  288. data/spec/sbom/cyclone_dx/record/commit_spec.rb +14 -0
  289. data/spec/sbom/cyclone_dx/record/component_data_spec.rb +14 -0
  290. data/spec/sbom/cyclone_dx/record/component_evidence_spec.rb +14 -0
  291. data/spec/sbom/cyclone_dx/record/component_identity_evidence_spec.rb +14 -0
  292. data/spec/sbom/cyclone_dx/record/component_spec.rb +14 -0
  293. data/spec/sbom/cyclone_dx/record/composition_spec.rb +14 -0
  294. data/spec/sbom/cyclone_dx/record/condition_spec.rb +14 -0
  295. data/spec/sbom/cyclone_dx/record/copyright_spec.rb +14 -0
  296. data/spec/sbom/cyclone_dx/record/crypto_properties_spec.rb +14 -0
  297. data/spec/sbom/cyclone_dx/record/data_governance_responsible_party_spec.rb +19 -0
  298. data/spec/sbom/cyclone_dx/record/data_governance_spec.rb +14 -0
  299. data/spec/sbom/cyclone_dx/record/declarations_spec.rb +14 -0
  300. data/spec/sbom/cyclone_dx/record/definitions_spec.rb +14 -0
  301. data/spec/sbom/cyclone_dx/record/dependency_spec.rb +14 -0
  302. data/spec/sbom/cyclone_dx/record/diff_spec.rb +14 -0
  303. data/spec/sbom/cyclone_dx/record/energy_consumption_spec.rb +14 -0
  304. data/spec/sbom/cyclone_dx/record/energy_measure_spec.rb +14 -0
  305. data/spec/sbom/cyclone_dx/record/energy_provider_spec.rb +14 -0
  306. data/spec/sbom/cyclone_dx/record/environmental_consideration_spec.rb +14 -0
  307. data/spec/sbom/cyclone_dx/record/event_spec.rb +14 -0
  308. data/spec/sbom/cyclone_dx/record/external_reference_spec.rb +14 -0
  309. data/spec/sbom/cyclone_dx/record/fairness_assessment_spec.rb +14 -0
  310. data/spec/sbom/cyclone_dx/record/formula_spec.rb +14 -0
  311. data/spec/sbom/cyclone_dx/record/graphic_spec.rb +14 -0
  312. data/spec/sbom/cyclone_dx/record/graphics_collection_spec.rb +14 -0
  313. data/spec/sbom/cyclone_dx/record/hash_data_spec.rb +14 -0
  314. data/spec/sbom/cyclone_dx/record/identifiable_action_spec.rb +14 -0
  315. data/spec/sbom/cyclone_dx/record/input_output_ml_parameter_spec.rb +14 -0
  316. data/spec/sbom/cyclone_dx/record/input_spec.rb +14 -0
  317. data/spec/sbom/cyclone_dx/record/issue_spec.rb +14 -0
  318. data/spec/sbom/cyclone_dx/record/license_choice_spec.rb +26 -0
  319. data/spec/sbom/cyclone_dx/record/license_spec.rb +14 -0
  320. data/spec/sbom/cyclone_dx/record/metadata_spec.rb +14 -0
  321. data/spec/sbom/cyclone_dx/record/model_card_spec.rb +14 -0
  322. data/spec/sbom/cyclone_dx/record/note_spec.rb +14 -0
  323. data/spec/sbom/cyclone_dx/record/organizational_contact_spec.rb +14 -0
  324. data/spec/sbom/cyclone_dx/record/organizational_entity_spec.rb +14 -0
  325. data/spec/sbom/cyclone_dx/record/output_spec.rb +14 -0
  326. data/spec/sbom/cyclone_dx/record/parameter_spec.rb +14 -0
  327. data/spec/sbom/cyclone_dx/record/patch_spec.rb +14 -0
  328. data/spec/sbom/cyclone_dx/record/performance_metric_spec.rb +14 -0
  329. data/spec/sbom/cyclone_dx/record/postal_address_spec.rb +14 -0
  330. data/spec/sbom/cyclone_dx/record/property_spec.rb +14 -0
  331. data/spec/sbom/cyclone_dx/record/rating_spec.rb +14 -0
  332. data/spec/sbom/cyclone_dx/record/release_notes_spec.rb +14 -0
  333. data/spec/sbom/cyclone_dx/record/resource_reference_choice_spec.rb +14 -0
  334. data/spec/sbom/cyclone_dx/record/risk_spec.rb +14 -0
  335. data/spec/sbom/cyclone_dx/record/root_spec.rb +14 -0
  336. data/spec/sbom/cyclone_dx/record/secured_by_spec.rb +14 -0
  337. data/spec/sbom/cyclone_dx/record/service_data_spec.rb +14 -0
  338. data/spec/sbom/cyclone_dx/record/service_spec.rb +14 -0
  339. data/spec/sbom/cyclone_dx/record/signature_spec.rb +26 -0
  340. data/spec/sbom/cyclone_dx/record/standard_spec.rb +14 -0
  341. data/spec/sbom/cyclone_dx/record/step_spec.rb +14 -0
  342. data/spec/sbom/cyclone_dx/record/swid_spec.rb +14 -0
  343. data/spec/sbom/cyclone_dx/record/task_spec.rb +14 -0
  344. data/spec/sbom/cyclone_dx/record/tools_spec.rb +14 -0
  345. data/spec/sbom/cyclone_dx/record/trigger_spec.rb +14 -0
  346. data/spec/sbom/cyclone_dx/record/version_spec.rb +14 -0
  347. data/spec/sbom/cyclone_dx/record/volume_spec.rb +14 -0
  348. data/spec/sbom/cyclone_dx/record/vulnerability_source_spec.rb +14 -0
  349. data/spec/sbom/cyclone_dx/record/vulnerability_spec.rb +14 -0
  350. data/spec/sbom/cyclone_dx/record/workflow_spec.rb +14 -0
  351. data/spec/sbom/cyclone_dx/record/workspace_spec.rb +14 -0
  352. data/spec/sbom/cyclone_dx/record_spec.rb +7 -0
  353. data/spec/sbom/cyclone_dx/validator/array_validator_spec.rb +184 -0
  354. data/spec/sbom/cyclone_dx/validator/base_validator_spec.rb +71 -0
  355. data/spec/sbom/cyclone_dx/validator/boolean_validator_spec.rb +26 -0
  356. data/spec/sbom/cyclone_dx/validator/date_time_validator_spec.rb +28 -0
  357. data/spec/sbom/cyclone_dx/validator/email_address_validator_spec.rb +23 -0
  358. data/spec/sbom/cyclone_dx/validator/float_validator_spec.rb +71 -0
  359. data/spec/sbom/cyclone_dx/validator/integer_validator_spec.rb +71 -0
  360. data/spec/sbom/cyclone_dx/validator/record_validator_spec.rb +35 -0
  361. data/spec/sbom/cyclone_dx/validator/string_validator_spec.rb +94 -0
  362. data/spec/sbom/cyclone_dx/validator/union_validator_spec.rb +65 -0
  363. data/spec/sbom/cyclone_dx/validator/uri_validator_spec.rb +21 -0
  364. data/spec/sbom/cyclone_dx/validator_spec.rb +38 -0
  365. data/spec/sbom/cyclone_dx/version_spec.rb +9 -0
  366. data/spec/sbom/cyclone_dx_spec.rb +7 -0
  367. data/spec/spec_helper.rb +39 -0
  368. metadata +377 -6
@@ -0,0 +1,434 @@
1
+ module SBOM
2
+ module CycloneDX
3
+ interface _FieldClass
4
+ end
5
+
6
+ module Field
7
+ type undefined = :undefined
8
+ type defaultValue[T < fieldValue] = T? | ^() -> T?
9
+
10
+ interface _FieldBaseClass[T < fieldValue]
11
+ def field_name: -> Symbol
12
+ def validator: -> Validator::BaseValidator[T]
13
+ def json_name: -> String
14
+ def required?: -> bool
15
+ def const?: -> bool
16
+ def const: -> T?
17
+ def default?: -> bool
18
+ def default: -> T?
19
+ def coerce: (untyped) -> T?
20
+ end
21
+
22
+ class Base[T < fieldValue]
23
+ extend _FieldBaseClass
24
+
25
+ attr_reader errors: ::Array[::String]
26
+ attr_reader value: T?
27
+
28
+ @value_set: bool
29
+
30
+ self.@const_present: bool
31
+ self.@default: fieldValue? | ^() -> fieldValue?
32
+ self.@default_present: bool
33
+
34
+ def initialize: -> void
35
+ def value=: (T?) -> void
36
+ def value?: -> bool
37
+ def valid?: -> bool
38
+
39
+ def field_name: -> Symbol
40
+ def validator: -> Validator::BaseValidator[T]
41
+ def json_name: -> String
42
+ def required?: -> bool
43
+ def const: -> T?
44
+ def const?: -> bool
45
+ def default: -> T?
46
+ def default?: -> bool
47
+ end
48
+
49
+ class ConstBase[T < fieldValue] < Base[T]
50
+ def initialize: -> void
51
+ end
52
+
53
+ class PropBase[T < fieldValue] < Base[T]
54
+ def initialize: (*T?) -> void
55
+
56
+ def value=: (T?) -> void
57
+ def unset_value: -> void
58
+ def self.coerce: [T < fieldValue] (untyped) -> T?
59
+ end
60
+
61
+ def self.array:
62
+ [T < fieldValue, U < singleton(ConstBase)] (
63
+ field_name: Symbol,
64
+ items: Validator::ArrayValidator::itemsValidator | Validator::ArrayValidator::validSingleTypeLabel | Validator::arrayItemValidatorParams,
65
+ ?unique: bool,
66
+ ?required: bool,
67
+ ?json_name: ::String?,
68
+ ?const: ::Array[T]?,
69
+ ?default: undefined
70
+ ) -> U
71
+ | [T < fieldValue, U < singleton(PropBase)] (
72
+ field_name: Symbol,
73
+ items: Validator::ArrayValidator::itemsValidator | Validator::ArrayValidator::validSingleTypeLabel | Validator::arrayItemValidatorParams,
74
+ ?unique: bool,
75
+ ?required: bool,
76
+ ?json_name: ::String?,
77
+ ?const: undefined,
78
+ ?default: defaultValue[::Array[T]] | undefined
79
+ ) -> U
80
+
81
+ def self.boolean:
82
+ [T < singleton(ConstBase)] (
83
+ field_name: Symbol,
84
+ ?required: bool,
85
+ ?json_name: ::String?,
86
+ ?const: bool?,
87
+ ?default: undefined
88
+ ) -> T
89
+ | [T < singleton(PropBase)] (
90
+ field_name: Symbol,
91
+ ?required: bool,
92
+ ?json_name: ::String?,
93
+ ?const: undefined,
94
+ ?default: defaultValue[bool] | undefined
95
+ ) -> T
96
+
97
+ def self.date_time:
98
+ [T < singleton(ConstBase)] (
99
+ field_name: Symbol,
100
+ ?required: bool,
101
+ ?json_name: ::String?,
102
+ ?const: dateTime?,
103
+ ?default: undefined
104
+ ) -> T
105
+ | [T < singleton(PropBase)] (
106
+ field_name: Symbol,
107
+ ?required: bool,
108
+ ?json_name: ::String?,
109
+ ?const: undefined,
110
+ ?default: defaultValue[dateTime] | undefined
111
+ ) -> T
112
+
113
+ def self.email_address:
114
+ [T < singleton(ConstBase)] (
115
+ field_name: Symbol,
116
+ ?required: bool,
117
+ ?json_name: ::String?,
118
+ ?const: emailAddress?,
119
+ ?default: undefined
120
+ ) -> T
121
+ | [T < singleton(PropBase)] (
122
+ field_name: Symbol,
123
+ ?required: bool,
124
+ ?json_name: ::String?,
125
+ ?const: undefined,
126
+ ?default: defaultValue[emailAddress] | undefined
127
+ ) -> T
128
+
129
+ def self.float:
130
+ [T < singleton(ConstBase)] (
131
+ field_name: Symbol,
132
+ ?minimum: number?,
133
+ ?maximum: number?,
134
+ ?required: bool,
135
+ ?json_name: ::String?,
136
+ ?const: ::Float?,
137
+ ?default: undefined
138
+ ) -> T
139
+ | [T < singleton(PropBase)] (
140
+ field_name: Symbol,
141
+ ?minimum: number?,
142
+ ?maximum: number?,
143
+ ?required: bool,
144
+ ?json_name: ::String?,
145
+ ?const: undefined,
146
+ ?default: defaultValue[::Float] | undefined
147
+ ) -> T
148
+
149
+ def self.integer:
150
+ [T < singleton(ConstBase)] (
151
+ field_name: Symbol,
152
+ ?minimum: number?,
153
+ ?maximum: number?,
154
+ ?required: bool,
155
+ ?json_name: ::String?,
156
+ ?const: ::Integer?,
157
+ ?default: undefined
158
+ ) -> T
159
+ | [T < singleton(PropBase)] (
160
+ field_name: Symbol,
161
+ ?minimum: number?,
162
+ ?maximum: number?,
163
+ ?required: bool,
164
+ ?json_name: ::String?,
165
+ ?const: undefined,
166
+ ?default: defaultValue[::Integer] | undefined
167
+ ) -> T
168
+
169
+ def self.record:
170
+ [T < singleton(ConstBase)] (
171
+ field_name: Symbol,
172
+ klass: singleton(SBOM::CycloneDX::Record::Base),
173
+ ?required: bool,
174
+ ?json_name: ::String?,
175
+ ?const: CycloneDX::Record::Base?,
176
+ ?default: undefined
177
+ ) -> T
178
+ | [T < singleton(PropBase)] (
179
+ field_name: Symbol,
180
+ klass: singleton(SBOM::CycloneDX::Record::Base),
181
+ ?required: bool,
182
+ ?json_name: ::String?,
183
+ ?const: undefined,
184
+ ?default: defaultValue[CycloneDX::Record::Base] | undefined
185
+ ) -> T
186
+
187
+ def self.string:
188
+ [T < singleton(ConstBase)] (
189
+ field_name: Symbol,
190
+ ?enum: ::Array[::String]?,
191
+ ?max_length: ::Integer?,
192
+ ?min_length: ::Integer?,
193
+ ?pattern: Regexp,
194
+ ?required: bool,
195
+ ?json_name: ::String?,
196
+ ?const: ::String?,
197
+ ?default: undefined
198
+ ) -> T
199
+ | [T < singleton(PropBase)] (
200
+ field_name: Symbol,
201
+ ?enum: ::Array[::String]?,
202
+ ?max_length: ::Integer?,
203
+ ?min_length: ::Integer?,
204
+ ?pattern: Regexp,
205
+ ?required: bool,
206
+ ?json_name: ::String?,
207
+ ?const: undefined,
208
+ ?default: defaultValue[::String] | undefined
209
+ ) -> T
210
+
211
+ def self.union:
212
+ [T < singleton(ConstBase)] (
213
+ field_name: Symbol,
214
+ of: ::Array[Validator::UnionValidator::unionableValidatorParams],
215
+ ?required: bool,
216
+ ?json_name: ::String?,
217
+ ?const: fieldValue?,
218
+ ?default: undefined
219
+ ) -> T
220
+ | [T < singleton(PropBase)] (
221
+ field_name: Symbol,
222
+ of: ::Array[Validator::UnionValidator::unionableValidatorParams],
223
+ ?required: bool,
224
+ ?json_name: ::String?,
225
+ ?const: undefined,
226
+ ?default: defaultValue[fieldValue] | undefined
227
+ ) -> T
228
+
229
+ def self.uri:
230
+ [T < singleton(ConstBase)] (
231
+ field_name: Symbol,
232
+ ?required: bool,
233
+ ?json_name: ::String?,
234
+ ?const: uri?,
235
+ ?default: undefined
236
+ ) -> T
237
+ | [T < singleton(PropBase)] (
238
+ field_name: Symbol,
239
+ ?required: bool,
240
+ ?json_name: ::String?,
241
+ ?const: undefined,
242
+ ?default: defaultValue[uri] | undefined
243
+ ) -> T
244
+
245
+ private def self.Field:
246
+ [T < singleton(PropBase)] (
247
+ field_name: Symbol,
248
+ type: :array,
249
+ validator: Validator::ArrayValidator,
250
+ ?json_name: ::String?,
251
+ ?const: undefined,
252
+ ?default: defaultValue[::Array[fieldValue]] | undefined
253
+ ) { (untyped) -> ::Array[fieldValue]? } -> T
254
+ | [T < singleton(ConstBase)] (
255
+ field_name: Symbol,
256
+ type: :array,
257
+ validator: Validator::ArrayValidator,
258
+ ?json_name: ::String?,
259
+ ?const: ::Array[fieldValue]?,
260
+ ?default: undefined
261
+ ) { (untyped) -> ::Array[fieldValue]? } -> T
262
+ | [T < singleton(ConstBase)] (
263
+ field_name: Symbol,
264
+ type: :boolean,
265
+ validator: Validator::BooleanValidator,
266
+ ?json_name: ::String?,
267
+ ?const: bool?,
268
+ ?default: undefined
269
+ ) { (untyped) -> bool? } -> T
270
+ | [T < singleton(PropBase)] (
271
+ field_name: Symbol,
272
+ type: :boolean,
273
+ validator: Validator::BooleanValidator,
274
+ ?json_name: ::String?,
275
+ ?const: undefined,
276
+ ?default: defaultValue[bool] | undefined
277
+ ) { (untyped) -> bool? } -> T
278
+ | [T < singleton(ConstBase)] (
279
+ field_name: Symbol,
280
+ type: :date_time,
281
+ validator: Validator::DateTimeValidator,
282
+ ?json_name: ::String?,
283
+ ?const: dateTime?,
284
+ ?default: undefined
285
+ ) { (untyped) -> dateTime? } -> T
286
+ | [T < singleton(PropBase)] (
287
+ field_name: Symbol,
288
+ type: :date_time,
289
+ validator: Validator::DateTimeValidator,
290
+ ?json_name: ::String?,
291
+ ?const: undefined,
292
+ ?default: defaultValue[dateTime] | undefined
293
+ ) { (untyped) -> dateTime? } -> T
294
+ | [T < singleton(ConstBase)] (
295
+ field_name: Symbol,
296
+ type: :email_address,
297
+ validator: Validator::EmailAddressValidator,
298
+ ?json_name: ::String?,
299
+ ?const: emailAddress?,
300
+ ?default: undefined
301
+ ) { (untyped) -> emailAddress? } -> T
302
+ | [T < singleton(PropBase)] (
303
+ field_name: Symbol,
304
+ type: :email_address,
305
+ validator: Validator::EmailAddressValidator,
306
+ ?json_name: ::String?,
307
+ ?const: undefined,
308
+ ?default: defaultValue[emailAddress] | undefined
309
+ ) { (untyped) -> emailAddress? } -> T
310
+ | [T < singleton(ConstBase)] (
311
+ field_name: Symbol,
312
+ type: :float,
313
+ validator: Validator::FloatValidator,
314
+ ?json_name: ::String?,
315
+ ?const: ::Float?,
316
+ ?default: undefined
317
+ ) { (untyped) -> ::Float? } -> T
318
+ | [T < singleton(PropBase)] (
319
+ field_name: Symbol,
320
+ type: :float,
321
+ validator: Validator::FloatValidator,
322
+ ?json_name: ::String?,
323
+ ?const: undefined,
324
+ ?default: defaultValue[::Float] | undefined
325
+ ) { (untyped) -> ::Float? } -> T
326
+ | [T < singleton(ConstBase)] (
327
+ field_name: Symbol,
328
+ type: :integer,
329
+ validator: Validator::IntegerValidator,
330
+ ?json_name: ::String?,
331
+ ?const: ::Integer?,
332
+ ?default: undefined
333
+ ) { (untyped) -> ::Integer? } -> T
334
+ | [T < singleton(PropBase)] (
335
+ field_name: Symbol,
336
+ type: :integer,
337
+ validator: Validator::IntegerValidator,
338
+ ?json_name: ::String?,
339
+ ?const: undefined,
340
+ ?default: defaultValue[::Integer] | undefined
341
+ ) { (untyped) -> ::Integer? } -> T
342
+ | [T < singleton(ConstBase)] (
343
+ field_name: Symbol,
344
+ type: singleton(SBOM::CycloneDX::Record::Base),
345
+ validator: Validator::RecordValidator,
346
+ ?json_name: ::String?,
347
+ ?const: CycloneDX::Record::Base?,
348
+ ?default: undefined
349
+ ) { (untyped) -> CycloneDX::Record::Base? } -> T
350
+ | [T < singleton(PropBase)] (
351
+ field_name: Symbol,
352
+ type: singleton(SBOM::CycloneDX::Record::Base),
353
+ validator: Validator::RecordValidator,
354
+ ?json_name: ::String?,
355
+ ?const: undefined,
356
+ ?default: defaultValue[CycloneDX::Record::Base?] | undefined
357
+ ) { (untyped) -> CycloneDX::Record::Base? } -> T
358
+ | [T < singleton(ConstBase)] (
359
+ field_name: Symbol,
360
+ type: :string,
361
+ validator: Validator::StringValidator,
362
+ ?json_name: ::String?,
363
+ ?const: ::String?,
364
+ ?default: undefined
365
+ ) { (untyped) -> ::String? } -> T
366
+ | [T < singleton(PropBase)] (
367
+ field_name: Symbol,
368
+ type: :string,
369
+ validator: Validator::StringValidator,
370
+ ?json_name: ::String?,
371
+ ?const: undefined,
372
+ ?default: defaultValue[::String] | undefined
373
+ ) { (untyped) -> ::String? } -> T
374
+ | [T < singleton(ConstBase)] (
375
+ field_name: Symbol,
376
+ type: :union,
377
+ validator: Validator::UnionValidator,
378
+ ?json_name: ::String?,
379
+ ?const: fieldValue?,
380
+ ?default: undefined
381
+ ) { (untyped) -> fieldValue? } -> T
382
+ | [T < singleton(PropBase)] (
383
+ field_name: Symbol,
384
+ type: :union,
385
+ validator: Validator::UnionValidator,
386
+ ?json_name: ::String?,
387
+ ?const: undefined,
388
+ ?default: defaultValue[fieldValue] | undefined
389
+ ) { (untyped) -> fieldValue? } -> T
390
+ | [T < singleton(ConstBase)] (
391
+ field_name: Symbol,
392
+ type: :uri,
393
+ validator: Validator::URIValidator,
394
+ ?json_name: ::String?,
395
+ ?const: uri?,
396
+ ?default: undefined
397
+ ) { (untyped) -> uri? } -> T
398
+ | [T < singleton(PropBase)] (
399
+ field_name: Symbol,
400
+ type: :uri,
401
+ validator: Validator::URIValidator,
402
+ ?json_name: ::String?,
403
+ ?const: undefined,
404
+ ?default: defaultValue[uri] | undefined
405
+ ) { (untyped) -> uri? } -> T
406
+ | [T < fieldValue, U < singleton(PropBase)] (
407
+ field_name: Symbol,
408
+ type: fieldTypeLabel,
409
+ validator: Validator::BaseValidator[T],
410
+ ?json_name: ::String?,
411
+ ?const: undefined,
412
+ ?default: defaultValue[T] | undefined
413
+ ) { (untyped) -> T? } -> U
414
+ | [T < fieldValue, U < singleton(ConstBase)] (
415
+ field_name: Symbol,
416
+ type: fieldTypeLabel,
417
+ validator: Validator::BaseValidator[T],
418
+ ?json_name: ::String?,
419
+ ?const: T?,
420
+ ?default: undefined
421
+ ) { (untyped) -> T? } -> U
422
+ | [T < fieldValue, U < singleton(ConstBase)] (
423
+ field_name: Symbol,
424
+ type: fieldTypeLabel,
425
+ validator: Validator::BaseValidator[T],
426
+ ?json_name: ::String?,
427
+ ?const: T? | undefined,
428
+ ?default: defaultValue[T] | undefined
429
+ ) { (untyped) -> T? } -> U
430
+
431
+ private def self.validate_types: [T < fieldValue] (fieldTypeLabel, Validator::BaseValidator[untyped], **(T? | defaultValue[T])) -> void
432
+ end
433
+ end
434
+ end
@@ -0,0 +1,24 @@
1
+ module SBOM
2
+ module CycloneDX
3
+ module Pattern
4
+ BOM_SERIAL_NUMBER: ::Regexp
5
+ CDX_BOM_VERSION: ::Regexp
6
+ CDX_URN_ASSIGNED_NAME: ::Regexp
7
+ CDX_URN_FRAGMENT: ::Regexp
8
+ CDX_URN_NSS: ::Regexp
9
+ CDX_URN_WITH_FRAGMENT: ::Regexp
10
+ CDX_URN: ::Regexp
11
+ CONTENT_TYPE: ::Regexp
12
+ HASH_VALUE: ::Regexp
13
+ LOCALE: ::Regexp
14
+ MIME_TYPE: ::Regexp
15
+ OPEN_CRE: ::Regexp
16
+ REF_LINK: ::Regexp
17
+ REF_OR_CDX_URN: ::Regexp
18
+ UUID: ::Regexp
19
+ DEFAULT: ::Regexp
20
+
21
+ def self.match_exactly?: (::Regexp, ::String) -> bool
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ module SBOM
2
+ module CycloneDX
3
+ module Record
4
+ class Advisory < Base
5
+ def initialize: (?title: String?, url: uri) -> void
6
+
7
+ def title: () -> String?
8
+ def title=: (String?) -> String?
9
+ def title?: () -> bool
10
+ def title_valid?: () -> bool
11
+
12
+ def url: () -> uri
13
+ def url=: (uri) -> uri
14
+ def url?: () -> bool
15
+ def url_valid?: () -> bool
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,63 @@
1
+ module SBOM
2
+ module CycloneDX
3
+ module Record
4
+ class Annotation < Base
5
+ class Annotator < Base
6
+ def initialize: (?organization: OrganizationalEntity?, ?individual: OrganizationalContact?, ?component: Component?, ?service: Service?) -> void
7
+
8
+ def organization: () -> OrganizationalEntity?
9
+ def organization=: (OrganizationalEntity?) -> OrganizationalEntity?
10
+ def organization?: () -> bool
11
+ def organization_valid?: () -> bool
12
+
13
+ def individual: () -> OrganizationalContact?
14
+ def individual=: (OrganizationalContact?) -> OrganizationalContact?
15
+ def individual?: () -> bool
16
+ def individual_valid?: () -> bool
17
+
18
+ def component: () -> Component?
19
+ def component=: (Component?) -> Component?
20
+ def component?: () -> bool
21
+ def component_valid?: () -> bool
22
+
23
+ def service: () -> Service?
24
+ def service=: (Service?) -> Service?
25
+ def service?: () -> bool
26
+ def service_valid?: () -> bool
27
+ end
28
+
29
+ def initialize: (?bom_ref: String?, subjects: Array[String], annotator: Annotator, timestamp: dateTime, text: String, ?signature: Signature::signatureChoice?) -> void
30
+
31
+ def bom_ref: () -> String?
32
+ def bom_ref=: (String?) -> String?
33
+ def bom_ref?: () -> bool
34
+ def bom_ref_valid?: () -> bool
35
+
36
+ def subjects: () -> Array[String]
37
+ def subjects=: (Array[String]) -> Array[String]
38
+ def subjects?: () -> bool
39
+ def subjects_valid?: () -> bool
40
+
41
+ def annotator: () -> Annotator
42
+ def annotator=: (Annotator) -> Annotator
43
+ def annotator?: () -> bool
44
+ def annotator_valid?: () -> bool
45
+
46
+ def timestamp: () -> dateTime
47
+ def timestamp=: (dateTime) -> dateTime
48
+ def timestamp?: () -> bool
49
+ def timestamp_valid?: () -> bool
50
+
51
+ def text: () -> String
52
+ def text=: (String) -> String
53
+ def text?: () -> bool
54
+ def text_valid?: () -> bool
55
+
56
+ def signature: () -> Signature::signatureChoice?
57
+ def signature=: (Signature::signatureChoice?) -> Signature::signatureChoice?
58
+ def signature?: () -> bool
59
+ def signature_valid?: () -> bool
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,24 @@
1
+ module SBOM
2
+ module CycloneDX
3
+ module Record
4
+ class Attachment < Base
5
+ def initialize: (content: String, ?content_type: String) -> void
6
+
7
+ def content_type: () -> String
8
+ def content_type=: (String) -> String
9
+ def content_type?: () -> bool
10
+ def content_type_valid?: () -> bool
11
+
12
+ def content: () -> String
13
+ def content=: (String) -> String
14
+ def content?: () -> bool
15
+ def content_valid?: () -> bool
16
+
17
+ type encodingConst = "base64"
18
+ def encoding: () -> encodingConst
19
+ def encoding?: () -> true
20
+ def encoding_valid?: () -> true
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,62 @@
1
+ module SBOM
2
+ module CycloneDX
3
+ module Record
4
+ class Base
5
+ include Comparable
6
+ include _Instance
7
+ extend _Klass
8
+
9
+ @errors: Hash[Symbol | String, Array[String]]
10
+
11
+ def <=>: (untyped other) -> Integer?
12
+ def valid!: -> void
13
+
14
+ private def populate_fields: (**untyped) -> void
15
+ private def json_name: (Symbol) -> String
16
+ private def validator_for: (Symbol) -> SBOM::CycloneDX::Validator::BaseValidator[fieldValue]
17
+ private def validate_value: (Symbol) -> Array[String]
18
+ private def validate_custom: (*Symbol, ?message: String?) { (*fieldValue?) -> (bool? | String | Array[String]) } -> Array[String]
19
+
20
+ @_fields: Hash[Symbol, SBOM::CycloneDX::Field::Base[fieldValue]]
21
+ self.@json_name: String
22
+ self.@json_name_map: Hash[Symbol, String]
23
+ self.@fields: Hash[Symbol, singleton(SBOM::CycloneDX::Field::Base)]
24
+ self.@custom_validators: Array[[Array[Symbol], String?, ^(*fieldValue?) -> (bool? | String | Array[String])]]
25
+
26
+ def self.json_create: (::Hash[Symbol | String, untyped]) -> instance
27
+ private def self.in_subclass_body?: () -> bool
28
+ private def self.json_name_map: () -> Hash[Symbol, String]
29
+ private def self.build_prop:
30
+ (Symbol, :array, Validator::arrayValidatorParams, ?required: bool, ?json_name: String?) -> void
31
+ | (Symbol, :boolean, Validator::booleanValidatorParams, ?required: bool, ?json_name: String?) -> void
32
+ | (Symbol, :date_time, Validator::dateTimeValidatorParams, ?required: bool, ?json_name: String?) -> void
33
+ | (Symbol, :email_address, Validator::emailAddressValidatorParams, ?required: bool, ?json_name: String?) -> void
34
+ | (Symbol, :float, Validator::floatValidatorParams, ?required: bool, ?json_name: String?) -> void
35
+ | (Symbol, :integer, Validator::integerValidatorParams, ?required: bool, ?json_name: String?) -> void
36
+ | (Symbol, singleton(SBOM::CycloneDX::Record::Base), Validator::recordValidatorParams, ?required: bool, ?json_name: String?) -> void
37
+ | (Symbol, :string, Validator::stringValidatorParams, ?required: bool, ?json_name: String?) -> void
38
+ | (Symbol, :union, Validator::unionValidatorParams, ?required: bool, ?json_name: String?) -> void
39
+ | (Symbol, :uri, Validator::uriValidatorParams, ?required: bool, ?json_name: String?) -> void
40
+ | (Symbol, fieldTypeLabel, Validator::anyValidatorParams, ?required: bool, ?json_name: String?) -> void
41
+ private def self.validator_for: (Symbol) -> SBOM::CycloneDX::Validator::BaseValidator[fieldValue]
42
+ private def self.resolve_prop_kwargs:
43
+ (:array, **untyped) -> Validator::arrayValidatorParams
44
+ | (:boolean, **untyped) -> Validator::booleanValidatorParams
45
+ | (:date_time, **untyped) -> Validator::dateTimeValidatorParams
46
+ | (:email_address, **untyped) -> Validator::emailAddressValidatorParams
47
+ | (:float, **untyped) -> Validator::floatValidatorParams
48
+ | (:integer, **untyped) -> Validator::integerValidatorParams
49
+ | (singleton(SBOM::CycloneDX::Record::Base), **untyped) -> Validator::recordValidatorParams
50
+ | (:string, **untyped) -> Validator::stringValidatorParams
51
+ | (:union, **untyped) -> Validator::unionValidatorParams
52
+ | (:uri, **untyped) -> Validator::uriValidatorParams
53
+ | (fieldTypeLabel, **untyped) -> Validator::anyValidatorParams # Should never be called
54
+ private def self.validate_presence: (
55
+ ::Array[Symbol] props,
56
+ Record::presenceCheck presence,
57
+ ?String? message
58
+ ) -> [Array[Symbol], String?, ^(*fieldValue?) -> (bool? | String | Array[String])]
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,24 @@
1
+ module SBOM
2
+ module CycloneDX
3
+ module Record
4
+ class CipherSuite < Base
5
+ def initialize: (?name: String?, ?algorithms: Array[String]?, ?identifiers: Array[String]?) -> void
6
+
7
+ def name: () -> String?
8
+ def name=: (String?) -> String?
9
+ def name?: () -> bool
10
+ def name_valid?: () -> bool
11
+
12
+ def algorithms: () -> Array[String]?
13
+ def algorithms=: (Array[String]?) -> Array[String]?
14
+ def algorithms?: () -> bool
15
+ def algorithms_valid?: () -> bool
16
+
17
+ def identifiers: () -> Array[String]?
18
+ def identifiers=: (Array[String]?) -> Array[String]?
19
+ def identifiers?: () -> bool
20
+ def identifiers_valid?: () -> bool
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,14 @@
1
+ module SBOM
2
+ module CycloneDX
3
+ module Record
4
+ class CO2Measure < Base
5
+ def initialize: (value: Float) -> void
6
+
7
+ def value: () -> Float
8
+ def value=: (Float) -> Float
9
+ def value?: () -> bool
10
+ def value_valid?: () -> bool
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,19 @@
1
+ module SBOM
2
+ module CycloneDX
3
+ module Record
4
+ class Command < Base
5
+ def initialize: (?executed: String?, ?properties: Array[Property]?) -> void
6
+
7
+ def executed: () -> String?
8
+ def executed=: (String?) -> String?
9
+ def executed?: () -> bool
10
+ def executed_valid?: () -> bool
11
+
12
+ def properties: () -> Array[Property]?
13
+ def properties=: (Array[Property]?) -> Array[Property]?
14
+ def properties?: () -> bool
15
+ def properties_valid?: () -> bool
16
+ end
17
+ end
18
+ end
19
+ end