@backstage-community/plugin-azure-devops 0.4.4 → 0.4.7

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 (124) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/alpha/package.json +2 -2
  3. package/dist/alpha/plugin.esm.js +69 -0
  4. package/dist/alpha/plugin.esm.js.map +1 -0
  5. package/dist/alpha.esm.js +1 -68
  6. package/dist/alpha.esm.js.map +1 -1
  7. package/dist/api/AzureDevOpsApi.esm.js +8 -0
  8. package/dist/api/AzureDevOpsApi.esm.js.map +1 -0
  9. package/dist/{esm/AzureDevOpsApi-GBxs-uQ7.esm.js → api/AzureDevOpsClient.esm.js} +11 -36
  10. package/dist/api/AzureDevOpsClient.esm.js.map +1 -0
  11. package/dist/components/AzureGitTagsIcon/AzureGitTagsIcon.esm.js +7 -0
  12. package/dist/components/AzureGitTagsIcon/AzureGitTagsIcon.esm.js.map +1 -0
  13. package/dist/components/AzurePipelinesIcon/AzurePipelinesIcon.esm.js +27 -0
  14. package/dist/components/AzurePipelinesIcon/AzurePipelinesIcon.esm.js.map +1 -0
  15. package/dist/{esm/AzurePullRequestsIcon-DOAkj-X3.esm.js → components/AzurePullRequestsIcon/AzurePullRequestsIcon.esm.js} +2 -2
  16. package/dist/components/AzurePullRequestsIcon/AzurePullRequestsIcon.esm.js.map +1 -0
  17. package/dist/{esm/index-Bwu2-Sgs.esm.js → components/BuildTable/BuildTable.esm.js} +7 -107
  18. package/dist/components/BuildTable/BuildTable.esm.js.map +1 -0
  19. package/dist/components/EntityPageAzureGitTags/EntityPageAzureGitTags.esm.js +22 -0
  20. package/dist/components/EntityPageAzureGitTags/EntityPageAzureGitTags.esm.js.map +1 -0
  21. package/dist/components/EntityPageAzureGitTags/index.esm.js +2 -0
  22. package/dist/components/EntityPageAzureGitTags/index.esm.js.map +1 -0
  23. package/dist/components/EntityPageAzurePipelines/EntityPageAzurePipelines.esm.js +32 -0
  24. package/dist/components/EntityPageAzurePipelines/EntityPageAzurePipelines.esm.js.map +1 -0
  25. package/dist/components/EntityPageAzurePipelines/index.esm.js +2 -0
  26. package/dist/components/EntityPageAzurePipelines/index.esm.js.map +1 -0
  27. package/dist/components/EntityPageAzurePullRequests/EntityPageAzurePullRequests.esm.js +22 -0
  28. package/dist/components/EntityPageAzurePullRequests/EntityPageAzurePullRequests.esm.js.map +1 -0
  29. package/dist/components/EntityPageAzurePullRequests/index.esm.js +2 -0
  30. package/dist/components/EntityPageAzurePullRequests/index.esm.js.map +1 -0
  31. package/dist/components/GitTagTable/GitTagTable.esm.js +53 -0
  32. package/dist/components/GitTagTable/GitTagTable.esm.js.map +1 -0
  33. package/dist/components/PullRequestStatusButtonGroup/PullRequestStatusButtonGroup.esm.js +41 -0
  34. package/dist/components/PullRequestStatusButtonGroup/PullRequestStatusButtonGroup.esm.js.map +1 -0
  35. package/dist/components/PullRequestTable/PullRequestTable.esm.js +90 -0
  36. package/dist/components/PullRequestTable/PullRequestTable.esm.js.map +1 -0
  37. package/dist/components/PullRequestsPage/PullRequestsPage.esm.js +79 -0
  38. package/dist/components/PullRequestsPage/PullRequestsPage.esm.js.map +1 -0
  39. package/dist/components/PullRequestsPage/index.esm.js +6 -0
  40. package/dist/components/PullRequestsPage/index.esm.js.map +1 -0
  41. package/dist/components/PullRequestsPage/lib/AutoCompleteIcon/AutoCompleteIcon.esm.js +16 -0
  42. package/dist/components/PullRequestsPage/lib/AutoCompleteIcon/AutoCompleteIcon.esm.js.map +1 -0
  43. package/dist/components/PullRequestsPage/lib/PullRequestCard/PullRequestCard.esm.js +85 -0
  44. package/dist/components/PullRequestsPage/lib/PullRequestCard/PullRequestCard.esm.js.map +1 -0
  45. package/dist/components/PullRequestsPage/lib/PullRequestCard/PullRequestCardPolicies.esm.js +10 -0
  46. package/dist/components/PullRequestsPage/lib/PullRequestCard/PullRequestCardPolicies.esm.js.map +1 -0
  47. package/dist/components/PullRequestsPage/lib/PullRequestCard/PullRequestCardPolicy.esm.js +66 -0
  48. package/dist/components/PullRequestsPage/lib/PullRequestCard/PullRequestCardPolicy.esm.js.map +1 -0
  49. package/dist/components/PullRequestsPage/lib/PullRequestCard/PullRequestCardReviewer.esm.js +33 -0
  50. package/dist/components/PullRequestsPage/lib/PullRequestCard/PullRequestCardReviewer.esm.js.map +1 -0
  51. package/dist/components/PullRequestsPage/lib/PullRequestCard/PullRequestCardReviewers.esm.js +17 -0
  52. package/dist/components/PullRequestsPage/lib/PullRequestCard/PullRequestCardReviewers.esm.js.map +1 -0
  53. package/dist/components/PullRequestsPage/lib/PullRequestGrid/PullRequestGrid.esm.js +29 -0
  54. package/dist/components/PullRequestsPage/lib/PullRequestGrid/PullRequestGrid.esm.js.map +1 -0
  55. package/dist/components/PullRequestsPage/lib/PullRequestGridColumn/PullRequestGridColumn.esm.js +50 -0
  56. package/dist/components/PullRequestsPage/lib/PullRequestGridColumn/PullRequestGridColumn.esm.js.map +1 -0
  57. package/dist/components/PullRequestsPage/lib/filters/allFilter.esm.js +6 -0
  58. package/dist/components/PullRequestsPage/lib/filters/allFilter.esm.js.map +1 -0
  59. package/dist/components/PullRequestsPage/lib/filters/assignedToTeamFilter.esm.js +17 -0
  60. package/dist/components/PullRequestsPage/lib/filters/assignedToTeamFilter.esm.js.map +1 -0
  61. package/dist/components/PullRequestsPage/lib/filters/assignedToTeamsFilter.esm.js +20 -0
  62. package/dist/components/PullRequestsPage/lib/filters/assignedToTeamsFilter.esm.js.map +1 -0
  63. package/dist/components/PullRequestsPage/lib/filters/assignedToUserFilter.esm.js +20 -0
  64. package/dist/components/PullRequestsPage/lib/filters/assignedToUserFilter.esm.js.map +1 -0
  65. package/dist/components/PullRequestsPage/lib/filters/createFilter.esm.js +45 -0
  66. package/dist/components/PullRequestsPage/lib/filters/createFilter.esm.js.map +1 -0
  67. package/dist/components/PullRequestsPage/lib/filters/createdByTeamFilter.esm.js +17 -0
  68. package/dist/components/PullRequestsPage/lib/filters/createdByTeamFilter.esm.js.map +1 -0
  69. package/dist/components/PullRequestsPage/lib/filters/createdByTeamsFilter.esm.js +32 -0
  70. package/dist/components/PullRequestsPage/lib/filters/createdByTeamsFilter.esm.js.map +1 -0
  71. package/dist/components/PullRequestsPage/lib/filters/createdByUserFilter.esm.js +18 -0
  72. package/dist/components/PullRequestsPage/lib/filters/createdByUserFilter.esm.js.map +1 -0
  73. package/dist/components/PullRequestsPage/lib/filters/types.esm.js +17 -0
  74. package/dist/components/PullRequestsPage/lib/filters/types.esm.js.map +1 -0
  75. package/dist/components/PullRequestsPage/lib/hooks/useFilterProcessor.esm.js +37 -0
  76. package/dist/components/PullRequestsPage/lib/hooks/useFilterProcessor.esm.js.map +1 -0
  77. package/dist/components/PullRequestsPage/lib/utils.esm.js +47 -0
  78. package/dist/components/PullRequestsPage/lib/utils.esm.js.map +1 -0
  79. package/dist/{esm/index-BJ_pWnMh.esm.js → components/ReadmeCard/ReadmeCard.esm.js} +8 -31
  80. package/dist/components/ReadmeCard/ReadmeCard.esm.js.map +1 -0
  81. package/dist/components/ReadmeCard/index.esm.js +2 -0
  82. package/dist/components/ReadmeCard/index.esm.js.map +1 -0
  83. package/dist/hooks/useBuildRuns.esm.js +37 -0
  84. package/dist/hooks/useBuildRuns.esm.js.map +1 -0
  85. package/dist/hooks/useDashboardPullRequests.esm.js +43 -0
  86. package/dist/hooks/useDashboardPullRequests.esm.js.map +1 -0
  87. package/dist/hooks/useGitTags.esm.js +30 -0
  88. package/dist/hooks/useGitTags.esm.js.map +1 -0
  89. package/dist/hooks/usePullRequests.esm.js +41 -0
  90. package/dist/hooks/usePullRequests.esm.js.map +1 -0
  91. package/dist/hooks/useReadme.esm.js +32 -0
  92. package/dist/hooks/useReadme.esm.js.map +1 -0
  93. package/dist/hooks/useUserEmail.esm.js +11 -0
  94. package/dist/hooks/useUserEmail.esm.js.map +1 -0
  95. package/dist/hooks/useUserTeamIds.esm.js +23 -0
  96. package/dist/hooks/useUserTeamIds.esm.js.map +1 -0
  97. package/dist/index.esm.js +7 -92
  98. package/dist/index.esm.js.map +1 -1
  99. package/dist/plugin.esm.js +68 -0
  100. package/dist/plugin.esm.js.map +1 -0
  101. package/dist/routes.esm.js +17 -0
  102. package/dist/routes.esm.js.map +1 -0
  103. package/dist/utils/arrayHas.esm.js +15 -0
  104. package/dist/utils/arrayHas.esm.js.map +1 -0
  105. package/dist/utils/equalsIgnoreCase.esm.js +6 -0
  106. package/dist/utils/equalsIgnoreCase.esm.js.map +1 -0
  107. package/dist/{esm/getAnnotationValuesFromEntity-G8YVs-3R.esm.js → utils/getAnnotationValuesFromEntity.esm.js} +7 -8
  108. package/dist/utils/getAnnotationValuesFromEntity.esm.js.map +1 -0
  109. package/dist/utils/getDurationFromDates.esm.js +34 -0
  110. package/dist/utils/getDurationFromDates.esm.js.map +1 -0
  111. package/package.json +19 -13
  112. package/dist/esm/AzureDevOpsApi-GBxs-uQ7.esm.js.map +0 -1
  113. package/dist/esm/AzurePullRequestsIcon-DOAkj-X3.esm.js.map +0 -1
  114. package/dist/esm/PullRequestsPage-CkhRQsgx.esm.js +0 -610
  115. package/dist/esm/PullRequestsPage-CkhRQsgx.esm.js.map +0 -1
  116. package/dist/esm/getAnnotationValuesFromEntity-G8YVs-3R.esm.js.map +0 -1
  117. package/dist/esm/index-1Rl7C23d.esm.js +0 -102
  118. package/dist/esm/index-1Rl7C23d.esm.js.map +0 -1
  119. package/dist/esm/index-BJ_pWnMh.esm.js.map +0 -1
  120. package/dist/esm/index-Bo-6jkQA.esm.js +0 -178
  121. package/dist/esm/index-Bo-6jkQA.esm.js.map +0 -1
  122. package/dist/esm/index-Bwu2-Sgs.esm.js.map +0 -1
  123. package/dist/esm/index-W1pvc5vi.esm.js +0 -25
  124. package/dist/esm/index-W1pvc5vi.esm.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PullRequestCardPolicy.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/PullRequestCard/PullRequestCardPolicy.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport {\n Policy,\n PolicyEvaluationStatus,\n PolicyType,\n} from '@backstage-community/plugin-azure-devops-common';\nimport { styled, withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\n\nimport CancelIcon from '@material-ui/icons/Cancel';\nimport GroupWorkIcon from '@material-ui/icons/GroupWork';\nimport React from 'react';\nimport WatchLaterIcon from '@material-ui/icons/WatchLater';\n\nconst PolicyRequiredIcon = withStyles(\n theme => ({\n root: {\n color: theme.palette.info.main,\n },\n }),\n { name: 'PolicyRequiredIcon' },\n)(WatchLaterIcon);\n\nconst PolicyIssueIcon = withStyles(\n theme => ({\n root: {\n color: theme.palette.error.main,\n },\n }),\n { name: 'PolicyIssueIcon' },\n)(CancelIcon);\n\nconst PolicyInProgressIcon = withStyles(\n theme => ({\n root: {\n color: theme.palette.info.main,\n },\n }),\n { name: 'PolicyInProgressIcon' },\n)(GroupWorkIcon);\n\nfunction getPolicyIcon(policy: Policy): React.JSX.Element | null {\n switch (policy.type) {\n case PolicyType.Build:\n switch (policy.status) {\n case PolicyEvaluationStatus.Running:\n return <PolicyInProgressIcon />;\n case PolicyEvaluationStatus.Rejected:\n return <PolicyIssueIcon />;\n case PolicyEvaluationStatus.Queued:\n return <PolicyRequiredIcon />;\n default:\n return null;\n }\n case PolicyType.MinimumReviewers:\n case PolicyType.RequiredReviewers:\n return <PolicyRequiredIcon />;\n case PolicyType.Status:\n case PolicyType.Comments:\n return <PolicyIssueIcon />;\n default:\n return null;\n }\n}\n\nconst PullRequestCardPolicyContainer = styled('div')({\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n});\n\ntype PullRequestCardPolicyProps = {\n policy: Policy;\n};\n\nexport const PullRequestCardPolicy = ({\n policy,\n}: PullRequestCardPolicyProps) => (\n <PullRequestCardPolicyContainer>\n {getPolicyIcon(policy)}{' '}\n <Typography component=\"span\">{policy.text}</Typography>\n </PullRequestCardPolicyContainer>\n);\n"],"names":[],"mappings":";;;;;;;;AA6BA,MAAM,kBAAqB,GAAA,UAAA;AAAA,EACzB,CAAU,KAAA,MAAA;AAAA,IACR,IAAM,EAAA;AAAA,MACJ,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,IAAA;AAAA,KAC5B;AAAA,GACF,CAAA;AAAA,EACA,EAAE,MAAM,oBAAqB,EAAA;AAC/B,CAAA,CAAE,cAAc,CAAA,CAAA;AAEhB,MAAM,eAAkB,GAAA,UAAA;AAAA,EACtB,CAAU,KAAA,MAAA;AAAA,IACR,IAAM,EAAA;AAAA,MACJ,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,KAAM,CAAA,IAAA;AAAA,KAC7B;AAAA,GACF,CAAA;AAAA,EACA,EAAE,MAAM,iBAAkB,EAAA;AAC5B,CAAA,CAAE,UAAU,CAAA,CAAA;AAEZ,MAAM,oBAAuB,GAAA,UAAA;AAAA,EAC3B,CAAU,KAAA,MAAA;AAAA,IACR,IAAM,EAAA;AAAA,MACJ,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,IAAA;AAAA,KAC5B;AAAA,GACF,CAAA;AAAA,EACA,EAAE,MAAM,sBAAuB,EAAA;AACjC,CAAA,CAAE,aAAa,CAAA,CAAA;AAEf,SAAS,cAAc,MAA0C,EAAA;AAC/D,EAAA,QAAQ,OAAO,IAAM;AAAA,IACnB,KAAK,UAAW,CAAA,KAAA;AACd,MAAA,QAAQ,OAAO,MAAQ;AAAA,QACrB,KAAK,sBAAuB,CAAA,OAAA;AAC1B,UAAA,2CAAQ,oBAAqB,EAAA,IAAA,CAAA,CAAA;AAAA,QAC/B,KAAK,sBAAuB,CAAA,QAAA;AAC1B,UAAA,2CAAQ,eAAgB,EAAA,IAAA,CAAA,CAAA;AAAA,QAC1B,KAAK,sBAAuB,CAAA,MAAA;AAC1B,UAAA,2CAAQ,kBAAmB,EAAA,IAAA,CAAA,CAAA;AAAA,QAC7B;AACE,UAAO,OAAA,IAAA,CAAA;AAAA,OACX;AAAA,IACF,KAAK,UAAW,CAAA,gBAAA,CAAA;AAAA,IAChB,KAAK,UAAW,CAAA,iBAAA;AACd,MAAA,2CAAQ,kBAAmB,EAAA,IAAA,CAAA,CAAA;AAAA,IAC7B,KAAK,UAAW,CAAA,MAAA,CAAA;AAAA,IAChB,KAAK,UAAW,CAAA,QAAA;AACd,MAAA,2CAAQ,eAAgB,EAAA,IAAA,CAAA,CAAA;AAAA,IAC1B;AACE,MAAO,OAAA,IAAA,CAAA;AAAA,GACX;AACF,CAAA;AAEA,MAAM,8BAAA,GAAiC,MAAO,CAAA,KAAK,CAAE,CAAA;AAAA,EACnD,OAAS,EAAA,MAAA;AAAA,EACT,UAAY,EAAA,QAAA;AAAA,EACZ,QAAU,EAAA,MAAA;AACZ,CAAC,CAAA,CAAA;AAMM,MAAM,wBAAwB,CAAC;AAAA,EACpC,MAAA;AACF,CAAA,qBACG,KAAA,CAAA,aAAA,CAAA,8BAAA,EAAA,IAAA,EACE,aAAc,CAAA,MAAM,CAAG,EAAA,GAAA,kBACvB,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,SAAU,EAAA,MAAA,EAAA,EAAQ,MAAO,CAAA,IAAK,CAC5C;;;;"}
@@ -0,0 +1,33 @@
1
+ import { Avatar } from '@backstage/core-components';
2
+ import React from 'react';
3
+ import { makeStyles } from '@material-ui/core/styles';
4
+
5
+ const useStyles = makeStyles(
6
+ {
7
+ avatar: {
8
+ width: "2.5rem",
9
+ height: "2.5rem",
10
+ border: "0.3rem solid silver"
11
+ },
12
+ avatarText: {
13
+ fontSize: "1rem"
14
+ }
15
+ },
16
+ { name: "PullRequestCardReviewer" }
17
+ );
18
+ const PullRequestCardReviewer = ({
19
+ reviewer
20
+ }) => {
21
+ const classes = useStyles();
22
+ return /* @__PURE__ */ React.createElement(
23
+ Avatar,
24
+ {
25
+ displayName: reviewer.displayName,
26
+ picture: reviewer.imageUrl,
27
+ classes
28
+ }
29
+ );
30
+ };
31
+
32
+ export { PullRequestCardReviewer };
33
+ //# sourceMappingURL=PullRequestCardReviewer.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PullRequestCardReviewer.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/PullRequestCard/PullRequestCardReviewer.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { Avatar } from '@backstage/core-components';\nimport React from 'react';\nimport { Reviewer } from '@backstage-community/plugin-azure-devops-common';\nimport { makeStyles } from '@material-ui/core/styles';\n\ntype PullRequestCardReviewerProps = {\n reviewer: Reviewer;\n};\n\nconst useStyles = makeStyles(\n {\n avatar: {\n width: '2.5rem',\n height: '2.5rem',\n border: '0.3rem solid silver',\n },\n avatarText: {\n fontSize: '1rem',\n },\n },\n { name: 'PullRequestCardReviewer' },\n);\n\nexport const PullRequestCardReviewer = ({\n reviewer,\n}: PullRequestCardReviewerProps) => {\n const classes = useStyles();\n\n return (\n <Avatar\n displayName={reviewer.displayName}\n picture={reviewer.imageUrl}\n classes={classes}\n />\n );\n};\n"],"names":[],"mappings":";;;;AAyBA,MAAM,SAAY,GAAA,UAAA;AAAA,EAChB;AAAA,IACE,MAAQ,EAAA;AAAA,MACN,KAAO,EAAA,QAAA;AAAA,MACP,MAAQ,EAAA,QAAA;AAAA,MACR,MAAQ,EAAA,qBAAA;AAAA,KACV;AAAA,IACA,UAAY,EAAA;AAAA,MACV,QAAU,EAAA,MAAA;AAAA,KACZ;AAAA,GACF;AAAA,EACA,EAAE,MAAM,yBAA0B,EAAA;AACpC,CAAA,CAAA;AAEO,MAAM,0BAA0B,CAAC;AAAA,EACtC,QAAA;AACF,CAAoC,KAAA;AAClC,EAAA,MAAM,UAAU,SAAU,EAAA,CAAA;AAE1B,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,aAAa,QAAS,CAAA,WAAA;AAAA,MACtB,SAAS,QAAS,CAAA,QAAA;AAAA,MAClB,OAAA;AAAA,KAAA;AAAA,GACF,CAAA;AAEJ;;;;"}
@@ -0,0 +1,17 @@
1
+ import { PullRequestCardReviewer } from './PullRequestCardReviewer.esm.js';
2
+ import React from 'react';
3
+ import { reviewerFilter } from '../utils.esm.js';
4
+ import { styled } from '@material-ui/core/styles';
5
+
6
+ const PullRequestCardReviewersContainer = styled("div")({
7
+ "& > *": {
8
+ marginTop: 4,
9
+ marginBottom: 4
10
+ }
11
+ });
12
+ const PullRequestCardReviewers = ({
13
+ reviewers
14
+ }) => /* @__PURE__ */ React.createElement(PullRequestCardReviewersContainer, null, reviewers.filter(reviewerFilter).map((reviewer) => /* @__PURE__ */ React.createElement(PullRequestCardReviewer, { key: reviewer.id, reviewer })));
15
+
16
+ export { PullRequestCardReviewers };
17
+ //# sourceMappingURL=PullRequestCardReviewers.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PullRequestCardReviewers.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/PullRequestCard/PullRequestCardReviewers.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { PullRequestCardReviewer } from './PullRequestCardReviewer';\nimport React from 'react';\nimport { Reviewer } from '@backstage-community/plugin-azure-devops-common';\nimport { reviewerFilter } from '../utils';\nimport { styled } from '@material-ui/core/styles';\n\nconst PullRequestCardReviewersContainer = styled('div')({\n '& > *': {\n marginTop: 4,\n marginBottom: 4,\n },\n});\n\ntype PullRequestCardReviewersProps = {\n reviewers: Reviewer[];\n};\n\nexport const PullRequestCardReviewers = ({\n reviewers,\n}: PullRequestCardReviewersProps) => (\n <PullRequestCardReviewersContainer>\n {reviewers.filter(reviewerFilter).map(reviewer => (\n <PullRequestCardReviewer key={reviewer.id} reviewer={reviewer} />\n ))}\n </PullRequestCardReviewersContainer>\n);\n"],"names":[],"mappings":";;;;;AAsBA,MAAM,iCAAA,GAAoC,MAAO,CAAA,KAAK,CAAE,CAAA;AAAA,EACtD,OAAS,EAAA;AAAA,IACP,SAAW,EAAA,CAAA;AAAA,IACX,YAAc,EAAA,CAAA;AAAA,GAChB;AACF,CAAC,CAAA,CAAA;AAMM,MAAM,2BAA2B,CAAC;AAAA,EACvC,SAAA;AACF,CAAA,qBACG,KAAA,CAAA,aAAA,CAAA,iCAAA,EAAA,IAAA,EACE,SAAU,CAAA,MAAA,CAAO,cAAc,CAAE,CAAA,GAAA,CAAI,CACpC,QAAA,qBAAA,KAAA,CAAA,aAAA,CAAC,2BAAwB,GAAK,EAAA,QAAA,CAAS,EAAI,EAAA,QAAA,EAAoB,CAChE,CACH;;;;"}
@@ -0,0 +1,29 @@
1
+ import { PullRequestGridColumn } from '../PullRequestGridColumn/PullRequestGridColumn.esm.js';
2
+ import React from 'react';
3
+ import { styled } from '@material-ui/core/styles';
4
+
5
+ const GridDiv = styled("div")(({ theme }) => ({
6
+ display: "flex",
7
+ flexDirection: "row",
8
+ justifyContent: "space-between",
9
+ "& > *": {
10
+ marginRight: theme.spacing(2)
11
+ },
12
+ "& > :last-of-type": {
13
+ marginRight: 0
14
+ }
15
+ }));
16
+ const PullRequestGrid = ({
17
+ pullRequestGroups
18
+ }) => {
19
+ return /* @__PURE__ */ React.createElement(GridDiv, null, pullRequestGroups.map((pullRequestGroup, index) => /* @__PURE__ */ React.createElement(
20
+ PullRequestGridColumn,
21
+ {
22
+ key: index,
23
+ pullRequestGroup
24
+ }
25
+ )));
26
+ };
27
+
28
+ export { PullRequestGrid };
29
+ //# sourceMappingURL=PullRequestGrid.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PullRequestGrid.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/PullRequestGrid/PullRequestGrid.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { PullRequestGridColumn } from '../PullRequestGridColumn';\nimport { PullRequestGroup } from '../types';\nimport React from 'react';\nimport { styled } from '@material-ui/core/styles';\n\nconst GridDiv = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n '& > *': {\n marginRight: theme.spacing(2),\n },\n '& > :last-of-type': {\n marginRight: 0,\n },\n}));\n\ntype PullRequestGridProps = {\n pullRequestGroups: PullRequestGroup[];\n};\n\nexport const PullRequestGrid = ({\n pullRequestGroups,\n}: PullRequestGridProps) => {\n return (\n <GridDiv>\n {pullRequestGroups.map((pullRequestGroup, index) => (\n <PullRequestGridColumn\n key={index}\n pullRequestGroup={pullRequestGroup}\n />\n ))}\n </GridDiv>\n );\n};\n"],"names":[],"mappings":";;;;AAqBA,MAAM,UAAU,MAAO,CAAA,KAAK,EAAE,CAAC,EAAE,OAAa,MAAA;AAAA,EAC5C,OAAS,EAAA,MAAA;AAAA,EACT,aAAe,EAAA,KAAA;AAAA,EACf,cAAgB,EAAA,eAAA;AAAA,EAChB,OAAS,EAAA;AAAA,IACP,WAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,GAC9B;AAAA,EACA,mBAAqB,EAAA;AAAA,IACnB,WAAa,EAAA,CAAA;AAAA,GACf;AACF,CAAE,CAAA,CAAA,CAAA;AAMK,MAAM,kBAAkB,CAAC;AAAA,EAC9B,iBAAA;AACF,CAA4B,KAAA;AAC1B,EAAA,2CACG,OACE,EAAA,IAAA,EAAA,iBAAA,CAAkB,GAAI,CAAA,CAAC,kBAAkB,KACxC,qBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,qBAAA;AAAA,IAAA;AAAA,MACC,GAAK,EAAA,KAAA;AAAA,MACL,gBAAA;AAAA,KAAA;AAAA,GAEH,CACH,CAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,50 @@
1
+ import Paper from '@material-ui/core/Paper';
2
+ import Typography from '@material-ui/core/Typography';
3
+ import { withStyles, styled } from '@material-ui/core/styles';
4
+ import { PullRequestCard } from '../PullRequestCard/PullRequestCard.esm.js';
5
+ import React from 'react';
6
+
7
+ const ColumnPaper = withStyles((theme) => ({
8
+ root: {
9
+ display: "flex",
10
+ flexDirection: "column",
11
+ flex: 1,
12
+ padding: theme.spacing(2),
13
+ backgroundColor: theme.palette.type === "dark" ? theme.palette.grey[800] : theme.palette.grey[300],
14
+ height: "100%"
15
+ }
16
+ }))(Paper);
17
+ const ColumnTitleDiv = styled("div")(({ theme }) => ({
18
+ display: "flex",
19
+ flexDirection: "row",
20
+ alignItems: "center",
21
+ justifyContent: "space-between",
22
+ marginBottom: theme.spacing(2)
23
+ }));
24
+ const PullRequestCardContainer = styled("div")(({ theme }) => ({
25
+ display: "flex",
26
+ flexDirection: "column",
27
+ "& > *": {
28
+ marginBottom: theme.spacing(2)
29
+ },
30
+ "& > :last-of-type": {
31
+ marginBottom: 0
32
+ }
33
+ }));
34
+ const PullRequestGridColumn = ({
35
+ pullRequestGroup
36
+ }) => {
37
+ const columnTitle = /* @__PURE__ */ React.createElement(ColumnTitleDiv, null, /* @__PURE__ */ React.createElement(Typography, { variant: "h5" }, pullRequestGroup.title));
38
+ const pullRequests = /* @__PURE__ */ React.createElement(PullRequestCardContainer, null, pullRequestGroup.pullRequests.map((pullRequest) => /* @__PURE__ */ React.createElement(
39
+ PullRequestCard,
40
+ {
41
+ key: pullRequest.pullRequestId,
42
+ pullRequest,
43
+ simplified: pullRequestGroup.simplified
44
+ }
45
+ )));
46
+ return /* @__PURE__ */ React.createElement(ColumnPaper, null, columnTitle, pullRequests);
47
+ };
48
+
49
+ export { PullRequestCardContainer, PullRequestGridColumn };
50
+ //# sourceMappingURL=PullRequestGridColumn.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PullRequestGridColumn.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/PullRequestGridColumn/PullRequestGridColumn.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport { styled, withStyles } from '@material-ui/core/styles';\n\nimport { PullRequestCard } from '../PullRequestCard';\nimport { PullRequestGroup } from '../types';\nimport React from 'react';\n\nconst ColumnPaper = withStyles(theme => ({\n root: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n padding: theme.spacing(2),\n backgroundColor:\n theme.palette.type === 'dark'\n ? theme.palette.grey[800]\n : theme.palette.grey[300],\n height: '100%',\n },\n}))(Paper);\n\nconst ColumnTitleDiv = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n marginBottom: theme.spacing(2),\n}));\n\nexport const PullRequestCardContainer = styled('div')(({ theme }) => ({\n display: 'flex',\n flexDirection: 'column',\n '& > *': {\n marginBottom: theme.spacing(2),\n },\n '& > :last-of-type': {\n marginBottom: 0,\n },\n}));\n\ntype PullRequestGridColumnProps = {\n pullRequestGroup: PullRequestGroup;\n};\n\nexport const PullRequestGridColumn = ({\n pullRequestGroup,\n}: PullRequestGridColumnProps) => {\n const columnTitle = (\n <ColumnTitleDiv>\n <Typography variant=\"h5\">{pullRequestGroup.title}</Typography>\n </ColumnTitleDiv>\n );\n\n const pullRequests = (\n <PullRequestCardContainer>\n {pullRequestGroup.pullRequests.map(pullRequest => (\n <PullRequestCard\n key={pullRequest.pullRequestId}\n pullRequest={pullRequest}\n simplified={pullRequestGroup.simplified}\n />\n ))}\n </PullRequestCardContainer>\n );\n\n return (\n <ColumnPaper>\n {columnTitle}\n {pullRequests}\n </ColumnPaper>\n );\n};\n"],"names":[],"mappings":";;;;;;AAwBA,MAAM,WAAA,GAAc,WAAW,CAAU,KAAA,MAAA;AAAA,EACvC,IAAM,EAAA;AAAA,IACJ,OAAS,EAAA,MAAA;AAAA,IACT,aAAe,EAAA,QAAA;AAAA,IACf,IAAM,EAAA,CAAA;AAAA,IACN,OAAA,EAAS,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IACxB,eACE,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,MACnB,GAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,CAAK,GAAG,CAAA,GACtB,KAAM,CAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,IAC5B,MAAQ,EAAA,MAAA;AAAA,GACV;AACF,CAAA,CAAE,EAAE,KAAK,CAAA,CAAA;AAET,MAAM,iBAAiB,MAAO,CAAA,KAAK,EAAE,CAAC,EAAE,OAAa,MAAA;AAAA,EACnD,OAAS,EAAA,MAAA;AAAA,EACT,aAAe,EAAA,KAAA;AAAA,EACf,UAAY,EAAA,QAAA;AAAA,EACZ,cAAgB,EAAA,eAAA;AAAA,EAChB,YAAA,EAAc,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAC/B,CAAE,CAAA,CAAA,CAAA;AAEK,MAAM,2BAA2B,MAAO,CAAA,KAAK,EAAE,CAAC,EAAE,OAAa,MAAA;AAAA,EACpE,OAAS,EAAA,MAAA;AAAA,EACT,aAAe,EAAA,QAAA;AAAA,EACf,OAAS,EAAA;AAAA,IACP,YAAA,EAAc,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,GAC/B;AAAA,EACA,mBAAqB,EAAA;AAAA,IACnB,YAAc,EAAA,CAAA;AAAA,GAChB;AACF,CAAE,CAAA,EAAA;AAMK,MAAM,wBAAwB,CAAC;AAAA,EACpC,gBAAA;AACF,CAAkC,KAAA;AAChC,EAAM,MAAA,WAAA,uCACH,cACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,OAAQ,EAAA,IAAA,EAAA,EAAM,gBAAiB,CAAA,KAAM,CACnD,CAAA,CAAA;AAGF,EAAA,MAAM,+BACH,KAAA,CAAA,aAAA,CAAA,wBAAA,EAAA,IAAA,EACE,gBAAiB,CAAA,YAAA,CAAa,IAAI,CACjC,WAAA,qBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,KAAK,WAAY,CAAA,aAAA;AAAA,MACjB,WAAA;AAAA,MACA,YAAY,gBAAiB,CAAA,UAAA;AAAA,KAAA;AAAA,GAEhC,CACH,CAAA,CAAA;AAGF,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,WACE,EAAA,IAAA,EAAA,WAAA,EACA,YACH,CAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,6 @@
1
+ function createAllFilter() {
2
+ return (_pullRequest) => true;
3
+ }
4
+
5
+ export { createAllFilter };
6
+ //# sourceMappingURL=allFilter.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allFilter.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/filters/allFilter.ts"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { BaseFilter, FilterType, PullRequestFilter } from './types';\n\nimport { DashboardPullRequest } from '@backstage-community/plugin-azure-devops-common';\n\n/** @public */\nexport type AllFilter = BaseFilter & {\n type: FilterType.All;\n};\n\nexport function createAllFilter(): PullRequestFilter {\n return (_pullRequest: DashboardPullRequest): boolean => true;\n}\n"],"names":[],"mappings":"AAyBO,SAAS,eAAqC,GAAA;AACnD,EAAA,OAAO,CAAC,YAAgD,KAAA,IAAA,CAAA;AAC1D;;;;"}
@@ -0,0 +1,17 @@
1
+ import { stringArrayHas } from '../../../../utils/arrayHas.esm.js';
2
+ import 'luxon';
3
+ import 'humanize-duration';
4
+ import '@backstage-community/plugin-azure-devops-common';
5
+
6
+ function createAssignedToTeamFilter(filter) {
7
+ return (pullRequest) => {
8
+ const reviewerIds = pullRequest.reviewers?.map((reviewer) => reviewer.id);
9
+ if (!reviewerIds) {
10
+ return false;
11
+ }
12
+ return stringArrayHas(reviewerIds, filter.teamId, true);
13
+ };
14
+ }
15
+
16
+ export { createAssignedToTeamFilter };
17
+ //# sourceMappingURL=assignedToTeamFilter.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assignedToTeamFilter.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/filters/assignedToTeamFilter.ts"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { DashboardPullRequest } from '@backstage-community/plugin-azure-devops-common';\nimport { BaseFilter, FilterType, PullRequestFilter } from './types';\nimport { stringArrayHas } from '../../../../utils';\n\n/** @public */\nexport type AssignedToTeamFilter = BaseFilter & {\n type: FilterType.AssignedToTeam;\n teamId: string;\n};\n\nexport function createAssignedToTeamFilter(\n filter: AssignedToTeamFilter,\n): PullRequestFilter {\n return (pullRequest: DashboardPullRequest): boolean => {\n const reviewerIds = pullRequest.reviewers?.map(reviewer => reviewer.id);\n\n if (!reviewerIds) {\n return false;\n }\n\n return stringArrayHas(reviewerIds, filter.teamId, true);\n };\n}\n"],"names":[],"mappings":";;;;;AA0BO,SAAS,2BACd,MACmB,EAAA;AACnB,EAAA,OAAO,CAAC,WAA+C,KAAA;AACrD,IAAA,MAAM,cAAc,WAAY,CAAA,SAAA,EAAW,GAAI,CAAA,CAAA,QAAA,KAAY,SAAS,EAAE,CAAA,CAAA;AAEtE,IAAA,IAAI,CAAC,WAAa,EAAA;AAChB,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,OAAO,cAAe,CAAA,WAAA,EAAa,MAAO,CAAA,MAAA,EAAQ,IAAI,CAAA,CAAA;AAAA,GACxD,CAAA;AACF;;;;"}
@@ -0,0 +1,20 @@
1
+ import { FilterType } from './types.esm.js';
2
+ import { createAssignedToTeamFilter } from './assignedToTeamFilter.esm.js';
3
+
4
+ function createAssignedToTeamsFilter(filter) {
5
+ const teamIds = filter.teamIds;
6
+ return (pullRequest) => {
7
+ if (!teamIds) {
8
+ return false;
9
+ }
10
+ return teamIds.some((teamId) => {
11
+ return createAssignedToTeamFilter({
12
+ type: FilterType.AssignedToTeam,
13
+ teamId
14
+ })(pullRequest);
15
+ });
16
+ };
17
+ }
18
+
19
+ export { createAssignedToTeamsFilter };
20
+ //# sourceMappingURL=assignedToTeamsFilter.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assignedToTeamsFilter.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/filters/assignedToTeamsFilter.ts"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { DashboardPullRequest } from '@backstage-community/plugin-azure-devops-common';\nimport { BaseFilter, FilterType, PullRequestFilter } from './types';\nimport { createAssignedToTeamFilter } from './assignedToTeamFilter';\n\n/** @public */\nexport type AssignedToTeamsFilter = BaseFilter &\n (\n | {\n type: FilterType.AssignedToTeams;\n teamIds: string[];\n }\n | {\n type: FilterType.AssignedToCurrentUsersTeams;\n teamIds?: string[];\n }\n );\n\nexport function createAssignedToTeamsFilter(\n filter: AssignedToTeamsFilter,\n): PullRequestFilter {\n const teamIds = filter.teamIds;\n\n return (pullRequest: DashboardPullRequest): boolean => {\n if (!teamIds) {\n return false;\n }\n\n return teamIds.some(teamId => {\n return createAssignedToTeamFilter({\n type: FilterType.AssignedToTeam,\n teamId,\n })(pullRequest);\n });\n };\n}\n"],"names":[],"mappings":";;;AAiCO,SAAS,4BACd,MACmB,EAAA;AACnB,EAAA,MAAM,UAAU,MAAO,CAAA,OAAA,CAAA;AAEvB,EAAA,OAAO,CAAC,WAA+C,KAAA;AACrD,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,OAAA,CAAQ,KAAK,CAAU,MAAA,KAAA;AAC5B,MAAA,OAAO,0BAA2B,CAAA;AAAA,QAChC,MAAM,UAAW,CAAA,cAAA;AAAA,QACjB,MAAA;AAAA,OACD,EAAE,WAAW,CAAA,CAAA;AAAA,KACf,CAAA,CAAA;AAAA,GACH,CAAA;AACF;;;;"}
@@ -0,0 +1,20 @@
1
+ import { stringArrayHas } from '../../../../utils/arrayHas.esm.js';
2
+ import 'luxon';
3
+ import 'humanize-duration';
4
+ import '@backstage-community/plugin-azure-devops-common';
5
+
6
+ function createAssignedToUserFilter(filter) {
7
+ const email = filter.email;
8
+ return (pullRequest) => {
9
+ const uniqueNames = pullRequest.reviewers?.map(
10
+ (reviewer) => reviewer.uniqueName
11
+ );
12
+ if (!email || !uniqueNames) {
13
+ return false;
14
+ }
15
+ return stringArrayHas(uniqueNames, email, true);
16
+ };
17
+ }
18
+
19
+ export { createAssignedToUserFilter };
20
+ //# sourceMappingURL=assignedToUserFilter.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assignedToUserFilter.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/filters/assignedToUserFilter.ts"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { DashboardPullRequest } from '@backstage-community/plugin-azure-devops-common';\nimport { BaseFilter, FilterType, PullRequestFilter } from './types';\nimport { stringArrayHas } from '../../../../utils';\n\n/** @public */\nexport type AssignedToUserFilter = BaseFilter &\n (\n | {\n type: FilterType.AssignedToUser;\n email: string;\n }\n | {\n type: FilterType.AssignedToCurrentUser;\n email?: string;\n }\n );\n\nexport function createAssignedToUserFilter(\n filter: AssignedToUserFilter,\n): PullRequestFilter {\n const email = filter.email;\n\n return (pullRequest: DashboardPullRequest): boolean => {\n const uniqueNames = pullRequest.reviewers?.map(\n reviewer => reviewer.uniqueName,\n );\n\n if (!email || !uniqueNames) {\n return false;\n }\n\n return stringArrayHas(uniqueNames, email, true);\n };\n}\n"],"names":[],"mappings":";;;;;AAiCO,SAAS,2BACd,MACmB,EAAA;AACnB,EAAA,MAAM,QAAQ,MAAO,CAAA,KAAA,CAAA;AAErB,EAAA,OAAO,CAAC,WAA+C,KAAA;AACrD,IAAM,MAAA,WAAA,GAAc,YAAY,SAAW,EAAA,GAAA;AAAA,MACzC,cAAY,QAAS,CAAA,UAAA;AAAA,KACvB,CAAA;AAEA,IAAI,IAAA,CAAC,KAAS,IAAA,CAAC,WAAa,EAAA;AAC1B,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,cAAA,CAAe,WAAa,EAAA,KAAA,EAAO,IAAI,CAAA,CAAA;AAAA,GAChD,CAAA;AACF;;;;"}
@@ -0,0 +1,45 @@
1
+ import { FilterType } from './types.esm.js';
2
+ import { createAllFilter } from './allFilter.esm.js';
3
+ import { createAssignedToTeamFilter } from './assignedToTeamFilter.esm.js';
4
+ import { createAssignedToTeamsFilter } from './assignedToTeamsFilter.esm.js';
5
+ import { createAssignedToUserFilter } from './assignedToUserFilter.esm.js';
6
+ import { createCreatedByTeamFilter } from './createdByTeamFilter.esm.js';
7
+ import { createCreatedByTeamsFilter } from './createdByTeamsFilter.esm.js';
8
+ import { createCreatedByUserFilter } from './createdByUserFilter.esm.js';
9
+
10
+ function createFilter(filters) {
11
+ const mapFilter = (filter) => {
12
+ switch (filter.type) {
13
+ case FilterType.AssignedToUser:
14
+ case FilterType.AssignedToCurrentUser:
15
+ return createAssignedToUserFilter(filter);
16
+ case FilterType.CreatedByUser:
17
+ case FilterType.CreatedByCurrentUser:
18
+ return createCreatedByUserFilter(filter);
19
+ case FilterType.AssignedToTeam:
20
+ return createAssignedToTeamFilter(filter);
21
+ case FilterType.CreatedByTeam:
22
+ return createCreatedByTeamFilter(filter);
23
+ case FilterType.AssignedToTeams:
24
+ case FilterType.AssignedToCurrentUsersTeams:
25
+ return createAssignedToTeamsFilter(filter);
26
+ case FilterType.CreatedByTeams:
27
+ case FilterType.CreatedByCurrentUsersTeams:
28
+ return createCreatedByTeamsFilter(filter);
29
+ case FilterType.All:
30
+ return createAllFilter();
31
+ default:
32
+ return (_) => false;
33
+ }
34
+ };
35
+ if (Array.isArray(filters)) {
36
+ if (filters.length === 1) {
37
+ return mapFilter(filters[0]);
38
+ }
39
+ return (pullRequest) => filters.every((filter) => mapFilter(filter)(pullRequest));
40
+ }
41
+ return mapFilter(filters);
42
+ }
43
+
44
+ export { createFilter };
45
+ //# sourceMappingURL=createFilter.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFilter.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/filters/createFilter.ts"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { Filter, FilterType, PullRequestFilter } from './types';\n\nimport { DashboardPullRequest } from '@backstage-community/plugin-azure-devops-common';\nimport { createAllFilter } from './allFilter';\nimport { createAssignedToTeamFilter } from './assignedToTeamFilter';\nimport { createAssignedToTeamsFilter } from './assignedToTeamsFilter';\nimport { createAssignedToUserFilter } from './assignedToUserFilter';\nimport { createCreatedByTeamFilter } from './createdByTeamFilter';\nimport { createCreatedByTeamsFilter } from './createdByTeamsFilter';\nimport { createCreatedByUserFilter } from './createdByUserFilter';\n\nexport function createFilter(filters: Filter | Filter[]): PullRequestFilter {\n const mapFilter = (filter: Filter): PullRequestFilter => {\n switch (filter.type) {\n case FilterType.AssignedToUser:\n case FilterType.AssignedToCurrentUser:\n return createAssignedToUserFilter(filter);\n\n case FilterType.CreatedByUser:\n case FilterType.CreatedByCurrentUser:\n return createCreatedByUserFilter(filter);\n\n case FilterType.AssignedToTeam:\n return createAssignedToTeamFilter(filter);\n\n case FilterType.CreatedByTeam:\n return createCreatedByTeamFilter(filter);\n\n case FilterType.AssignedToTeams:\n case FilterType.AssignedToCurrentUsersTeams:\n return createAssignedToTeamsFilter(filter);\n\n case FilterType.CreatedByTeams:\n case FilterType.CreatedByCurrentUsersTeams:\n return createCreatedByTeamsFilter(filter);\n\n case FilterType.All:\n return createAllFilter();\n\n default:\n return _ => false;\n }\n };\n\n if (Array.isArray(filters)) {\n if (filters.length === 1) {\n return mapFilter(filters[0]);\n }\n\n return (pullRequest: DashboardPullRequest): boolean =>\n filters.every(filter => mapFilter(filter)(pullRequest));\n }\n\n return mapFilter(filters);\n}\n"],"names":[],"mappings":";;;;;;;;;AA2BO,SAAS,aAAa,OAA+C,EAAA;AAC1E,EAAM,MAAA,SAAA,GAAY,CAAC,MAAsC,KAAA;AACvD,IAAA,QAAQ,OAAO,IAAM;AAAA,MACnB,KAAK,UAAW,CAAA,cAAA,CAAA;AAAA,MAChB,KAAK,UAAW,CAAA,qBAAA;AACd,QAAA,OAAO,2BAA2B,MAAM,CAAA,CAAA;AAAA,MAE1C,KAAK,UAAW,CAAA,aAAA,CAAA;AAAA,MAChB,KAAK,UAAW,CAAA,oBAAA;AACd,QAAA,OAAO,0BAA0B,MAAM,CAAA,CAAA;AAAA,MAEzC,KAAK,UAAW,CAAA,cAAA;AACd,QAAA,OAAO,2BAA2B,MAAM,CAAA,CAAA;AAAA,MAE1C,KAAK,UAAW,CAAA,aAAA;AACd,QAAA,OAAO,0BAA0B,MAAM,CAAA,CAAA;AAAA,MAEzC,KAAK,UAAW,CAAA,eAAA,CAAA;AAAA,MAChB,KAAK,UAAW,CAAA,2BAAA;AACd,QAAA,OAAO,4BAA4B,MAAM,CAAA,CAAA;AAAA,MAE3C,KAAK,UAAW,CAAA,cAAA,CAAA;AAAA,MAChB,KAAK,UAAW,CAAA,0BAAA;AACd,QAAA,OAAO,2BAA2B,MAAM,CAAA,CAAA;AAAA,MAE1C,KAAK,UAAW,CAAA,GAAA;AACd,QAAA,OAAO,eAAgB,EAAA,CAAA;AAAA,MAEzB;AACE,QAAA,OAAO,CAAK,CAAA,KAAA,KAAA,CAAA;AAAA,KAChB;AAAA,GACF,CAAA;AAEA,EAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,OAAO,CAAG,EAAA;AAC1B,IAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,MAAO,OAAA,SAAA,CAAU,OAAQ,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,KAC7B;AAEA,IAAO,OAAA,CAAC,gBACN,OAAQ,CAAA,KAAA,CAAM,YAAU,SAAU,CAAA,MAAM,CAAE,CAAA,WAAW,CAAC,CAAA,CAAA;AAAA,GAC1D;AAEA,EAAA,OAAO,UAAU,OAAO,CAAA,CAAA;AAC1B;;;;"}
@@ -0,0 +1,17 @@
1
+ import { stringArrayHas } from '../../../../utils/arrayHas.esm.js';
2
+ import 'luxon';
3
+ import 'humanize-duration';
4
+ import '@backstage-community/plugin-azure-devops-common';
5
+
6
+ function createCreatedByTeamFilter(filter) {
7
+ return (pullRequest) => {
8
+ const [createdByTeams, team] = "teamId" in filter ? [pullRequest.createdBy?.teamIds, filter.teamId] : [pullRequest.createdBy?.teamNames, filter.teamName];
9
+ if (!createdByTeams) {
10
+ return false;
11
+ }
12
+ return stringArrayHas(createdByTeams, team, true);
13
+ };
14
+ }
15
+
16
+ export { createCreatedByTeamFilter };
17
+ //# sourceMappingURL=createdByTeamFilter.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createdByTeamFilter.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/filters/createdByTeamFilter.ts"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { DashboardPullRequest } from '@backstage-community/plugin-azure-devops-common';\nimport { BaseFilter, FilterType, PullRequestFilter } from './types';\nimport { stringArrayHas } from '../../../../utils';\n\n/** @public */\nexport type CreatedByTeamFilter = BaseFilter &\n ({\n type: FilterType.CreatedByTeam;\n } & ({ teamId: string } | { teamName: string }));\n\nexport function createCreatedByTeamFilter(\n filter: CreatedByTeamFilter,\n): PullRequestFilter {\n return (pullRequest: DashboardPullRequest): boolean => {\n const [createdByTeams, team] =\n 'teamId' in filter\n ? [pullRequest.createdBy?.teamIds, filter.teamId]\n : [pullRequest.createdBy?.teamNames, filter.teamName];\n\n if (!createdByTeams) {\n return false;\n }\n\n return stringArrayHas(createdByTeams, team, true);\n };\n}\n"],"names":[],"mappings":";;;;;AA0BO,SAAS,0BACd,MACmB,EAAA;AACnB,EAAA,OAAO,CAAC,WAA+C,KAAA;AACrD,IAAA,MAAM,CAAC,cAAgB,EAAA,IAAI,IACzB,QAAY,IAAA,MAAA,GACR,CAAC,WAAY,CAAA,SAAA,EAAW,OAAS,EAAA,MAAA,CAAO,MAAM,CAC9C,GAAA,CAAC,YAAY,SAAW,EAAA,SAAA,EAAW,OAAO,QAAQ,CAAA,CAAA;AAExD,IAAA,IAAI,CAAC,cAAgB,EAAA;AACnB,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,cAAA,CAAe,cAAgB,EAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,GAClD,CAAA;AACF;;;;"}
@@ -0,0 +1,32 @@
1
+ import { FilterType } from './types.esm.js';
2
+ import { createCreatedByTeamFilter } from './createdByTeamFilter.esm.js';
3
+
4
+ function createCreatedByTeamsFilter(filter) {
5
+ return (pullRequest) => {
6
+ if ("teamNames" in filter) {
7
+ const teamNames = filter.teamNames;
8
+ if (!teamNames) {
9
+ return false;
10
+ }
11
+ return teamNames.some((teamName) => {
12
+ return createCreatedByTeamFilter({
13
+ type: FilterType.CreatedByTeam,
14
+ teamName
15
+ })(pullRequest);
16
+ });
17
+ }
18
+ const teamIds = filter.teamIds;
19
+ if (!teamIds) {
20
+ return false;
21
+ }
22
+ return teamIds.some((teamId) => {
23
+ return createCreatedByTeamFilter({
24
+ type: FilterType.CreatedByTeam,
25
+ teamId
26
+ })(pullRequest);
27
+ });
28
+ };
29
+ }
30
+
31
+ export { createCreatedByTeamsFilter };
32
+ //# sourceMappingURL=createdByTeamsFilter.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createdByTeamsFilter.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/filters/createdByTeamsFilter.ts"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { DashboardPullRequest } from '@backstage-community/plugin-azure-devops-common';\nimport { BaseFilter, FilterType, PullRequestFilter } from './types';\nimport { createCreatedByTeamFilter } from './createdByTeamFilter';\n\n/** @public */\nexport type CreatedByTeamsFilter = BaseFilter &\n (\n | ({\n type: FilterType.CreatedByTeams;\n } & ({ teamIds: string[] } | { teamNames: string[] }))\n | {\n type: FilterType.CreatedByCurrentUsersTeams;\n teamIds?: string[];\n }\n );\n\nexport function createCreatedByTeamsFilter(\n filter: CreatedByTeamsFilter,\n): PullRequestFilter {\n return (pullRequest: DashboardPullRequest): boolean => {\n if ('teamNames' in filter) {\n const teamNames = filter.teamNames;\n\n if (!teamNames) {\n return false;\n }\n\n return teamNames.some(teamName => {\n return createCreatedByTeamFilter({\n type: FilterType.CreatedByTeam,\n teamName,\n })(pullRequest);\n });\n }\n\n const teamIds = filter.teamIds;\n\n if (!teamIds) {\n return false;\n }\n\n return teamIds.some(teamId => {\n return createCreatedByTeamFilter({\n type: FilterType.CreatedByTeam,\n teamId,\n })(pullRequest);\n });\n };\n}\n"],"names":[],"mappings":";;;AAgCO,SAAS,2BACd,MACmB,EAAA;AACnB,EAAA,OAAO,CAAC,WAA+C,KAAA;AACrD,IAAA,IAAI,eAAe,MAAQ,EAAA;AACzB,MAAA,MAAM,YAAY,MAAO,CAAA,SAAA,CAAA;AAEzB,MAAA,IAAI,CAAC,SAAW,EAAA;AACd,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAEA,MAAO,OAAA,SAAA,CAAU,KAAK,CAAY,QAAA,KAAA;AAChC,QAAA,OAAO,yBAA0B,CAAA;AAAA,UAC/B,MAAM,UAAW,CAAA,aAAA;AAAA,UACjB,QAAA;AAAA,SACD,EAAE,WAAW,CAAA,CAAA;AAAA,OACf,CAAA,CAAA;AAAA,KACH;AAEA,IAAA,MAAM,UAAU,MAAO,CAAA,OAAA,CAAA;AAEvB,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,OAAA,CAAQ,KAAK,CAAU,MAAA,KAAA;AAC5B,MAAA,OAAO,yBAA0B,CAAA;AAAA,QAC/B,MAAM,UAAW,CAAA,aAAA;AAAA,QACjB,MAAA;AAAA,OACD,EAAE,WAAW,CAAA,CAAA;AAAA,KACf,CAAA,CAAA;AAAA,GACH,CAAA;AACF;;;;"}
@@ -0,0 +1,18 @@
1
+ import { equalsIgnoreCase } from '../../../../utils/equalsIgnoreCase.esm.js';
2
+ import 'luxon';
3
+ import 'humanize-duration';
4
+ import '@backstage-community/plugin-azure-devops-common';
5
+
6
+ function createCreatedByUserFilter(filter) {
7
+ const email = filter.email;
8
+ return (pullRequest) => {
9
+ const uniqueName = pullRequest.createdBy?.uniqueName;
10
+ if (!email || !uniqueName) {
11
+ return false;
12
+ }
13
+ return equalsIgnoreCase(email, uniqueName);
14
+ };
15
+ }
16
+
17
+ export { createCreatedByUserFilter };
18
+ //# sourceMappingURL=createdByUserFilter.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createdByUserFilter.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/filters/createdByUserFilter.ts"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { DashboardPullRequest } from '@backstage-community/plugin-azure-devops-common';\nimport { BaseFilter, FilterType, PullRequestFilter } from './types';\nimport { equalsIgnoreCase } from '../../../../utils';\n\n/** @public */\nexport type CreatedByUserFilter = BaseFilter &\n (\n | {\n type: FilterType.CreatedByUser;\n email: string;\n }\n | {\n type: FilterType.CreatedByCurrentUser;\n email?: string;\n }\n );\n\nexport function createCreatedByUserFilter(\n filter: CreatedByUserFilter,\n): PullRequestFilter {\n const email = filter.email;\n\n return (pullRequest: DashboardPullRequest): boolean => {\n const uniqueName = pullRequest.createdBy?.uniqueName;\n\n if (!email || !uniqueName) {\n return false;\n }\n\n return equalsIgnoreCase(email, uniqueName);\n };\n}\n"],"names":[],"mappings":";;;;;AAiCO,SAAS,0BACd,MACmB,EAAA;AACnB,EAAA,MAAM,QAAQ,MAAO,CAAA,KAAA,CAAA;AAErB,EAAA,OAAO,CAAC,WAA+C,KAAA;AACrD,IAAM,MAAA,UAAA,GAAa,YAAY,SAAW,EAAA,UAAA,CAAA;AAE1C,IAAI,IAAA,CAAC,KAAS,IAAA,CAAC,UAAY,EAAA;AACzB,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAO,OAAA,gBAAA,CAAiB,OAAO,UAAU,CAAA,CAAA;AAAA,GAC3C,CAAA;AACF;;;;"}
@@ -0,0 +1,17 @@
1
+ var FilterType = /* @__PURE__ */ ((FilterType2) => {
2
+ FilterType2["All"] = "All";
3
+ FilterType2["AssignedToUser"] = "AssignedToUser";
4
+ FilterType2["AssignedToCurrentUser"] = "AssignedToCurrentUser";
5
+ FilterType2["AssignedToTeam"] = "AssignedToTeam";
6
+ FilterType2["AssignedToTeams"] = "AssignedToTeams";
7
+ FilterType2["AssignedToCurrentUsersTeams"] = "AssignedToCurrentUsersTeams";
8
+ FilterType2["CreatedByUser"] = "CreatedByUser";
9
+ FilterType2["CreatedByCurrentUser"] = "CreatedByCurrentUser";
10
+ FilterType2["CreatedByTeam"] = "CreatedByTeam";
11
+ FilterType2["CreatedByTeams"] = "CreatedByTeams";
12
+ FilterType2["CreatedByCurrentUsersTeams"] = "CreatedByCurrentUsersTeams";
13
+ return FilterType2;
14
+ })(FilterType || {});
15
+
16
+ export { FilterType };
17
+ //# sourceMappingURL=types.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/filters/types.ts"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { AllFilter } from './allFilter';\nimport { AssignedToTeamFilter } from './assignedToTeamFilter';\nimport { AssignedToTeamsFilter } from './assignedToTeamsFilter';\nimport { AssignedToUserFilter } from './assignedToUserFilter';\nimport { CreatedByTeamFilter } from './createdByTeamFilter';\nimport { CreatedByTeamsFilter } from './createdByTeamsFilter';\nimport { CreatedByUserFilter } from './createdByUserFilter';\nimport { DashboardPullRequest } from '@backstage-community/plugin-azure-devops-common';\n\n/** @public */\nexport enum FilterType {\n All = 'All',\n\n // Assigned To\n AssignedToUser = 'AssignedToUser',\n AssignedToCurrentUser = 'AssignedToCurrentUser',\n AssignedToTeam = 'AssignedToTeam',\n AssignedToTeams = 'AssignedToTeams',\n AssignedToCurrentUsersTeams = 'AssignedToCurrentUsersTeams',\n\n // Created By\n CreatedByUser = 'CreatedByUser',\n CreatedByCurrentUser = 'CreatedByCurrentUser',\n CreatedByTeam = 'CreatedByTeam',\n CreatedByTeams = 'CreatedByTeams',\n CreatedByCurrentUsersTeams = 'CreatedByCurrentUsersTeams',\n}\n\n/** @public */\nexport const FilterTypes = [\n FilterType.All,\n\n FilterType.AssignedToUser,\n FilterType.AssignedToCurrentUser,\n FilterType.AssignedToTeam,\n FilterType.AssignedToTeams,\n FilterType.AssignedToCurrentUsersTeams,\n\n FilterType.CreatedByUser,\n FilterType.CreatedByCurrentUser,\n FilterType.CreatedByTeam,\n FilterType.CreatedByTeams,\n FilterType.CreatedByCurrentUsersTeams,\n] as const;\n\n/** @public */\nexport type BaseFilter = {\n type: FilterType;\n};\n\n/** @public */\nexport type Filter =\n | AssignedToUserFilter\n | CreatedByUserFilter\n | AssignedToTeamFilter\n | CreatedByTeamFilter\n | AssignedToTeamsFilter\n | CreatedByTeamsFilter\n | AllFilter;\n\nexport type {\n AssignedToUserFilter,\n CreatedByUserFilter,\n AssignedToTeamFilter,\n CreatedByTeamFilter,\n AssignedToTeamsFilter,\n CreatedByTeamsFilter,\n AllFilter,\n};\n\n/** @public */\nexport type PullRequestFilter = (pullRequest: DashboardPullRequest) => boolean;\n"],"names":["FilterType"],"mappings":"AA0BY,IAAA,UAAA,qBAAAA,WAAL,KAAA;AACL,EAAAA,YAAA,KAAM,CAAA,GAAA,KAAA,CAAA;AAGN,EAAAA,YAAA,gBAAiB,CAAA,GAAA,gBAAA,CAAA;AACjB,EAAAA,YAAA,uBAAwB,CAAA,GAAA,uBAAA,CAAA;AACxB,EAAAA,YAAA,gBAAiB,CAAA,GAAA,gBAAA,CAAA;AACjB,EAAAA,YAAA,iBAAkB,CAAA,GAAA,iBAAA,CAAA;AAClB,EAAAA,YAAA,6BAA8B,CAAA,GAAA,6BAAA,CAAA;AAG9B,EAAAA,YAAA,eAAgB,CAAA,GAAA,eAAA,CAAA;AAChB,EAAAA,YAAA,sBAAuB,CAAA,GAAA,sBAAA,CAAA;AACvB,EAAAA,YAAA,eAAgB,CAAA,GAAA,eAAA,CAAA;AAChB,EAAAA,YAAA,gBAAiB,CAAA,GAAA,gBAAA,CAAA;AACjB,EAAAA,YAAA,4BAA6B,CAAA,GAAA,4BAAA,CAAA;AAfnB,EAAAA,OAAAA,WAAAA,CAAAA;AAAA,CAAA,EAAA,UAAA,IAAA,EAAA;;;;"}
@@ -0,0 +1,37 @@
1
+ import { FilterType } from '../filters/types.esm.js';
2
+ import 'luxon';
3
+ import 'humanize-duration';
4
+ import '@backstage-community/plugin-azure-devops-common';
5
+ import '../../../../api/AzureDevOpsApi.esm.js';
6
+ import '@backstage/errors';
7
+ import '@backstage/core-plugin-api';
8
+ import 'react-use/esm/useAsync';
9
+ import 'react-use/esm/useAsyncRetry';
10
+ import 'react-use/esm/useInterval';
11
+ import 'react';
12
+ import '@backstage/catalog-model';
13
+ import { useUserEmail } from '../../../../hooks/useUserEmail.esm.js';
14
+ import { useUserTeamIds } from '../../../../hooks/useUserTeamIds.esm.js';
15
+
16
+ function useFilterProcessor() {
17
+ const userEmail = useUserEmail();
18
+ const { teamIds } = useUserTeamIds(userEmail);
19
+ return (filters) => {
20
+ for (const filter of filters) {
21
+ switch (filter.type) {
22
+ case FilterType.AssignedToCurrentUser:
23
+ case FilterType.CreatedByCurrentUser:
24
+ filter.email = userEmail;
25
+ break;
26
+ case FilterType.AssignedToCurrentUsersTeams:
27
+ case FilterType.CreatedByCurrentUsersTeams:
28
+ filter.teamIds = teamIds;
29
+ break;
30
+ }
31
+ }
32
+ return filters;
33
+ };
34
+ }
35
+
36
+ export { useFilterProcessor };
37
+ //# sourceMappingURL=useFilterProcessor.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFilterProcessor.esm.js","sources":["../../../../../src/components/PullRequestsPage/lib/hooks/useFilterProcessor.ts"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport { Filter, FilterType } from '../filters';\nimport { useUserEmail, useUserTeamIds } from '../../../../hooks';\n\nexport function useFilterProcessor(): (filters: Filter[]) => Filter[] {\n const userEmail = useUserEmail();\n const { teamIds } = useUserTeamIds(userEmail);\n\n return (filters: Filter[]): Filter[] => {\n for (const filter of filters) {\n switch (filter.type) {\n case FilterType.AssignedToCurrentUser:\n case FilterType.CreatedByCurrentUser:\n filter.email = userEmail;\n break;\n\n case FilterType.AssignedToCurrentUsersTeams:\n case FilterType.CreatedByCurrentUsersTeams:\n filter.teamIds = teamIds;\n break;\n\n default:\n break;\n }\n }\n\n return filters;\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAmBO,SAAS,kBAAsD,GAAA;AACpE,EAAA,MAAM,YAAY,YAAa,EAAA,CAAA;AAC/B,EAAA,MAAM,EAAE,OAAA,EAAY,GAAA,cAAA,CAAe,SAAS,CAAA,CAAA;AAE5C,EAAA,OAAO,CAAC,OAAgC,KAAA;AACtC,IAAA,KAAA,MAAW,UAAU,OAAS,EAAA;AAC5B,MAAA,QAAQ,OAAO,IAAM;AAAA,QACnB,KAAK,UAAW,CAAA,qBAAA,CAAA;AAAA,QAChB,KAAK,UAAW,CAAA,oBAAA;AACd,UAAA,MAAA,CAAO,KAAQ,GAAA,SAAA,CAAA;AACf,UAAA,MAAA;AAAA,QAEF,KAAK,UAAW,CAAA,2BAAA,CAAA;AAAA,QAChB,KAAK,UAAW,CAAA,0BAAA;AACd,UAAA,MAAA,CAAO,OAAU,GAAA,OAAA,CAAA;AACjB,UAAA,MAAA;AAGA,OACJ;AAAA,KACF;AAEA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT,CAAA;AACF;;;;"}
@@ -0,0 +1,47 @@
1
+ import { PullRequestVoteStatus } from '@backstage-community/plugin-azure-devops-common';
2
+ import { createFilter } from './filters/createFilter.esm.js';
3
+
4
+ function reviewerFilter(reviewer) {
5
+ return reviewer.voteStatus === PullRequestVoteStatus.NoVote ? !!reviewer.isRequired : !reviewer.isContainer;
6
+ }
7
+ function arrayExtract(arr, filter) {
8
+ const extractedValues = [];
9
+ for (let i = 0; i - extractedValues.length < arr.length; i++) {
10
+ const offsetIndex = i - extractedValues.length;
11
+ const value = arr[offsetIndex];
12
+ if (filter(value)) {
13
+ arr.splice(offsetIndex, 1);
14
+ extractedValues.push(value);
15
+ }
16
+ }
17
+ return extractedValues;
18
+ }
19
+ function getPullRequestGroups(pullRequests, configs) {
20
+ if (!pullRequests) {
21
+ return void 0;
22
+ }
23
+ const remainingPullRequests = [...pullRequests];
24
+ const pullRequestGroups = [];
25
+ configs.forEach(({ title, filter: configFilter, simplified }) => {
26
+ const groupPullRequests = arrayExtract(remainingPullRequests, configFilter);
27
+ pullRequestGroups.push({
28
+ title,
29
+ pullRequests: groupPullRequests,
30
+ simplified
31
+ });
32
+ });
33
+ return pullRequestGroups;
34
+ }
35
+ function getPullRequestGroupConfigs(columnConfigs, filterProcessor) {
36
+ return columnConfigs.map((columnConfig) => {
37
+ const filters = filterProcessor(columnConfig.filters);
38
+ return {
39
+ title: columnConfig.title,
40
+ filter: createFilter(filters),
41
+ simplified: columnConfig.simplified
42
+ };
43
+ });
44
+ }
45
+
46
+ export { arrayExtract, getPullRequestGroupConfigs, getPullRequestGroups, reviewerFilter };
47
+ //# sourceMappingURL=utils.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.esm.js","sources":["../../../../src/components/PullRequestsPage/lib/utils.ts"],"sourcesContent":["/*\n * Copyright 2021 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 */\n\nimport {\n DashboardPullRequest,\n PullRequestVoteStatus,\n Reviewer,\n} from '@backstage-community/plugin-azure-devops-common';\nimport { Filter, createFilter } from './filters';\nimport {\n PullRequestColumnConfig,\n PullRequestGroup,\n PullRequestGroupConfig,\n} from './types';\n\n/**\n * Filters a reviewer based on vote status and if the reviewer is required.\n * @param reviewer - a reviewer to filter.\n * @returns whether or not to filter the `reviewer`.\n */\nexport function reviewerFilter(reviewer: Reviewer): boolean {\n return reviewer.voteStatus === PullRequestVoteStatus.NoVote\n ? !!reviewer.isRequired\n : !reviewer.isContainer;\n}\n\n/**\n * Removes values from the provided array and returns them.\n * @param arr - the array to extract values from.\n * @param filter - a filter used to extract values from the provided array.\n * @returns the values that were extracted from the array.\n *\n * @example\n * ```ts\n * const numbers = [1, 2, 3, 4, 5, 6];\n * const numberFilter = (num: number): boolean => num > 3;\n * const extractedNumbers = arrayExtract(numbers, numberFilter);\n * console.log(numbers); // [1, 2, 3]\n * console.log(extractedNumbers); // [4, 5, 6]\n * ```\n *\n * @example\n * ```ts\n * const numbers = [1, 2, 3, 4, 5, 6];\n * const numberFilter = (num: number): boolean => num % 2 === 0;\n * const extractedNumbers = arrayExtract(numbers, numberFilter);\n * console.log(numbers); // [1, 3, 5]\n * console.log(extractedNumbers); // [2, 4, 6]\n * ```\n */\nexport function arrayExtract<T>(arr: T[], filter: (value: T) => unknown): T[] {\n const extractedValues: T[] = [];\n\n for (let i = 0; i - extractedValues.length < arr.length; i++) {\n const offsetIndex = i - extractedValues.length;\n\n const value = arr[offsetIndex];\n\n if (filter(value)) {\n arr.splice(offsetIndex, 1);\n extractedValues.push(value);\n }\n }\n\n return extractedValues;\n}\n\n/**\n * Creates groups of pull requests based on a list of `PullRequestGroupConfig`.\n * @param pullRequests - all pull requests to be split up into groups.\n * @param configs - the config used for splitting up the pull request groups.\n * @returns a list of pull request groups.\n */\nexport function getPullRequestGroups(\n pullRequests: DashboardPullRequest[] | undefined,\n configs: PullRequestGroupConfig[],\n): PullRequestGroup[] | undefined {\n if (!pullRequests) {\n return undefined;\n }\n\n const remainingPullRequests: DashboardPullRequest[] = [...pullRequests];\n const pullRequestGroups: PullRequestGroup[] = [];\n\n configs.forEach(({ title, filter: configFilter, simplified }) => {\n const groupPullRequests = arrayExtract(remainingPullRequests, configFilter);\n\n pullRequestGroups.push({\n title,\n pullRequests: groupPullRequests,\n simplified,\n });\n });\n\n return pullRequestGroups;\n}\n\nexport function getPullRequestGroupConfigs(\n columnConfigs: PullRequestColumnConfig[],\n filterProcessor: (filters: Filter[]) => Filter[],\n): PullRequestGroupConfig[] {\n return columnConfigs.map(columnConfig => {\n const filters = filterProcessor(columnConfig.filters);\n return {\n title: columnConfig.title,\n filter: createFilter(filters),\n simplified: columnConfig.simplified,\n };\n });\n}\n"],"names":[],"mappings":";;;AAiCO,SAAS,eAAe,QAA6B,EAAA;AAC1D,EAAO,OAAA,QAAA,CAAS,eAAe,qBAAsB,CAAA,MAAA,GACjD,CAAC,CAAC,QAAA,CAAS,UACX,GAAA,CAAC,QAAS,CAAA,WAAA,CAAA;AAChB,CAAA;AA0BgB,SAAA,YAAA,CAAgB,KAAU,MAAoC,EAAA;AAC5E,EAAA,MAAM,kBAAuB,EAAC,CAAA;AAE9B,EAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,gBAAgB,MAAS,GAAA,GAAA,CAAI,QAAQ,CAAK,EAAA,EAAA;AAC5D,IAAM,MAAA,WAAA,GAAc,IAAI,eAAgB,CAAA,MAAA,CAAA;AAExC,IAAM,MAAA,KAAA,GAAQ,IAAI,WAAW,CAAA,CAAA;AAE7B,IAAI,IAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AACjB,MAAI,GAAA,CAAA,MAAA,CAAO,aAAa,CAAC,CAAA,CAAA;AACzB,MAAA,eAAA,CAAgB,KAAK,KAAK,CAAA,CAAA;AAAA,KAC5B;AAAA,GACF;AAEA,EAAO,OAAA,eAAA,CAAA;AACT,CAAA;AAQgB,SAAA,oBAAA,CACd,cACA,OACgC,EAAA;AAChC,EAAA,IAAI,CAAC,YAAc,EAAA;AACjB,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AAEA,EAAM,MAAA,qBAAA,GAAgD,CAAC,GAAG,YAAY,CAAA,CAAA;AACtE,EAAA,MAAM,oBAAwC,EAAC,CAAA;AAE/C,EAAA,OAAA,CAAQ,QAAQ,CAAC,EAAE,OAAO,MAAQ,EAAA,YAAA,EAAc,YAAiB,KAAA;AAC/D,IAAM,MAAA,iBAAA,GAAoB,YAAa,CAAA,qBAAA,EAAuB,YAAY,CAAA,CAAA;AAE1E,IAAA,iBAAA,CAAkB,IAAK,CAAA;AAAA,MACrB,KAAA;AAAA,MACA,YAAc,EAAA,iBAAA;AAAA,MACd,UAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACF,CAAA,CAAA;AAED,EAAO,OAAA,iBAAA,CAAA;AACT,CAAA;AAEgB,SAAA,0BAAA,CACd,eACA,eAC0B,EAAA;AAC1B,EAAO,OAAA,aAAA,CAAc,IAAI,CAAgB,YAAA,KAAA;AACvC,IAAM,MAAA,OAAA,GAAU,eAAgB,CAAA,YAAA,CAAa,OAAO,CAAA,CAAA;AACpD,IAAO,OAAA;AAAA,MACL,OAAO,YAAa,CAAA,KAAA;AAAA,MACpB,MAAA,EAAQ,aAAa,OAAO,CAAA;AAAA,MAC5B,YAAY,YAAa,CAAA,UAAA;AAAA,KAC3B,CAAA;AAAA,GACD,CAAA,CAAA;AACH;;;;"}