@mitre/hdf-converters 2.12.2 → 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.
- package/README.md +25 -24
- package/lib/data/converters/csv2json.d.ts +1 -0
- package/lib/data/converters/csv2json.d.ts.map +1 -0
- package/lib/data/converters/csv2json.js +1 -1
- package/lib/data/converters/csv2json.js.map +1 -1
- package/lib/data/converters/xml2json.d.ts +1 -0
- package/lib/data/converters/xml2json.d.ts.map +1 -0
- package/lib/data/converters/xml2json.js +6 -25
- package/lib/data/converters/xml2json.js.map +1 -1
- package/lib/data/reverse-html-mapper/convert-to-embedded-strings.d.ts +2 -0
- package/lib/data/reverse-html-mapper/convert-to-embedded-strings.d.ts.map +1 -0
- package/lib/data/reverse-html-mapper/convert-to-embedded-strings.js +13 -0
- package/lib/data/reverse-html-mapper/convert-to-embedded-strings.js.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +23 -8
- package/lib/index.js.map +1 -1
- package/lib/package.json +28 -45
- package/lib/src/anchore-grype-mapper.d.ts +1 -0
- package/lib/src/anchore-grype-mapper.d.ts.map +1 -0
- package/lib/src/anchore-grype-mapper.js +7 -1
- package/lib/src/anchore-grype-mapper.js.map +1 -1
- package/lib/src/asff-mapper/asff-mapper.d.ts +1 -0
- package/lib/src/asff-mapper/asff-mapper.d.ts.map +1 -0
- package/lib/src/asff-mapper/asff-mapper.js +276 -242
- package/lib/src/asff-mapper/asff-mapper.js.map +1 -1
- package/lib/src/asff-mapper/case-cms-inspec.d.ts +1 -0
- package/lib/src/asff-mapper/case-cms-inspec.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-cms-inspec.js +18 -9
- package/lib/src/asff-mapper/case-cms-inspec.js.map +1 -1
- package/lib/src/asff-mapper/case-firewall-manager.d.ts +1 -0
- package/lib/src/asff-mapper/case-firewall-manager.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-firewall-manager.js +18 -9
- package/lib/src/asff-mapper/case-firewall-manager.js.map +1 -1
- package/lib/src/asff-mapper/case-guardduty.d.ts +1 -0
- package/lib/src/asff-mapper/case-guardduty.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-guardduty.js +18 -9
- package/lib/src/asff-mapper/case-guardduty.js.map +1 -1
- package/lib/src/asff-mapper/case-inspector.d.ts +1 -0
- package/lib/src/asff-mapper/case-inspector.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-inspector.js +18 -9
- package/lib/src/asff-mapper/case-inspector.js.map +1 -1
- package/lib/src/asff-mapper/case-previously-hdf.d.ts +1 -0
- package/lib/src/asff-mapper/case-previously-hdf.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-previously-hdf.js +28 -15
- package/lib/src/asff-mapper/case-previously-hdf.js.map +1 -1
- package/lib/src/asff-mapper/case-prowler.d.ts +1 -0
- package/lib/src/asff-mapper/case-prowler.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-prowler.js +19 -9
- package/lib/src/asff-mapper/case-prowler.js.map +1 -1
- package/lib/src/asff-mapper/case-security-hub.d.ts +1 -0
- package/lib/src/asff-mapper/case-security-hub.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-security-hub.js +24 -9
- package/lib/src/asff-mapper/case-security-hub.js.map +1 -1
- package/lib/src/asff-mapper/case-trivy.d.ts +1 -0
- package/lib/src/asff-mapper/case-trivy.d.ts.map +1 -0
- package/lib/src/asff-mapper/case-trivy.js +18 -9
- package/lib/src/asff-mapper/case-trivy.js.map +1 -1
- package/lib/src/aws-config-mapper.d.ts +1 -0
- package/lib/src/aws-config-mapper.d.ts.map +1 -0
- package/lib/src/aws-config-mapper.js +38 -22
- package/lib/src/aws-config-mapper.js.map +1 -1
- package/lib/src/base-converter.d.ts +2 -1
- package/lib/src/base-converter.d.ts.map +1 -0
- package/lib/src/base-converter.js +51 -33
- package/lib/src/base-converter.js.map +1 -1
- package/lib/src/burpsuite-mapper.d.ts +7 -0
- package/lib/src/burpsuite-mapper.d.ts.map +1 -0
- package/lib/src/burpsuite-mapper.js +115 -88
- package/lib/src/burpsuite-mapper.js.map +1 -1
- package/lib/src/checkov-mapper.d.ts +67 -0
- package/lib/src/checkov-mapper.d.ts.map +1 -0
- package/lib/src/checkov-mapper.js +240 -0
- package/lib/src/checkov-mapper.js.map +1 -0
- package/lib/src/ckl-mapper/checklist-jsonix-converter.d.ts +17 -0
- package/lib/src/ckl-mapper/checklist-jsonix-converter.d.ts.map +1 -0
- package/lib/src/ckl-mapper/checklist-jsonix-converter.js +59 -25
- package/lib/src/ckl-mapper/checklist-jsonix-converter.js.map +1 -1
- package/lib/src/ckl-mapper/checklist-mapper.d.ts +35 -0
- package/lib/src/ckl-mapper/checklist-mapper.d.ts.map +1 -0
- package/lib/src/ckl-mapper/checklist-mapper.js +264 -155
- package/lib/src/ckl-mapper/checklist-mapper.js.map +1 -1
- package/lib/src/ckl-mapper/checklist-metadata-utils.d.ts +1 -0
- package/lib/src/ckl-mapper/checklist-metadata-utils.d.ts.map +1 -0
- package/lib/src/ckl-mapper/checklist-metadata-utils.js +38 -16
- package/lib/src/ckl-mapper/checklist-metadata-utils.js.map +1 -1
- package/lib/src/ckl-mapper/checklistJsonix.d.ts +6 -0
- package/lib/src/ckl-mapper/checklistJsonix.d.ts.map +1 -0
- package/lib/src/ckl-mapper/checklistJsonix.js +8 -8
- package/lib/src/ckl-mapper/checklistJsonix.js.map +1 -1
- package/lib/src/ckl-mapper/jsonixMapping.d.ts +5 -0
- package/lib/src/ckl-mapper/jsonixMapping.d.ts.map +1 -0
- package/lib/src/ckl-mapper/jsonixMapping.js +4 -0
- package/lib/src/ckl-mapper/jsonixMapping.js.map +1 -1
- package/lib/src/converters-from-hdf/asff/asff-types.d.ts +1 -0
- package/lib/src/converters-from-hdf/asff/asff-types.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/asff/asff-types.js +1 -0
- package/lib/src/converters-from-hdf/asff/asff-types.js.map +1 -1
- package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.d.ts +1 -0
- package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.js +110 -84
- package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.js.map +1 -1
- package/lib/src/converters-from-hdf/asff/transformers.d.ts +1 -0
- package/lib/src/converters-from-hdf/asff/transformers.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/asff/transformers.js +82 -55
- package/lib/src/converters-from-hdf/asff/transformers.js.map +1 -1
- package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.d.ts +1 -0
- package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.js +65 -38
- package/lib/src/converters-from-hdf/caat/reverse-caat-mapper.js.map +1 -1
- package/lib/src/converters-from-hdf/html/embedded-assets.d.ts +4 -0
- package/lib/src/converters-from-hdf/html/embedded-assets.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/html/embedded-assets.js +8 -0
- package/lib/src/converters-from-hdf/html/embedded-assets.js.map +1 -0
- package/lib/src/converters-from-hdf/html/html-types.d.ts +1 -0
- package/lib/src/converters-from-hdf/html/html-types.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/html/html-types.js +1 -0
- package/lib/src/converters-from-hdf/html/html-types.js.map +1 -1
- package/lib/src/converters-from-hdf/html/reverse-html-mapper.d.ts +3 -2
- package/lib/src/converters-from-hdf/html/reverse-html-mapper.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/html/reverse-html-mapper.js +151 -107
- package/lib/src/converters-from-hdf/html/reverse-html-mapper.js.map +1 -1
- package/lib/src/converters-from-hdf/reverse-any-base-converter.d.ts +1 -0
- package/lib/src/converters-from-hdf/reverse-any-base-converter.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/reverse-any-base-converter.js +3 -0
- package/lib/src/converters-from-hdf/reverse-any-base-converter.js.map +1 -1
- package/lib/src/converters-from-hdf/reverse-base-converter.d.ts +1 -0
- package/lib/src/converters-from-hdf/reverse-base-converter.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/reverse-base-converter.js +29 -9
- package/lib/src/converters-from-hdf/reverse-base-converter.js.map +1 -1
- package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.d.ts +1 -0
- package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.js +40 -16
- package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.js.map +1 -1
- package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.d.ts +1 -0
- package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.d.ts.map +1 -0
- package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.js +33 -12
- package/lib/src/converters-from-hdf/xccdf/reverse-xccdf-mapper.js.map +1 -1
- package/lib/src/conveyor-mapper.d.ts +1 -0
- package/lib/src/conveyor-mapper.d.ts.map +1 -0
- package/lib/src/conveyor-mapper.js +85 -40
- package/lib/src/conveyor-mapper.js.map +1 -1
- package/lib/src/cyclonedx-sbom-mapper.d.ts +1 -0
- package/lib/src/cyclonedx-sbom-mapper.d.ts.map +1 -0
- package/lib/src/cyclonedx-sbom-mapper.js +377 -309
- package/lib/src/cyclonedx-sbom-mapper.js.map +1 -1
- package/lib/src/dbprotect-mapper.d.ts +1 -0
- package/lib/src/dbprotect-mapper.d.ts.map +1 -0
- package/lib/src/dbprotect-mapper.js +74 -63
- package/lib/src/dbprotect-mapper.js.map +1 -1
- package/lib/src/dependency-track-mapper.d.ts +1 -0
- package/lib/src/dependency-track-mapper.d.ts.map +1 -0
- package/lib/src/dependency-track-mapper.js +144 -130
- package/lib/src/dependency-track-mapper.js.map +1 -1
- package/lib/src/fortify-mapper.d.ts +7 -0
- package/lib/src/fortify-mapper.d.ts.map +1 -0
- package/lib/src/fortify-mapper.js +118 -92
- package/lib/src/fortify-mapper.js.map +1 -1
- package/lib/src/gosec-mapper.d.ts +1 -0
- package/lib/src/gosec-mapper.d.ts.map +1 -0
- package/lib/src/gosec-mapper.js +90 -72
- package/lib/src/gosec-mapper.js.map +1 -1
- package/lib/src/ionchannel-mapper.d.ts +1 -0
- package/lib/src/ionchannel-mapper.d.ts.map +1 -0
- package/lib/src/ionchannel-mapper.js +130 -110
- package/lib/src/ionchannel-mapper.js.map +1 -1
- package/lib/src/jfrog-xray-mapper.d.ts +1 -0
- package/lib/src/jfrog-xray-mapper.d.ts.map +1 -0
- package/lib/src/jfrog-xray-mapper.js +92 -78
- package/lib/src/jfrog-xray-mapper.js.map +1 -1
- package/lib/src/jsonix-converter.d.ts +1 -0
- package/lib/src/jsonix-converter.d.ts.map +1 -0
- package/lib/src/jsonix-converter.js +1 -0
- package/lib/src/jsonix-converter.js.map +1 -1
- package/lib/src/jsonix-intermediate-converter.d.ts +1 -0
- package/lib/src/jsonix-intermediate-converter.d.ts.map +1 -0
- package/lib/src/jsonix-intermediate-converter.js.map +1 -1
- package/lib/src/mappings/AwsConfigMapping.d.ts +1 -0
- package/lib/src/mappings/AwsConfigMapping.d.ts.map +1 -0
- package/lib/src/mappings/AwsConfigMapping.js +19 -9
- package/lib/src/mappings/AwsConfigMapping.js.map +1 -1
- package/lib/src/mappings/AwsConfigMappingData.d.ts +1 -0
- package/lib/src/mappings/AwsConfigMappingData.d.ts.map +1 -0
- package/lib/src/mappings/AwsConfigMappingData.js.map +1 -1
- package/lib/src/mappings/CciNistMapping.d.ts +1 -0
- package/lib/src/mappings/CciNistMapping.d.ts.map +1 -0
- package/lib/src/mappings/CciNistMapping.js +6 -2
- package/lib/src/mappings/CciNistMapping.js.map +1 -1
- package/lib/src/mappings/CciNistMappingData.d.ts +1 -0
- package/lib/src/mappings/CciNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/CciNistMappingData.js.map +1 -1
- package/lib/src/mappings/CciNistMappingItem.d.ts +1 -0
- package/lib/src/mappings/CciNistMappingItem.d.ts.map +1 -0
- package/lib/src/mappings/CciNistMappingItem.js +2 -0
- package/lib/src/mappings/CciNistMappingItem.js.map +1 -1
- package/lib/src/mappings/CheckovToCciAndNistMappingData.d.ts +5 -0
- package/lib/src/mappings/CheckovToCciAndNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/CheckovToCciAndNistMappingData.js +2695 -0
- package/lib/src/mappings/CheckovToCciAndNistMappingData.js.map +1 -0
- package/lib/src/mappings/CweNistMapping.d.ts +1 -0
- package/lib/src/mappings/CweNistMapping.d.ts.map +1 -0
- package/lib/src/mappings/CweNistMapping.js +1 -0
- package/lib/src/mappings/CweNistMapping.js.map +1 -1
- package/lib/src/mappings/CweNistMappingData.d.ts +1 -0
- package/lib/src/mappings/CweNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/CweNistMappingData.js.map +1 -1
- package/lib/src/mappings/CweNistMappingItem.d.ts +1 -0
- package/lib/src/mappings/CweNistMappingItem.d.ts.map +1 -0
- package/lib/src/mappings/CweNistMappingItem.js +5 -0
- package/lib/src/mappings/CweNistMappingItem.js.map +1 -1
- package/lib/src/mappings/NessusPluginNistMappingData.d.ts +1 -0
- package/lib/src/mappings/NessusPluginNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/NessusPluginNistMappingData.js.map +1 -1
- package/lib/src/mappings/NessusPluginsNistMapping.d.ts +1 -0
- package/lib/src/mappings/NessusPluginsNistMapping.d.ts.map +1 -0
- package/lib/src/mappings/NessusPluginsNistMapping.js +1 -0
- package/lib/src/mappings/NessusPluginsNistMapping.js.map +1 -1
- package/lib/src/mappings/NessusPluginsNistMappingItem.d.ts +1 -0
- package/lib/src/mappings/NessusPluginsNistMappingItem.d.ts.map +1 -0
- package/lib/src/mappings/NessusPluginsNistMappingItem.js +4 -0
- package/lib/src/mappings/NessusPluginsNistMappingItem.js.map +1 -1
- package/lib/src/mappings/NiktoNistMapping.d.ts +1 -0
- package/lib/src/mappings/NiktoNistMapping.d.ts.map +1 -0
- package/lib/src/mappings/NiktoNistMapping.js.map +1 -1
- package/lib/src/mappings/NiktoNistMappingData.d.ts +1 -0
- package/lib/src/mappings/NiktoNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/NiktoNistMappingData.js.map +1 -1
- package/lib/src/mappings/NiktoNistMappingItem.d.ts +1 -0
- package/lib/src/mappings/NiktoNistMappingItem.d.ts.map +1 -0
- package/lib/src/mappings/NiktoNistMappingItem.js +4 -0
- package/lib/src/mappings/NiktoNistMappingItem.js.map +1 -1
- package/lib/src/mappings/NistCciMappingData.d.ts +1 -0
- package/lib/src/mappings/NistCciMappingData.d.ts.map +1 -0
- package/lib/src/mappings/NistCciMappingData.js.map +1 -1
- package/lib/src/mappings/OwaspNistMapping.d.ts +1 -0
- package/lib/src/mappings/OwaspNistMapping.d.ts.map +1 -0
- package/lib/src/mappings/OwaspNistMapping.js +19 -8
- package/lib/src/mappings/OwaspNistMapping.js.map +1 -1
- package/lib/src/mappings/OwaspNistMappingData.d.ts +1 -0
- package/lib/src/mappings/OwaspNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/OwaspNistMappingData.js.map +1 -1
- package/lib/src/mappings/OwaspNistMappingItem.d.ts +1 -0
- package/lib/src/mappings/OwaspNistMappingItem.d.ts.map +1 -0
- package/lib/src/mappings/OwaspNistMappingItem.js +5 -0
- package/lib/src/mappings/OwaspNistMappingItem.js.map +1 -1
- package/lib/src/mappings/ScoutsuiteNistMapping.d.ts +1 -0
- package/lib/src/mappings/ScoutsuiteNistMapping.d.ts.map +1 -0
- package/lib/src/mappings/ScoutsuiteNistMapping.js +1 -0
- package/lib/src/mappings/ScoutsuiteNistMapping.js.map +1 -1
- package/lib/src/mappings/ScoutsuiteNistMappingData.d.ts +1 -0
- package/lib/src/mappings/ScoutsuiteNistMappingData.d.ts.map +1 -0
- package/lib/src/mappings/ScoutsuiteNistMappingData.js.map +1 -1
- package/lib/src/mappings/ScoutsuiteNistMappingItem.d.ts +1 -0
- package/lib/src/mappings/ScoutsuiteNistMappingItem.d.ts.map +1 -0
- package/lib/src/mappings/ScoutsuiteNistMappingItem.js +2 -0
- package/lib/src/mappings/ScoutsuiteNistMappingItem.js.map +1 -1
- package/lib/src/msft-secure-score-mapper.d.ts +1 -0
- package/lib/src/msft-secure-score-mapper.d.ts.map +1 -0
- package/lib/src/msft-secure-score-mapper.js +202 -185
- package/lib/src/msft-secure-score-mapper.js.map +1 -1
- package/lib/src/nessus-mapper.d.ts +2 -1
- package/lib/src/nessus-mapper.d.ts.map +1 -0
- package/lib/src/nessus-mapper.js +122 -105
- package/lib/src/nessus-mapper.js.map +1 -1
- package/lib/src/netsparker-mapper.d.ts +7 -0
- package/lib/src/netsparker-mapper.d.ts.map +1 -0
- package/lib/src/netsparker-mapper.js +34 -9
- package/lib/src/netsparker-mapper.js.map +1 -1
- package/lib/src/neuvector-mapper.d.ts +1 -0
- package/lib/src/neuvector-mapper.d.ts.map +1 -0
- package/lib/src/neuvector-mapper.js +123 -124
- package/lib/src/neuvector-mapper.js.map +1 -1
- package/lib/src/nikto-mapper.d.ts +1 -0
- package/lib/src/nikto-mapper.d.ts.map +1 -0
- package/lib/src/nikto-mapper.js +85 -74
- package/lib/src/nikto-mapper.js.map +1 -1
- package/lib/src/prisma-mapper.d.ts +1 -0
- package/lib/src/prisma-mapper.d.ts.map +1 -0
- package/lib/src/prisma-mapper.js +138 -128
- package/lib/src/prisma-mapper.js.map +1 -1
- package/lib/src/sarif-mapper.d.ts +1 -0
- package/lib/src/sarif-mapper.d.ts.map +1 -0
- package/lib/src/sarif-mapper.js +116 -105
- package/lib/src/sarif-mapper.js.map +1 -1
- package/lib/src/scoutsuite-mapper.d.ts +1 -0
- package/lib/src/scoutsuite-mapper.d.ts.map +1 -0
- package/lib/src/scoutsuite-mapper.js +174 -163
- package/lib/src/scoutsuite-mapper.js.map +1 -1
- package/lib/src/snyk-mapper.d.ts +1 -0
- package/lib/src/snyk-mapper.d.ts.map +1 -0
- package/lib/src/snyk-mapper.js +112 -100
- package/lib/src/snyk-mapper.js.map +1 -1
- package/lib/src/sonarqube-mapper.d.ts +18 -5
- package/lib/src/sonarqube-mapper.d.ts.map +1 -0
- package/lib/src/sonarqube-mapper.js +526 -278
- package/lib/src/sonarqube-mapper.js.map +1 -1
- package/lib/src/splunk-mapper.d.ts +3 -2
- package/lib/src/splunk-mapper.d.ts.map +1 -0
- package/lib/src/splunk-mapper.js +72 -16
- package/lib/src/splunk-mapper.js.map +1 -1
- package/lib/src/trufflehog-mapper.d.ts +1 -0
- package/lib/src/trufflehog-mapper.d.ts.map +1 -0
- package/lib/src/trufflehog-mapper.js +72 -69
- package/lib/src/trufflehog-mapper.js.map +1 -1
- package/lib/src/twistlock-mapper.d.ts +1 -0
- package/lib/src/twistlock-mapper.d.ts.map +1 -0
- package/lib/src/twistlock-mapper.js +140 -126
- package/lib/src/twistlock-mapper.js.map +1 -1
- package/lib/src/utils/CCI_List.d.ts +1 -0
- package/lib/src/utils/CCI_List.d.ts.map +1 -0
- package/lib/src/utils/CCI_List.js.map +1 -1
- package/lib/src/utils/attestations.d.ts +1 -0
- package/lib/src/utils/attestations.d.ts.map +1 -0
- package/lib/src/utils/attestations.js +28 -13
- package/lib/src/utils/attestations.js.map +1 -1
- package/lib/src/utils/compliance.d.ts +1 -0
- package/lib/src/utils/compliance.d.ts.map +1 -0
- package/lib/src/utils/compliance.js +11 -3
- package/lib/src/utils/compliance.js.map +1 -1
- package/lib/src/utils/fingerprinting.d.ts +2 -0
- package/lib/src/utils/fingerprinting.d.ts.map +1 -0
- package/lib/src/utils/fingerprinting.js +28 -11
- package/lib/src/utils/fingerprinting.js.map +1 -1
- package/lib/src/utils/global.d.ts +3 -1
- package/lib/src/utils/global.d.ts.map +1 -0
- package/lib/src/utils/global.js +35 -17
- package/lib/src/utils/global.js.map +1 -1
- package/lib/src/utils/parseJson.d.ts +1 -0
- package/lib/src/utils/parseJson.d.ts.map +1 -0
- package/lib/src/utils/parseJson.js +7 -3
- package/lib/src/utils/parseJson.js.map +1 -1
- package/lib/src/utils/result.d.ts +1 -0
- package/lib/src/utils/result.d.ts.map +1 -0
- package/lib/src/utils/result.js.map +1 -1
- package/lib/src/utils/splunk-tools.d.ts +2 -1
- package/lib/src/utils/splunk-tools.d.ts.map +1 -0
- package/lib/src/utils/splunk-tools.js +52 -32
- package/lib/src/utils/splunk-tools.js.map +1 -1
- package/lib/src/veracode-mapper.d.ts +1 -0
- package/lib/src/veracode-mapper.d.ts.map +1 -0
- package/lib/src/veracode-mapper.js +50 -7
- package/lib/src/veracode-mapper.js.map +1 -1
- package/lib/src/xccdf-results-mapper.d.ts +7 -0
- package/lib/src/xccdf-results-mapper.d.ts.map +1 -0
- package/lib/src/xccdf-results-mapper.js +336 -301
- package/lib/src/xccdf-results-mapper.js.map +1 -1
- package/lib/src/zap-mapper.d.ts +8 -0
- package/lib/src/zap-mapper.d.ts.map +1 -0
- package/lib/src/zap-mapper.js +119 -90
- package/lib/src/zap-mapper.js.map +1 -1
- package/lib/tsconfig.build.tsbuildinfo +1 -0
- package/lib/types/neuvector-types.d.ts +1 -0
- package/lib/types/neuvector-types.d.ts.map +1 -0
- package/lib/types/neuvector-types.js +80 -0
- package/lib/types/neuvector-types.js.map +1 -1
- package/lib/types/splunk-config-types.d.ts +1 -0
- package/lib/types/splunk-config-types.d.ts.map +1 -0
- package/lib/types/splunk-config-types.js.map +1 -1
- package/lib/types/splunk-control-types.d.ts +1 -0
- package/lib/types/splunk-control-types.d.ts.map +1 -0
- package/lib/types/splunk-control-types.js.map +1 -1
- package/lib/types/splunk-profile-types.d.ts +1 -0
- package/lib/types/splunk-profile-types.d.ts.map +1 -0
- package/lib/types/splunk-profile-types.js.map +1 -1
- package/lib/types/splunk-report-types.d.ts +1 -0
- package/lib/types/splunk-report-types.d.ts.map +1 -0
- package/lib/types/splunk-report-types.js.map +1 -1
- package/package.json +29 -46
- package/lib/data/converters/csv2json.ts +0 -36
- package/lib/data/converters/xml2json.ts +0 -57
|
@@ -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 (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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,17 +87,19 @@ 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
|
-
return (str
|
|
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];
|
|
71
101
|
}
|
|
72
102
|
this.data = data.map((datum) => {
|
|
73
|
-
var _a, _b, _c;
|
|
74
103
|
let contextualizedEvaluation = datum.data;
|
|
75
104
|
if (_.isString(contextualizedEvaluation)) {
|
|
76
105
|
const contextualizedFile = (0, inspecjs_1.convertFileContextual)(contextualizedEvaluation);
|
|
@@ -82,7 +111,9 @@ class FromHDFToCAATMapper {
|
|
|
82
111
|
contextualizedEvaluation = (0, global_1.ensureContextualizedEvaluation)(contextualizedEvaluation);
|
|
83
112
|
return {
|
|
84
113
|
data: contextualizedEvaluation,
|
|
85
|
-
filename:
|
|
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
|
|
86
117
|
controls: datum.controls
|
|
87
118
|
};
|
|
88
119
|
});
|
|
@@ -94,15 +125,16 @@ class FromHDFToCAATMapper {
|
|
|
94
125
|
return `${caveat}${FromHDFToCAATMapper.fix(hdf.wraps.desc)}`;
|
|
95
126
|
}
|
|
96
127
|
newTestResultDescription(hdf) {
|
|
97
|
-
var _a, _b;
|
|
98
128
|
const controlStatus = `${hdf.status}:\r\n\r\n`;
|
|
99
|
-
const description =
|
|
129
|
+
const description = hdf.segments
|
|
130
|
+
?.map((result) => {
|
|
100
131
|
const statusAndTest = `${result.status.toUpperCase()} -- Test: ${result.code_desc}\r\n`;
|
|
101
132
|
const message = result.message
|
|
102
133
|
? `Message: ${result.message}\r\n\r\n`
|
|
103
134
|
: '\r\n';
|
|
104
135
|
return `${statusAndTest}${message}`;
|
|
105
|
-
})
|
|
136
|
+
})
|
|
137
|
+
.join('') ?? '';
|
|
106
138
|
return `${controlStatus}${description}`;
|
|
107
139
|
}
|
|
108
140
|
newTestResult(hdf) {
|
|
@@ -117,8 +149,9 @@ class FromHDFToCAATMapper {
|
|
|
117
149
|
const allRows = _.compact(hdf
|
|
118
150
|
.canonized_nist(FromHDFToCAATMapper.NistCanonizationConfig)
|
|
119
151
|
.map((formattedNistTag) => {
|
|
120
|
-
|
|
152
|
+
// I have not found a sample that triggers this case because the canonized_nist function seems to only return a nist tag
|
|
121
153
|
if (!formattedNistTag) {
|
|
154
|
+
// early exiting forces us to use the compact function to get rid of empty values in the array
|
|
122
155
|
return;
|
|
123
156
|
}
|
|
124
157
|
const row = {};
|
|
@@ -133,43 +166,54 @@ class FromHDFToCAATMapper {
|
|
|
133
166
|
row['Control Weakness Type'] = 'Security';
|
|
134
167
|
row['Source'] = 'Self-Assessment';
|
|
135
168
|
row['Test Method'] = 'Test';
|
|
136
|
-
row['Test Objective'] = FromHDFToCAATMapper.fix(
|
|
169
|
+
row['Test Objective'] = FromHDFToCAATMapper.fix(hdf.descriptions.check ?? hdf.wraps.tags.check);
|
|
137
170
|
row['Test Result Description'] = FromHDFToCAATMapper.fix(this.newTestResultDescription(hdf));
|
|
138
171
|
row['Test Result'] = this.newTestResult(hdf);
|
|
139
|
-
row['Recommended Corrective Action(s)'] = FromHDFToCAATMapper.fix(
|
|
172
|
+
row['Recommended Corrective Action(s)'] = FromHDFToCAATMapper.fix(hdf.descriptions.fix ?? hdf.wraps.tags.fix);
|
|
140
173
|
row['Impact'] = this.newImpact(hdf);
|
|
141
174
|
return row;
|
|
142
175
|
}));
|
|
143
176
|
return allRows;
|
|
144
177
|
}
|
|
178
|
+
// returnWorkBook: true -> raw workbook class
|
|
179
|
+
// returnWorkBook: false | undefined -> binary string by default otherwise whatever is specified in the options parameter
|
|
145
180
|
toCAAT(returnWorkBook = false, options = { bookType: 'xlsx', type: 'binary' }) {
|
|
146
|
-
|
|
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
|
-
const fullName = `${
|
|
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 = [];
|
|
164
|
-
|
|
204
|
+
// Convert them into rows
|
|
205
|
+
for (const control of d.controls ??
|
|
206
|
+
d.data.contains.flatMap((profile) => profile.contains)) {
|
|
165
207
|
const root = control.root;
|
|
208
|
+
// Overlay profiles will usually share controls
|
|
166
209
|
if (processedControls.has(root.hdf.wraps.id)) {
|
|
167
210
|
continue;
|
|
168
211
|
}
|
|
169
212
|
processedControls.add(root.hdf.wraps.id);
|
|
170
213
|
rows.push(...this.getRow(root, d.filename));
|
|
171
214
|
}
|
|
172
|
-
rows.sort((x, y) =>
|
|
215
|
+
rows.sort((x, y) => x['Finding Title']?.localeCompare(y['Finding Title'] ?? '') ?? 1);
|
|
216
|
+
// Add rows to sheet
|
|
173
217
|
const workSheet = XLSX.utils.json_to_sheet(rows, FromHDFToCAATMapper.SheetOptions);
|
|
174
218
|
workBook.Sheets[sheetName] = workSheet;
|
|
175
219
|
}
|
|
@@ -180,21 +224,4 @@ class FromHDFToCAATMapper {
|
|
|
180
224
|
}
|
|
181
225
|
}
|
|
182
226
|
exports.FromHDFToCAATMapper = FromHDFToCAATMapper;
|
|
183
|
-
FromHDFToCAATMapper.MaxCellSize = 32000;
|
|
184
|
-
FromHDFToCAATMapper.MaxSheetNameLength = 31;
|
|
185
|
-
FromHDFToCAATMapper.NistCanonizationConfig = {
|
|
186
|
-
max_specifiers: 3,
|
|
187
|
-
pad_zeros: true,
|
|
188
|
-
allow_letters: false,
|
|
189
|
-
add_spaces: false
|
|
190
|
-
};
|
|
191
|
-
FromHDFToCAATMapper.FileSettings = {
|
|
192
|
-
Title: 'Compliance Assessment/Audit Tracking (CAAT) Spreadsheet',
|
|
193
|
-
Subject: 'Assessment Data',
|
|
194
|
-
Author: 'MITRE SAF',
|
|
195
|
-
CreatedDate: new Date()
|
|
196
|
-
};
|
|
197
|
-
FromHDFToCAATMapper.SheetOptions = {
|
|
198
|
-
header: exports.CAATHeaders.slice()
|
|
199
|
-
};
|
|
200
227
|
//# sourceMappingURL=reverse-caat-mapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reverse-caat-mapper.js","sourceRoot":"","sources":["../../../../src/converters-from-hdf/caat/reverse-caat-mapper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reverse-caat-mapper.js","sourceRoot":"","sources":["../../../../src/converters-from-hdf/caat/reverse-caat-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import * as XLSX from '@e965/xlsx';\nimport {\n CanonizationConfig,\n ContextualizedControl,\n ContextualizedEvaluation,\n convertFileContextual,\n ExecJSON,\n HDFControl,\n isContextualizedEvaluation\n} from 'inspecjs';\nimport * as _ from 'lodash';\nimport {ensureContextualizedEvaluation} from '../../utils/global';\n\nexport type InputData = {\n data: string | ExecJSON.Execution | ContextualizedEvaluation;\n filename?: string;\n controls?: ContextualizedControl[];\n};\n\ntype Data = InputData & {data: ContextualizedEvaluation; filename: string};\n\nexport const CAATHeaders = [\n 'Control Number',\n 'Finding Title',\n 'Date Identified',\n 'Finding ID',\n 'Information System or Program Name',\n 'Repeat Findings',\n 'Repeat Finding Weakness ID',\n 'Finding Description',\n 'Weakness Description',\n 'Control Weakness Type',\n 'Source',\n 'Assessment/Audit Company',\n 'Test Method',\n 'Test Objective',\n 'Test Result Description',\n 'Test Result',\n 'Recommended Corrective Action(s)',\n 'Effect on Business',\n 'Likelihood',\n 'Impact'\n] as const;\n\nexport type CAATRow = Partial<\n Record<(typeof CAATHeaders)[number], string | undefined>\n>;\n\nexport class FromHDFToCAATMapper {\n static readonly MaxCellSize = 32000;\n static readonly MaxSheetNameLength = 31;\n\n static readonly NistCanonizationConfig: CanonizationConfig = {\n max_specifiers: 3,\n pad_zeros: true,\n allow_letters: false,\n add_spaces: false\n };\n\n static readonly FileSettings: XLSX.Properties = {\n Title: 'Compliance Assessment/Audit Tracking (CAAT) Spreadsheet',\n Subject: 'Assessment Data',\n Author: 'MITRE SAF',\n CreatedDate: new Date()\n };\n\n static readonly SheetOptions: XLSX.JSON2SheetOpts = {\n header: CAATHeaders.slice() // CAATHeaders is immutable but the type expects a mutable string\n };\n\n static formatDate(date: Date, delimiter: string): string {\n return [\n Intl.DateTimeFormat('en-US', {month: '2-digit'}),\n Intl.DateTimeFormat('en-US', {day: '2-digit'}),\n Intl.DateTimeFormat('en-US', {year: 'numeric'})\n ]\n .map((formatter) => formatter.format(date))\n .join(delimiter);\n }\n\n // ensure we're using Windows style newlines and fit within the maximum length\n static fix(str?: string | null): string {\n return (str ?? '')\n .replace(/(\\r\\n|\\n|\\r)/gmu, '\\r\\n')\n .slice(0, FromHDFToCAATMapper.MaxCellSize);\n }\n\n data: Data[];\n\n // ensure input is turned into an array of contextualized evaluations with some additional metadata\n constructor(data: InputData | InputData[]) {\n if (!Array.isArray(data)) {\n data = [data];\n }\n this.data = data.map((datum) => {\n let contextualizedEvaluation = datum.data;\n if (_.isString(contextualizedEvaluation)) {\n const contextualizedFile = convertFileContextual(\n contextualizedEvaluation\n );\n if (!isContextualizedEvaluation(contextualizedFile)) {\n throw new Error('Input string was not an HDF ExecJSON');\n }\n contextualizedEvaluation = contextualizedFile;\n }\n contextualizedEvaluation = ensureContextualizedEvaluation(\n contextualizedEvaluation\n );\n return {\n data: contextualizedEvaluation,\n filename:\n datum.filename ?? // if provided a filename use it\n 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\n 'ExecJSON', // otherwise set the default\n controls: datum.controls\n };\n });\n }\n\n newCaveat(hdf: HDFControl): string {\n const caveat = hdf.descriptions.caveat\n ? `(Caveat: ${FromHDFToCAATMapper.fix(hdf.descriptions.caveat)})\\r\\n`\n : '';\n return `${caveat}${FromHDFToCAATMapper.fix(hdf.wraps.desc)}`;\n }\n\n newTestResultDescription(hdf: HDFControl): string {\n const controlStatus = `${hdf.status}:\\r\\n\\r\\n`;\n const description =\n hdf.segments\n ?.map((result) => {\n const statusAndTest = `${result.status.toUpperCase()} -- Test: ${\n result.code_desc\n }\\r\\n`;\n const message = result.message\n ? `Message: ${result.message}\\r\\n\\r\\n`\n : '\\r\\n';\n return `${statusAndTest}${message}`;\n })\n .join('') ?? '';\n return `${controlStatus}${description}`;\n }\n\n newTestResult(hdf: HDFControl): string {\n return hdf.status === 'Passed' ? 'Satisfied' : 'Other Than Satisfied';\n }\n\n newImpact(hdf: HDFControl): string {\n const controlSeverity =\n hdf.severity === 'medium' ? 'moderate' : hdf.severity;\n return FromHDFToCAATMapper.fix(\n hdf.wraps.impact === 0 ? 'none' : controlSeverity\n );\n }\n\n getRow(control: ContextualizedControl, filename: string): CAATRow[] {\n const hdf = control.hdf;\n const allRows: CAATRow[] = _.compact(\n hdf\n .canonized_nist(FromHDFToCAATMapper.NistCanonizationConfig)\n .map((formattedNistTag) => {\n // I have not found a sample that triggers this case because the canonized_nist function seems to only return a nist tag\n if (!formattedNistTag) {\n // early exiting forces us to use the compact function to get rid of empty values in the array\n return;\n }\n\n const row: CAATRow = {};\n row['Control Number'] = formattedNistTag;\n row['Finding Title'] = `Test ${FromHDFToCAATMapper.fix(\n hdf.wraps.id\n )} - ${FromHDFToCAATMapper.fix(hdf.wraps.title)}`;\n if (hdf.start_time) {\n row['Date Identified'] = FromHDFToCAATMapper.formatDate(\n new Date(hdf.start_time),\n '/'\n );\n }\n row['Finding ID'] = `${filename} - Test ${FromHDFToCAATMapper.fix(\n hdf.wraps.id\n )}`;\n row['Finding Description'] = FromHDFToCAATMapper.fix(hdf.wraps.title);\n row['Weakness Description'] = this.newCaveat(hdf);\n row['Control Weakness Type'] = 'Security';\n row['Source'] = 'Self-Assessment';\n row['Test Method'] = 'Test';\n row['Test Objective'] = FromHDFToCAATMapper.fix(\n hdf.descriptions.check ?? hdf.wraps.tags.check\n );\n row['Test Result Description'] = FromHDFToCAATMapper.fix(\n this.newTestResultDescription(hdf)\n );\n row['Test Result'] = this.newTestResult(hdf);\n row['Recommended Corrective Action(s)'] = FromHDFToCAATMapper.fix(\n hdf.descriptions.fix ?? hdf.wraps.tags.fix\n );\n row['Impact'] = this.newImpact(hdf);\n return row;\n })\n );\n return allRows;\n }\n\n // returnWorkBook: true -> raw workbook class\n // returnWorkBook: false | undefined -> binary string by default otherwise whatever is specified in the options parameter\n toCAAT(\n returnWorkBook = false,\n options: XLSX.WritingOptions = {bookType: 'xlsx', type: 'binary'}\n ) {\n // Sheet names must be unique across the workbook\n const takenSheetNames: string[] = [];\n\n // Define our workbook\n const workBook = XLSX.utils.book_new();\n\n // For each contextualized evaluation\n for (const d of this.data) {\n // Ensure sheet name uniqueness\n let renameCount = 2;\n const fullName = `${\n d.filename ?? d.data.data.profiles.at(0)?.name ?? 'ExecJSON'\n }`;\n let sheetName: string = fullName.substring(\n 0,\n FromHDFToCAATMapper.MaxSheetNameLength\n );\n while (takenSheetNames.includes(sheetName)) {\n sheetName =\n fullName.substring(0, FromHDFToCAATMapper.MaxSheetNameLength - 5) +\n ` (${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\n renameCount++;\n }\n takenSheetNames.push(sheetName);\n\n // Create a new Sheet\n workBook.SheetNames.push(sheetName);\n workBook.Props = FromHDFToCAATMapper.FileSettings;\n\n // Get the controls for the current evaluation\n const processedControls = new Set();\n const rows: CAATRow[] = [];\n // Convert them into rows\n for (const control of d.controls ??\n d.data.contains.flatMap((profile) => profile.contains)) {\n const root = control.root;\n\n // Overlay profiles will usually share controls\n if (processedControls.has(root.hdf.wraps.id)) {\n continue;\n }\n\n processedControls.add(root.hdf.wraps.id);\n rows.push(...this.getRow(root, d.filename));\n }\n\n rows.sort(\n (x, y) =>\n x['Finding Title']?.localeCompare(y['Finding Title'] ?? '') ?? 1\n );\n\n // Add rows to sheet\n const workSheet = XLSX.utils.json_to_sheet(\n rows,\n FromHDFToCAATMapper.SheetOptions\n );\n workBook.Sheets[sheetName] = workSheet;\n }\n\n if (returnWorkBook) {\n return workBook;\n }\n return XLSX.write(workBook, options);\n }\n}\n"]}
|