@kartverket/backstage-plugin-risk-scorecard 6.0.1 → 6.0.2

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.
@@ -31,6 +31,12 @@ function useCoverageStatusText(notCoveredList, coverageType) {
31
31
  const kindPlural = coverageType === CoverageType.Vulnerability ? t("dictionary.vulnerabilities") : t("dictionary.threatActors");
32
32
  const kindsPlural = coverageType === CoverageType.Vulnerability ? t("dictionary.theVulnerabilities") : t("dictionary.theThreatActors");
33
33
  const kind = coverageType === CoverageType.Vulnerability ? t("dictionary.theVulnerability") : t("dictionary.theThreatActor");
34
+ const translationPrefix = coverageType === CoverageType.Vulnerability ? "vulnerabilities" : "threatActors";
35
+ const translated = notCoveredList.map(
36
+ (item) => t(
37
+ `${translationPrefix}.${item}`
38
+ )
39
+ );
34
40
  if (numOfNotCovered === 0) {
35
41
  return t("threatActorsAndVulnerabilities.allCovered", {
36
42
  kind: kindPlural.toLowerCase()
@@ -39,21 +45,21 @@ function useCoverageStatusText(notCoveredList, coverageType) {
39
45
  if (numOfNotCovered === 1) {
40
46
  return t("threatActorsAndVulnerabilities.oneNotCovered", {
41
47
  kind,
42
- notCovered: notCoveredList[0]
48
+ notCovered: translated[0]
43
49
  });
44
50
  }
45
51
  if (numOfNotCovered === 2) {
46
52
  return t("threatActorsAndVulnerabilities.twoNotCovered", {
47
53
  kind: kindsPlural,
48
- notCovered1: notCoveredList[0],
49
- notCovered2: notCoveredList[1]
54
+ notCovered1: translated[0],
55
+ notCovered2: translated[1]
50
56
  });
51
57
  }
52
58
  return t("threatActorsAndVulnerabilities.multipleNotCovered", {
53
59
  kind: kindPlural.toLowerCase(),
54
- notCovered1: notCoveredList[0],
55
- notCovered2: notCoveredList[1],
56
- notCovered3: notCoveredList[2]
60
+ notCovered1: translated[0],
61
+ notCovered2: translated[1],
62
+ notCovered3: translated[2]
57
63
  });
58
64
  }
59
65
 
@@ -1 +1 @@
1
- {"version":3,"file":"CoverageStatusBox.esm.js","sources":["../../../src/components/threatActorsAndVulnerabilities/CoverageStatusBox.tsx"],"sourcesContent":["import styles from './CoverageStatusBox.module.css';\nimport { Text } from '@backstage/ui';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\nimport { CoverageType } from '../../utils/threatActorsAndVulnerabilities.ts';\nimport { StatusIcon, StatusIconTypes } from '../common/StatusIcon.tsx';\n\ntype CoverageStatusBoxProps = {\n notCovered: string[];\n coverageType: CoverageType;\n};\nfunction getIconType(count: number): StatusIconTypes {\n if (count === 0) return StatusIconTypes.Green;\n if (count <= 2) return StatusIconTypes.Yellow;\n return StatusIconTypes.Red;\n}\n\nexport function CoverageStatusBox(props: CoverageStatusBoxProps) {\n const iconType = getIconType(props.notCovered.length);\n\n return (\n <div className={styles.boxStyle}>\n <StatusIcon type={iconType} size=\"medium\" />\n <Text\n dangerouslySetInnerHTML={{\n __html: useCoverageStatusText(props.notCovered, props.coverageType),\n }}\n />\n </div>\n );\n}\n\nfunction useCoverageStatusText(\n notCoveredList: string[],\n coverageType: CoverageType,\n) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const numOfNotCovered = notCoveredList.length;\n\n const kindPlural =\n coverageType === CoverageType.Vulnerability\n ? t('dictionary.vulnerabilities')\n : t('dictionary.threatActors');\n\n const kindsPlural =\n coverageType === CoverageType.Vulnerability\n ? t('dictionary.theVulnerabilities')\n : t('dictionary.theThreatActors');\n\n const kind =\n coverageType === CoverageType.Vulnerability\n ? t('dictionary.theVulnerability')\n : t('dictionary.theThreatActor');\n\n if (numOfNotCovered === 0) {\n return t('threatActorsAndVulnerabilities.allCovered', {\n kind: kindPlural.toLowerCase(),\n });\n }\n\n if (numOfNotCovered === 1) {\n return t('threatActorsAndVulnerabilities.oneNotCovered', {\n kind: kind,\n notCovered: notCoveredList[0],\n });\n }\n\n if (numOfNotCovered === 2) {\n return t('threatActorsAndVulnerabilities.twoNotCovered', {\n kind: kindsPlural,\n notCovered1: notCoveredList[0],\n notCovered2: notCoveredList[1],\n });\n }\n return t('threatActorsAndVulnerabilities.multipleNotCovered', {\n kind: kindPlural.toLowerCase(),\n notCovered1: notCoveredList[0],\n notCovered2: notCoveredList[1],\n notCovered3: notCoveredList[2],\n });\n}\n"],"names":[],"mappings":";;;;;;;;AAWA,SAAS,YAAY,KAAA,EAAgC;AACnD,EAAA,IAAI,KAAA,KAAU,CAAA,EAAG,OAAO,eAAA,CAAgB,KAAA;AACxC,EAAA,IAAI,KAAA,IAAS,CAAA,EAAG,OAAO,eAAA,CAAgB,MAAA;AACvC,EAAA,OAAO,eAAA,CAAgB,GAAA;AACzB;AAEO,SAAS,kBAAkB,KAAA,EAA+B;AAC/D,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA;AAEpD,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,QAAA,EACrB,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAM,QAAA,EAAU,IAAA,EAAK,QAAA,EAAS,CAAA;AAAA,oBAC1C,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,uBAAA,EAAyB;AAAA,UACvB,MAAA,EAAQ,qBAAA,CAAsB,KAAA,CAAM,UAAA,EAAY,MAAM,YAAY;AAAA;AACpE;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,qBAAA,CACP,gBACA,YAAA,EACA;AACA,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,MAAM,kBAAkB,cAAA,CAAe,MAAA;AAEvC,EAAA,MAAM,UAAA,GACJ,iBAAiB,YAAA,CAAa,aAAA,GAC1B,EAAE,4BAA4B,CAAA,GAC9B,EAAE,yBAAyB,CAAA;AAEjC,EAAA,MAAM,WAAA,GACJ,iBAAiB,YAAA,CAAa,aAAA,GAC1B,EAAE,+BAA+B,CAAA,GACjC,EAAE,4BAA4B,CAAA;AAEpC,EAAA,MAAM,IAAA,GACJ,iBAAiB,YAAA,CAAa,aAAA,GAC1B,EAAE,6BAA6B,CAAA,GAC/B,EAAE,2BAA2B,CAAA;AAEnC,EAAA,IAAI,oBAAoB,CAAA,EAAG;AACzB,IAAA,OAAO,EAAE,2CAAA,EAA6C;AAAA,MACpD,IAAA,EAAM,WAAW,WAAA;AAAY,KAC9B,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,oBAAoB,CAAA,EAAG;AACzB,IAAA,OAAO,EAAE,8CAAA,EAAgD;AAAA,MACvD,IAAA;AAAA,MACA,UAAA,EAAY,eAAe,CAAC;AAAA,KAC7B,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,oBAAoB,CAAA,EAAG;AACzB,IAAA,OAAO,EAAE,8CAAA,EAAgD;AAAA,MACvD,IAAA,EAAM,WAAA;AAAA,MACN,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,MAC7B,WAAA,EAAa,eAAe,CAAC;AAAA,KAC9B,CAAA;AAAA,EACH;AACA,EAAA,OAAO,EAAE,mDAAA,EAAqD;AAAA,IAC5D,IAAA,EAAM,WAAW,WAAA,EAAY;AAAA,IAC7B,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IAC7B,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,IAC7B,WAAA,EAAa,eAAe,CAAC;AAAA,GAC9B,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"CoverageStatusBox.esm.js","sources":["../../../src/components/threatActorsAndVulnerabilities/CoverageStatusBox.tsx"],"sourcesContent":["import styles from './CoverageStatusBox.module.css';\nimport { Text } from '@backstage/ui';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\nimport { CoverageType } from '../../utils/threatActorsAndVulnerabilities.ts';\nimport { StatusIcon, StatusIconTypes } from '../common/StatusIcon.tsx';\nimport {\n ThreatActorsOptions,\n VulnerabilitiesOptions,\n} from '../../utils/constants.ts';\n\ntype CoverageStatusBoxProps = {\n notCovered: string[];\n coverageType: CoverageType;\n};\nfunction getIconType(count: number): StatusIconTypes {\n if (count === 0) return StatusIconTypes.Green;\n if (count <= 2) return StatusIconTypes.Yellow;\n return StatusIconTypes.Red;\n}\n\nexport function CoverageStatusBox(props: CoverageStatusBoxProps) {\n const iconType = getIconType(props.notCovered.length);\n\n return (\n <div className={styles.boxStyle}>\n <StatusIcon type={iconType} size=\"medium\" />\n <Text\n dangerouslySetInnerHTML={{\n __html: useCoverageStatusText(props.notCovered, props.coverageType),\n }}\n />\n </div>\n );\n}\n\nfunction useCoverageStatusText(\n notCoveredList: string[],\n coverageType: CoverageType,\n) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const numOfNotCovered = notCoveredList.length;\n\n const kindPlural =\n coverageType === CoverageType.Vulnerability\n ? t('dictionary.vulnerabilities')\n : t('dictionary.threatActors');\n\n const kindsPlural =\n coverageType === CoverageType.Vulnerability\n ? t('dictionary.theVulnerabilities')\n : t('dictionary.theThreatActors');\n\n const kind =\n coverageType === CoverageType.Vulnerability\n ? t('dictionary.theVulnerability')\n : t('dictionary.theThreatActor');\n\n const translationPrefix =\n coverageType === CoverageType.Vulnerability\n ? 'vulnerabilities'\n : 'threatActors';\n\n const translated = notCoveredList.map(item =>\n t(\n `${translationPrefix}.${item}` as\n | `threatActors.${ThreatActorsOptions}`\n | `vulnerabilities.${VulnerabilitiesOptions}`,\n ),\n );\n\n if (numOfNotCovered === 0) {\n return t('threatActorsAndVulnerabilities.allCovered', {\n kind: kindPlural.toLowerCase(),\n });\n }\n\n if (numOfNotCovered === 1) {\n return t('threatActorsAndVulnerabilities.oneNotCovered', {\n kind: kind,\n notCovered: translated[0],\n });\n }\n\n if (numOfNotCovered === 2) {\n return t('threatActorsAndVulnerabilities.twoNotCovered', {\n kind: kindsPlural,\n notCovered1: translated[0],\n notCovered2: translated[1],\n });\n }\n return t('threatActorsAndVulnerabilities.multipleNotCovered', {\n kind: kindPlural.toLowerCase(),\n notCovered1: translated[0],\n notCovered2: translated[1],\n notCovered3: translated[2],\n });\n}\n"],"names":[],"mappings":";;;;;;;;AAeA,SAAS,YAAY,KAAA,EAAgC;AACnD,EAAA,IAAI,KAAA,KAAU,CAAA,EAAG,OAAO,eAAA,CAAgB,KAAA;AACxC,EAAA,IAAI,KAAA,IAAS,CAAA,EAAG,OAAO,eAAA,CAAgB,MAAA;AACvC,EAAA,OAAO,eAAA,CAAgB,GAAA;AACzB;AAEO,SAAS,kBAAkB,KAAA,EAA+B;AAC/D,EAAA,MAAM,QAAA,GAAW,WAAA,CAAY,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA;AAEpD,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,QAAA,EACrB,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,IAAA,EAAM,QAAA,EAAU,IAAA,EAAK,QAAA,EAAS,CAAA;AAAA,oBAC1C,GAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,uBAAA,EAAyB;AAAA,UACvB,MAAA,EAAQ,qBAAA,CAAsB,KAAA,CAAM,UAAA,EAAY,MAAM,YAAY;AAAA;AACpE;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,qBAAA,CACP,gBACA,YAAA,EACA;AACA,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,MAAM,kBAAkB,cAAA,CAAe,MAAA;AAEvC,EAAA,MAAM,UAAA,GACJ,iBAAiB,YAAA,CAAa,aAAA,GAC1B,EAAE,4BAA4B,CAAA,GAC9B,EAAE,yBAAyB,CAAA;AAEjC,EAAA,MAAM,WAAA,GACJ,iBAAiB,YAAA,CAAa,aAAA,GAC1B,EAAE,+BAA+B,CAAA,GACjC,EAAE,4BAA4B,CAAA;AAEpC,EAAA,MAAM,IAAA,GACJ,iBAAiB,YAAA,CAAa,aAAA,GAC1B,EAAE,6BAA6B,CAAA,GAC/B,EAAE,2BAA2B,CAAA;AAEnC,EAAA,MAAM,iBAAA,GACJ,YAAA,KAAiB,YAAA,CAAa,aAAA,GAC1B,iBAAA,GACA,cAAA;AAEN,EAAA,MAAM,aAAa,cAAA,CAAe,GAAA;AAAA,IAAI,CAAA,IAAA,KACpC,CAAA;AAAA,MACE,CAAA,EAAG,iBAAiB,CAAA,CAAA,EAAI,IAAI,CAAA;AAAA;AAG9B,GACF;AAEA,EAAA,IAAI,oBAAoB,CAAA,EAAG;AACzB,IAAA,OAAO,EAAE,2CAAA,EAA6C;AAAA,MACpD,IAAA,EAAM,WAAW,WAAA;AAAY,KAC9B,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,oBAAoB,CAAA,EAAG;AACzB,IAAA,OAAO,EAAE,8CAAA,EAAgD;AAAA,MACvD,IAAA;AAAA,MACA,UAAA,EAAY,WAAW,CAAC;AAAA,KACzB,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,oBAAoB,CAAA,EAAG;AACzB,IAAA,OAAO,EAAE,8CAAA,EAAgD;AAAA,MACvD,IAAA,EAAM,WAAA;AAAA,MACN,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,MACzB,WAAA,EAAa,WAAW,CAAC;AAAA,KAC1B,CAAA;AAAA,EACH;AACA,EAAA,OAAO,EAAE,mDAAA,EAAqD;AAAA,IAC5D,IAAA,EAAM,WAAW,WAAA,EAAY;AAAA,IAC7B,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,IACzB,WAAA,EAAa,WAAW,CAAC,CAAA;AAAA,IACzB,WAAA,EAAa,WAAW,CAAC;AAAA,GAC1B,CAAA;AACH;;;;"}
@@ -1,7 +1,7 @@
1
1
  import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
2
2
 
3
- var css_248z = ".CoverageStatusBox_boxStyle__f7649a65db {\n display: flex;\n align-items: center;\n gap: 8px;\n background-color: #fcebcd;\n padding: 8px 16px;\n border-radius: 4px;\n}\n\n[data-theme-mode='dark'] .CoverageStatusBox_boxStyle__f7649a65db {\n background-color: var(--bui-gray-5);\n}\n";
4
- var styles = {"boxStyle":"CoverageStatusBox_boxStyle__f7649a65db"};
3
+ var css_248z = ".CoverageStatusBox_boxStyle__650f6eee39 {\n display: flex;\n align-items: center;\n gap: 8px;\n background-color: #fcebcd;\n padding: 8px 16px;\n border-radius: 4px;\n}\n\n[data-theme-mode='dark'] .CoverageStatusBox_boxStyle__650f6eee39 {\n background-color: var(--ros-gray-500);\n}\n";
4
+ var styles = {"boxStyle":"CoverageStatusBox_boxStyle__650f6eee39"};
5
5
  styleInject(css_248z);
6
6
 
7
7
  export { styles as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kartverket/backstage-plugin-risk-scorecard",
3
- "version": "6.0.1",
3
+ "version": "6.0.2",
4
4
  "main": "dist/index.esm.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "MIT",