@backstage-community/plugin-tekton 3.32.0 → 3.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/alpha.d.ts +51 -0
  3. package/dist/alpha.esm.js +19 -0
  4. package/dist/alpha.esm.js.map +1 -0
  5. package/dist/components/Charts/PipelineBars.esm.js +1 -1
  6. package/dist/components/Charts/PipelineBars.esm.js.map +1 -1
  7. package/dist/components/PipelineRunList/PipelineRunList.esm.js +1 -1
  8. package/dist/components/PipelineRunList/PipelineRunList.esm.js.map +1 -1
  9. package/dist/components/PipelineRunList/PipelineRunOutput.esm.js.map +1 -1
  10. package/dist/components/PipelineRunList/PipelineRunRow.esm.js.map +1 -1
  11. package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js +1 -1
  12. package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js.map +1 -1
  13. package/dist/components/PipelineRunList/PipelineRunSBOMLink.esm.js.map +1 -1
  14. package/dist/components/PipelineRunList/PipelineRunTableBody.esm.js.map +1 -1
  15. package/dist/components/PipelineRunList/PipelineRunTaskStatus.esm.js.map +1 -1
  16. package/dist/components/PipelineRunList/PipelineRunVulnerabilities.esm.js.map +1 -1
  17. package/dist/components/PipelineRunList/PlrStatus.esm.js +1 -1
  18. package/dist/components/PipelineRunList/PlrStatus.esm.js.map +1 -1
  19. package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js.map +1 -1
  20. package/dist/components/PipelineRunLogs/PipelineRunLogDownloader.esm.js.map +1 -1
  21. package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js +1 -1
  22. package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js.map +1 -1
  23. package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js +1 -1
  24. package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js.map +1 -1
  25. package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js.map +1 -1
  26. package/dist/components/PipelineRunParamsAndResults/PipelineRunParams.esm.js.map +1 -1
  27. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResults.esm.js.map +1 -1
  28. package/dist/components/PipelineRunParamsAndResults/PipelineRunParamsAndResultsDialog.esm.js.map +1 -1
  29. package/dist/components/PipelineRunParamsAndResults/PipelineRunResults.esm.js.map +1 -1
  30. package/dist/components/common/StatusSelector.esm.js +1 -1
  31. package/dist/components/common/StatusSelector.esm.js.map +1 -1
  32. package/dist/components/pipeline-topology/PipelineTaskNode.esm.js.map +1 -1
  33. package/dist/components/pipeline-topology/PipelineVisualization.esm.js.map +1 -1
  34. package/dist/hooks/TektonResourcesContext.esm.js +1 -1
  35. package/dist/hooks/TektonResourcesContext.esm.js.map +1 -1
  36. package/dist/hooks/usePipelineRunScanResults.esm.js.map +1 -1
  37. package/dist/hooks/useTektonObjectsResponse.esm.js.map +1 -1
  38. package/dist/index.d.ts +3 -3
  39. package/dist/types/types.esm.js.map +1 -1
  40. package/dist/utils/pipeline-step-utils.esm.js +1 -1
  41. package/dist/utils/pipeline-step-utils.esm.js.map +1 -1
  42. package/dist/utils/pipeline-topology-utils.esm.js +1 -1
  43. package/dist/utils/pipeline-topology-utils.esm.js.map +1 -1
  44. package/dist/utils/pipelineRun-utils.esm.js +1 -1
  45. package/dist/utils/pipelineRun-utils.esm.js.map +1 -1
  46. package/dist/utils/taskRun-utils.esm.js +1 -1
  47. package/dist/utils/taskRun-utils.esm.js.map +1 -1
  48. package/dist/utils/tekton-utils.esm.js +1 -1
  49. package/dist/utils/tekton-utils.esm.js.map +1 -1
  50. package/package.json +38 -20
@@ -1,5 +1,5 @@
1
1
  import { isEmpty, get, find, cloneDeep, isFinite, each, trim } from 'lodash';
2
- import { ComputedStatus, SucceedConditionReason, pipelineRunStatus, pipelineRunFilterReducer } from '@janus-idp/shared-react';
2
+ import { ComputedStatus, SucceedConditionReason, pipelineRunStatus, pipelineRunFilterReducer } from '@backstage-community/plugin-tekton-react';
3
3
  import { TEKTON_PIPELINE_RUN, TEKTON_PIPELINE_TASK } from '../consts/tekton-const.esm.js';
4
4
 
5
5
  const s = 1e3;
@@ -1 +1 @@
1
- {"version":3,"file":"pipelineRun-utils.esm.js","sources":["../../src/utils/pipelineRun-utils.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { cloneDeep, each, find, get, isEmpty, isFinite, trim } from 'lodash';\n\nimport {\n ComputedStatus,\n pipelineRunFilterReducer,\n PipelineRunKind,\n pipelineRunStatus,\n PipelineTask,\n PipelineTaskWithStatus,\n PLRTaskRuns,\n SucceedConditionReason,\n TaskRunKind,\n} from '@janus-idp/shared-react';\n\nimport {\n TEKTON_PIPELINE_RUN,\n TEKTON_PIPELINE_TASK,\n} from '../consts/tekton-const';\nimport { TaskStatus } from '../types/taskRun';\n\n// Conversions between units and milliseconds\nconst s = 1000;\nconst m = s * 60;\nconst h = m * 60;\nconst d = h * 24;\nconst w = d * 7;\nconst units = { w, d, h, m, s };\n\nexport const formatPrometheusDuration = (ms: number) => {\n if (!isFinite(ms) || ms < 0) {\n return '';\n }\n let remaining = ms;\n let str = '';\n each(units, (factor, unit) => {\n const n = Math.floor(remaining / factor);\n if (n > 0) {\n str += `${n}${unit} `;\n remaining -= n * factor;\n }\n });\n return trim(str);\n};\n\nexport const taskConditions = {\n hasFromDependency: (task: PipelineTask): boolean =>\n !!task?.resources?.inputs?.[0].from,\n hasRunAfterDependency: (task: PipelineTask): boolean =>\n !!task?.runAfter && task?.runAfter?.length > 0,\n};\n\nexport const getPipelineRun = (\n runs: PipelineRunKind[],\n name: string,\n): PipelineRunKind | null => {\n if (runs?.length > 0 && name) {\n return runs.find(run => run?.metadata?.name === name) ?? null;\n }\n return null;\n};\n\nconst getStatusReason = (reason: string | undefined) => {\n switch (reason) {\n case SucceedConditionReason.PipelineRunCancelled:\n return ComputedStatus.Cancelled;\n case SucceedConditionReason.PipelineRunPending:\n return ComputedStatus.Idle;\n default:\n return ComputedStatus.Failed;\n }\n};\n\nconst appendTaskDuration = (mTask: PipelineTaskWithStatus) => {\n const task = cloneDeep(mTask);\n if (mTask?.status?.completionTime && mTask?.status?.startTime) {\n const date =\n new Date(mTask.status.completionTime).getTime() -\n new Date(mTask.status.startTime).getTime();\n task.status = {\n ...mTask.status,\n duration: formatPrometheusDuration(date),\n };\n }\n return task;\n};\n\nconst appendTaskStatus = (mTask: PipelineTaskWithStatus) => {\n let task = cloneDeep(mTask);\n if (!mTask.status) {\n task = {\n ...mTask,\n status: { reason: ComputedStatus.Pending, conditions: [] },\n };\n } else if (mTask.status?.conditions) {\n task.status.reason = pipelineRunStatus(mTask) || ComputedStatus.Pending;\n } else if (mTask.status && !mTask.status.reason) {\n task.status.reason = ComputedStatus.Pending;\n }\n return task;\n};\n\nexport const appendPipelineRunStatus = (\n pipelineRun: PipelineRunKind,\n taskRuns: PLRTaskRuns,\n isFinallyTasks = false,\n) => {\n const tasks =\n (isFinallyTasks\n ? pipelineRun.status?.pipelineSpec?.finally\n : pipelineRun.status?.pipelineSpec?.tasks) || [];\n\n return tasks?.map(task => {\n if (!pipelineRun.status) {\n return task as PipelineTaskWithStatus;\n }\n if (isEmpty(taskRuns)) {\n return {\n ...task,\n status: {\n reason: getStatusReason(pipelineRun?.status?.conditions?.[0].reason),\n },\n } as PipelineTaskWithStatus;\n }\n let mTask = {\n ...task,\n status: get(find(taskRuns, { pipelineTaskName: task.name }), 'status'),\n } as PipelineTaskWithStatus;\n // append task duration\n mTask = appendTaskDuration(mTask);\n // append task status\n mTask = appendTaskStatus(mTask);\n return mTask;\n });\n};\n\nexport const getPLRTaskRuns = (\n taskRuns: TaskRunKind[],\n pipelineRun: string | undefined,\n): PLRTaskRuns => {\n const filteredTaskRuns = taskRuns.filter(\n tr => tr?.metadata?.labels?.[TEKTON_PIPELINE_RUN] === pipelineRun,\n );\n return filteredTaskRuns.reduce((acc: any, taskRun: TaskRunKind) => {\n const temp = {\n [`${taskRun?.metadata?.name}`]: {\n pipelineTaskName: taskRun?.metadata?.labels?.[TEKTON_PIPELINE_TASK],\n status: taskRun?.status,\n },\n };\n // eslint-disable-next-line no-param-reassign\n acc = { ...acc, ...temp };\n return acc;\n }, {});\n};\n\nexport const getTaskStatus = (\n pipelineRun: PipelineRunKind,\n task: PipelineTaskWithStatus,\n) => {\n let taskStatus: TaskStatus = {\n reason: ComputedStatus.Idle,\n };\n\n const computedStatus = pipelineRunFilterReducer(pipelineRun);\n const isSkipped = !!(\n task &&\n pipelineRun?.status?.skippedTasks?.some(\n (t: { name: string }) => t.name === task.name,\n )\n );\n\n if (task?.status) {\n taskStatus = task.status as TaskStatus;\n }\n if (\n computedStatus === ComputedStatus.Failed ||\n computedStatus === ComputedStatus.Cancelled\n ) {\n if (\n task?.status?.reason === ComputedStatus.Idle ||\n task?.status?.reason === ComputedStatus.Pending\n ) {\n taskStatus.reason = ComputedStatus.Cancelled;\n }\n }\n if (isSkipped) {\n taskStatus.reason = ComputedStatus.Skipped;\n }\n return taskStatus;\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipelineRun-utils.esm.js","sources":["../../src/utils/pipelineRun-utils.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { cloneDeep, each, find, get, isEmpty, isFinite, trim } from 'lodash';\n\nimport {\n ComputedStatus,\n pipelineRunFilterReducer,\n PipelineRunKind,\n pipelineRunStatus,\n PipelineTask,\n PipelineTaskWithStatus,\n PLRTaskRuns,\n SucceedConditionReason,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport {\n TEKTON_PIPELINE_RUN,\n TEKTON_PIPELINE_TASK,\n} from '../consts/tekton-const';\nimport { TaskStatus } from '../types/taskRun';\n\n// Conversions between units and milliseconds\nconst s = 1000;\nconst m = s * 60;\nconst h = m * 60;\nconst d = h * 24;\nconst w = d * 7;\nconst units = { w, d, h, m, s };\n\nexport const formatPrometheusDuration = (ms: number) => {\n if (!isFinite(ms) || ms < 0) {\n return '';\n }\n let remaining = ms;\n let str = '';\n each(units, (factor, unit) => {\n const n = Math.floor(remaining / factor);\n if (n > 0) {\n str += `${n}${unit} `;\n remaining -= n * factor;\n }\n });\n return trim(str);\n};\n\nexport const taskConditions = {\n hasFromDependency: (task: PipelineTask): boolean =>\n !!task?.resources?.inputs?.[0].from,\n hasRunAfterDependency: (task: PipelineTask): boolean =>\n !!task?.runAfter && task?.runAfter?.length > 0,\n};\n\nexport const getPipelineRun = (\n runs: PipelineRunKind[],\n name: string,\n): PipelineRunKind | null => {\n if (runs?.length > 0 && name) {\n return runs.find(run => run?.metadata?.name === name) ?? null;\n }\n return null;\n};\n\nconst getStatusReason = (reason: string | undefined) => {\n switch (reason) {\n case SucceedConditionReason.PipelineRunCancelled:\n return ComputedStatus.Cancelled;\n case SucceedConditionReason.PipelineRunPending:\n return ComputedStatus.Idle;\n default:\n return ComputedStatus.Failed;\n }\n};\n\nconst appendTaskDuration = (mTask: PipelineTaskWithStatus) => {\n const task = cloneDeep(mTask);\n if (mTask?.status?.completionTime && mTask?.status?.startTime) {\n const date =\n new Date(mTask.status.completionTime).getTime() -\n new Date(mTask.status.startTime).getTime();\n task.status = {\n ...mTask.status,\n duration: formatPrometheusDuration(date),\n };\n }\n return task;\n};\n\nconst appendTaskStatus = (mTask: PipelineTaskWithStatus) => {\n let task = cloneDeep(mTask);\n if (!mTask.status) {\n task = {\n ...mTask,\n status: { reason: ComputedStatus.Pending, conditions: [] },\n };\n } else if (mTask.status?.conditions) {\n task.status.reason = pipelineRunStatus(mTask) || ComputedStatus.Pending;\n } else if (mTask.status && !mTask.status.reason) {\n task.status.reason = ComputedStatus.Pending;\n }\n return task;\n};\n\nexport const appendPipelineRunStatus = (\n pipelineRun: PipelineRunKind,\n taskRuns: PLRTaskRuns,\n isFinallyTasks = false,\n) => {\n const tasks =\n (isFinallyTasks\n ? pipelineRun.status?.pipelineSpec?.finally\n : pipelineRun.status?.pipelineSpec?.tasks) || [];\n\n return tasks?.map(task => {\n if (!pipelineRun.status) {\n return task as PipelineTaskWithStatus;\n }\n if (isEmpty(taskRuns)) {\n return {\n ...task,\n status: {\n reason: getStatusReason(pipelineRun?.status?.conditions?.[0].reason),\n },\n } as PipelineTaskWithStatus;\n }\n let mTask = {\n ...task,\n status: get(find(taskRuns, { pipelineTaskName: task.name }), 'status'),\n } as PipelineTaskWithStatus;\n // append task duration\n mTask = appendTaskDuration(mTask);\n // append task status\n mTask = appendTaskStatus(mTask);\n return mTask;\n });\n};\n\nexport const getPLRTaskRuns = (\n taskRuns: TaskRunKind[],\n pipelineRun: string | undefined,\n): PLRTaskRuns => {\n const filteredTaskRuns = taskRuns.filter(\n tr => tr?.metadata?.labels?.[TEKTON_PIPELINE_RUN] === pipelineRun,\n );\n return filteredTaskRuns.reduce((acc: any, taskRun: TaskRunKind) => {\n const temp = {\n [`${taskRun?.metadata?.name}`]: {\n pipelineTaskName: taskRun?.metadata?.labels?.[TEKTON_PIPELINE_TASK],\n status: taskRun?.status,\n },\n };\n // eslint-disable-next-line no-param-reassign\n acc = { ...acc, ...temp };\n return acc;\n }, {});\n};\n\nexport const getTaskStatus = (\n pipelineRun: PipelineRunKind,\n task: PipelineTaskWithStatus,\n) => {\n let taskStatus: TaskStatus = {\n reason: ComputedStatus.Idle,\n };\n\n const computedStatus = pipelineRunFilterReducer(pipelineRun);\n const isSkipped = !!(\n task &&\n pipelineRun?.status?.skippedTasks?.some(\n (t: { name: string }) => t.name === task.name,\n )\n );\n\n if (task?.status) {\n taskStatus = task.status as TaskStatus;\n }\n if (\n computedStatus === ComputedStatus.Failed ||\n computedStatus === ComputedStatus.Cancelled\n ) {\n if (\n task?.status?.reason === ComputedStatus.Idle ||\n task?.status?.reason === ComputedStatus.Pending\n ) {\n taskStatus.reason = ComputedStatus.Cancelled;\n }\n }\n if (isSkipped) {\n taskStatus.reason = ComputedStatus.Skipped;\n }\n return taskStatus;\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { TaskRunResultsAnnotations, TaskRunResultsTypeValue, TaskRunResultsKeyValue } from '@aonic-ui/pipelines';
2
- import { pipelineRunFilterReducer } from '@janus-idp/shared-react';
2
+ import { pipelineRunFilterReducer } from '@backstage-community/plugin-tekton-react';
3
3
  import { TEKTON_PIPELINE_RUN, TEKTON_PIPELINE_TASK } from '../consts/tekton-const.esm.js';
4
4
 
5
5
  const getSortedTaskRuns = (tRuns) => {
@@ -1 +1 @@
1
- {"version":3,"file":"taskRun-utils.esm.js","sources":["../../src/utils/taskRun-utils.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n TaskRunResultsAnnotations,\n TaskRunResultsKeyValue,\n TaskRunResultsTypeValue,\n} from '@aonic-ui/pipelines';\n\nimport {\n ComputedStatus,\n pipelineRunFilterReducer,\n TaskRunKind,\n} from '@janus-idp/shared-react';\n\nimport {\n TEKTON_PIPELINE_RUN,\n TEKTON_PIPELINE_TASK,\n} from '../consts/tekton-const';\nimport { OutputTaskRunGroup } from '../types/output';\n\nexport type TaskStep = {\n id: string;\n name: string;\n status: ComputedStatus;\n startedAt?: string;\n endedAt?: string;\n};\n\nexport const getSortedTaskRuns = (tRuns: TaskRunKind[]): TaskStep[] => {\n if (!tRuns || tRuns.length === 0) {\n return [];\n }\n const taskRuns = Array.from(tRuns).sort((a, b) => {\n if (a.status?.completionTime) {\n return b.status?.completionTime &&\n new Date(a.status?.completionTime ?? '') >\n new Date(b.status.completionTime)\n ? 1\n : -1;\n }\n return b.status?.completionTime ||\n new Date(a.status?.startTime ?? '') > new Date(b.status?.startTime ?? '')\n ? 1\n : -1;\n });\n return (taskRuns?.map(tr => {\n return {\n id: tr.metadata?.name,\n name: tr.metadata?.labels?.[TEKTON_PIPELINE_TASK],\n status: pipelineRunFilterReducer(tr),\n startedAt: tr.status?.startTime,\n endedAt: tr.status?.completionTime,\n };\n }) || []) as TaskStep[];\n};\n\nexport const getActiveTaskRun = (\n taskRuns: TaskStep[],\n activeTask: string | undefined,\n): string | undefined =>\n activeTask\n ? taskRuns.find(taskRun => taskRun?.id === activeTask)?.id\n : taskRuns[taskRuns.length - 1]?.id;\n\nconst checkTypeAnnotation = (\n tr: TaskRunKind | undefined,\n type: TaskRunResultsTypeValue,\n): boolean =>\n tr?.metadata?.annotations?.[TaskRunResultsAnnotations.TYPE] === type;\n\nexport const isSbomTaskRun = (tr: TaskRunKind | undefined): boolean =>\n tr?.metadata?.annotations?.[TaskRunResultsAnnotations.KEY] ===\n TaskRunResultsKeyValue.SBOM;\n\nexport const isECTaskRun = (tr: TaskRunKind | undefined): boolean =>\n checkTypeAnnotation(tr, TaskRunResultsTypeValue.EC);\n\nexport const isACSImageScanTaskRun = (tr: TaskRunKind | undefined): boolean =>\n checkTypeAnnotation(tr, TaskRunResultsTypeValue.ROXCTL_IMAGE_SCAN);\n\nexport const isACSImageCheckTaskRun = (tr: TaskRunKind | undefined): boolean =>\n checkTypeAnnotation(tr, TaskRunResultsTypeValue.ROXCTL_IMAGE_CHECK);\n\nexport const isACSDeploymentCheckTaskRun = (\n tr: TaskRunKind | undefined,\n): boolean =>\n checkTypeAnnotation(tr, TaskRunResultsTypeValue.ROXCTL_DEPLOYMENT_CHECK);\n\nexport const getTaskrunsOutputGroup = (\n pipelineRunName: string | undefined,\n taskruns: TaskRunKind[],\n): OutputTaskRunGroup => {\n const getPLRTaskRunByType = (\n check: (tr: TaskRunKind | undefined) => boolean,\n ): TaskRunKind | undefined =>\n taskruns?.find(\n (tr: TaskRunKind) =>\n tr?.metadata?.labels?.[TEKTON_PIPELINE_RUN] === pipelineRunName &&\n check(tr),\n );\n\n return {\n sbomTaskRun: getPLRTaskRunByType(isSbomTaskRun),\n ecTaskRun: getPLRTaskRunByType(isECTaskRun),\n acsImageScanTaskRun: getPLRTaskRunByType(isACSImageScanTaskRun),\n acsImageCheckTaskRun: getPLRTaskRunByType(isACSImageCheckTaskRun),\n acsDeploymentCheckTaskRun: getPLRTaskRunByType(isACSDeploymentCheckTaskRun),\n };\n};\n\nexport const hasExternalLink = (\n sbomTaskRun: TaskRunKind | undefined,\n): boolean =>\n sbomTaskRun?.metadata?.annotations?.[TaskRunResultsAnnotations.TYPE] ===\n TaskRunResultsTypeValue.EXTERNAL_LINK;\n\nexport const getSbomLink = (\n sbomTaskRun: TaskRunKind | undefined,\n): string | undefined =>\n (sbomTaskRun?.status?.results || sbomTaskRun?.status?.taskResults)?.find(\n r => r.name === TaskRunResultsKeyValue.SBOM,\n )?.value;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taskRun-utils.esm.js","sources":["../../src/utils/taskRun-utils.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n TaskRunResultsAnnotations,\n TaskRunResultsKeyValue,\n TaskRunResultsTypeValue,\n} from '@aonic-ui/pipelines';\n\nimport {\n ComputedStatus,\n pipelineRunFilterReducer,\n TaskRunKind,\n} from '@backstage-community/plugin-tekton-react';\n\nimport {\n TEKTON_PIPELINE_RUN,\n TEKTON_PIPELINE_TASK,\n} from '../consts/tekton-const';\nimport { OutputTaskRunGroup } from '../types/output';\n\nexport type TaskStep = {\n id: string;\n name: string;\n status: ComputedStatus;\n startedAt?: string;\n endedAt?: string;\n};\n\nexport const getSortedTaskRuns = (tRuns: TaskRunKind[]): TaskStep[] => {\n if (!tRuns || tRuns.length === 0) {\n return [];\n }\n const taskRuns = Array.from(tRuns).sort((a, b) => {\n if (a.status?.completionTime) {\n return b.status?.completionTime &&\n new Date(a.status?.completionTime ?? '') >\n new Date(b.status.completionTime)\n ? 1\n : -1;\n }\n return b.status?.completionTime ||\n new Date(a.status?.startTime ?? '') > new Date(b.status?.startTime ?? '')\n ? 1\n : -1;\n });\n return (taskRuns?.map(tr => {\n return {\n id: tr.metadata?.name,\n name: tr.metadata?.labels?.[TEKTON_PIPELINE_TASK],\n status: pipelineRunFilterReducer(tr),\n startedAt: tr.status?.startTime,\n endedAt: tr.status?.completionTime,\n };\n }) || []) as TaskStep[];\n};\n\nexport const getActiveTaskRun = (\n taskRuns: TaskStep[],\n activeTask: string | undefined,\n): string | undefined =>\n activeTask\n ? taskRuns.find(taskRun => taskRun?.id === activeTask)?.id\n : taskRuns[taskRuns.length - 1]?.id;\n\nconst checkTypeAnnotation = (\n tr: TaskRunKind | undefined,\n type: TaskRunResultsTypeValue,\n): boolean =>\n tr?.metadata?.annotations?.[TaskRunResultsAnnotations.TYPE] === type;\n\nexport const isSbomTaskRun = (tr: TaskRunKind | undefined): boolean =>\n tr?.metadata?.annotations?.[TaskRunResultsAnnotations.KEY] ===\n TaskRunResultsKeyValue.SBOM;\n\nexport const isECTaskRun = (tr: TaskRunKind | undefined): boolean =>\n checkTypeAnnotation(tr, TaskRunResultsTypeValue.EC);\n\nexport const isACSImageScanTaskRun = (tr: TaskRunKind | undefined): boolean =>\n checkTypeAnnotation(tr, TaskRunResultsTypeValue.ROXCTL_IMAGE_SCAN);\n\nexport const isACSImageCheckTaskRun = (tr: TaskRunKind | undefined): boolean =>\n checkTypeAnnotation(tr, TaskRunResultsTypeValue.ROXCTL_IMAGE_CHECK);\n\nexport const isACSDeploymentCheckTaskRun = (\n tr: TaskRunKind | undefined,\n): boolean =>\n checkTypeAnnotation(tr, TaskRunResultsTypeValue.ROXCTL_DEPLOYMENT_CHECK);\n\nexport const getTaskrunsOutputGroup = (\n pipelineRunName: string | undefined,\n taskruns: TaskRunKind[],\n): OutputTaskRunGroup => {\n const getPLRTaskRunByType = (\n check: (tr: TaskRunKind | undefined) => boolean,\n ): TaskRunKind | undefined =>\n taskruns?.find(\n (tr: TaskRunKind) =>\n tr?.metadata?.labels?.[TEKTON_PIPELINE_RUN] === pipelineRunName &&\n check(tr),\n );\n\n return {\n sbomTaskRun: getPLRTaskRunByType(isSbomTaskRun),\n ecTaskRun: getPLRTaskRunByType(isECTaskRun),\n acsImageScanTaskRun: getPLRTaskRunByType(isACSImageScanTaskRun),\n acsImageCheckTaskRun: getPLRTaskRunByType(isACSImageCheckTaskRun),\n acsDeploymentCheckTaskRun: getPLRTaskRunByType(isACSDeploymentCheckTaskRun),\n };\n};\n\nexport const hasExternalLink = (\n sbomTaskRun: TaskRunKind | undefined,\n): boolean =>\n sbomTaskRun?.metadata?.annotations?.[TaskRunResultsAnnotations.TYPE] ===\n TaskRunResultsTypeValue.EXTERNAL_LINK;\n\nexport const getSbomLink = (\n sbomTaskRun: TaskRunKind | undefined,\n): string | undefined =>\n (sbomTaskRun?.status?.results || sbomTaskRun?.status?.taskResults)?.find(\n r => r.name === TaskRunResultsKeyValue.SBOM,\n )?.value;\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { get } from 'lodash';
2
- import { pipelineRunStatus, getTaskRunsForPipelineRun, updateTaskStatus, ComputedStatus, pipelineRunFilterReducer, SucceedConditionReason } from '@janus-idp/shared-react';
2
+ import { pipelineRunStatus, getTaskRunsForPipelineRun, updateTaskStatus, ComputedStatus, pipelineRunFilterReducer, SucceedConditionReason } from '@backstage-community/plugin-tekton-react';
3
3
  import { getPipelineRunScanResults } from '../hooks/usePipelineRunScanResults.esm.js';
4
4
  import { PipelineRunGVK, TaskRunGVK } from '../models.esm.js';
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"tekton-utils.esm.js","sources":["../../src/utils/tekton-utils.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ClusterObjects,\n ObjectsByEntityResponse,\n} from '@backstage/plugin-kubernetes-common';\n\nimport { get } from 'lodash';\n\nimport {\n ComputedStatus,\n getTaskRunsForPipelineRun,\n pipelineRunFilterReducer,\n PipelineRunKind,\n pipelineRunStatus,\n SucceedConditionReason,\n TaskRunKind,\n TaskStatusTypes,\n updateTaskStatus,\n} from '@janus-idp/shared-react';\n\nimport { getPipelineRunScanResults } from '../hooks/usePipelineRunScanResults';\nimport { PipelineRunGVK, TaskRunGVK } from '../models';\nimport {\n ClusterErrors,\n Order,\n PipelineRunScanResults,\n TektonResponseData,\n} from '../types/types';\nimport { TranslationFunction } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../translations/index.ts';\n\nexport const getClusters = (k8sObjects: ObjectsByEntityResponse) => {\n const clusters: string[] = k8sObjects.items.map(\n (item: ClusterObjects) => item.cluster.name,\n );\n const errors: ClusterErrors[] = k8sObjects.items.map(\n (item: ClusterObjects) => item.errors,\n );\n return { clusters, errors };\n};\n\nconst isTektonResource = (kind: string) =>\n [PipelineRunGVK.kind, TaskRunGVK.kind].includes(kind);\n\nconst getResourceType = (kind: string) => {\n switch (kind) {\n case PipelineRunGVK.kind:\n return 'pipelineruns';\n case TaskRunGVK.kind:\n return 'taskruns';\n default:\n return '';\n }\n};\n\nexport const getTektonResources = (\n cluster: number,\n k8sObjects: ObjectsByEntityResponse,\n) =>\n k8sObjects.items?.[cluster]?.resources?.reduce(\n (acc: TektonResponseData, res: any) => {\n if (res.type === 'pods') {\n return {\n ...acc,\n pods: { data: res.resources },\n };\n }\n if (\n res.type !== 'customresources' ||\n (res.type === 'customresources' && res.resources.length === 0)\n ) {\n return acc;\n }\n const customResKind = res.resources[0].kind;\n return {\n ...acc,\n ...(isTektonResource(customResKind) && {\n [getResourceType(customResKind)]: {\n data: res.resources,\n },\n }),\n };\n },\n {},\n );\n\nexport const totalPipelineRunTasks = (pipelinerun: PipelineRunKind): number => {\n if (!pipelinerun?.status?.pipelineSpec) {\n return 0;\n }\n const totalTasks = (pipelinerun.status.pipelineSpec?.tasks || []).length;\n const finallyTasks =\n (pipelinerun.status.pipelineSpec?.finally || []).length ?? 0;\n return totalTasks + finallyTasks;\n};\n\nexport const getTaskStatusOfPLR = (\n pipelinerun: PipelineRunKind,\n taskRuns: TaskRunKind[],\n) => {\n const totalTasks = totalPipelineRunTasks(pipelinerun);\n const plrTasks = getTaskRunsForPipelineRun(pipelinerun, taskRuns);\n const plrTaskLength = plrTasks?.length;\n const skippedTaskLength = pipelinerun?.status?.skippedTasks?.length || 0;\n\n const taskStatus: TaskStatusTypes = updateTaskStatus(pipelinerun, plrTasks);\n\n if (plrTasks?.length > 0) {\n const pipelineRunHasFailure = taskStatus[ComputedStatus.Failed] > 0;\n const pipelineRunIsCancelled =\n pipelineRunFilterReducer(pipelinerun) === ComputedStatus.Cancelled;\n const unhandledTasks =\n totalTasks >= plrTaskLength\n ? totalTasks - plrTaskLength - skippedTaskLength\n : totalTasks;\n\n if (pipelineRunHasFailure || pipelineRunIsCancelled) {\n taskStatus[ComputedStatus.Cancelled] += unhandledTasks;\n } else {\n taskStatus[ComputedStatus.Pending] += unhandledTasks;\n }\n } else if (\n pipelinerun?.status?.conditions?.[0]?.status === 'False' ||\n pipelinerun?.spec?.status === SucceedConditionReason.PipelineRunCancelled\n ) {\n taskStatus[ComputedStatus.Cancelled] = totalTasks;\n } else if (\n pipelinerun?.spec?.status === SucceedConditionReason.PipelineRunPending\n ) {\n taskStatus[ComputedStatus.Pending] += totalTasks;\n } else {\n taskStatus[ComputedStatus.PipelineNotStarted]++;\n }\n return taskStatus;\n};\n\nexport const getDuration = (\n t: TranslationFunction<typeof tektonTranslationRef.T>,\n seconds: number,\n long?: boolean,\n): string => {\n if (seconds === 0) {\n return t('pipelineRunDuration.lessThanSec');\n }\n let sec = Math.round(seconds);\n let min = 0;\n let hr = 0;\n let duration = '';\n if (sec >= 60) {\n min = Math.floor(sec / 60);\n sec %= 60;\n }\n if (min >= 60) {\n hr = Math.floor(min / 60);\n min %= 60;\n }\n if (hr > 0) {\n duration += long ? t('pipelineRunDuration.hour', { count: hr }) : `${hr}h`;\n duration += ' ';\n }\n if (min > 0) {\n duration += long\n ? t('pipelineRunDuration.minute', { count: min })\n : `${min}m`;\n duration += ' ';\n }\n if (sec > 0) {\n duration += long\n ? t('pipelineRunDuration.second', { count: sec })\n : `${sec}s`;\n }\n\n return duration.trim();\n};\n\nexport const descendingComparator = (\n a: PipelineRunKind,\n b: PipelineRunKind,\n orderBy: string,\n) => {\n if (get(b, orderBy) < get(a, orderBy)) {\n return -1;\n }\n if (get(b, orderBy) > get(a, orderBy)) {\n return 1;\n }\n return 0;\n};\n\nexport const calculateDurationInSeconds = (\n startTime: string,\n endTime?: string,\n) => {\n const start = new Date(startTime).getTime();\n const end = endTime ? new Date(endTime).getTime() : new Date().getTime();\n const durationInSeconds = (end - start) / 1000;\n return durationInSeconds;\n};\n\nexport const durationComparator = (a: PipelineRunKind, b: PipelineRunKind) => {\n const durationA = a.status?.startTime\n ? calculateDurationInSeconds(a.status?.startTime, a.status?.completionTime)\n : 0;\n\n const durationB = b.status?.startTime\n ? calculateDurationInSeconds(b.status?.startTime, b.status?.completionTime)\n : 0;\n\n if (durationB < durationA) {\n return -1;\n }\n if (durationB > durationA) {\n return 1;\n }\n return 0;\n};\n\nconst vulnerabilitiesSortValue = (\n scanResults: PipelineRunScanResults,\n): number => {\n if (!scanResults?.vulnerabilities) {\n return -1;\n }\n // Expect no more than 999 of any one severity\n return (\n (scanResults.vulnerabilities.critical ?? 0) * 1000000000 +\n (scanResults.vulnerabilities.high ?? 0) * 1000000 +\n (scanResults.vulnerabilities.medium ?? 0) * 1000 +\n (scanResults.vulnerabilities.low ?? 0)\n );\n};\n\nexport const vulnerabilitiesComparator = (\n a: PipelineRunKind,\n b: PipelineRunKind,\n) => {\n const vulnerabilitiesSortValueA = vulnerabilitiesSortValue(\n getPipelineRunScanResults(a),\n );\n const vulnerabilitiesSortValueB = vulnerabilitiesSortValue(\n getPipelineRunScanResults(b),\n );\n\n if (vulnerabilitiesSortValueB < vulnerabilitiesSortValueA) {\n return -1;\n }\n if (vulnerabilitiesSortValueB > vulnerabilitiesSortValueA) {\n return 1;\n }\n return 0;\n};\n\nexport const getComparator = (\n order: Order,\n orderBy: string,\n orderById: string,\n) => {\n switch (orderById) {\n case 'duration':\n return (a: PipelineRunKind, b: PipelineRunKind) => {\n return order === 'desc'\n ? durationComparator(a, b)\n : -durationComparator(a, b);\n };\n case 'vulnerabilities':\n return (a: PipelineRunKind, b: PipelineRunKind) => {\n return order === 'desc'\n ? vulnerabilitiesComparator(a, b)\n : -vulnerabilitiesComparator(a, b);\n };\n default:\n return (a: PipelineRunKind, b: PipelineRunKind) => {\n return order === 'desc'\n ? descendingComparator(a, b, orderBy)\n : -descendingComparator(a, b, orderBy);\n };\n }\n};\n\nexport const calculateDuration = (\n t: TranslationFunction<typeof tektonTranslationRef.T>,\n startTime: string,\n endTime?: string,\n long?: boolean,\n) => {\n const durationInSeconds = calculateDurationInSeconds(startTime, endTime);\n return getDuration(t, durationInSeconds, long);\n};\n\nexport const pipelineRunDuration = (\n run: PipelineRunKind,\n t: TranslationFunction<typeof tektonTranslationRef.T>,\n): string => {\n if (!run || Object.keys(run).length === 0) {\n return '-';\n }\n const startTime = run.status?.startTime;\n const completionTime = run.status?.completionTime;\n\n // Duration cannot be computed if start time is missing or a completed/failed pipeline/task has no end time\n if (!startTime || (!completionTime && pipelineRunStatus(run) !== 'Running')) {\n return '-';\n }\n return calculateDuration(t, startTime, completionTime, true);\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tekton-utils.esm.js","sources":["../../src/utils/tekton-utils.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ClusterObjects,\n ObjectsByEntityResponse,\n} from '@backstage/plugin-kubernetes-common';\n\nimport { get } from 'lodash';\n\nimport {\n ComputedStatus,\n getTaskRunsForPipelineRun,\n pipelineRunFilterReducer,\n PipelineRunKind,\n pipelineRunStatus,\n SucceedConditionReason,\n TaskRunKind,\n TaskStatusTypes,\n updateTaskStatus,\n} from '@backstage-community/plugin-tekton-react';\n\nimport { getPipelineRunScanResults } from '../hooks/usePipelineRunScanResults';\nimport { PipelineRunGVK, TaskRunGVK } from '../models';\nimport {\n ClusterErrors,\n Order,\n PipelineRunScanResults,\n TektonResponseData,\n} from '../types/types';\nimport { TranslationFunction } from '@backstage/core-plugin-api/alpha';\nimport { tektonTranslationRef } from '../translations/index.ts';\n\nexport const getClusters = (k8sObjects: ObjectsByEntityResponse) => {\n const clusters: string[] = k8sObjects.items.map(\n (item: ClusterObjects) => item.cluster.name,\n );\n const errors: ClusterErrors[] = k8sObjects.items.map(\n (item: ClusterObjects) => item.errors,\n );\n return { clusters, errors };\n};\n\nconst isTektonResource = (kind: string) =>\n [PipelineRunGVK.kind, TaskRunGVK.kind].includes(kind);\n\nconst getResourceType = (kind: string) => {\n switch (kind) {\n case PipelineRunGVK.kind:\n return 'pipelineruns';\n case TaskRunGVK.kind:\n return 'taskruns';\n default:\n return '';\n }\n};\n\nexport const getTektonResources = (\n cluster: number,\n k8sObjects: ObjectsByEntityResponse,\n) =>\n k8sObjects.items?.[cluster]?.resources?.reduce(\n (acc: TektonResponseData, res: any) => {\n if (res.type === 'pods') {\n return {\n ...acc,\n pods: { data: res.resources },\n };\n }\n if (\n res.type !== 'customresources' ||\n (res.type === 'customresources' && res.resources.length === 0)\n ) {\n return acc;\n }\n const customResKind = res.resources[0].kind;\n return {\n ...acc,\n ...(isTektonResource(customResKind) && {\n [getResourceType(customResKind)]: {\n data: res.resources,\n },\n }),\n };\n },\n {},\n );\n\nexport const totalPipelineRunTasks = (pipelinerun: PipelineRunKind): number => {\n if (!pipelinerun?.status?.pipelineSpec) {\n return 0;\n }\n const totalTasks = (pipelinerun.status.pipelineSpec?.tasks || []).length;\n const finallyTasks =\n (pipelinerun.status.pipelineSpec?.finally || []).length ?? 0;\n return totalTasks + finallyTasks;\n};\n\nexport const getTaskStatusOfPLR = (\n pipelinerun: PipelineRunKind,\n taskRuns: TaskRunKind[],\n) => {\n const totalTasks = totalPipelineRunTasks(pipelinerun);\n const plrTasks = getTaskRunsForPipelineRun(pipelinerun, taskRuns);\n const plrTaskLength = plrTasks?.length;\n const skippedTaskLength = pipelinerun?.status?.skippedTasks?.length || 0;\n\n const taskStatus: TaskStatusTypes = updateTaskStatus(pipelinerun, plrTasks);\n\n if (plrTasks?.length > 0) {\n const pipelineRunHasFailure = taskStatus[ComputedStatus.Failed] > 0;\n const pipelineRunIsCancelled =\n pipelineRunFilterReducer(pipelinerun) === ComputedStatus.Cancelled;\n const unhandledTasks =\n totalTasks >= plrTaskLength\n ? totalTasks - plrTaskLength - skippedTaskLength\n : totalTasks;\n\n if (pipelineRunHasFailure || pipelineRunIsCancelled) {\n taskStatus[ComputedStatus.Cancelled] += unhandledTasks;\n } else {\n taskStatus[ComputedStatus.Pending] += unhandledTasks;\n }\n } else if (\n pipelinerun?.status?.conditions?.[0]?.status === 'False' ||\n pipelinerun?.spec?.status === SucceedConditionReason.PipelineRunCancelled\n ) {\n taskStatus[ComputedStatus.Cancelled] = totalTasks;\n } else if (\n pipelinerun?.spec?.status === SucceedConditionReason.PipelineRunPending\n ) {\n taskStatus[ComputedStatus.Pending] += totalTasks;\n } else {\n taskStatus[ComputedStatus.PipelineNotStarted]++;\n }\n return taskStatus;\n};\n\nexport const getDuration = (\n t: TranslationFunction<typeof tektonTranslationRef.T>,\n seconds: number,\n long?: boolean,\n): string => {\n if (seconds === 0) {\n return t('pipelineRunDuration.lessThanSec');\n }\n let sec = Math.round(seconds);\n let min = 0;\n let hr = 0;\n let duration = '';\n if (sec >= 60) {\n min = Math.floor(sec / 60);\n sec %= 60;\n }\n if (min >= 60) {\n hr = Math.floor(min / 60);\n min %= 60;\n }\n if (hr > 0) {\n duration += long ? t('pipelineRunDuration.hour', { count: hr }) : `${hr}h`;\n duration += ' ';\n }\n if (min > 0) {\n duration += long\n ? t('pipelineRunDuration.minute', { count: min })\n : `${min}m`;\n duration += ' ';\n }\n if (sec > 0) {\n duration += long\n ? t('pipelineRunDuration.second', { count: sec })\n : `${sec}s`;\n }\n\n return duration.trim();\n};\n\nexport const descendingComparator = (\n a: PipelineRunKind,\n b: PipelineRunKind,\n orderBy: string,\n) => {\n if (get(b, orderBy) < get(a, orderBy)) {\n return -1;\n }\n if (get(b, orderBy) > get(a, orderBy)) {\n return 1;\n }\n return 0;\n};\n\nexport const calculateDurationInSeconds = (\n startTime: string,\n endTime?: string,\n) => {\n const start = new Date(startTime).getTime();\n const end = endTime ? new Date(endTime).getTime() : new Date().getTime();\n const durationInSeconds = (end - start) / 1000;\n return durationInSeconds;\n};\n\nexport const durationComparator = (a: PipelineRunKind, b: PipelineRunKind) => {\n const durationA = a.status?.startTime\n ? calculateDurationInSeconds(a.status?.startTime, a.status?.completionTime)\n : 0;\n\n const durationB = b.status?.startTime\n ? calculateDurationInSeconds(b.status?.startTime, b.status?.completionTime)\n : 0;\n\n if (durationB < durationA) {\n return -1;\n }\n if (durationB > durationA) {\n return 1;\n }\n return 0;\n};\n\nconst vulnerabilitiesSortValue = (\n scanResults: PipelineRunScanResults,\n): number => {\n if (!scanResults?.vulnerabilities) {\n return -1;\n }\n // Expect no more than 999 of any one severity\n return (\n (scanResults.vulnerabilities.critical ?? 0) * 1000000000 +\n (scanResults.vulnerabilities.high ?? 0) * 1000000 +\n (scanResults.vulnerabilities.medium ?? 0) * 1000 +\n (scanResults.vulnerabilities.low ?? 0)\n );\n};\n\nexport const vulnerabilitiesComparator = (\n a: PipelineRunKind,\n b: PipelineRunKind,\n) => {\n const vulnerabilitiesSortValueA = vulnerabilitiesSortValue(\n getPipelineRunScanResults(a),\n );\n const vulnerabilitiesSortValueB = vulnerabilitiesSortValue(\n getPipelineRunScanResults(b),\n );\n\n if (vulnerabilitiesSortValueB < vulnerabilitiesSortValueA) {\n return -1;\n }\n if (vulnerabilitiesSortValueB > vulnerabilitiesSortValueA) {\n return 1;\n }\n return 0;\n};\n\nexport const getComparator = (\n order: Order,\n orderBy: string,\n orderById: string,\n) => {\n switch (orderById) {\n case 'duration':\n return (a: PipelineRunKind, b: PipelineRunKind) => {\n return order === 'desc'\n ? durationComparator(a, b)\n : -durationComparator(a, b);\n };\n case 'vulnerabilities':\n return (a: PipelineRunKind, b: PipelineRunKind) => {\n return order === 'desc'\n ? vulnerabilitiesComparator(a, b)\n : -vulnerabilitiesComparator(a, b);\n };\n default:\n return (a: PipelineRunKind, b: PipelineRunKind) => {\n return order === 'desc'\n ? descendingComparator(a, b, orderBy)\n : -descendingComparator(a, b, orderBy);\n };\n }\n};\n\nexport const calculateDuration = (\n t: TranslationFunction<typeof tektonTranslationRef.T>,\n startTime: string,\n endTime?: string,\n long?: boolean,\n) => {\n const durationInSeconds = calculateDurationInSeconds(startTime, endTime);\n return getDuration(t, durationInSeconds, long);\n};\n\nexport const pipelineRunDuration = (\n run: PipelineRunKind,\n t: TranslationFunction<typeof tektonTranslationRef.T>,\n): string => {\n if (!run || Object.keys(run).length === 0) {\n return '-';\n }\n const startTime = run.status?.startTime;\n const completionTime = run.status?.completionTime;\n\n // Duration cannot be computed if start time is missing or a completed/failed pipeline/task has no end time\n if (!startTime || (!completionTime && pipelineRunStatus(run) !== 'Running')) {\n return '-';\n }\n return calculateDuration(t, startTime, completionTime, true);\n};\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,35 @@
1
1
  {
2
2
  "name": "@backstage-community/plugin-tekton",
3
- "version": "3.32.0",
4
- "main": "dist/index.esm.js",
5
- "types": "dist/index.d.ts",
3
+ "version": "3.33.0",
4
+ "main": "./dist/index.esm.js",
5
+ "types": "./dist/index.d.ts",
6
6
  "license": "Apache-2.0",
7
7
  "publishConfig": {
8
- "access": "public",
9
- "main": "dist/index.esm.js",
10
- "types": "dist/index.d.ts"
8
+ "access": "public"
9
+ },
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/index.esm.js",
13
+ "types": "./dist/index.d.ts",
14
+ "default": "./dist/index.esm.js"
15
+ },
16
+ "./alpha": {
17
+ "backstage": "@backstage/FrontendPlugin",
18
+ "import": "./dist/alpha.esm.js",
19
+ "types": "./dist/alpha.d.ts",
20
+ "default": "./dist/alpha.esm.js"
21
+ },
22
+ "./package.json": "./package.json"
23
+ },
24
+ "typesVersions": {
25
+ "*": {
26
+ "alpha": [
27
+ "dist/alpha.d.ts"
28
+ ],
29
+ "package.json": [
30
+ "package.json"
31
+ ]
32
+ }
11
33
  },
12
34
  "backstage": {
13
35
  "role": "frontend-plugin",
@@ -15,8 +37,12 @@
15
37
  "pluginPackage": "@backstage-community/plugin-tekton",
16
38
  "pluginPackages": [
17
39
  "@backstage-community/plugin-tekton",
18
- "@backstage-community/plugin-tekton-common"
19
- ]
40
+ "@backstage-community/plugin-tekton-common",
41
+ "@backstage-community/plugin-tekton-react"
42
+ ],
43
+ "features": {
44
+ "./alpha": "@backstage/FrontendPlugin"
45
+ }
20
46
  },
21
47
  "sideEffects": [
22
48
  "./**/*.css",
@@ -34,17 +60,18 @@
34
60
  },
35
61
  "dependencies": {
36
62
  "@aonic-ui/pipelines": "^3.1.0",
37
- "@backstage-community/plugin-tekton-common": "^1.15.0",
63
+ "@backstage-community/plugin-tekton-common": "^1.16.0",
64
+ "@backstage-community/plugin-tekton-react": "^0.1.0",
38
65
  "@backstage/catalog-model": "^1.7.6",
39
66
  "@backstage/core-components": "^0.18.3",
40
67
  "@backstage/core-plugin-api": "^1.12.0",
68
+ "@backstage/frontend-plugin-api": "^0.13.1",
41
69
  "@backstage/plugin-catalog-react": "^1.21.3",
42
70
  "@backstage/plugin-kubernetes-common": "^0.9.8",
43
71
  "@backstage/plugin-kubernetes-react": "^0.5.13",
44
72
  "@backstage/plugin-permission-react": "^0.4.38",
45
73
  "@backstage/theme": "^0.7.0",
46
74
  "@backstage/ui": "^0.9.1",
47
- "@janus-idp/shared-react": "^2.16.0",
48
75
  "@kubernetes/client-node": "1.0.0-rc7",
49
76
  "@material-ui/core": "^4.9.13",
50
77
  "@material-ui/icons": "^4.11.3",
@@ -76,9 +103,7 @@
76
103
  "@testing-library/react": "14.3.1",
77
104
  "@types/dagre": "^0.7.52",
78
105
  "@types/lodash": "4.17.21",
79
- "cross-fetch": "4.0.0",
80
- "msw": "1.3.5",
81
- "start-server-and-test": "2.1.2"
106
+ "cross-fetch": "4.1.0"
82
107
  },
83
108
  "files": [
84
109
  "app-config.dynamic.yaml",
@@ -102,12 +127,5 @@
102
127
  "@divyanshiGupta"
103
128
  ],
104
129
  "author": "Red Hat",
105
- "typesVersions": {
106
- "*": {
107
- "package.json": [
108
- "package.json"
109
- ]
110
- }
111
- },
112
130
  "module": "./dist/index.esm.js"
113
131
  }