@kartverket/backstage-plugin-risk-scorecard 8.1.5 → 8.3.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.
@@ -26,6 +26,7 @@ import { LockedRiScView } from '../riScInfo/LockedRiScView.esm.js';
26
26
  import { ThreatActorsAndVulnerabilitiesCard } from '../threatActorsAndVulnerabilities/ThreatActorsAndVulnerabilitiesCard.esm.js';
27
27
  import { PredefinedScenariosBanner } from '../predefinedScenarios/PredefinedScenariosBanner.esm.js';
28
28
  import { usePredefinedScenariosBannerDismissal } from '../../stores/PredefinedScenariosBannerStore.esm.js';
29
+ import pluginStyles from './RiScPlugin.module.css.esm.js';
29
30
 
30
31
  function RiScPlugin() {
31
32
  const [riScDialogState, setRiScDialogState] = useState(
@@ -176,23 +177,41 @@ function RiScPlugin() {
176
177
  ),
177
178
  /* @__PURE__ */ jsx(ScenarioTableWrapper, { riScWithMetadata: selectedRiSc })
178
179
  ] }) }),
179
- /* @__PURE__ */ jsx(Grid, { size: 4, children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "24px", children: [
180
- /* @__PURE__ */ jsx(
181
- RiScStatusComponent,
182
- {
183
- selectedRiSc,
184
- publishRiScFn: approveRiSc,
185
- predefinedScenariosDismissed
186
- }
187
- ),
188
- /* @__PURE__ */ jsx(RiskMatrix, { riScWithMetadata: selectedRiSc }),
189
- /* @__PURE__ */ jsx(
190
- ThreatActorsAndVulnerabilitiesCard,
191
- {
192
- scenarios: selectedRiSc.content.scenarios
193
- }
194
- )
195
- ] }) })
180
+ /* @__PURE__ */ jsx(Grid, { size: 4, children: /* @__PURE__ */ jsxs(
181
+ Flex,
182
+ {
183
+ direction: "column",
184
+ gap: "24px",
185
+ className: pluginStyles.rightColumn,
186
+ children: [
187
+ /* @__PURE__ */ jsx(
188
+ RiScStatusComponent,
189
+ {
190
+ selectedRiSc,
191
+ publishRiScFn: approveRiSc,
192
+ predefinedScenariosDismissed
193
+ }
194
+ ),
195
+ /* @__PURE__ */ jsxs(
196
+ Flex,
197
+ {
198
+ direction: "column",
199
+ gap: "24px",
200
+ className: pluginStyles.stickyCards,
201
+ children: [
202
+ /* @__PURE__ */ jsx(RiskMatrix, { riScWithMetadata: selectedRiSc }),
203
+ /* @__PURE__ */ jsx(
204
+ ThreatActorsAndVulnerabilitiesCard,
205
+ {
206
+ scenarios: selectedRiSc.content.scenarios
207
+ }
208
+ )
209
+ ]
210
+ }
211
+ )
212
+ ]
213
+ }
214
+ ) })
196
215
  ] }) }) }) })
197
216
  ] }),
198
217
  riScDialogState !== RiScDialogStates.Closed && /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"RiScPlugin.esm.js","sources":["../../../src/components/riScPlugin/RiScPlugin.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { ScenarioWizard } from '../scenarioWizard/ScenarioWizard';\nimport { ScenarioDrawer } from '../scenarioDrawer/ScenarioDrawer';\nimport { RiskMatrix } from '../riskMatrix/RiskMatrix';\nimport AlertBar from '../common/AlertBar/AlertBar';\nimport Grid from '@mui/material/Grid';\nimport { RiScDialog, RiScDialogStates } from '../riScDialog/RiScDialog';\nimport { Spinner } from '../common/Spinner';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport { ScenarioWizardSteps } from '../../contexts/ScenarioContext';\nimport { RiScHeader } from '../riScHeader/RiScHeader.tsx';\nimport { ScenarioTableWrapper } from '../scenarioTable/ScenarioTableWrapper.tsx';\nimport { FirstRiScDialog } from '../riScInfo/FirstRiScDialog.tsx';\nimport { Flex, Text } from '@backstage/ui';\nimport { CreateNewRiScButton } from '../riScInfo/CreateNewRiScButton.tsx';\nimport { RiScSelectionCard } from '../riScInfo/RiScSelectionCard.tsx';\nimport { RiScStatusComponent } from '../riScInfo/riScStatus/RiScStatusComponent.tsx';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport styles from '../common/alertBar.module.css';\nimport { RiScDescriptionCard } from '../riScInfo/RiScDescriptionCard.tsx';\nimport riscStyles from '../riScInfo/RiScSelectionCard.module.css';\nimport { ErrorState } from '../riScInfo/ErrorState.tsx';\nimport { LockedRiScView } from '../riScInfo/LockedRiScView.tsx';\nimport { ThreatActorsAndVulnerabilitiesCard } from '../threatActorsAndVulnerabilities/ThreatActorsAndVulnerabilitiesCard.tsx';\nimport { PredefinedScenariosBanner } from '../predefinedScenarios/PredefinedScenariosBanner.tsx';\nimport { usePredefinedScenariosBannerDismissal } from '../../stores/PredefinedScenariosBannerStore.ts';\n\nexport function RiScPlugin() {\n const [riScDialogState, setRiScDialogState] = useState<RiScDialogStates>(\n RiScDialogStates.Closed,\n );\n\n function openCreateRiScDialog() {\n return setRiScDialogState(RiScDialogStates.Create);\n }\n\n function openDeleteRiScDialog() {\n return setRiScDialogState(RiScDialogStates.Delete);\n }\n\n function openEditRiScDialog() {\n return setRiScDialogState(RiScDialogStates.EditRiscInfo);\n }\n\n function openEditEncryptionDialog() {\n return setRiScDialogState(RiScDialogStates.EditEncryption);\n }\n\n function closeRiScDialog() {\n return setRiScDialogState(RiScDialogStates.Closed);\n }\n\n const {\n approveRiSc,\n selectedRiSc,\n selectedLockedRiSc,\n selectedSystemRiSc,\n isFetching,\n resetResponse,\n resetRiScStatus,\n response,\n updateStatus,\n riScs,\n systemRiScs,\n failedToFetchGcpCryptoKeys,\n allRiScsFailedDecryption,\n } = useRiScs();\n\n const {\n isDismissed: predefinedScenariosDismissed,\n dismiss: dismissPredefinedScenarios,\n } = usePredefinedScenariosBannerDismissal(selectedRiSc?.id);\n\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [searchParams] = useSearchParams();\n const scenarioWizardStep = searchParams.get(\n 'step',\n ) as ScenarioWizardSteps | null;\n\n useEffect(() => {\n if (scenarioWizardStep !== null) {\n resetRiScStatus();\n resetResponse();\n }\n }, [resetRiScStatus, resetResponse, scenarioWizardStep]);\n\n return (\n <>\n <Flex className={styles.alertBarBox}>\n <AlertBar\n updateStatus={updateStatus}\n response={response}\n statusText={response?.statusMessage}\n />\n </Flex>\n {scenarioWizardStep !== null ? (\n <ScenarioWizard step={scenarioWizardStep} />\n ) : (\n <>\n <RiScHeader onEditEncryption={openEditEncryptionDialog} />\n {!isFetching &&\n riScs !== null &&\n riScs.length === 0 &&\n !selectedRiSc &&\n !selectedSystemRiSc &&\n !selectedLockedRiSc &&\n !allRiScsFailedDecryption && (\n <Flex\n direction=\"column\"\n gap=\"24px\"\n justify=\"center\"\n align=\"center\"\n className={riscStyles.componentLayout}\n >\n {/* TODO: Fjern hardkodet tekst og finn bedre oppførsel når det kun finnes system-RoS (Oppgave laget i notion) */}\n {systemRiScs.length > 0 && (\n <>\n <RiScSelectionCard />\n <span>System-RoS kan velges i dropdown</span>\n </>\n )}\n <FirstRiScDialog onNewRiSc={openCreateRiScDialog} />\n </Flex>\n )}\n {/* Added isFetching condition to avoid showing error state when user e.g., adds new scorecard. */}\n {!isFetching &&\n !selectedRiSc &&\n !selectedSystemRiSc &&\n !selectedLockedRiSc &&\n (failedToFetchGcpCryptoKeys || allRiScsFailedDecryption) && (\n <Flex\n align=\"center\"\n justify=\"center\"\n className={riscStyles.componentLayout}\n >\n <ErrorState onCreateNew={openCreateRiScDialog} />\n </Flex>\n )}\n {isFetching && <Spinner size={80} />}\n\n {selectedSystemRiSc && (\n <Flex\n justify=\"center\"\n align=\"center\"\n className={riscStyles.componentLayout}\n >\n {/* System RiScs redirect through their first appliesTo entity and render there as regular or locked RiScs. */}\n <Spinner size={80} />\n </Flex>\n )}\n\n {selectedLockedRiSc && (\n <>\n <Grid container spacing={4}>\n <Grid size={12}>\n <Grid container rowSpacing={3} columnSpacing={4}>\n <Grid size={8}>\n <Flex align=\"center\" justify=\"between\">\n <Text as=\"h3\" variant=\"body-large\" weight=\"bold\">\n {t('contentHeader.multipleRiScs')}\n </Text>\n <CreateNewRiScButton\n onCreateNew={openCreateRiScDialog}\n />\n </Flex>\n </Grid>\n <Grid size={8}>\n <RiScSelectionCard />\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n <Flex\n justify=\"center\"\n align=\"center\"\n className={riscStyles.componentLayout}\n >\n <LockedRiScView lockedRiSc={selectedLockedRiSc} />\n </Flex>\n </>\n )}\n\n <Grid container spacing={4}>\n {selectedRiSc && (\n <>\n <Grid size={12}>\n <Grid container rowSpacing={3} columnSpacing={4}>\n <Grid size={8}>\n <Flex align=\"center\" justify=\"between\">\n <Text as=\"h3\" variant=\"body-large\" weight=\"bold\">\n {t('contentHeader.multipleRiScs')}\n </Text>\n <CreateNewRiScButton\n onCreateNew={openCreateRiScDialog}\n />\n </Flex>\n </Grid>\n <Grid size={8}>\n <RiScSelectionCard />\n </Grid>\n <Grid size={4} />\n\n <Grid size={8}>\n <Flex gap=\"24px\" direction=\"column\">\n <PredefinedScenariosBanner\n selectedRiSc={selectedRiSc}\n isDismissed={predefinedScenariosDismissed}\n dismiss={dismissPredefinedScenarios}\n />\n <RiScDescriptionCard\n riScWithMetadata={selectedRiSc}\n edit={openEditRiScDialog}\n />\n <ScenarioTableWrapper riScWithMetadata={selectedRiSc} />\n </Flex>\n </Grid>\n\n <Grid size={4}>\n <Flex direction=\"column\" gap=\"24px\">\n <RiScStatusComponent\n selectedRiSc={selectedRiSc}\n publishRiScFn={approveRiSc}\n predefinedScenariosDismissed={\n predefinedScenariosDismissed\n }\n />\n <RiskMatrix riScWithMetadata={selectedRiSc} />\n <ThreatActorsAndVulnerabilitiesCard\n scenarios={selectedRiSc.content.scenarios}\n />\n </Flex>\n </Grid>\n </Grid>\n </Grid>\n </>\n )}\n </Grid>\n </>\n )}\n\n {riScDialogState !== RiScDialogStates.Closed && (\n <RiScDialog\n onClose={closeRiScDialog}\n dialogState={riScDialogState}\n onDelete={openDeleteRiScDialog}\n />\n )}\n\n {!scenarioWizardStep && <ScenarioDrawer />}\n </>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RiScPlugin.esm.js","sources":["../../../src/components/riScPlugin/RiScPlugin.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { ScenarioWizard } from '../scenarioWizard/ScenarioWizard';\nimport { ScenarioDrawer } from '../scenarioDrawer/ScenarioDrawer';\nimport { RiskMatrix } from '../riskMatrix/RiskMatrix';\nimport AlertBar from '../common/AlertBar/AlertBar';\nimport Grid from '@mui/material/Grid';\nimport { RiScDialog, RiScDialogStates } from '../riScDialog/RiScDialog';\nimport { Spinner } from '../common/Spinner';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport { ScenarioWizardSteps } from '../../contexts/ScenarioContext';\nimport { RiScHeader } from '../riScHeader/RiScHeader.tsx';\nimport { ScenarioTableWrapper } from '../scenarioTable/ScenarioTableWrapper.tsx';\nimport { FirstRiScDialog } from '../riScInfo/FirstRiScDialog.tsx';\nimport { Flex, Text } from '@backstage/ui';\nimport { CreateNewRiScButton } from '../riScInfo/CreateNewRiScButton.tsx';\nimport { RiScSelectionCard } from '../riScInfo/RiScSelectionCard.tsx';\nimport { RiScStatusComponent } from '../riScInfo/riScStatus/RiScStatusComponent.tsx';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport styles from '../common/alertBar.module.css';\nimport { RiScDescriptionCard } from '../riScInfo/RiScDescriptionCard.tsx';\nimport riscStyles from '../riScInfo/RiScSelectionCard.module.css';\nimport { ErrorState } from '../riScInfo/ErrorState.tsx';\nimport { LockedRiScView } from '../riScInfo/LockedRiScView.tsx';\nimport { ThreatActorsAndVulnerabilitiesCard } from '../threatActorsAndVulnerabilities/ThreatActorsAndVulnerabilitiesCard.tsx';\nimport { PredefinedScenariosBanner } from '../predefinedScenarios/PredefinedScenariosBanner.tsx';\nimport { usePredefinedScenariosBannerDismissal } from '../../stores/PredefinedScenariosBannerStore.ts';\nimport pluginStyles from './RiScPlugin.module.css';\n\nexport function RiScPlugin() {\n const [riScDialogState, setRiScDialogState] = useState<RiScDialogStates>(\n RiScDialogStates.Closed,\n );\n\n function openCreateRiScDialog() {\n return setRiScDialogState(RiScDialogStates.Create);\n }\n\n function openDeleteRiScDialog() {\n return setRiScDialogState(RiScDialogStates.Delete);\n }\n\n function openEditRiScDialog() {\n return setRiScDialogState(RiScDialogStates.EditRiscInfo);\n }\n\n function openEditEncryptionDialog() {\n return setRiScDialogState(RiScDialogStates.EditEncryption);\n }\n\n function closeRiScDialog() {\n return setRiScDialogState(RiScDialogStates.Closed);\n }\n\n const {\n approveRiSc,\n selectedRiSc,\n selectedLockedRiSc,\n selectedSystemRiSc,\n isFetching,\n resetResponse,\n resetRiScStatus,\n response,\n updateStatus,\n riScs,\n systemRiScs,\n failedToFetchGcpCryptoKeys,\n allRiScsFailedDecryption,\n } = useRiScs();\n\n const {\n isDismissed: predefinedScenariosDismissed,\n dismiss: dismissPredefinedScenarios,\n } = usePredefinedScenariosBannerDismissal(selectedRiSc?.id);\n\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [searchParams] = useSearchParams();\n const scenarioWizardStep = searchParams.get(\n 'step',\n ) as ScenarioWizardSteps | null;\n\n useEffect(() => {\n if (scenarioWizardStep !== null) {\n resetRiScStatus();\n resetResponse();\n }\n }, [resetRiScStatus, resetResponse, scenarioWizardStep]);\n\n return (\n <>\n <Flex className={styles.alertBarBox}>\n <AlertBar\n updateStatus={updateStatus}\n response={response}\n statusText={response?.statusMessage}\n />\n </Flex>\n {scenarioWizardStep !== null ? (\n <ScenarioWizard step={scenarioWizardStep} />\n ) : (\n <>\n <RiScHeader onEditEncryption={openEditEncryptionDialog} />\n {!isFetching &&\n riScs !== null &&\n riScs.length === 0 &&\n !selectedRiSc &&\n !selectedSystemRiSc &&\n !selectedLockedRiSc &&\n !allRiScsFailedDecryption && (\n <Flex\n direction=\"column\"\n gap=\"24px\"\n justify=\"center\"\n align=\"center\"\n className={riscStyles.componentLayout}\n >\n {/* TODO: Fjern hardkodet tekst og finn bedre oppførsel når det kun finnes system-RoS (Oppgave laget i notion) */}\n {systemRiScs.length > 0 && (\n <>\n <RiScSelectionCard />\n <span>System-RoS kan velges i dropdown</span>\n </>\n )}\n <FirstRiScDialog onNewRiSc={openCreateRiScDialog} />\n </Flex>\n )}\n {/* Added isFetching condition to avoid showing error state when user e.g., adds new scorecard. */}\n {!isFetching &&\n !selectedRiSc &&\n !selectedSystemRiSc &&\n !selectedLockedRiSc &&\n (failedToFetchGcpCryptoKeys || allRiScsFailedDecryption) && (\n <Flex\n align=\"center\"\n justify=\"center\"\n className={riscStyles.componentLayout}\n >\n <ErrorState onCreateNew={openCreateRiScDialog} />\n </Flex>\n )}\n {isFetching && <Spinner size={80} />}\n\n {selectedSystemRiSc && (\n <Flex\n justify=\"center\"\n align=\"center\"\n className={riscStyles.componentLayout}\n >\n {/* System RiScs redirect through their first appliesTo entity and render there as regular or locked RiScs. */}\n <Spinner size={80} />\n </Flex>\n )}\n\n {selectedLockedRiSc && (\n <>\n <Grid container spacing={4}>\n <Grid size={12}>\n <Grid container rowSpacing={3} columnSpacing={4}>\n <Grid size={8}>\n <Flex align=\"center\" justify=\"between\">\n <Text as=\"h3\" variant=\"body-large\" weight=\"bold\">\n {t('contentHeader.multipleRiScs')}\n </Text>\n <CreateNewRiScButton\n onCreateNew={openCreateRiScDialog}\n />\n </Flex>\n </Grid>\n <Grid size={8}>\n <RiScSelectionCard />\n </Grid>\n </Grid>\n </Grid>\n </Grid>\n <Flex\n justify=\"center\"\n align=\"center\"\n className={riscStyles.componentLayout}\n >\n <LockedRiScView lockedRiSc={selectedLockedRiSc} />\n </Flex>\n </>\n )}\n\n <Grid container spacing={4}>\n {selectedRiSc && (\n <>\n <Grid size={12}>\n <Grid container rowSpacing={3} columnSpacing={4}>\n <Grid size={8}>\n <Flex align=\"center\" justify=\"between\">\n <Text as=\"h3\" variant=\"body-large\" weight=\"bold\">\n {t('contentHeader.multipleRiScs')}\n </Text>\n <CreateNewRiScButton\n onCreateNew={openCreateRiScDialog}\n />\n </Flex>\n </Grid>\n <Grid size={8}>\n <RiScSelectionCard />\n </Grid>\n <Grid size={4} />\n\n <Grid size={8}>\n <Flex gap=\"24px\" direction=\"column\">\n <PredefinedScenariosBanner\n selectedRiSc={selectedRiSc}\n isDismissed={predefinedScenariosDismissed}\n dismiss={dismissPredefinedScenarios}\n />\n <RiScDescriptionCard\n riScWithMetadata={selectedRiSc}\n edit={openEditRiScDialog}\n />\n <ScenarioTableWrapper riScWithMetadata={selectedRiSc} />\n </Flex>\n </Grid>\n\n <Grid size={4}>\n <Flex\n direction=\"column\"\n gap=\"24px\"\n className={pluginStyles.rightColumn}\n >\n <RiScStatusComponent\n selectedRiSc={selectedRiSc}\n publishRiScFn={approveRiSc}\n predefinedScenariosDismissed={\n predefinedScenariosDismissed\n }\n />\n <Flex\n direction=\"column\"\n gap=\"24px\"\n className={pluginStyles.stickyCards}\n >\n <RiskMatrix riScWithMetadata={selectedRiSc} />\n <ThreatActorsAndVulnerabilitiesCard\n scenarios={selectedRiSc.content.scenarios}\n />\n </Flex>\n </Flex>\n </Grid>\n </Grid>\n </Grid>\n </>\n )}\n </Grid>\n </>\n )}\n\n {riScDialogState !== RiScDialogStates.Closed && (\n <RiScDialog\n onClose={closeRiScDialog}\n dialogState={riScDialogState}\n onDelete={openDeleteRiScDialog}\n />\n )}\n\n {!scenarioWizardStep && <ScenarioDrawer />}\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BO,SAAS,UAAA,GAAa;AAC3B,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,QAAA;AAAA,IAC5C,gBAAA,CAAiB;AAAA,GACnB;AAEA,EAAA,SAAS,oBAAA,GAAuB;AAC9B,IAAA,OAAO,kBAAA,CAAmB,iBAAiB,MAAM,CAAA;AAAA,EACnD;AAEA,EAAA,SAAS,oBAAA,GAAuB;AAC9B,IAAA,OAAO,kBAAA,CAAmB,iBAAiB,MAAM,CAAA;AAAA,EACnD;AAEA,EAAA,SAAS,kBAAA,GAAqB;AAC5B,IAAA,OAAO,kBAAA,CAAmB,iBAAiB,YAAY,CAAA;AAAA,EACzD;AAEA,EAAA,SAAS,wBAAA,GAA2B;AAClC,IAAA,OAAO,kBAAA,CAAmB,iBAAiB,cAAc,CAAA;AAAA,EAC3D;AAEA,EAAA,SAAS,eAAA,GAAkB;AACzB,IAAA,OAAO,kBAAA,CAAmB,iBAAiB,MAAM,CAAA;AAAA,EACnD;AAEA,EAAA,MAAM;AAAA,IACJ,WAAA;AAAA,IACA,YAAA;AAAA,IACA,kBAAA;AAAA,IACA,kBAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,0BAAA;AAAA,IACA;AAAA,MACE,QAAA,EAAS;AAEb,EAAA,MAAM;AAAA,IACJ,WAAA,EAAa,4BAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX,GAAI,qCAAA,CAAsC,YAAA,EAAc,EAAE,CAAA;AAE1D,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,MAAM,CAAC,YAAY,CAAA,GAAI,eAAA,EAAgB;AACvC,EAAA,MAAM,qBAAqB,YAAA,CAAa,GAAA;AAAA,IACtC;AAAA,GACF;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,uBAAuB,IAAA,EAAM;AAC/B,MAAA,eAAA,EAAgB;AAChB,MAAA,aAAA,EAAc;AAAA,IAChB;AAAA,EACF,CAAA,EAAG,CAAC,eAAA,EAAiB,aAAA,EAAe,kBAAkB,CAAC,CAAA;AAEvD,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAW,MAAA,CAAO,WAAA,EACtB,QAAA,kBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,YAAA;AAAA,QACA,QAAA;AAAA,QACA,YAAY,QAAA,EAAU;AAAA;AAAA,KACxB,EACF,CAAA;AAAA,IACC,uBAAuB,IAAA,mBACtB,GAAA,CAAC,kBAAe,IAAA,EAAM,kBAAA,EAAoB,oBAE1C,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,kBAAkB,wBAAA,EAA0B,CAAA;AAAA,MACvD,CAAC,UAAA,IACA,KAAA,KAAU,IAAA,IACV,MAAM,MAAA,KAAW,CAAA,IACjB,CAAC,YAAA,IACD,CAAC,kBAAA,IACD,CAAC,kBAAA,IACD,CAAC,wBAAA,oBACC,IAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,QAAA;AAAA,UACV,GAAA,EAAI,MAAA;AAAA,UACJ,OAAA,EAAQ,QAAA;AAAA,UACR,KAAA,EAAM,QAAA;AAAA,UACN,WAAW,UAAA,CAAW,eAAA;AAAA,UAGrB,QAAA,EAAA;AAAA,YAAA,WAAA,CAAY,MAAA,GAAS,qBACpB,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,CAAA;AAAA,8BACnB,GAAA,CAAC,UAAK,QAAA,EAAA,kCAAA,EAAgC;AAAA,aAAA,EACxC,CAAA;AAAA,4BAEF,GAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAW,oBAAA,EAAsB;AAAA;AAAA;AAAA,OACpD;AAAA,MAGH,CAAC,cACA,CAAC,YAAA,IACD,CAAC,kBAAA,IACD,CAAC,kBAAA,KACA,0BAAA,IAA8B,wBAAA,CAAA,oBAC7B,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,QAAA;AAAA,UACN,OAAA,EAAQ,QAAA;AAAA,UACR,WAAW,UAAA,CAAW,eAAA;AAAA,UAEtB,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,WAAA,EAAa,oBAAA,EAAsB;AAAA;AAAA,OACjD;AAAA,MAEH,UAAA,oBAAc,GAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,EAAA,EAAI,CAAA;AAAA,MAEjC,kBAAA,oBACC,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,QAAA;AAAA,UACR,KAAA,EAAM,QAAA;AAAA,UACN,WAAW,UAAA,CAAW,eAAA;AAAA,UAGtB,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,EAAA,EAAI;AAAA;AAAA,OACrB;AAAA,MAGD,sCACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAK,SAAA,EAAS,IAAA,EAAC,OAAA,EAAS,CAAA,EACvB,8BAAC,IAAA,EAAA,EAAK,IAAA,EAAM,EAAA,EACV,QAAA,kBAAA,IAAA,CAAC,QAAK,SAAA,EAAS,IAAA,EAAC,UAAA,EAAY,CAAA,EAAG,eAAe,CAAA,EAC5C,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,IAAA,EAAA,EAAK,MAAM,CAAA,EACV,QAAA,kBAAA,IAAA,CAAC,QAAK,KAAA,EAAM,QAAA,EAAS,SAAQ,SAAA,EAC3B,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAG,IAAA,EAAK,OAAA,EAAQ,cAAa,MAAA,EAAO,MAAA,EACvC,QAAA,EAAA,CAAA,CAAE,6BAA6B,CAAA,EAClC,CAAA;AAAA,4BACA,GAAA;AAAA,cAAC,mBAAA;AAAA,cAAA;AAAA,gBACC,WAAA,EAAa;AAAA;AAAA;AACf,WAAA,EACF,CAAA,EACF,CAAA;AAAA,8BACC,IAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EACV,QAAA,kBAAA,GAAA,CAAC,qBAAkB,CAAA,EACrB;AAAA,SAAA,EACF,GACF,CAAA,EACF,CAAA;AAAA,wBACA,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAQ,QAAA;AAAA,YACR,KAAA,EAAM,QAAA;AAAA,YACN,WAAW,UAAA,CAAW,eAAA;AAAA,YAEtB,QAAA,kBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,UAAA,EAAY,kBAAA,EAAoB;AAAA;AAAA;AAClD,OAAA,EACF,CAAA;AAAA,0BAGD,IAAA,EAAA,EAAK,SAAA,EAAS,MAAC,OAAA,EAAS,CAAA,EACtB,0CACC,GAAA,CAAA,QAAA,EAAA,EACE,QAAA,kBAAA,GAAA,CAAC,QAAK,IAAA,EAAM,EAAA,EACV,+BAAC,IAAA,EAAA,EAAK,SAAA,EAAS,MAAC,UAAA,EAAY,CAAA,EAAG,eAAe,CAAA,EAC5C,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,MAAM,CAAA,EACV,QAAA,kBAAA,IAAA,CAAC,QAAK,KAAA,EAAM,QAAA,EAAS,SAAQ,SAAA,EAC3B,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAG,IAAA,EAAK,OAAA,EAAQ,cAAa,MAAA,EAAO,MAAA,EACvC,QAAA,EAAA,CAAA,CAAE,6BAA6B,CAAA,EAClC,CAAA;AAAA,0BACA,GAAA;AAAA,YAAC,mBAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAa;AAAA;AAAA;AACf,SAAA,EACF,CAAA,EACF,CAAA;AAAA,4BACC,IAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EACV,QAAA,kBAAA,GAAA,CAAC,qBAAkB,CAAA,EACrB,CAAA;AAAA,wBACA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EAAG,CAAA;AAAA,wBAEf,GAAA,CAAC,QAAK,IAAA,EAAM,CAAA,EACV,+BAAC,IAAA,EAAA,EAAK,GAAA,EAAI,MAAA,EAAO,SAAA,EAAU,QAAA,EACzB,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,yBAAA;AAAA,YAAA;AAAA,cACC,YAAA;AAAA,cACA,WAAA,EAAa,4BAAA;AAAA,cACb,OAAA,EAAS;AAAA;AAAA,WACX;AAAA,0BACA,GAAA;AAAA,YAAC,mBAAA;AAAA,YAAA;AAAA,cACC,gBAAA,EAAkB,YAAA;AAAA,cAClB,IAAA,EAAM;AAAA;AAAA,WACR;AAAA,0BACA,GAAA,CAAC,oBAAA,EAAA,EAAqB,gBAAA,EAAkB,YAAA,EAAc;AAAA,SAAA,EACxD,CAAA,EACF,CAAA;AAAA,wBAEA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAM,CAAA,EACV,QAAA,kBAAA,IAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,QAAA;AAAA,YACV,GAAA,EAAI,MAAA;AAAA,YACJ,WAAW,YAAA,CAAa,WAAA;AAAA,YAExB,QAAA,EAAA;AAAA,8BAAA,GAAA;AAAA,gBAAC,mBAAA;AAAA,gBAAA;AAAA,kBACC,YAAA;AAAA,kBACA,aAAA,EAAe,WAAA;AAAA,kBACf;AAAA;AAAA,eAGF;AAAA,8BACA,IAAA;AAAA,gBAAC,IAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,QAAA;AAAA,kBACV,GAAA,EAAI,MAAA;AAAA,kBACJ,WAAW,YAAA,CAAa,WAAA;AAAA,kBAExB,QAAA,EAAA;AAAA,oCAAA,GAAA,CAAC,UAAA,EAAA,EAAW,kBAAkB,YAAA,EAAc,CAAA;AAAA,oCAC5C,GAAA;AAAA,sBAAC,kCAAA;AAAA,sBAAA;AAAA,wBACC,SAAA,EAAW,aAAa,OAAA,CAAQ;AAAA;AAAA;AAClC;AAAA;AAAA;AACF;AAAA;AAAA,SACF,EACF;AAAA,OAAA,EACF,CAAA,EACF,GACF,CAAA,EAEJ;AAAA,KAAA,EACF,CAAA;AAAA,IAGD,eAAA,KAAoB,iBAAiB,MAAA,oBACpC,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,eAAA;AAAA,QACT,WAAA,EAAa,eAAA;AAAA,QACb,QAAA,EAAU;AAAA;AAAA,KACZ;AAAA,IAGD,CAAC,kBAAA,oBAAsB,GAAA,CAAC,cAAA,EAAA,EAAe;AAAA,GAAA,EAC1C,CAAA;AAEJ;;;;"}
@@ -0,0 +1,8 @@
1
+ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
2
+
3
+ var css_248z = ".RiScPlugin_rightColumn__7c55742ecd {\n height: 100%;\n}\n\n.RiScPlugin_stickyCards__7c55742ecd {\n position: sticky;\n top: 16px;\n align-self: flex-start;\n max-height: calc(100vh - 32px);\n overflow-y: auto;\n}\n";
4
+ var pluginStyles = {"rightColumn":"RiScPlugin_rightColumn__7c55742ecd","stickyCards":"RiScPlugin_stickyCards__7c55742ecd"};
5
+ styleInject(css_248z);
6
+
7
+ export { pluginStyles as default };
8
+ //# sourceMappingURL=RiScPlugin.module.css.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RiScPlugin.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -1,8 +1,10 @@
1
- import { useQuery } from '@tanstack/react-query';
2
1
  import { useApi, configApiRef, identityApiRef, githubAuthApiRef, fetchApiRef } from '@backstage/core-plugin-api';
2
+ import { useQuery } from '@tanstack/react-query';
3
3
  import { buildNativeBackendUrls } from '../urls/backend.esm.js';
4
- import { useGithubRepositoryInformation } from '../utils/hooks.esm.js';
4
+ import { URLS } from '../urls/index.esm.js';
5
5
  import { latestSupportedVersion } from '../utils/constants.esm.js';
6
+ import { useNativeRiScBackendFeatureFlag } from '../utils/featureFlags.esm.js';
7
+ import { useGithubRepositoryInformation } from '../utils/hooks.esm.js';
6
8
 
7
9
  const PREDEFINED_SCENARIOS_TEMPLATE_ID = "web-app-api";
8
10
  const PREDEFINED_SCENARIOS_SOURCE_TEST_REF = "add-scenarios";
@@ -14,16 +16,23 @@ function usePredefinedScenarios(isTestPredefinedScenariosEnabled) {
14
16
  const githubApi = useApi(githubAuthApiRef);
15
17
  const { fetch } = useApi(fetchApiRef);
16
18
  const repoInformation = useGithubRepositoryInformation();
19
+ const isNativeBackendEnabled = useNativeRiScBackendFeatureFlag();
17
20
  const backendUrl = configApi.getString("backend.baseUrl");
18
- const { uriToFetchInitRiScTemplate } = buildNativeBackendUrls({
21
+ const { uriToFetchInitRiScTemplate: uriToFetchInitRiScTemplateNative } = buildNativeBackendUrls({
19
22
  baseUrl: `${backendUrl}/api/risk-scorecard`,
20
23
  owner: repoInformation.owner,
21
24
  repo: repoInformation.name,
22
25
  version: latestSupportedVersion
23
26
  });
27
+ function uriToFetchInitRiScTemplateProxy(id, ref) {
28
+ const base = `${backendUrl}${URLS.backend.fetchInitRiScTemplate.replace(":id", id)}`;
29
+ return ref ? `${base}?ref=${encodeURIComponent(ref)}` : base;
30
+ }
31
+ const uriToFetchInitRiScTemplate = isNativeBackendEnabled ? uriToFetchInitRiScTemplateNative : uriToFetchInitRiScTemplateProxy;
24
32
  return useQuery({
25
33
  queryKey: [
26
34
  PREDEFINED_SCENARIOS_QUERY_KEY,
35
+ isNativeBackendEnabled ? "native" : "proxy",
27
36
  isTestPredefinedScenariosEnabled ? "test" : "main"
28
37
  ],
29
38
  retry: (count, error) => {
@@ -1 +1 @@
1
- {"version":3,"file":"usePredefinedScenarios.esm.js","sources":["../../src/hooks/usePredefinedScenarios.ts"],"sourcesContent":["import { useQuery } from '@tanstack/react-query';\nimport {\n configApiRef,\n fetchApiRef,\n githubAuthApiRef,\n identityApiRef,\n useApi,\n} from '@backstage/core-plugin-api';\nimport { ScenarioDTO } from '../utils/DTOs.ts';\nimport { buildNativeBackendUrls } from '../urls/backend.ts';\nimport { useGithubRepositoryInformation } from '../utils/hooks.ts';\nimport { latestSupportedVersion } from '../utils/constants.ts';\n\nconst PREDEFINED_SCENARIOS_TEMPLATE_ID = 'web-app-api';\nconst PREDEFINED_SCENARIOS_SOURCE_TEST_REF = 'add-scenarios';\n\nconst PREDEFINED_SCENARIO_IDS = ['xK9mP', 'mF6xQ'];\n\nconst PREDEFINED_SCENARIOS_QUERY_KEY = ['predefined-scenarios'] as const;\n\nexport function usePredefinedScenarios(\n isTestPredefinedScenariosEnabled: boolean,\n) {\n const configApi = useApi(configApiRef);\n const identityApi = useApi(identityApiRef);\n const githubApi = useApi(githubAuthApiRef);\n const { fetch } = useApi(fetchApiRef);\n const repoInformation = useGithubRepositoryInformation();\n\n const backendUrl = configApi.getString('backend.baseUrl');\n const { uriToFetchInitRiScTemplate } = buildNativeBackendUrls({\n baseUrl: `${backendUrl}/api/risk-scorecard`,\n owner: repoInformation.owner,\n repo: repoInformation.name,\n version: latestSupportedVersion,\n });\n\n return useQuery({\n queryKey: [\n PREDEFINED_SCENARIOS_QUERY_KEY,\n isTestPredefinedScenariosEnabled ? 'test' : 'main',\n ],\n retry: (count, error) => {\n if (\n error.message === 'Unexpected status 401' ||\n error.message === 'Unexpected status 403' ||\n error.message === 'Unexpected status 404' ||\n error.message === 'Unexpected status 429'\n ) {\n return false;\n }\n return count < 2;\n },\n queryFn: async ({ signal }): Promise<ScenarioDTO[]> => {\n const [identity, githubToken] = await Promise.all([\n identityApi.getCredentials(),\n githubApi.getAccessToken(['repo']),\n ]);\n\n const response = await fetch(\n uriToFetchInitRiScTemplate(\n PREDEFINED_SCENARIOS_TEMPLATE_ID,\n isTestPredefinedScenariosEnabled\n ? PREDEFINED_SCENARIOS_SOURCE_TEST_REF\n : undefined,\n ),\n {\n signal,\n headers: {\n Authorization: `Bearer ${identity.token}`,\n 'GitHub-Access-Token': githubToken,\n },\n },\n );\n if (!response.ok) {\n throw new Error(`Unexpected status ${response.status}`);\n }\n const data: unknown = await response.json();\n const scenarios = (data as { scenarios?: ScenarioDTO[] })?.scenarios;\n if (!Array.isArray(scenarios)) {\n throw new Error('Source file has no scenarios array');\n }\n\n return scenarios.filter(dto =>\n PREDEFINED_SCENARIO_IDS.includes(dto.scenario.ID),\n );\n },\n });\n}\n"],"names":[],"mappings":";;;;;;AAaA,MAAM,gCAAA,GAAmC,aAAA;AACzC,MAAM,oCAAA,GAAuC,eAAA;AAE7C,MAAM,uBAAA,GAA0B,CAAC,OAAA,EAAS,OAAO,CAAA;AAEjD,MAAM,8BAAA,GAAiC,CAAC,sBAAsB,CAAA;AAEvD,SAAS,uBACd,gCAAA,EACA;AACA,EAAA,MAAM,SAAA,GAAY,OAAO,YAAY,CAAA;AACrC,EAAA,MAAM,WAAA,GAAc,OAAO,cAAc,CAAA;AACzC,EAAA,MAAM,SAAA,GAAY,OAAO,gBAAgB,CAAA;AACzC,EAAA,MAAM,EAAE,KAAA,EAAM,GAAI,MAAA,CAAO,WAAW,CAAA;AACpC,EAAA,MAAM,kBAAkB,8BAAA,EAA+B;AAEvD,EAAA,MAAM,UAAA,GAAa,SAAA,CAAU,SAAA,CAAU,iBAAiB,CAAA;AACxD,EAAA,MAAM,EAAE,0BAAA,EAA2B,GAAI,sBAAA,CAAuB;AAAA,IAC5D,OAAA,EAAS,GAAG,UAAU,CAAA,mBAAA,CAAA;AAAA,IACtB,OAAO,eAAA,CAAgB,KAAA;AAAA,IACvB,MAAM,eAAA,CAAgB,IAAA;AAAA,IACtB,OAAA,EAAS;AAAA,GACV,CAAA;AAED,EAAA,OAAO,QAAA,CAAS;AAAA,IACd,QAAA,EAAU;AAAA,MACR,8BAAA;AAAA,MACA,mCAAmC,MAAA,GAAS;AAAA,KAC9C;AAAA,IACA,KAAA,EAAO,CAAC,KAAA,EAAO,KAAA,KAAU;AACvB,MAAA,IACE,KAAA,CAAM,OAAA,KAAY,uBAAA,IAClB,KAAA,CAAM,OAAA,KAAY,uBAAA,IAClB,KAAA,CAAM,OAAA,KAAY,uBAAA,IAClB,KAAA,CAAM,OAAA,KAAY,uBAAA,EAClB;AACA,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,OAAO,KAAA,GAAQ,CAAA;AAAA,IACjB,CAAA;AAAA,IACA,OAAA,EAAS,OAAO,EAAE,MAAA,EAAO,KAA8B;AACrD,MAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,QAChD,YAAY,cAAA,EAAe;AAAA,QAC3B,SAAA,CAAU,cAAA,CAAe,CAAC,MAAM,CAAC;AAAA,OAClC,CAAA;AAED,MAAA,MAAM,WAAW,MAAM,KAAA;AAAA,QACrB,0BAAA;AAAA,UACE,gCAAA;AAAA,UACA,mCACI,oCAAA,GACA;AAAA,SACN;AAAA,QACA;AAAA,UACE,MAAA;AAAA,UACA,OAAA,EAAS;AAAA,YACP,aAAA,EAAe,CAAA,OAAA,EAAU,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,YACvC,qBAAA,EAAuB;AAAA;AACzB;AACF,OACF;AACA,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,QAAA,CAAS,MAAM,CAAA,CAAE,CAAA;AAAA,MACxD;AACA,MAAA,MAAM,IAAA,GAAgB,MAAM,QAAA,CAAS,IAAA,EAAK;AAC1C,MAAA,MAAM,YAAa,IAAA,EAAwC,SAAA;AAC3D,MAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,EAAG;AAC7B,QAAA,MAAM,IAAI,MAAM,oCAAoC,CAAA;AAAA,MACtD;AAEA,MAAA,OAAO,SAAA,CAAU,MAAA;AAAA,QAAO,CAAA,GAAA,KACtB,uBAAA,CAAwB,QAAA,CAAS,GAAA,CAAI,SAAS,EAAE;AAAA,OAClD;AAAA,IACF;AAAA,GACD,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"usePredefinedScenarios.esm.js","sources":["../../src/hooks/usePredefinedScenarios.ts"],"sourcesContent":["import {\n configApiRef,\n fetchApiRef,\n githubAuthApiRef,\n identityApiRef,\n useApi,\n} from '@backstage/core-plugin-api';\nimport { useQuery } from '@tanstack/react-query';\nimport { buildNativeBackendUrls } from '../urls/backend.ts';\nimport { URLS } from '../urls/index.ts';\nimport { latestSupportedVersion } from '../utils/constants.ts';\nimport { ScenarioDTO } from '../utils/DTOs.ts';\nimport { useNativeRiScBackendFeatureFlag } from '../utils/featureFlags.ts';\nimport { useGithubRepositoryInformation } from '../utils/hooks.ts';\n\nconst PREDEFINED_SCENARIOS_TEMPLATE_ID = 'web-app-api';\nconst PREDEFINED_SCENARIOS_SOURCE_TEST_REF = 'add-scenarios';\n\nconst PREDEFINED_SCENARIO_IDS = ['xK9mP', 'mF6xQ'];\n\nconst PREDEFINED_SCENARIOS_QUERY_KEY = ['predefined-scenarios'] as const;\n\nexport function usePredefinedScenarios(\n isTestPredefinedScenariosEnabled: boolean,\n) {\n const configApi = useApi(configApiRef);\n const identityApi = useApi(identityApiRef);\n const githubApi = useApi(githubAuthApiRef);\n const { fetch } = useApi(fetchApiRef);\n const repoInformation = useGithubRepositoryInformation();\n const isNativeBackendEnabled = useNativeRiScBackendFeatureFlag();\n\n const backendUrl = configApi.getString('backend.baseUrl');\n\n const { uriToFetchInitRiScTemplate: uriToFetchInitRiScTemplateNative } =\n buildNativeBackendUrls({\n baseUrl: `${backendUrl}/api/risk-scorecard`,\n owner: repoInformation.owner,\n repo: repoInformation.name,\n version: latestSupportedVersion,\n });\n\n function uriToFetchInitRiScTemplateProxy(id: string, ref?: string) {\n const base = `${backendUrl}${URLS.backend.fetchInitRiScTemplate.replace(':id', id)}`;\n return ref ? `${base}?ref=${encodeURIComponent(ref)}` : base;\n }\n\n const uriToFetchInitRiScTemplate = isNativeBackendEnabled\n ? uriToFetchInitRiScTemplateNative\n : uriToFetchInitRiScTemplateProxy;\n\n return useQuery({\n queryKey: [\n PREDEFINED_SCENARIOS_QUERY_KEY,\n isNativeBackendEnabled ? 'native' : 'proxy',\n isTestPredefinedScenariosEnabled ? 'test' : 'main',\n ],\n retry: (count, error) => {\n if (\n error.message === 'Unexpected status 401' ||\n error.message === 'Unexpected status 403' ||\n error.message === 'Unexpected status 404' ||\n error.message === 'Unexpected status 429'\n ) {\n return false;\n }\n return count < 2;\n },\n queryFn: async ({ signal }): Promise<ScenarioDTO[]> => {\n const [identity, githubToken] = await Promise.all([\n identityApi.getCredentials(),\n githubApi.getAccessToken(['repo']),\n ]);\n\n const response = await fetch(\n uriToFetchInitRiScTemplate(\n PREDEFINED_SCENARIOS_TEMPLATE_ID,\n isTestPredefinedScenariosEnabled\n ? PREDEFINED_SCENARIOS_SOURCE_TEST_REF\n : undefined,\n ),\n {\n signal,\n headers: {\n Authorization: `Bearer ${identity.token}`,\n 'GitHub-Access-Token': githubToken,\n },\n },\n );\n if (!response.ok) {\n throw new Error(`Unexpected status ${response.status}`);\n }\n const data: unknown = await response.json();\n const scenarios = (data as { scenarios?: ScenarioDTO[] })?.scenarios;\n if (!Array.isArray(scenarios)) {\n throw new Error('Source file has no scenarios array');\n }\n\n return scenarios.filter(dto =>\n PREDEFINED_SCENARIO_IDS.includes(dto.scenario.ID),\n );\n },\n });\n}\n"],"names":[],"mappings":"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"}
@@ -16,7 +16,8 @@ const BACKEND_URLS = {
16
16
  // (1)
17
17
  publishRiSc: "/api/proxy/risc-proxy/api/risc/:repoOwner/:repoName/publish/:id",
18
18
  // (1)
19
- fetchDefaultRiScTypeDescriptors: "/api/proxy/risc-proxy/api/initrisc"
19
+ fetchDefaultRiScTypeDescriptors: "/api/proxy/risc-proxy/api/initrisc",
20
+ fetchInitRiScTemplate: "/api/proxy/risc-proxy/api/initrisc/:id"
20
21
  };
21
22
  function buildNativeBackendUrls({
22
23
  baseUrl,
@@ -1 +1 @@
1
- {"version":3,"file":"backend.esm.js","sources":["../../src/urls/backend.ts"],"sourcesContent":["// prettier-ignore\n\n// (1) Requires a method to inject tokens. Not yet implemented.\n// (2) Temporary primitive url until method (1) is implemented.\n\nexport const BACKEND_URLS = {\n\tgoogle_gcpCryptoKeys: '/api/proxy/risc-proxy/api/google/gcpCryptoKeys',\n\triScUri: '/api/proxy/risc-proxy/api/risc/:repoOwner/:repoName', // (1)\n\triScUri_temp: '/api/proxy/risc-proxy/api/risc', // (2)\n\topen_pr: '/api/proxy/risc-proxy/api/sops/:repoOwner/:repoName/openPullRequest/:branch', // (1)\n\tfetchAllRiScs: '/api/proxy/risc-proxy/api/risc/:repoOwner/:repoName/:version/all', // (1)\n\tfetchDifference: '/api/proxy/risc-proxy/api/risc/:repoOwner/:repoName/:id/difference', // (1)\n\tfetchRiSc: '/api/proxy/risc-proxy/api/risc/:repoOwner/:repoName/:id', // (1)\n deleteRiSc: 'api/proxy/risc-proxy/api/risc/:repoOwner/:repoName/:id', // (1)\n\tpublishRiSc: '/api/proxy/risc-proxy/api/risc/:repoOwner/:repoName/publish/:id', // (1)\n fetchDefaultRiScTypeDescriptors: '/api/proxy/risc-proxy/api/initrisc'\n};\n\nexport type RiScBackendUrls = {\n riScUri: string;\n uriToFetchAllRiScs: string;\n uriToFetchDifference: (id: string) => string;\n uriToFetchRiSc: (id: string) => string;\n uriToDeleteRiSc: (id: string) => string;\n uriToPublishRiSc: (id: string) => string;\n uriToFetchGcpCryptoKeys: string;\n uriToFetchDefaultRiScDescriptors: string;\n uriToFetchInitRiScTemplate: (id: string, ref?: string) => string;\n};\n\ntype BuildRiScBackendUrlsOptions = {\n baseUrl: string;\n owner: string;\n repo: string;\n version: string;\n};\n\n/** Native mode routes directly to the ros backend plugin. */\nexport function buildNativeBackendUrls({\n baseUrl,\n owner,\n repo,\n version,\n}: BuildRiScBackendUrlsOptions): RiScBackendUrls {\n const riScUri = `${baseUrl}/risc/${owner}/${repo}`;\n\n return {\n riScUri,\n uriToFetchAllRiScs: `${riScUri}/${version}/all`,\n uriToFetchDifference: (id: string) => `${riScUri}/${id}/difference`,\n uriToFetchRiSc: (id: string) => `${riScUri}/${id}`,\n uriToDeleteRiSc: (id: string) => `${riScUri}/${id}`,\n uriToPublishRiSc: (id: string) => `${riScUri}/publish/${id}`,\n uriToFetchGcpCryptoKeys: `${baseUrl}/google/gcpCryptoKeys`,\n uriToFetchDefaultRiScDescriptors: `${baseUrl}/initrisc`,\n uriToFetchInitRiScTemplate: (id: string, ref?: string) =>\n `${baseUrl}/initrisc/${id}${ref ? `?ref=${encodeURIComponent(ref)}` : ''}`,\n };\n}\n"],"names":[],"mappings":"AAKO,MAAM,YAAA,GAAe;AAAA,EAC3B,oBAAA,EAAsB,gDAAA;AAAA,EACtB,OAAA,EAAS,qDAAA;AAAA;AAAA,EACT,YAAA,EAAc,gCAAA;AAAA;AAAA,EACd,OAAA,EAAS,6EAAA;AAAA;AAAA,EACT,aAAA,EAAe,kEAAA;AAAA;AAAA,EACf,eAAA,EAAiB,oEAAA;AAAA;AAAA,EACjB,SAAA,EAAW,yDAAA;AAAA;AAAA,EACV,UAAA,EAAY,wDAAA;AAAA;AAAA,EACb,WAAA,EAAa,iEAAA;AAAA;AAAA,EACZ,+BAAA,EAAiC;AACnC;AAsBO,SAAS,sBAAA,CAAuB;AAAA,EACrC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAAiD;AAC/C,EAAA,MAAM,UAAU,CAAA,EAAG,OAAO,CAAA,MAAA,EAAS,KAAK,IAAI,IAAI,CAAA,CAAA;AAEhD,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,kBAAA,EAAoB,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,IAAA,CAAA;AAAA,IACzC,sBAAsB,CAAC,EAAA,KAAe,CAAA,EAAG,OAAO,IAAI,EAAE,CAAA,WAAA,CAAA;AAAA,IACtD,gBAAgB,CAAC,EAAA,KAAe,CAAA,EAAG,OAAO,IAAI,EAAE,CAAA,CAAA;AAAA,IAChD,iBAAiB,CAAC,EAAA,KAAe,CAAA,EAAG,OAAO,IAAI,EAAE,CAAA,CAAA;AAAA,IACjD,kBAAkB,CAAC,EAAA,KAAe,CAAA,EAAG,OAAO,YAAY,EAAE,CAAA,CAAA;AAAA,IAC1D,uBAAA,EAAyB,GAAG,OAAO,CAAA,qBAAA,CAAA;AAAA,IACnC,gCAAA,EAAkC,GAAG,OAAO,CAAA,SAAA,CAAA;AAAA,IAC5C,0BAAA,EAA4B,CAAC,EAAA,EAAY,GAAA,KACvC,GAAG,OAAO,CAAA,UAAA,EAAa,EAAE,CAAA,EAAG,MAAM,CAAA,KAAA,EAAQ,kBAAA,CAAmB,GAAG,CAAC,KAAK,EAAE,CAAA;AAAA,GAC5E;AACF;;;;"}
1
+ {"version":3,"file":"backend.esm.js","sources":["../../src/urls/backend.ts"],"sourcesContent":["// prettier-ignore\n\n// (1) Requires a method to inject tokens. Not yet implemented.\n// (2) Temporary primitive url until method (1) is implemented.\n\nexport const BACKEND_URLS = {\n\tgoogle_gcpCryptoKeys: '/api/proxy/risc-proxy/api/google/gcpCryptoKeys',\n\triScUri: '/api/proxy/risc-proxy/api/risc/:repoOwner/:repoName', // (1)\n\triScUri_temp: '/api/proxy/risc-proxy/api/risc', // (2)\n\topen_pr: '/api/proxy/risc-proxy/api/sops/:repoOwner/:repoName/openPullRequest/:branch', // (1)\n\tfetchAllRiScs: '/api/proxy/risc-proxy/api/risc/:repoOwner/:repoName/:version/all', // (1)\n\tfetchDifference: '/api/proxy/risc-proxy/api/risc/:repoOwner/:repoName/:id/difference', // (1)\n\tfetchRiSc: '/api/proxy/risc-proxy/api/risc/:repoOwner/:repoName/:id', // (1)\n deleteRiSc: 'api/proxy/risc-proxy/api/risc/:repoOwner/:repoName/:id', // (1)\n\tpublishRiSc: '/api/proxy/risc-proxy/api/risc/:repoOwner/:repoName/publish/:id', // (1)\n fetchDefaultRiScTypeDescriptors: '/api/proxy/risc-proxy/api/initrisc',\n fetchInitRiScTemplate: '/api/proxy/risc-proxy/api/initrisc/:id',\n};\n\nexport type RiScBackendUrls = {\n riScUri: string;\n uriToFetchAllRiScs: string;\n uriToFetchDifference: (id: string) => string;\n uriToFetchRiSc: (id: string) => string;\n uriToDeleteRiSc: (id: string) => string;\n uriToPublishRiSc: (id: string) => string;\n uriToFetchGcpCryptoKeys: string;\n uriToFetchDefaultRiScDescriptors: string;\n uriToFetchInitRiScTemplate: (id: string, ref?: string) => string;\n};\n\ntype BuildRiScBackendUrlsOptions = {\n baseUrl: string;\n owner: string;\n repo: string;\n version: string;\n};\n\n/** Native mode routes directly to the ros backend plugin. */\nexport function buildNativeBackendUrls({\n baseUrl,\n owner,\n repo,\n version,\n}: BuildRiScBackendUrlsOptions): RiScBackendUrls {\n const riScUri = `${baseUrl}/risc/${owner}/${repo}`;\n\n return {\n riScUri,\n uriToFetchAllRiScs: `${riScUri}/${version}/all`,\n uriToFetchDifference: (id: string) => `${riScUri}/${id}/difference`,\n uriToFetchRiSc: (id: string) => `${riScUri}/${id}`,\n uriToDeleteRiSc: (id: string) => `${riScUri}/${id}`,\n uriToPublishRiSc: (id: string) => `${riScUri}/publish/${id}`,\n uriToFetchGcpCryptoKeys: `${baseUrl}/google/gcpCryptoKeys`,\n uriToFetchDefaultRiScDescriptors: `${baseUrl}/initrisc`,\n uriToFetchInitRiScTemplate: (id: string, ref?: string) =>\n `${baseUrl}/initrisc/${id}${ref ? `?ref=${encodeURIComponent(ref)}` : ''}`,\n };\n}\n"],"names":[],"mappings":"AAKO,MAAM,YAAA,GAAe;AAAA,EAC3B,oBAAA,EAAsB,gDAAA;AAAA,EACtB,OAAA,EAAS,qDAAA;AAAA;AAAA,EACT,YAAA,EAAc,gCAAA;AAAA;AAAA,EACd,OAAA,EAAS,6EAAA;AAAA;AAAA,EACT,aAAA,EAAe,kEAAA;AAAA;AAAA,EACf,eAAA,EAAiB,oEAAA;AAAA;AAAA,EACjB,SAAA,EAAW,yDAAA;AAAA;AAAA,EACV,UAAA,EAAY,wDAAA;AAAA;AAAA,EACb,WAAA,EAAa,iEAAA;AAAA;AAAA,EACZ,+BAAA,EAAiC,oCAAA;AAAA,EACjC,qBAAA,EAAuB;AACzB;AAsBO,SAAS,sBAAA,CAAuB;AAAA,EACrC,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAAiD;AAC/C,EAAA,MAAM,UAAU,CAAA,EAAG,OAAO,CAAA,MAAA,EAAS,KAAK,IAAI,IAAI,CAAA,CAAA;AAEhD,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,kBAAA,EAAoB,CAAA,EAAG,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,IAAA,CAAA;AAAA,IACzC,sBAAsB,CAAC,EAAA,KAAe,CAAA,EAAG,OAAO,IAAI,EAAE,CAAA,WAAA,CAAA;AAAA,IACtD,gBAAgB,CAAC,EAAA,KAAe,CAAA,EAAG,OAAO,IAAI,EAAE,CAAA,CAAA;AAAA,IAChD,iBAAiB,CAAC,EAAA,KAAe,CAAA,EAAG,OAAO,IAAI,EAAE,CAAA,CAAA;AAAA,IACjD,kBAAkB,CAAC,EAAA,KAAe,CAAA,EAAG,OAAO,YAAY,EAAE,CAAA,CAAA;AAAA,IAC1D,uBAAA,EAAyB,GAAG,OAAO,CAAA,qBAAA,CAAA;AAAA,IACnC,gCAAA,EAAkC,GAAG,OAAO,CAAA,SAAA,CAAA;AAAA,IAC5C,0BAAA,EAA4B,CAAC,EAAA,EAAY,GAAA,KACvC,GAAG,OAAO,CAAA,UAAA,EAAa,EAAE,CAAA,EAAG,MAAM,CAAA,KAAA,EAAQ,kBAAA,CAAmB,GAAG,CAAC,KAAK,EAAE,CAAA;AAAA,GAC5E;AACF;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kartverket/backstage-plugin-risk-scorecard",
3
- "version": "8.1.5",
3
+ "version": "8.3.0",
4
4
  "main": "dist/index.esm.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "MIT",