@mitre/hdf-converters 2.12.6 → 2.13.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 (370) hide show
  1. package/README.md +25 -24
  2. package/lib/data/converters/csv2json.d.ts +1 -0
  3. package/lib/data/converters/csv2json.d.ts.map +1 -0
  4. package/lib/data/converters/csv2json.js +1 -1
  5. package/lib/data/converters/csv2json.js.map +1 -1
  6. package/lib/data/converters/xml2json.d.ts +1 -0
  7. package/lib/data/converters/xml2json.d.ts.map +1 -0
  8. package/lib/data/converters/xml2json.js +6 -25
  9. package/lib/data/converters/xml2json.js.map +1 -1
  10. package/lib/data/reverse-html-mapper/convert-to-embedded-strings.d.ts +2 -0
  11. package/lib/data/reverse-html-mapper/convert-to-embedded-strings.d.ts.map +1 -0
  12. package/lib/data/reverse-html-mapper/convert-to-embedded-strings.js +13 -0
  13. package/lib/data/reverse-html-mapper/convert-to-embedded-strings.js.map +1 -0
  14. package/lib/index.d.ts +6 -0
  15. package/lib/index.d.ts.map +1 -0
  16. package/lib/index.js +23 -8
  17. package/lib/index.js.map +1 -1
  18. package/lib/package.json +19 -40
  19. package/lib/src/anchore-grype-mapper.d.ts +1 -0
  20. package/lib/src/anchore-grype-mapper.d.ts.map +1 -0
  21. package/lib/src/anchore-grype-mapper.js +7 -1
  22. package/lib/src/anchore-grype-mapper.js.map +1 -1
  23. package/lib/src/asff-mapper/asff-mapper.d.ts +1 -0
  24. package/lib/src/asff-mapper/asff-mapper.d.ts.map +1 -0
  25. package/lib/src/asff-mapper/asff-mapper.js +274 -237
  26. package/lib/src/asff-mapper/asff-mapper.js.map +1 -1
  27. package/lib/src/asff-mapper/case-cms-inspec.d.ts +1 -0
  28. package/lib/src/asff-mapper/case-cms-inspec.d.ts.map +1 -0
  29. package/lib/src/asff-mapper/case-cms-inspec.js +18 -9
  30. package/lib/src/asff-mapper/case-cms-inspec.js.map +1 -1
  31. package/lib/src/asff-mapper/case-firewall-manager.d.ts +1 -0
  32. package/lib/src/asff-mapper/case-firewall-manager.d.ts.map +1 -0
  33. package/lib/src/asff-mapper/case-firewall-manager.js +18 -9
  34. package/lib/src/asff-mapper/case-firewall-manager.js.map +1 -1
  35. package/lib/src/asff-mapper/case-guardduty.d.ts +1 -0
  36. package/lib/src/asff-mapper/case-guardduty.d.ts.map +1 -0
  37. package/lib/src/asff-mapper/case-guardduty.js +18 -9
  38. package/lib/src/asff-mapper/case-guardduty.js.map +1 -1
  39. package/lib/src/asff-mapper/case-inspector.d.ts +1 -0
  40. package/lib/src/asff-mapper/case-inspector.d.ts.map +1 -0
  41. package/lib/src/asff-mapper/case-inspector.js +18 -9
  42. package/lib/src/asff-mapper/case-inspector.js.map +1 -1
  43. package/lib/src/asff-mapper/case-previously-hdf.d.ts +1 -0
  44. package/lib/src/asff-mapper/case-previously-hdf.d.ts.map +1 -0
  45. package/lib/src/asff-mapper/case-previously-hdf.js +21 -10
  46. package/lib/src/asff-mapper/case-previously-hdf.js.map +1 -1
  47. package/lib/src/asff-mapper/case-prowler.d.ts +1 -0
  48. package/lib/src/asff-mapper/case-prowler.d.ts.map +1 -0
  49. package/lib/src/asff-mapper/case-prowler.js +19 -9
  50. package/lib/src/asff-mapper/case-prowler.js.map +1 -1
  51. package/lib/src/asff-mapper/case-security-hub.d.ts +1 -0
  52. package/lib/src/asff-mapper/case-security-hub.d.ts.map +1 -0
  53. package/lib/src/asff-mapper/case-security-hub.js +24 -9
  54. package/lib/src/asff-mapper/case-security-hub.js.map +1 -1
  55. package/lib/src/asff-mapper/case-trivy.d.ts +1 -0
  56. package/lib/src/asff-mapper/case-trivy.d.ts.map +1 -0
  57. package/lib/src/asff-mapper/case-trivy.js +18 -9
  58. package/lib/src/asff-mapper/case-trivy.js.map +1 -1
  59. package/lib/src/aws-config-mapper.d.ts +1 -0
  60. package/lib/src/aws-config-mapper.d.ts.map +1 -0
  61. package/lib/src/aws-config-mapper.js +29 -7
  62. package/lib/src/aws-config-mapper.js.map +1 -1
  63. package/lib/src/base-converter.d.ts +2 -1
  64. package/lib/src/base-converter.d.ts.map +1 -0
  65. package/lib/src/base-converter.js +46 -26
  66. package/lib/src/base-converter.js.map +1 -1
  67. package/lib/src/burpsuite-mapper.d.ts +7 -0
  68. package/lib/src/burpsuite-mapper.d.ts.map +1 -0
  69. package/lib/src/burpsuite-mapper.js +115 -88
  70. package/lib/src/burpsuite-mapper.js.map +1 -1
  71. package/lib/src/checkov-mapper.d.ts +67 -0
  72. package/lib/src/checkov-mapper.d.ts.map +1 -0
  73. package/lib/src/checkov-mapper.js +240 -0
  74. package/lib/src/checkov-mapper.js.map +1 -0
  75. package/lib/src/ckl-mapper/checklist-jsonix-converter.d.ts +17 -0
  76. package/lib/src/ckl-mapper/checklist-jsonix-converter.d.ts.map +1 -0
  77. package/lib/src/ckl-mapper/checklist-jsonix-converter.js +38 -4
  78. package/lib/src/ckl-mapper/checklist-jsonix-converter.js.map +1 -1
  79. package/lib/src/ckl-mapper/checklist-mapper.d.ts +35 -0
  80. package/lib/src/ckl-mapper/checklist-mapper.d.ts.map +1 -0
  81. package/lib/src/ckl-mapper/checklist-mapper.js +262 -151
  82. package/lib/src/ckl-mapper/checklist-mapper.js.map +1 -1
  83. package/lib/src/ckl-mapper/checklist-metadata-utils.d.ts +1 -0
  84. package/lib/src/ckl-mapper/checklist-metadata-utils.d.ts.map +1 -0
  85. package/lib/src/ckl-mapper/checklist-metadata-utils.js +32 -15
  86. package/lib/src/ckl-mapper/checklist-metadata-utils.js.map +1 -1
  87. package/lib/src/ckl-mapper/checklistJsonix.d.ts +6 -0
  88. package/lib/src/ckl-mapper/checklistJsonix.d.ts.map +1 -0
  89. package/lib/src/ckl-mapper/checklistJsonix.js +8 -8
  90. package/lib/src/ckl-mapper/checklistJsonix.js.map +1 -1
  91. package/lib/src/ckl-mapper/jsonixMapping.d.ts +5 -0
  92. package/lib/src/ckl-mapper/jsonixMapping.d.ts.map +1 -0
  93. package/lib/src/ckl-mapper/jsonixMapping.js +4 -0
  94. package/lib/src/ckl-mapper/jsonixMapping.js.map +1 -1
  95. package/lib/src/converters-from-hdf/asff/asff-types.d.ts +1 -0
  96. package/lib/src/converters-from-hdf/asff/asff-types.d.ts.map +1 -0
  97. package/lib/src/converters-from-hdf/asff/asff-types.js +1 -0
  98. package/lib/src/converters-from-hdf/asff/asff-types.js.map +1 -1
  99. package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.d.ts +1 -0
  100. package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.d.ts.map +1 -0
  101. package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.js +110 -84
  102. package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.js.map +1 -1
  103. package/lib/src/converters-from-hdf/asff/transformers.d.ts +1 -0
  104. package/lib/src/converters-from-hdf/asff/transformers.d.ts.map +1 -0
  105. package/lib/src/converters-from-hdf/asff/transformers.js +68 -38
  106. package/lib/src/converters-from-hdf/asff/transformers.js.map +1 -1
  107. package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.d.ts +1 -0
  108. package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.d.ts.map +1 -0
  109. package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.js +54 -28
  110. package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.js.map +1 -1
  111. package/lib/src/converters-from-hdf/html/embedded-assets.d.ts +4 -0
  112. package/lib/src/converters-from-hdf/html/embedded-assets.d.ts.map +1 -0
  113. package/lib/src/converters-from-hdf/html/embedded-assets.js +8 -0
  114. package/lib/src/converters-from-hdf/html/embedded-assets.js.map +1 -0
  115. package/lib/src/converters-from-hdf/html/html-types.d.ts +1 -0
  116. package/lib/src/converters-from-hdf/html/html-types.d.ts.map +1 -0
  117. package/lib/src/converters-from-hdf/html/html-types.js +1 -0
  118. package/lib/src/converters-from-hdf/html/html-types.js.map +1 -1
  119. package/lib/src/converters-from-hdf/html/reverse-html-mapper.d.ts +3 -2
  120. package/lib/src/converters-from-hdf/html/reverse-html-mapper.d.ts.map +1 -0
  121. package/lib/src/converters-from-hdf/html/reverse-html-mapper.js +151 -107
  122. package/lib/src/converters-from-hdf/html/reverse-html-mapper.js.map +1 -1
  123. package/lib/src/converters-from-hdf/reverse-any-base-converter.d.ts +1 -0
  124. package/lib/src/converters-from-hdf/reverse-any-base-converter.d.ts.map +1 -0
  125. package/lib/src/converters-from-hdf/reverse-any-base-converter.js +3 -0
  126. package/lib/src/converters-from-hdf/reverse-any-base-converter.js.map +1 -1
  127. package/lib/src/converters-from-hdf/reverse-base-converter.d.ts +1 -0
  128. package/lib/src/converters-from-hdf/reverse-base-converter.d.ts.map +1 -0
  129. package/lib/src/converters-from-hdf/reverse-base-converter.js +29 -9
  130. package/lib/src/converters-from-hdf/reverse-base-converter.js.map +1 -1
  131. package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.d.ts +1 -0
  132. package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.d.ts.map +1 -0
  133. package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.js +39 -14
  134. package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.js.map +1 -1
  135. package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.d.ts +1 -0
  136. package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.d.ts.map +1 -0
  137. package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.js +32 -10
  138. package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.js.map +1 -1
  139. package/lib/src/conveyor-mapper.d.ts +1 -0
  140. package/lib/src/conveyor-mapper.d.ts.map +1 -0
  141. package/lib/src/conveyor-mapper.js +85 -40
  142. package/lib/src/conveyor-mapper.js.map +1 -1
  143. package/lib/src/cyclonedx-sbom-mapper.d.ts +1 -0
  144. package/lib/src/cyclonedx-sbom-mapper.d.ts.map +1 -0
  145. package/lib/src/cyclonedx-sbom-mapper.js +368 -294
  146. package/lib/src/cyclonedx-sbom-mapper.js.map +1 -1
  147. package/lib/src/dbprotect-mapper.d.ts +1 -0
  148. package/lib/src/dbprotect-mapper.d.ts.map +1 -0
  149. package/lib/src/dbprotect-mapper.js +74 -63
  150. package/lib/src/dbprotect-mapper.js.map +1 -1
  151. package/lib/src/dependency-track-mapper.d.ts +1 -0
  152. package/lib/src/dependency-track-mapper.d.ts.map +1 -0
  153. package/lib/src/dependency-track-mapper.js +144 -130
  154. package/lib/src/dependency-track-mapper.js.map +1 -1
  155. package/lib/src/fortify-mapper.d.ts +7 -0
  156. package/lib/src/fortify-mapper.d.ts.map +1 -0
  157. package/lib/src/fortify-mapper.js +118 -92
  158. package/lib/src/fortify-mapper.js.map +1 -1
  159. package/lib/src/gosec-mapper.d.ts +1 -0
  160. package/lib/src/gosec-mapper.d.ts.map +1 -0
  161. package/lib/src/gosec-mapper.js +90 -72
  162. package/lib/src/gosec-mapper.js.map +1 -1
  163. package/lib/src/ionchannel-mapper.d.ts +1 -0
  164. package/lib/src/ionchannel-mapper.d.ts.map +1 -0
  165. package/lib/src/ionchannel-mapper.js +130 -110
  166. package/lib/src/ionchannel-mapper.js.map +1 -1
  167. package/lib/src/jfrog-xray-mapper.d.ts +1 -0
  168. package/lib/src/jfrog-xray-mapper.d.ts.map +1 -0
  169. package/lib/src/jfrog-xray-mapper.js +92 -78
  170. package/lib/src/jfrog-xray-mapper.js.map +1 -1
  171. package/lib/src/jsonix-converter.d.ts +1 -0
  172. package/lib/src/jsonix-converter.d.ts.map +1 -0
  173. package/lib/src/jsonix-converter.js +1 -0
  174. package/lib/src/jsonix-converter.js.map +1 -1
  175. package/lib/src/jsonix-intermediate-converter.d.ts +1 -0
  176. package/lib/src/jsonix-intermediate-converter.d.ts.map +1 -0
  177. package/lib/src/jsonix-intermediate-converter.js.map +1 -1
  178. package/lib/src/mappings/AwsConfigMapping.d.ts +1 -0
  179. package/lib/src/mappings/AwsConfigMapping.d.ts.map +1 -0
  180. package/lib/src/mappings/AwsConfigMapping.js +19 -9
  181. package/lib/src/mappings/AwsConfigMapping.js.map +1 -1
  182. package/lib/src/mappings/AwsConfigMappingData.d.ts +1 -0
  183. package/lib/src/mappings/AwsConfigMappingData.d.ts.map +1 -0
  184. package/lib/src/mappings/AwsConfigMappingData.js.map +1 -1
  185. package/lib/src/mappings/CciNistMapping.d.ts +1 -0
  186. package/lib/src/mappings/CciNistMapping.d.ts.map +1 -0
  187. package/lib/src/mappings/CciNistMapping.js +4 -0
  188. package/lib/src/mappings/CciNistMapping.js.map +1 -1
  189. package/lib/src/mappings/CciNistMappingData.d.ts +1 -0
  190. package/lib/src/mappings/CciNistMappingData.d.ts.map +1 -0
  191. package/lib/src/mappings/CciNistMappingData.js.map +1 -1
  192. package/lib/src/mappings/CciNistMappingItem.d.ts +1 -0
  193. package/lib/src/mappings/CciNistMappingItem.d.ts.map +1 -0
  194. package/lib/src/mappings/CciNistMappingItem.js +2 -0
  195. package/lib/src/mappings/CciNistMappingItem.js.map +1 -1
  196. package/lib/src/mappings/CheckovToCciAndNistMappingData.d.ts +5 -0
  197. package/lib/src/mappings/CheckovToCciAndNistMappingData.d.ts.map +1 -0
  198. package/lib/src/mappings/CheckovToCciAndNistMappingData.js +2695 -0
  199. package/lib/src/mappings/CheckovToCciAndNistMappingData.js.map +1 -0
  200. package/lib/src/mappings/CweNistMapping.d.ts +1 -0
  201. package/lib/src/mappings/CweNistMapping.d.ts.map +1 -0
  202. package/lib/src/mappings/CweNistMapping.js +1 -0
  203. package/lib/src/mappings/CweNistMapping.js.map +1 -1
  204. package/lib/src/mappings/CweNistMappingData.d.ts +1 -0
  205. package/lib/src/mappings/CweNistMappingData.d.ts.map +1 -0
  206. package/lib/src/mappings/CweNistMappingData.js.map +1 -1
  207. package/lib/src/mappings/CweNistMappingItem.d.ts +1 -0
  208. package/lib/src/mappings/CweNistMappingItem.d.ts.map +1 -0
  209. package/lib/src/mappings/CweNistMappingItem.js +5 -0
  210. package/lib/src/mappings/CweNistMappingItem.js.map +1 -1
  211. package/lib/src/mappings/NessusPluginNistMappingData.d.ts +1 -0
  212. package/lib/src/mappings/NessusPluginNistMappingData.d.ts.map +1 -0
  213. package/lib/src/mappings/NessusPluginNistMappingData.js.map +1 -1
  214. package/lib/src/mappings/NessusPluginsNistMapping.d.ts +1 -0
  215. package/lib/src/mappings/NessusPluginsNistMapping.d.ts.map +1 -0
  216. package/lib/src/mappings/NessusPluginsNistMapping.js +1 -0
  217. package/lib/src/mappings/NessusPluginsNistMapping.js.map +1 -1
  218. package/lib/src/mappings/NessusPluginsNistMappingItem.d.ts +1 -0
  219. package/lib/src/mappings/NessusPluginsNistMappingItem.d.ts.map +1 -0
  220. package/lib/src/mappings/NessusPluginsNistMappingItem.js +4 -0
  221. package/lib/src/mappings/NessusPluginsNistMappingItem.js.map +1 -1
  222. package/lib/src/mappings/NiktoNistMapping.d.ts +1 -0
  223. package/lib/src/mappings/NiktoNistMapping.d.ts.map +1 -0
  224. package/lib/src/mappings/NiktoNistMapping.js.map +1 -1
  225. package/lib/src/mappings/NiktoNistMappingData.d.ts +1 -0
  226. package/lib/src/mappings/NiktoNistMappingData.d.ts.map +1 -0
  227. package/lib/src/mappings/NiktoNistMappingData.js.map +1 -1
  228. package/lib/src/mappings/NiktoNistMappingItem.d.ts +1 -0
  229. package/lib/src/mappings/NiktoNistMappingItem.d.ts.map +1 -0
  230. package/lib/src/mappings/NiktoNistMappingItem.js +4 -0
  231. package/lib/src/mappings/NiktoNistMappingItem.js.map +1 -1
  232. package/lib/src/mappings/NistCciMappingData.d.ts +1 -0
  233. package/lib/src/mappings/NistCciMappingData.d.ts.map +1 -0
  234. package/lib/src/mappings/NistCciMappingData.js.map +1 -1
  235. package/lib/src/mappings/OwaspNistMapping.d.ts +1 -0
  236. package/lib/src/mappings/OwaspNistMapping.d.ts.map +1 -0
  237. package/lib/src/mappings/OwaspNistMapping.js +18 -7
  238. package/lib/src/mappings/OwaspNistMapping.js.map +1 -1
  239. package/lib/src/mappings/OwaspNistMappingData.d.ts +1 -0
  240. package/lib/src/mappings/OwaspNistMappingData.d.ts.map +1 -0
  241. package/lib/src/mappings/OwaspNistMappingData.js.map +1 -1
  242. package/lib/src/mappings/OwaspNistMappingItem.d.ts +1 -0
  243. package/lib/src/mappings/OwaspNistMappingItem.d.ts.map +1 -0
  244. package/lib/src/mappings/OwaspNistMappingItem.js +5 -0
  245. package/lib/src/mappings/OwaspNistMappingItem.js.map +1 -1
  246. package/lib/src/mappings/ScoutsuiteNistMapping.d.ts +1 -0
  247. package/lib/src/mappings/ScoutsuiteNistMapping.d.ts.map +1 -0
  248. package/lib/src/mappings/ScoutsuiteNistMapping.js +1 -0
  249. package/lib/src/mappings/ScoutsuiteNistMapping.js.map +1 -1
  250. package/lib/src/mappings/ScoutsuiteNistMappingData.d.ts +1 -0
  251. package/lib/src/mappings/ScoutsuiteNistMappingData.d.ts.map +1 -0
  252. package/lib/src/mappings/ScoutsuiteNistMappingData.js.map +1 -1
  253. package/lib/src/mappings/ScoutsuiteNistMappingItem.d.ts +1 -0
  254. package/lib/src/mappings/ScoutsuiteNistMappingItem.d.ts.map +1 -0
  255. package/lib/src/mappings/ScoutsuiteNistMappingItem.js +2 -0
  256. package/lib/src/mappings/ScoutsuiteNistMappingItem.js.map +1 -1
  257. package/lib/src/msft-secure-score-mapper.d.ts +1 -0
  258. package/lib/src/msft-secure-score-mapper.d.ts.map +1 -0
  259. package/lib/src/msft-secure-score-mapper.js +202 -185
  260. package/lib/src/msft-secure-score-mapper.js.map +1 -1
  261. package/lib/src/nessus-mapper.d.ts +2 -1
  262. package/lib/src/nessus-mapper.d.ts.map +1 -0
  263. package/lib/src/nessus-mapper.js +122 -105
  264. package/lib/src/nessus-mapper.js.map +1 -1
  265. package/lib/src/netsparker-mapper.d.ts +7 -0
  266. package/lib/src/netsparker-mapper.d.ts.map +1 -0
  267. package/lib/src/netsparker-mapper.js +34 -9
  268. package/lib/src/netsparker-mapper.js.map +1 -1
  269. package/lib/src/neuvector-mapper.d.ts +1 -0
  270. package/lib/src/neuvector-mapper.d.ts.map +1 -0
  271. package/lib/src/neuvector-mapper.js +120 -117
  272. package/lib/src/neuvector-mapper.js.map +1 -1
  273. package/lib/src/nikto-mapper.d.ts +1 -0
  274. package/lib/src/nikto-mapper.d.ts.map +1 -0
  275. package/lib/src/nikto-mapper.js +85 -74
  276. package/lib/src/nikto-mapper.js.map +1 -1
  277. package/lib/src/prisma-mapper.d.ts +1 -0
  278. package/lib/src/prisma-mapper.d.ts.map +1 -0
  279. package/lib/src/prisma-mapper.js +138 -128
  280. package/lib/src/prisma-mapper.js.map +1 -1
  281. package/lib/src/sarif-mapper.d.ts +1 -0
  282. package/lib/src/sarif-mapper.d.ts.map +1 -0
  283. package/lib/src/sarif-mapper.js +116 -105
  284. package/lib/src/sarif-mapper.js.map +1 -1
  285. package/lib/src/scoutsuite-mapper.d.ts +1 -0
  286. package/lib/src/scoutsuite-mapper.d.ts.map +1 -0
  287. package/lib/src/scoutsuite-mapper.js +174 -163
  288. package/lib/src/scoutsuite-mapper.js.map +1 -1
  289. package/lib/src/snyk-mapper.d.ts +1 -0
  290. package/lib/src/snyk-mapper.d.ts.map +1 -0
  291. package/lib/src/snyk-mapper.js +112 -100
  292. package/lib/src/snyk-mapper.js.map +1 -1
  293. package/lib/src/sonarqube-mapper.d.ts +18 -5
  294. package/lib/src/sonarqube-mapper.d.ts.map +1 -0
  295. package/lib/src/sonarqube-mapper.js +525 -271
  296. package/lib/src/sonarqube-mapper.js.map +1 -1
  297. package/lib/src/splunk-mapper.d.ts +3 -2
  298. package/lib/src/splunk-mapper.d.ts.map +1 -0
  299. package/lib/src/splunk-mapper.js +69 -12
  300. package/lib/src/splunk-mapper.js.map +1 -1
  301. package/lib/src/trufflehog-mapper.d.ts +1 -0
  302. package/lib/src/trufflehog-mapper.d.ts.map +1 -0
  303. package/lib/src/trufflehog-mapper.js +72 -69
  304. package/lib/src/trufflehog-mapper.js.map +1 -1
  305. package/lib/src/twistlock-mapper.d.ts +1 -0
  306. package/lib/src/twistlock-mapper.d.ts.map +1 -0
  307. package/lib/src/twistlock-mapper.js +140 -126
  308. package/lib/src/twistlock-mapper.js.map +1 -1
  309. package/lib/src/utils/CCI_List.d.ts +1 -0
  310. package/lib/src/utils/CCI_List.d.ts.map +1 -0
  311. package/lib/src/utils/CCI_List.js.map +1 -1
  312. package/lib/src/utils/attestations.d.ts +1 -0
  313. package/lib/src/utils/attestations.d.ts.map +1 -0
  314. package/lib/src/utils/attestations.js +28 -13
  315. package/lib/src/utils/attestations.js.map +1 -1
  316. package/lib/src/utils/compliance.d.ts +1 -0
  317. package/lib/src/utils/compliance.d.ts.map +1 -0
  318. package/lib/src/utils/compliance.js +11 -3
  319. package/lib/src/utils/compliance.js.map +1 -1
  320. package/lib/src/utils/fingerprinting.d.ts +2 -0
  321. package/lib/src/utils/fingerprinting.d.ts.map +1 -0
  322. package/lib/src/utils/fingerprinting.js +28 -11
  323. package/lib/src/utils/fingerprinting.js.map +1 -1
  324. package/lib/src/utils/global.d.ts +3 -1
  325. package/lib/src/utils/global.d.ts.map +1 -0
  326. package/lib/src/utils/global.js +34 -15
  327. package/lib/src/utils/global.js.map +1 -1
  328. package/lib/src/utils/parseJson.d.ts +1 -0
  329. package/lib/src/utils/parseJson.d.ts.map +1 -0
  330. package/lib/src/utils/parseJson.js +7 -3
  331. package/lib/src/utils/parseJson.js.map +1 -1
  332. package/lib/src/utils/result.d.ts +1 -0
  333. package/lib/src/utils/result.d.ts.map +1 -0
  334. package/lib/src/utils/result.js.map +1 -1
  335. package/lib/src/utils/splunk-tools.d.ts +2 -1
  336. package/lib/src/utils/splunk-tools.d.ts.map +1 -0
  337. package/lib/src/utils/splunk-tools.js +52 -31
  338. package/lib/src/utils/splunk-tools.js.map +1 -1
  339. package/lib/src/veracode-mapper.d.ts +1 -0
  340. package/lib/src/veracode-mapper.d.ts.map +1 -0
  341. package/lib/src/veracode-mapper.js +50 -7
  342. package/lib/src/veracode-mapper.js.map +1 -1
  343. package/lib/src/xccdf-results-mapper.d.ts +7 -0
  344. package/lib/src/xccdf-results-mapper.d.ts.map +1 -0
  345. package/lib/src/xccdf-results-mapper.js +336 -301
  346. package/lib/src/xccdf-results-mapper.js.map +1 -1
  347. package/lib/src/zap-mapper.d.ts +8 -0
  348. package/lib/src/zap-mapper.d.ts.map +1 -0
  349. package/lib/src/zap-mapper.js +119 -90
  350. package/lib/src/zap-mapper.js.map +1 -1
  351. package/lib/tsconfig.build.tsbuildinfo +1 -0
  352. package/lib/types/neuvector-types.d.ts +1 -0
  353. package/lib/types/neuvector-types.d.ts.map +1 -0
  354. package/lib/types/neuvector-types.js +80 -0
  355. package/lib/types/neuvector-types.js.map +1 -1
  356. package/lib/types/splunk-config-types.d.ts +1 -0
  357. package/lib/types/splunk-config-types.d.ts.map +1 -0
  358. package/lib/types/splunk-config-types.js.map +1 -1
  359. package/lib/types/splunk-control-types.d.ts +1 -0
  360. package/lib/types/splunk-control-types.d.ts.map +1 -0
  361. package/lib/types/splunk-control-types.js.map +1 -1
  362. package/lib/types/splunk-profile-types.d.ts +1 -0
  363. package/lib/types/splunk-profile-types.d.ts.map +1 -0
  364. package/lib/types/splunk-profile-types.js.map +1 -1
  365. package/lib/types/splunk-report-types.d.ts +1 -0
  366. package/lib/types/splunk-report-types.d.ts.map +1 -0
  367. package/lib/types/splunk-report-types.js.map +1 -1
  368. package/package.json +19 -40
  369. package/lib/data/converters/csv2json.ts +0 -36
  370. package/lib/data/converters/xml2json.ts +0 -57
@@ -15,18 +15,55 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
37
  };
28
38
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.setupControlStatus = exports.setupDetailsAssume = exports.setupResourcesID2 = exports.setupResourcesID = exports.setupProdFieldCheck = exports.setupRemRec = exports.getFixForControl = exports.setupFindingType = exports.setupSevOriginal = exports.setupSevLabel = exports.setupDescr = exports.setupTitle = exports.setupGeneratorId = exports.setupUpdated = exports.setupRegion = exports.setupCreated = exports.setupAwsAcct = exports.setupProductARN = exports.setupId = exports.createCode = exports.createNote = exports.getAllLayers = exports.cleanText = exports.createAssumeRolePolicyDocument = exports.createDescription = exports.statusCount = exports.createProfileInfoFinding = exports.getRunTime = void 0;
39
+ exports.getRunTime = getRunTime;
40
+ exports.createProfileInfoFinding = createProfileInfoFinding;
41
+ exports.statusCount = statusCount;
42
+ exports.createDescription = createDescription;
43
+ exports.createAssumeRolePolicyDocument = createAssumeRolePolicyDocument;
44
+ exports.cleanText = cleanText;
45
+ exports.getAllLayers = getAllLayers;
46
+ exports.createNote = createNote;
47
+ exports.createCode = createCode;
48
+ exports.setupId = setupId;
49
+ exports.setupProductARN = setupProductARN;
50
+ exports.setupAwsAcct = setupAwsAcct;
51
+ exports.setupCreated = setupCreated;
52
+ exports.setupRegion = setupRegion;
53
+ exports.setupUpdated = setupUpdated;
54
+ exports.setupGeneratorId = setupGeneratorId;
55
+ exports.setupTitle = setupTitle;
56
+ exports.setupDescr = setupDescr;
57
+ exports.setupSevLabel = setupSevLabel;
58
+ exports.setupSevOriginal = setupSevOriginal;
59
+ exports.setupFindingType = setupFindingType;
60
+ exports.getFixForControl = getFixForControl;
61
+ exports.setupRemRec = setupRemRec;
62
+ exports.setupProdFieldCheck = setupProdFieldCheck;
63
+ exports.setupResourcesID = setupResourcesID;
64
+ exports.setupResourcesID2 = setupResourcesID2;
65
+ exports.setupDetailsAssume = setupDetailsAssume;
66
+ exports.setupControlStatus = setupControlStatus;
30
67
  const crypto_1 = require("crypto");
31
68
  const inspecjs_1 = require("inspecjs");
32
69
  const _ = __importStar(require("lodash"));
@@ -50,22 +87,26 @@ function getRunTime(hdf) {
50
87
  });
51
88
  return time;
52
89
  }
53
- exports.getRunTime = getRunTime;
90
+ /** Trivial overlay filter that just takes the version of the control that has results from amongst all identical ids */
54
91
  function filter_overlays(controls) {
55
92
  const idHash = {};
56
93
  controls.forEach((c) => {
57
94
  const id = c.hdf.wraps.id;
58
95
  const old = idHash[id];
96
+ // If old, gotta check if our new status list is "better than" old
59
97
  if (old) {
60
98
  const newSignificant = c.hdf.status_list && c.hdf.status_list.length > 0;
61
99
  if (newSignificant) {
100
+ // Overwrite
62
101
  idHash[id] = c;
63
102
  }
64
103
  }
65
104
  else {
105
+ // First time seeing this id
66
106
  idHash[id] = c;
67
107
  }
68
108
  });
109
+ // Return the set of keys
69
110
  return Array.from(Object.values(idHash));
70
111
  }
71
112
  function createProfileInfoFinding(hdf, options) {
@@ -104,11 +145,12 @@ function createProfileInfoFinding(hdf, options) {
104
145
  }
105
146
  ]
106
147
  };
148
+ // need the intermediate caste to tell typescript that this cast is intentional
107
149
  return profileInfo;
108
150
  }
109
- exports.createProfileInfoFinding = createProfileInfoFinding;
110
151
  function statusCount(evaluation) {
111
152
  let controls = [];
153
+ // Get all controls
112
154
  evaluation.contains.forEach((p) => controls.push(...p.contains));
113
155
  controls = filter_overlays(controls);
114
156
  const statusCounts = {
@@ -139,17 +181,15 @@ function statusCount(evaluation) {
139
181
  });
140
182
  return statusCounts;
141
183
  }
142
- exports.statusCount = statusCount;
143
184
  function createDescription(counts) {
144
185
  return `Result Set Status Summary -- Passed: ${counts.Passed} (${counts.PassedTests} individual checks passed) --- Failed: ${counts.Failed} (${counts.PassingTestsFailedControl} individual checks failed out of ${counts.PassingTestsFailedControl + counts.FailedTests} total checks) --- Not Applicable: ${counts.NotApplicable} (System exception or absent component) --- Not Reviewed: ${counts.NotReviewed} (Can only be tested manually at this time)`;
145
186
  }
146
- exports.createDescription = createDescription;
147
187
  function createAssumeRolePolicyDocument(layersOfControl, segment) {
148
188
  const segmentOverview = createNote(segment);
149
189
  const code = layersOfControl.map((layer) => createCode(layer)).join('\n\n');
150
190
  return `${code}\n\n${segmentOverview}`;
151
191
  }
152
- exports.createAssumeRolePolicyDocument = createAssumeRolePolicyDocument;
192
+ // Gets rid of extra spacing + newlines as these aren't shown in Security Hub
153
193
  function cleanText(text) {
154
194
  if (text) {
155
195
  return text.replace(/ +/g, ' ');
@@ -158,7 +198,7 @@ function cleanText(text) {
158
198
  return undefined;
159
199
  }
160
200
  }
161
- exports.cleanText = cleanText;
201
+ // Gets all layers of a control across overlaid profiles given the ID
162
202
  function getAllLayers(hdf, knownControl) {
163
203
  if (hdf.profiles.length === 1) {
164
204
  return [
@@ -172,6 +212,7 @@ function getAllLayers(hdf, knownControl) {
172
212
  }
173
213
  else {
174
214
  const foundControls = [];
215
+ // For each control in each profile
175
216
  hdf.profiles.forEach((profile) => {
176
217
  profile.controls.forEach((control) => {
177
218
  if (control.id === knownControl.id) {
@@ -185,7 +226,7 @@ function getAllLayers(hdf, knownControl) {
185
226
  return foundControls;
186
227
  }
187
228
  }
188
- exports.getAllLayers = getAllLayers;
229
+ // Creates Note field containing control status
189
230
  function createNote(segment) {
190
231
  if (segment.message) {
191
232
  return `Test Description: ${segment.code_desc} --- Test Result: ${segment.message}`;
@@ -197,7 +238,6 @@ function createNote(segment) {
197
238
  return `Test Description: ${segment.code_desc}`;
198
239
  }
199
240
  }
200
- exports.createNote = createNote;
201
241
  function cleanObjectValues(value) {
202
242
  if (Array.isArray(value)) {
203
243
  return value.length < 0;
@@ -214,7 +254,6 @@ function createCode(control) {
214
254
  }
215
255
  return `=========================================================\n# Profile name: ${control.profileInfo?.name}\n=========================================================\n\n${control.code ? control.code?.replace(/\\\"/g, '"') : noCodeValue}`;
216
256
  }
217
- exports.createCode = createCode;
218
257
  function setupId(control, context) {
219
258
  const target = context?.ioptions.target;
220
259
  const name = context?.data.profiles[0].name;
@@ -222,15 +261,12 @@ function setupId(control, context) {
222
261
  .update(control.id + control.result.code_desc)
223
262
  .digest('hex')}`;
224
263
  }
225
- exports.setupId = setupId;
226
264
  function setupProductARN(_val, context) {
227
265
  return `arn:aws:securityhub:${context?.ioptions.region}:${context?.ioptions.awsAccountId}:product/${context?.ioptions.awsAccountId}/default`;
228
266
  }
229
- exports.setupProductARN = setupProductARN;
230
267
  function setupAwsAcct(_val, context) {
231
268
  return context?.ioptions.awsAccountId;
232
269
  }
233
- exports.setupAwsAcct = setupAwsAcct;
234
270
  function setupCreated(control) {
235
271
  try {
236
272
  return (new Date(control.result.start_time).toISOString() ||
@@ -240,27 +276,24 @@ function setupCreated(control) {
240
276
  return new Date().toISOString();
241
277
  }
242
278
  }
243
- exports.setupCreated = setupCreated;
244
279
  function setupRegion(_val, context) {
245
280
  return context?.ioptions.region;
246
281
  }
247
- exports.setupRegion = setupRegion;
248
282
  function setupUpdated(_control, context) {
283
+ // Add one millisecond to the time by control index so the order is correct in security hub
249
284
  const time = new Date();
250
285
  time.setMilliseconds(time.getMilliseconds() + (context?.index || 0));
251
286
  return time.toISOString();
252
287
  }
253
- exports.setupUpdated = setupUpdated;
254
288
  function setupGeneratorId(control, context) {
255
289
  return `arn:aws:securityhub:${context?.ioptions.region}:${context?.ioptions.awsAccountId}:ruleset/set/${context?.data.profiles[0].name}/rule/${control.id}`;
256
290
  }
257
- exports.setupGeneratorId = setupGeneratorId;
258
291
  function setupTitle(control) {
259
292
  const nistTags = control.tags.nist ? `[${control.tags.nist.join(', ')}]` : '';
260
293
  return _.truncate(`${control.id} | ${nistTags} | ${cleanText(control.title)}`, { length: 256 });
261
294
  }
262
- exports.setupTitle = setupTitle;
263
295
  function setupDescr(control) {
296
+ // Check text can either be a description or a tag
264
297
  const checkText = (0, global_1.getDescription)(control.descriptions || [], 'check') ||
265
298
  control.tags.check ||
266
299
  'Check not available';
@@ -271,15 +304,12 @@ function setupDescr(control) {
271
304
  }
272
305
  return currentVal;
273
306
  }
274
- exports.setupDescr = setupDescr;
275
307
  function setupSevLabel(control, context) {
276
308
  return context?.impactMapping.get(control.impact) || 'INFORMATIONAL';
277
309
  }
278
- exports.setupSevLabel = setupSevLabel;
279
310
  function setupSevOriginal(control) {
280
311
  return `${control.impact}`;
281
312
  }
282
- exports.setupSevOriginal = setupSevOriginal;
283
313
  function createControlMetadata(control) {
284
314
  const types = [
285
315
  `Control/ID/${(0, reverse_asff_mapper_1.escapeForwardSlashes)(control.id)}`,
@@ -416,57 +446,58 @@ function createDescriptionInfo(control) {
416
446
  return typesArr;
417
447
  }
418
448
  function setupFindingType(control, context) {
449
+ // typesArr needs to be ordered so that attributes that are likely to be bloated and/or contain less necessary information end up at the bottom so that they don't expand and push more attributes outside of the list which is capped at 50 items
419
450
  const typesArr = [
420
451
  `MITRE/SAF/${package_json_1.version}-hdf2asff`,
421
452
  `File/Input/${getFilename(context?.ioptions)}`
422
453
  ];
454
+ // Add control metadata to the Finding Provider Fields
423
455
  typesArr.push(...createControlMetadata(control));
456
+ // Add segment/result information to Finding Provider Fields
424
457
  typesArr.push(...createSegmentInfo(control.result));
458
+ // Add Tags to Finding Provider Fields
425
459
  typesArr.push(...createTagInfo(control));
460
+ // nist tag, then subdescriptions, then remaining tags
426
461
  const nistTagIndex = typesArr.findIndex((typeString) => typeString.startsWith('Tags/nist/'));
427
462
  const tagsIndex = typesArr.findIndex((typeString) => typeString.startsWith('Tags/'));
428
463
  if (nistTagIndex !== -1) {
429
464
  typesArr.splice(tagsIndex, 0, typesArr.splice(nistTagIndex, 1)[0]);
430
465
  }
431
- typesArr.splice(tagsIndex === -1 ? typesArr.length : tagsIndex + 1, 0, ...createDescriptionInfo(control));
466
+ typesArr.splice(tagsIndex === -1 ? typesArr.length : tagsIndex + 1, 0,
467
+ // Add Descriptions to FindingProviderFields
468
+ ...createDescriptionInfo(control));
469
+ // description, then code, then code_desc
432
470
  const desc = typesArr.splice(typesArr.findIndex((typeString) => typeString.startsWith('Control/Desc/')), 1)[0];
433
471
  const code = `Control/Code/${(0, reverse_asff_mapper_1.escapeForwardSlashes)(control.layersOfControl
434
472
  .map((layer) => createCode(layer))
435
473
  .join('\n\n'))}`;
436
474
  const codeDesc = typesArr.splice(typesArr.findIndex((typeString) => typeString.startsWith('Segment/code_desc/')), 1)[0];
437
- typesArr.push(..._.compact([desc, code, codeDesc]));
475
+ typesArr.push(..._.compact([desc, code, codeDesc])); // [][0] can return undefined so use compact to deal with them
438
476
  return typesArr;
439
477
  }
440
- exports.setupFindingType = setupFindingType;
441
478
  function getFixForControl(control) {
442
479
  return ((0, global_1.getDescription)(control.descriptions || [], 'fix') ||
443
480
  control.tags.fix ||
444
481
  'Fix not available');
445
482
  }
446
- exports.getFixForControl = getFixForControl;
447
483
  function setupRemRec(control) {
448
484
  return _.truncate(cleanText(`${createNote(control.result)} --- Fix: ${getFixForControl(control)}`), { length: 512, omission: '... [SEE FULL TEXT IN AssumeRolePolicyDocument]' });
449
485
  }
450
- exports.setupRemRec = setupRemRec;
451
486
  function setupProdFieldCheck(control) {
452
487
  const checkText = (0, global_1.getDescription)(control.descriptions || [], 'check') ||
453
488
  control.tags.check ||
454
489
  'Check not available';
455
490
  return _.truncate(checkText, { length: 2048, omission: '' });
456
491
  }
457
- exports.setupProdFieldCheck = setupProdFieldCheck;
458
492
  function setupResourcesID(_val, context) {
459
493
  return `AWS::::Account:${context?.ioptions.awsAccountId}`;
460
494
  }
461
- exports.setupResourcesID = setupResourcesID;
462
495
  function setupResourcesID2(control) {
463
496
  return `${control.id} Validation Code`;
464
497
  }
465
- exports.setupResourcesID2 = setupResourcesID2;
466
498
  function setupDetailsAssume(control) {
467
499
  return createAssumeRolePolicyDocument(control.layersOfControl, control.result);
468
500
  }
469
- exports.setupDetailsAssume = setupDetailsAssume;
470
501
  function setupControlStatus(control) {
471
502
  if (control.results.some((result) => 'backtrace' in result)) {
472
503
  return 'NOT_AVAILABLE';
@@ -479,5 +510,4 @@ function setupControlStatus(control) {
479
510
  }
480
511
  return status;
481
512
  }
482
- exports.setupControlStatus = setupControlStatus;
483
513
  //# sourceMappingURL=transformers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../../../../src/converters-from-hdf/asff/transformers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../../../../src/converters-from-hdf/asff/transformers.ts"],"names":[],"mappings":"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","sourcesContent":["import {createHash} from 'crypto';\nimport {\n ContextualizedControl,\n ContextualizedEvaluation,\n contextualizeEvaluation,\n convertFile,\n ExecJSON\n} from 'inspecjs';\nimport * as _ from 'lodash';\nimport moment from 'moment';\nimport {version as HeimdallToolsVersion} from '../../../package.json';\nimport {getDescription} from '../../utils/global';\nimport {IFindingASFF, IOptions} from './asff-types';\nimport {\n escapeForwardSlashes,\n FromHdfToAsffMapper,\n SegmentedControl\n} from './reverse-asff-mapper';\n\n//FromHdfToAsff mapper transformers\ntype Counts = {\n Passed: number;\n PassedTests: number;\n Failed: number;\n FailedTests: number;\n PassingTestsFailedControl: number;\n NotApplicable: number;\n NotReviewed: number;\n};\n\nexport function getRunTime(hdf: ExecJSON.Execution): string {\n let time = new Date().toISOString();\n hdf.profiles.forEach((profile) => {\n if (\n profile.controls[0] &&\n profile.controls[0].results.length &&\n profile.controls[0].results[0].start_time\n ) {\n try {\n time = new Date(\n profile.controls[0].results[0].start_time\n ).toISOString();\n } catch {\n time = new Date().toISOString();\n }\n }\n });\n return time;\n}\n\n/** Trivial overlay filter that just takes the version of the control that has results from amongst all identical ids */\nfunction filter_overlays(\n controls: ContextualizedControl[]\n): ContextualizedControl[] {\n const idHash: {[key: string]: ContextualizedControl} = {};\n controls.forEach((c) => {\n const id = c.hdf.wraps.id;\n const old: ContextualizedControl | undefined = idHash[id];\n // If old, gotta check if our new status list is \"better than\" old\n if (old) {\n const newSignificant = c.hdf.status_list && c.hdf.status_list.length > 0;\n if (newSignificant) {\n // Overwrite\n idHash[id] = c;\n }\n } else {\n // First time seeing this id\n idHash[id] = c;\n }\n });\n\n // Return the set of keys\n return Array.from(Object.values(idHash));\n}\n\nexport function createProfileInfoFinding(\n hdf: ExecJSON.Execution,\n options: IOptions\n): IFindingASFF {\n const runTime = getRunTime(hdf);\n const inspecJSJson = convertFile(JSON.stringify(hdf));\n const contextualizedEvaluation = contextualizeEvaluation(\n inspecJSJson['1_0_ExecJson'] as any\n );\n const counts = statusCount(contextualizedEvaluation);\n const updatedAt = new Date();\n updatedAt.setMilliseconds(\n updatedAt.getMilliseconds() +\n (contextualizedEvaluation.contains[0].contains.length || 0)\n );\n const profileInfo: Record<string, unknown> = {\n SchemaVersion: '2018-10-08',\n Id: `${options.target}/${hdf.profiles[0].name}`,\n ProductArn: `arn:aws:securityhub:${options.region}:${options.awsAccountId}:product/${options.awsAccountId}/default`,\n GeneratorId: `arn:aws:securityhub:us-east-2:${options.awsAccountId}:ruleset/set/${hdf.profiles[0].name}`,\n AwsAccountId: options.awsAccountId,\n CreatedAt: runTime,\n UpdatedAt: updatedAt,\n Title: `${options.target} | ${hdf.profiles[0].name} | ${moment().format(\n 'YYYY-MM-DD hh:mm:ss [GMT]ZZ'\n )}`,\n Description: createDescription(counts),\n Severity: {\n Label: 'INFORMATIONAL'\n },\n FindingProviderFields: {\n Severity: {\n Label: 'INFORMATIONAL'\n },\n Types: createProfileInfoFindingFields(hdf, options)\n },\n Resources: [\n {\n Type: 'AwsAccount',\n Id: `AWS::::Account:${options.awsAccountId}`,\n Partition: 'aws',\n Region: options.region\n }\n ]\n };\n\n // need the intermediate caste to tell typescript that this cast is intentional\n return profileInfo as unknown as IFindingASFF;\n}\n\nexport function statusCount(evaluation: ContextualizedEvaluation): Counts {\n let controls: ContextualizedControl[] = [];\n // Get all controls\n evaluation.contains.forEach((p) => controls.push(...p.contains));\n controls = filter_overlays(controls);\n const statusCounts: Counts = {\n Passed: 0,\n PassedTests: 0,\n PassingTestsFailedControl: 0,\n Failed: 0,\n FailedTests: 0,\n NotApplicable: 0,\n NotReviewed: 0\n };\n controls.forEach((control) => {\n if (control.hdf.status === 'Passed') {\n statusCounts.Passed += 1;\n statusCounts.PassedTests += (control.hdf.segments || []).length;\n } else if (control.hdf.status === 'Failed') {\n statusCounts.PassingTestsFailedControl += (\n control.hdf.segments || []\n ).filter((s) => s.status === 'passed').length;\n statusCounts.FailedTests += (control.hdf.segments || []).filter(\n (s) => s.status === 'failed'\n ).length;\n statusCounts.Failed += 1;\n } else if (control.hdf.status === 'Not Applicable') {\n statusCounts.NotApplicable += 1;\n } else if (control.hdf.status === 'Not Reviewed') {\n statusCounts.NotReviewed += 1;\n }\n });\n return statusCounts;\n}\n\nexport function createDescription(counts: Counts): string {\n return `Result Set Status Summary -- Passed: ${counts.Passed} (${\n counts.PassedTests\n } individual checks passed) --- Failed: ${counts.Failed} (${\n counts.PassingTestsFailedControl\n } individual checks failed out of ${\n counts.PassingTestsFailedControl + counts.FailedTests\n } total checks) --- Not Applicable: ${\n counts.NotApplicable\n } (System exception or absent component) --- Not Reviewed: ${\n counts.NotReviewed\n } (Can only be tested manually at this time)`;\n}\n\nexport function createAssumeRolePolicyDocument(\n layersOfControl: ExecJSON.Control[],\n segment: ExecJSON.ControlResult\n): string {\n const segmentOverview = createNote(segment);\n const code = layersOfControl.map((layer) => createCode(layer)).join('\\n\\n');\n return `${code}\\n\\n${segmentOverview}`;\n}\n\n// Gets rid of extra spacing + newlines as these aren't shown in Security Hub\nexport function cleanText(text?: string | null): string | undefined {\n if (text) {\n return text.replace(/ +/g, ' ');\n } else {\n return undefined;\n }\n}\n\n// Gets all layers of a control across overlaid profiles given the ID\nexport function getAllLayers(\n hdf: ExecJSON.Execution,\n knownControl: ExecJSON.Control\n): (ExecJSON.Control & Record<string, unknown>)[] {\n if (hdf.profiles.length === 1) {\n return [\n {\n ...knownControl,\n profileInfo: {\n ..._.omit(hdf.profiles[0], 'controls')\n }\n }\n ];\n } else {\n const foundControls: (ExecJSON.Control & Record<string, unknown>)[] = [];\n // For each control in each profile\n hdf.profiles.forEach((profile) => {\n profile.controls.forEach((control) => {\n if (control.id === knownControl.id) {\n foundControls.push({\n ...control,\n profileInfo: {..._.omit(profile, 'controls')}\n });\n }\n });\n });\n return foundControls;\n }\n}\n\n// Creates Note field containing control status\nexport function createNote(segment: ExecJSON.ControlResult) {\n if (segment.message) {\n return `Test Description: ${segment.code_desc} --- Test Result: ${segment.message}`;\n } else if (segment.skip_message) {\n return `Test Description: ${segment.code_desc} --- Skip Message: ${segment.skip_message}`;\n } else {\n return `Test Description: ${segment.code_desc}`;\n }\n}\n\nfunction cleanObjectValues<T>(value: T): boolean {\n if (Array.isArray(value)) {\n return value.length < 0;\n }\n return !Boolean(value);\n}\n\nexport function createCode(\n control: ExecJSON.Control & {profileInfo?: Record<string, unknown>}\n) {\n const noCodeValue =\n ((_.get(control, 'profileInfo.depends') || []) as Record<string, unknown>[])\n .length > 0\n ? ''\n : JSON.stringify(\n _.omitBy(\n _.omit(control, ['results', 'profileInfo']),\n cleanObjectValues\n )\n );\n if (!control.code && noCodeValue === '') {\n return '';\n }\n return `=========================================================\\n# Profile name: ${\n control.profileInfo?.name\n }\\n=========================================================\\n\\n${\n control.code ? control.code?.replace(/\\\\\\\"/g, '\"') : noCodeValue\n }`;\n}\n\nexport function setupId(\n control: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n const target = context?.ioptions.target;\n const name = context?.data.profiles[0].name;\n\n return `${target}/${name}/${control.id}/finding/${createHash('sha256')\n .update(control.id + control.result.code_desc)\n .digest('hex')}`;\n}\n\nexport function setupProductARN(\n _val: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n return `arn:aws:securityhub:${context?.ioptions.region}:${context?.ioptions.awsAccountId}:product/${context?.ioptions.awsAccountId}/default`;\n}\n\nexport function setupAwsAcct(\n _val: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n return context?.ioptions.awsAccountId;\n}\n\nexport function setupCreated(control: SegmentedControl) {\n try {\n return (\n new Date(control.result.start_time).toISOString() ||\n new Date().toISOString()\n );\n } catch {\n return new Date().toISOString();\n }\n}\n\nexport function setupRegion(\n _val: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n return context?.ioptions.region;\n}\nexport function setupUpdated(\n _control: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n // Add one millisecond to the time by control index so the order is correct in security hub\n const time = new Date();\n time.setMilliseconds(time.getMilliseconds() + (context?.index || 0));\n return time.toISOString();\n}\n\nexport function setupGeneratorId(\n control: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n return `arn:aws:securityhub:${context?.ioptions.region}:${context?.ioptions.awsAccountId}:ruleset/set/${context?.data.profiles[0].name}/rule/${control.id}`;\n}\n\nexport function setupTitle(control: SegmentedControl) {\n const nistTags = control.tags.nist ? `[${control.tags.nist.join(', ')}]` : '';\n return _.truncate(\n `${control.id} | ${nistTags} | ${cleanText(control.title)}`,\n {length: 256}\n );\n}\n\nexport function setupDescr(control: SegmentedControl) {\n // Check text can either be a description or a tag\n const checkText: string =\n getDescription(control.descriptions || [], 'check') ||\n (control.tags.check as string) ||\n 'Check not available';\n\n const currentVal = _.truncate(\n cleanText(`${control.desc} -- Check Text: ${checkText}`),\n {length: 1024, omission: '[SEE FULL TEXT IN AssumeRolePolicyDocument]'}\n );\n\n const caveat = getDescription(control.descriptions || [], 'caveat');\n\n if (caveat) {\n return _.truncate(\n `Caveat: ${cleanText(caveat)} --- Description: ${currentVal}`,\n {length: 1024, omission: ''}\n );\n }\n return currentVal;\n}\n\nexport function setupSevLabel(\n control: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n return context?.impactMapping.get(control.impact) || 'INFORMATIONAL';\n}\n\nexport function setupSevOriginal(control: SegmentedControl) {\n return `${control.impact}`;\n}\n\nfunction createControlMetadata(control: SegmentedControl) {\n const types = [\n `Control/ID/${escapeForwardSlashes(control.id)}`,\n `Control/Impact/${control.impact}`\n ];\n if (control.title) {\n types.push(`Control/Title/${escapeForwardSlashes(control.title)}`);\n }\n if (control.desc) {\n types.push(`Control/Desc/${escapeForwardSlashes(control.desc)}`);\n }\n if (control.waiver_data && Object.keys(control.waiver_data).length > 0) {\n types.push(\n `Control/Waiver_Data/${escapeForwardSlashes(\n JSON.stringify(control.waiver_data)\n )}`\n );\n }\n if (control.attestation_data) {\n types.push(\n `Control/Attestation_Data/${escapeForwardSlashes(\n JSON.stringify(control.attestation_data)\n )}`\n );\n }\n if (control.refs && control.refs.length > 0) {\n types.push(\n `Control/Refs/${escapeForwardSlashes(JSON.stringify(control.refs))}`\n );\n }\n if (\n control.source_location &&\n Object.keys(control.source_location).length > 0\n ) {\n types.push(\n `Control/Source_Location/${escapeForwardSlashes(\n JSON.stringify(control.source_location)\n )}`\n );\n }\n return types;\n}\n\nfunction getFilename(options?: IOptions): string {\n const slashSplit =\n options?.input.split('\\\\')[options?.input.split('\\\\').length - 1];\n return slashSplit?.split('/')[slashSplit.split('/').length - 1] ?? '';\n}\n\nfunction createProfileInfoFindingFields(\n hdf: ExecJSON.Execution,\n options: IOptions\n): string[] {\n const typesArr = [\n `MITRE/SAF/${HeimdallToolsVersion}-hdf2asff`,\n `File/Input/${getFilename(options)}`\n ];\n const executionTargets = ['platform', 'statistics', 'version'];\n executionTargets.forEach((target) => {\n const value = _.get(hdf, target);\n if (_.isString(value) && value.trim()) {\n typesArr.push(\n `Execution/${escapeForwardSlashes(target)}/${escapeForwardSlashes(\n value\n )}`\n );\n } else {\n typesArr.push(\n `Execution/${escapeForwardSlashes(target)}/${escapeForwardSlashes(\n JSON.stringify(value)\n )}`\n );\n }\n });\n hdf.profiles.forEach((profile) => {\n const targets = [\n 'version',\n 'sha256',\n 'maintainer',\n 'summary',\n 'license',\n 'copyright',\n 'copyright_email',\n 'name',\n 'title',\n 'depends',\n 'supports',\n 'attributes',\n 'description',\n 'inspec_version',\n 'parent_profile',\n 'skip_message',\n 'status',\n 'status_message'\n ];\n targets.forEach((target) => {\n const value = _.get(profile, target);\n if (typeof value === 'string' && value) {\n typesArr.push(\n `${escapeForwardSlashes(profile.name)}/${escapeForwardSlashes(\n target\n )}/${escapeForwardSlashes(value)}`\n );\n } else if (typeof value === 'object') {\n typesArr.push(\n `${escapeForwardSlashes(profile.name)}/${escapeForwardSlashes(\n target\n )}/${escapeForwardSlashes(JSON.stringify(value))}`\n );\n }\n });\n });\n const passthrough = _.get(hdf, 'passthrough');\n if (_.isString(passthrough) && (passthrough as string).trim()) {\n typesArr.push(`Execution/passthrough/${escapeForwardSlashes(passthrough)}`);\n } else if (passthrough !== undefined) {\n typesArr.push(\n `Execution/passthrough/${escapeForwardSlashes(\n JSON.stringify(passthrough)\n )}`\n );\n }\n return typesArr;\n}\n\nfunction createSegmentInfo(segment: ExecJSON.ControlResult): string[] {\n const typesArr: string[] = [];\n const targets = [\n 'backtrace',\n 'exception',\n 'code_desc',\n 'message',\n 'resource',\n 'run_time',\n 'start_time',\n 'skip_message',\n 'status'\n ];\n targets.forEach((target) => {\n if (_.has(segment, target) && _.get(segment, target) !== undefined) {\n if (_.get(segment, target) === '') {\n typesArr.push(`Segment/${escapeForwardSlashes(target)}/''`);\n } else {\n typesArr.push(\n `Segment/${escapeForwardSlashes(target)}/${escapeForwardSlashes(\n _.get(segment, target)\n )}`\n );\n }\n }\n });\n return typesArr;\n}\n\nfunction createTagInfo(control: {tags: Record<string, unknown>}): string[] {\n const typesArr: string[] = [];\n for (const tag in control.tags) {\n typesArr.push(\n `Tags/${escapeForwardSlashes(tag)}/${escapeForwardSlashes(\n JSON.stringify(control.tags[tag])\n )}`\n );\n }\n return typesArr;\n}\n\nfunction createDescriptionInfo(control: ExecJSON.Control): string[] {\n const typesArr: string[] = [];\n if (Array.isArray(control.descriptions)) {\n control.descriptions?.forEach((description) => {\n if (description.data && cleanText(description.data)) {\n typesArr.push(\n `Descriptions/${escapeForwardSlashes(\n description.label\n )}/${escapeForwardSlashes(cleanText(description.data))}`\n );\n }\n });\n } else {\n Object.entries(control.descriptions || {}).forEach(([key, value]) => {\n if (value && cleanText(value as string)) {\n typesArr.push(\n `Descriptions/${escapeForwardSlashes(key)}/${escapeForwardSlashes(\n cleanText(value as string)\n )}`\n );\n }\n });\n }\n\n return typesArr;\n}\n\nexport function setupFindingType(\n control: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n // typesArr needs to be ordered so that attributes that are likely to be bloated and/or contain less necessary information end up at the bottom so that they don't expand and push more attributes outside of the list which is capped at 50 items\n const typesArr = [\n `MITRE/SAF/${HeimdallToolsVersion}-hdf2asff`,\n `File/Input/${getFilename(context?.ioptions)}`\n ];\n\n // Add control metadata to the Finding Provider Fields\n typesArr.push(...createControlMetadata(control));\n // Add segment/result information to Finding Provider Fields\n typesArr.push(...createSegmentInfo(control.result));\n // Add Tags to Finding Provider Fields\n typesArr.push(...createTagInfo(control));\n\n // nist tag, then subdescriptions, then remaining tags\n const nistTagIndex = typesArr.findIndex((typeString) =>\n typeString.startsWith('Tags/nist/')\n );\n const tagsIndex = typesArr.findIndex((typeString) =>\n typeString.startsWith('Tags/')\n );\n if (nistTagIndex !== -1) {\n typesArr.splice(tagsIndex, 0, typesArr.splice(nistTagIndex, 1)[0]);\n }\n typesArr.splice(\n tagsIndex === -1 ? typesArr.length : tagsIndex + 1,\n 0,\n // Add Descriptions to FindingProviderFields\n ...createDescriptionInfo(control)\n );\n\n // description, then code, then code_desc\n const desc = typesArr.splice(\n typesArr.findIndex((typeString) => typeString.startsWith('Control/Desc/')),\n 1\n )[0];\n const code = `Control/Code/${escapeForwardSlashes(\n control.layersOfControl\n .map(\n (layer: ExecJSON.Control & {profileInfo?: Record<string, unknown>}) =>\n createCode(layer)\n )\n .join('\\n\\n')\n )}`;\n const codeDesc = typesArr.splice(\n typesArr.findIndex((typeString) =>\n typeString.startsWith('Segment/code_desc/')\n ),\n 1\n )[0];\n typesArr.push(..._.compact([desc, code, codeDesc])); // [][0] can return undefined so use compact to deal with them\n\n return typesArr;\n}\n\nexport function getFixForControl(control: SegmentedControl) {\n return (\n getDescription(control.descriptions || [], 'fix') ||\n control.tags.fix ||\n 'Fix not available'\n );\n}\n\nexport function setupRemRec(control: SegmentedControl) {\n return _.truncate(\n cleanText(\n `${createNote(control.result)} --- Fix: ${getFixForControl(control)}`\n ),\n {length: 512, omission: '... [SEE FULL TEXT IN AssumeRolePolicyDocument]'}\n );\n}\n\nexport function setupProdFieldCheck(control: SegmentedControl) {\n const checkText: string =\n getDescription(control.descriptions || [], 'check') ||\n (control.tags.check as string) ||\n 'Check not available';\n\n return _.truncate(checkText, {length: 2048, omission: ''});\n}\n\nexport function setupResourcesID(\n _val: SegmentedControl,\n context?: FromHdfToAsffMapper\n) {\n return `AWS::::Account:${context?.ioptions.awsAccountId}`;\n}\n\nexport function setupResourcesID2(control: SegmentedControl) {\n return `${control.id} Validation Code`;\n}\n\nexport function setupDetailsAssume(control: SegmentedControl) {\n return createAssumeRolePolicyDocument(\n control.layersOfControl,\n control.result\n );\n}\n\nexport function setupControlStatus(control: SegmentedControl) {\n if (control.results.some((result) => 'backtrace' in result)) {\n return 'NOT_AVAILABLE';\n }\n const status: string | boolean =\n control.result.status === 'skipped'\n ? 'WARNING'\n : control.result.status === 'passed';\n if (typeof status === 'boolean') {\n return status ? 'PASSED' : 'FAILED';\n }\n return status;\n}\n"]}
@@ -29,3 +29,4 @@ export declare class FromHDFToCAATMapper {
29
29
  toCAAT(returnWorkBook?: boolean, options?: XLSX.WritingOptions): any;
30
30
  }
31
31
  export {};
32
+ //# sourceMappingURL=reverse-caat-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reverse-caat-mapper.d.ts","sourceRoot":"","sources":["../../../../src/converters-from-hdf/caat/reverse-caat-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,YAAY,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EAExB,QAAQ,EACR,UAAU,EAEX,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,SAAS,GAAG,wBAAwB,CAAC;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACpC,CAAC;AAEF,KAAK,IAAI,GAAG,SAAS,GAAG;IAAC,IAAI,EAAE,wBAAwB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,CAAC;AAE3E,eAAO,MAAM,WAAW,ibAqBd,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,OAAO,CAC3B,MAAM,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CACzD,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,WAAW,SAAS;IACpC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,MAAM;IAExC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,kBAAkB,CAKxD;IAEF,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAK3C;IAEF,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAE/C;IAEF,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAWxD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAMvC,IAAI,EAAE,IAAI,EAAE,CAAC;gBAGD,IAAI,EAAE,SAAS,GAAG,SAAS,EAAE;IA6BzC,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAOlC,wBAAwB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAiBjD,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAItC,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAQlC,MAAM,CAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE;IAkDnE,MAAM,CACJ,cAAc,UAAQ,EACtB,OAAO,GAAE,IAAI,CAAC,cAAmD;CAkEpE"}
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.FromHDFToCAATMapper = exports.CAATHeaders = void 0;
27
37
  const XLSX = __importStar(require("@e965/xlsx"));
@@ -51,6 +61,23 @@ exports.CAATHeaders = [
51
61
  'Impact'
52
62
  ];
53
63
  class FromHDFToCAATMapper {
64
+ static MaxCellSize = 32000;
65
+ static MaxSheetNameLength = 31;
66
+ static NistCanonizationConfig = {
67
+ max_specifiers: 3,
68
+ pad_zeros: true,
69
+ allow_letters: false,
70
+ add_spaces: false
71
+ };
72
+ static FileSettings = {
73
+ Title: 'Compliance Assessment/Audit Tracking (CAAT) Spreadsheet',
74
+ Subject: 'Assessment Data',
75
+ Author: 'MITRE SAF',
76
+ CreatedDate: new Date()
77
+ };
78
+ static SheetOptions = {
79
+ header: exports.CAATHeaders.slice() // CAATHeaders is immutable but the type expects a mutable string
80
+ };
54
81
  static formatDate(date, delimiter) {
55
82
  return [
56
83
  Intl.DateTimeFormat('en-US', { month: '2-digit' }),
@@ -60,11 +87,14 @@ class FromHDFToCAATMapper {
60
87
  .map((formatter) => formatter.format(date))
61
88
  .join(delimiter);
62
89
  }
90
+ // ensure we're using Windows style newlines and fit within the maximum length
63
91
  static fix(str) {
64
92
  return (str ?? '')
65
93
  .replace(/(\r\n|\n|\r)/gmu, '\r\n')
66
94
  .slice(0, FromHDFToCAATMapper.MaxCellSize);
67
95
  }
96
+ data;
97
+ // ensure input is turned into an array of contextualized evaluations with some additional metadata
68
98
  constructor(data) {
69
99
  if (!Array.isArray(data)) {
70
100
  data = [data];
@@ -81,9 +111,9 @@ class FromHDFToCAATMapper {
81
111
  contextualizedEvaluation = (0, global_1.ensureContextualizedEvaluation)(contextualizedEvaluation);
82
112
  return {
83
113
  data: contextualizedEvaluation,
84
- filename: datum.filename ??
85
- contextualizedEvaluation.data.profiles.at(0)?.name ??
86
- 'ExecJSON',
114
+ filename: datum.filename ?? // if provided a filename use it
115
+ contextualizedEvaluation.data.profiles.at(0)?.name ?? // otherwise use the name of the first profile which is typically the only profile or the wrapper or overlay profile if there are multiple
116
+ 'ExecJSON', // otherwise set the default
87
117
  controls: datum.controls
88
118
  };
89
119
  });
@@ -119,7 +149,9 @@ class FromHDFToCAATMapper {
119
149
  const allRows = _.compact(hdf
120
150
  .canonized_nist(FromHDFToCAATMapper.NistCanonizationConfig)
121
151
  .map((formattedNistTag) => {
152
+ // I have not found a sample that triggers this case because the canonized_nist function seems to only return a nist tag
122
153
  if (!formattedNistTag) {
154
+ // early exiting forces us to use the compact function to get rid of empty values in the array
123
155
  return;
124
156
  }
125
157
  const row = {};
@@ -143,27 +175,37 @@ class FromHDFToCAATMapper {
143
175
  }));
144
176
  return allRows;
145
177
  }
178
+ // returnWorkBook: true -> raw workbook class
179
+ // returnWorkBook: false | undefined -> binary string by default otherwise whatever is specified in the options parameter
146
180
  toCAAT(returnWorkBook = false, options = { bookType: 'xlsx', type: 'binary' }) {
181
+ // Sheet names must be unique across the workbook
147
182
  const takenSheetNames = [];
183
+ // Define our workbook
148
184
  const workBook = XLSX.utils.book_new();
185
+ // For each contextualized evaluation
149
186
  for (const d of this.data) {
187
+ // Ensure sheet name uniqueness
150
188
  let renameCount = 2;
151
189
  const fullName = `${d.filename ?? d.data.data.profiles.at(0)?.name ?? 'ExecJSON'}`;
152
190
  let sheetName = fullName.substring(0, FromHDFToCAATMapper.MaxSheetNameLength);
153
191
  while (takenSheetNames.includes(sheetName)) {
154
192
  sheetName =
155
193
  fullName.substring(0, FromHDFToCAATMapper.MaxSheetNameLength - 5) +
156
- ` (${renameCount})`;
194
+ ` (${renameCount})`; // space for up to a 2 digit number; there's no check to stop it going past other than the workbook failing to be created, but that should be fine since the likelihood of someone having that many dupes is very slim
157
195
  renameCount++;
158
196
  }
159
197
  takenSheetNames.push(sheetName);
198
+ // Create a new Sheet
160
199
  workBook.SheetNames.push(sheetName);
161
200
  workBook.Props = FromHDFToCAATMapper.FileSettings;
201
+ // Get the controls for the current evaluation
162
202
  const processedControls = new Set();
163
203
  const rows = [];
204
+ // Convert them into rows
164
205
  for (const control of d.controls ??
165
206
  d.data.contains.flatMap((profile) => profile.contains)) {
166
207
  const root = control.root;
208
+ // Overlay profiles will usually share controls
167
209
  if (processedControls.has(root.hdf.wraps.id)) {
168
210
  continue;
169
211
  }
@@ -171,6 +213,7 @@ class FromHDFToCAATMapper {
171
213
  rows.push(...this.getRow(root, d.filename));
172
214
  }
173
215
  rows.sort((x, y) => x['Finding Title']?.localeCompare(y['Finding Title'] ?? '') ?? 1);
216
+ // Add rows to sheet
174
217
  const workSheet = XLSX.utils.json_to_sheet(rows, FromHDFToCAATMapper.SheetOptions);
175
218
  workBook.Sheets[sheetName] = workSheet;
176
219
  }
@@ -181,21 +224,4 @@ class FromHDFToCAATMapper {
181
224
  }
182
225
  }
183
226
  exports.FromHDFToCAATMapper = FromHDFToCAATMapper;
184
- FromHDFToCAATMapper.MaxCellSize = 32000;
185
- FromHDFToCAATMapper.MaxSheetNameLength = 31;
186
- FromHDFToCAATMapper.NistCanonizationConfig = {
187
- max_specifiers: 3,
188
- pad_zeros: true,
189
- allow_letters: false,
190
- add_spaces: false
191
- };
192
- FromHDFToCAATMapper.FileSettings = {
193
- Title: 'Compliance Assessment/Audit Tracking (CAAT) Spreadsheet',
194
- Subject: 'Assessment Data',
195
- Author: 'MITRE SAF',
196
- CreatedDate: new Date()
197
- };
198
- FromHDFToCAATMapper.SheetOptions = {
199
- header: exports.CAATHeaders.slice()
200
- };
201
227
  //# sourceMappingURL=reverse-caat-mapper.js.map