@backstage-community/plugin-azure-devops 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @backstage-community/plugin-azure-devops
2
2
 
3
+ ## 0.19.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8367480: Backstage version bump to v1.42.3
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [8367480]
12
+ - @backstage-community/plugin-azure-devops-common@0.14.0
13
+
3
14
  ## 0.18.0
4
15
 
5
16
  ### Minor Changes
package/README.md CHANGED
@@ -412,3 +412,43 @@ async handle(
412
412
  };
413
413
  }
414
414
  ```
415
+
416
+ ## New Frontend System (Alpha)
417
+
418
+ The Azure DevOps plugin currently support the New Frontend System via an `/alpha` export, here's how to use it:
419
+
420
+ ### Use new frontend system
421
+
422
+ 1. Install the frontend plugin:
423
+
424
+ ```bash
425
+ # From your Backstage root directory
426
+ yarn --cwd packages/app add @backstage-community/plugin-azure-devops
427
+ ```
428
+
429
+ 2. Enable the plugin in your `packages/app(-next)/src/App.tsx`:
430
+
431
+ After all other imports:
432
+
433
+ ```tsx
434
+ import azureDevOpsPlugin from '@backstage-community/plugin-azure-devops';
435
+ ```
436
+
437
+ ```tsx
438
+ export const app = createApp({
439
+ features: [
440
+ catalogPlugin,
441
+ catalogImportPlugin,
442
+ userSettingsPlugin,
443
+ azureDevOpsPlugin,
444
+ // ...
445
+ ],
446
+ });
447
+ ```
448
+
449
+ Alternatively you can simply use feature discover and skip the above step by adding the following yo your `app-config.yaml` file:
450
+
451
+ ```yaml
452
+ app:
453
+ packages: all
454
+ ```
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { ApiBlueprint, createApiFactory, discoveryApiRef, fetchApiRef, PageBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
2
+ import { ApiBlueprint, discoveryApiRef, fetchApiRef, PageBlueprint, createFrontendPlugin } from '@backstage/frontend-plugin-api';
3
3
  import { azureDevOpsApiRef } from '../api/AzureDevOpsApi.esm.js';
4
4
  import { AzureDevOpsClient } from '../api/AzureDevOpsClient.esm.js';
5
5
  import { convertLegacyRouteRef, compatWrapper } from '@backstage/core-compat-api';
@@ -8,20 +8,18 @@ import { azurePullRequestDashboardRouteRef } from '../routes.esm.js';
8
8
  import { isAzurePipelinesAvailable, isAzureDevOpsAvailable } from '../plugin.esm.js';
9
9
 
10
10
  const azureDevOpsApi = ApiBlueprint.make({
11
- params: {
12
- factory: createApiFactory({
13
- api: azureDevOpsApiRef,
14
- deps: {
15
- discoveryApi: discoveryApiRef,
16
- fetchApi: fetchApiRef
17
- },
18
- factory: ({ discoveryApi, fetchApi }) => new AzureDevOpsClient({ discoveryApi, fetchApi })
19
- })
20
- }
11
+ params: (defineParams) => defineParams({
12
+ api: azureDevOpsApiRef,
13
+ deps: {
14
+ discoveryApi: discoveryApiRef,
15
+ fetchApi: fetchApiRef
16
+ },
17
+ factory: ({ discoveryApi, fetchApi }) => new AzureDevOpsClient({ discoveryApi, fetchApi })
18
+ })
21
19
  });
22
20
  const azureDevOpsPullRequestPage = PageBlueprint.make({
23
21
  params: {
24
- defaultPath: "/azure-pull-requests",
22
+ path: "/azure-pull-requests",
25
23
  routeRef: convertLegacyRouteRef(azurePullRequestDashboardRouteRef),
26
24
  loader: () => import('../components/PullRequestsPage/index.esm.js').then(
27
25
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.PullRequestsPage, {}))
@@ -31,8 +29,8 @@ const azureDevOpsPullRequestPage = PageBlueprint.make({
31
29
  const azureDevOpsPipelinesEntityContent = EntityContentBlueprint.make({
32
30
  name: "pipelines",
33
31
  params: {
34
- defaultPath: "/pipelines",
35
- defaultTitle: "Pipelines",
32
+ path: "/pipelines",
33
+ title: "Pipelines",
36
34
  filter: isAzurePipelinesAvailable,
37
35
  loader: () => import('../components/EntityPageAzurePipelines/index.esm.js').then(
38
36
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.EntityPageAzurePipelines, {}))
@@ -42,8 +40,8 @@ const azureDevOpsPipelinesEntityContent = EntityContentBlueprint.make({
42
40
  const azureDevOpsGitTagsEntityContent = EntityContentBlueprint.make({
43
41
  name: "git-tags",
44
42
  params: {
45
- defaultPath: "/git-tags",
46
- defaultTitle: "Git Tags",
43
+ path: "/git-tags",
44
+ title: "Git Tags",
47
45
  filter: isAzureDevOpsAvailable,
48
46
  loader: () => import('../components/EntityPageAzureGitTags/index.esm.js').then(
49
47
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.EntityPageAzureGitTags, {}))
@@ -54,8 +52,8 @@ const azureDevOpsPullRequestsEntityContent = EntityContentBlueprint.make(
54
52
  {
55
53
  name: "pull-requests",
56
54
  params: {
57
- defaultPath: "/pull-requests",
58
- defaultTitle: "Pull Requests",
55
+ path: "/pull-requests",
56
+ title: "Pull Requests",
59
57
  filter: isAzureDevOpsAvailable,
60
58
  loader: () => import('../components/EntityPageAzurePullRequests/index.esm.js').then(
61
59
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.EntityPageAzurePullRequests, {}))
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 ApiBlueprint,\n createApiFactory,\n PageBlueprint,\n createFrontendPlugin,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/frontend-plugin-api';\nimport { azureDevOpsApiRef, AzureDevOpsClient } from '../api';\nimport {\n compatWrapper,\n convertLegacyRouteRef,\n} from '@backstage/core-compat-api';\nimport {\n EntityCardBlueprint,\n EntityContentBlueprint,\n} from '@backstage/plugin-catalog-react/alpha';\nimport { azurePullRequestDashboardRouteRef } from '../routes';\nimport { isAzureDevOpsAvailable, isAzurePipelinesAvailable } from '../plugin';\n\n/** @alpha */\nexport const azureDevOpsApi = ApiBlueprint.make({\n params: {\n factory: createApiFactory({\n api: azureDevOpsApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new AzureDevOpsClient({ discoveryApi, fetchApi }),\n }),\n },\n});\n\n/** @alpha */\nexport const azureDevOpsPullRequestPage = PageBlueprint.make({\n params: {\n defaultPath: '/azure-pull-requests',\n routeRef: convertLegacyRouteRef(azurePullRequestDashboardRouteRef),\n loader: () =>\n import('../components/PullRequestsPage').then(m =>\n compatWrapper(<m.PullRequestsPage />),\n ),\n },\n});\n\n/** @alpha */\nexport const azureDevOpsPipelinesEntityContent = EntityContentBlueprint.make({\n name: 'pipelines',\n params: {\n defaultPath: '/pipelines',\n defaultTitle: 'Pipelines',\n filter: isAzurePipelinesAvailable,\n loader: () =>\n import('../components/EntityPageAzurePipelines').then(m =>\n compatWrapper(<m.EntityPageAzurePipelines />),\n ),\n },\n});\n\n/** @alpha */\nexport const azureDevOpsGitTagsEntityContent = EntityContentBlueprint.make({\n name: 'git-tags',\n params: {\n defaultPath: '/git-tags',\n defaultTitle: 'Git Tags',\n filter: isAzureDevOpsAvailable,\n loader: () =>\n import('../components/EntityPageAzureGitTags').then(m =>\n compatWrapper(<m.EntityPageAzureGitTags />),\n ),\n },\n});\n\n/** @alpha */\nexport const azureDevOpsPullRequestsEntityContent = EntityContentBlueprint.make(\n {\n name: 'pull-requests',\n params: {\n defaultPath: '/pull-requests',\n defaultTitle: 'Pull Requests',\n filter: isAzureDevOpsAvailable,\n loader: () =>\n import('../components/EntityPageAzurePullRequests').then(m =>\n compatWrapper(<m.EntityPageAzurePullRequests />),\n ),\n },\n },\n);\n\n/** @alpha */\nexport const azureDevOpsReadmeEntityCard = EntityCardBlueprint.make({\n name: 'readme',\n params: {\n filter: isAzureDevOpsAvailable,\n loader: async () =>\n import('../components/ReadmeCard').then(m =>\n compatWrapper(<m.ReadmeCard />),\n ),\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'azure-devops',\n extensions: [\n azureDevOpsApi,\n azureDevOpsReadmeEntityCard,\n azureDevOpsPipelinesEntityContent,\n azureDevOpsGitTagsEntityContent,\n azureDevOpsPullRequestsEntityContent,\n azureDevOpsPullRequestPage,\n ],\n});\n"],"names":[],"mappings":";;;;;;;;;AAqCa,MAAA,cAAA,GAAiB,aAAa,IAAK,CAAA;AAAA,EAC9C,MAAQ,EAAA;AAAA,IACN,SAAS,gBAAiB,CAAA;AAAA,MACxB,GAAK,EAAA,iBAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,YAAc,EAAA,eAAA;AAAA,QACd,QAAU,EAAA;AAAA,OACZ;AAAA,MACA,OAAA,EAAS,CAAC,EAAE,YAAc,EAAA,QAAA,EACxB,KAAA,IAAI,iBAAkB,CAAA,EAAE,YAAc,EAAA,QAAA,EAAU;AAAA,KACnD;AAAA;AAEL,CAAC;AAGY,MAAA,0BAAA,GAA6B,cAAc,IAAK,CAAA;AAAA,EAC3D,MAAQ,EAAA;AAAA,IACN,WAAa,EAAA,sBAAA;AAAA,IACb,QAAA,EAAU,sBAAsB,iCAAiC,CAAA;AAAA,IACjE,MAAQ,EAAA,MACN,OAAO,6CAAgC,CAAE,CAAA,IAAA;AAAA,MAAK,OAC5C,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,gBAAA,EAAF,EAAmB,CAAE;AAAA;AACtC;AAEN,CAAC;AAGY,MAAA,iCAAA,GAAoC,uBAAuB,IAAK,CAAA;AAAA,EAC3E,IAAM,EAAA,WAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,WAAa,EAAA,YAAA;AAAA,IACb,YAAc,EAAA,WAAA;AAAA,IACd,MAAQ,EAAA,yBAAA;AAAA,IACR,MAAQ,EAAA,MACN,OAAO,qDAAwC,CAAE,CAAA,IAAA;AAAA,MAAK,OACpD,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,wBAAA,EAAF,EAA2B,CAAE;AAAA;AAC9C;AAEN,CAAC;AAGY,MAAA,+BAAA,GAAkC,uBAAuB,IAAK,CAAA;AAAA,EACzE,IAAM,EAAA,UAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,WAAa,EAAA,WAAA;AAAA,IACb,YAAc,EAAA,UAAA;AAAA,IACd,MAAQ,EAAA,sBAAA;AAAA,IACR,MAAQ,EAAA,MACN,OAAO,mDAAsC,CAAE,CAAA,IAAA;AAAA,MAAK,OAClD,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,sBAAA,EAAF,EAAyB,CAAE;AAAA;AAC5C;AAEN,CAAC;AAGM,MAAM,uCAAuC,sBAAuB,CAAA,IAAA;AAAA,EACzE;AAAA,IACE,IAAM,EAAA,eAAA;AAAA,IACN,MAAQ,EAAA;AAAA,MACN,WAAa,EAAA,gBAAA;AAAA,MACb,YAAc,EAAA,eAAA;AAAA,MACd,MAAQ,EAAA,sBAAA;AAAA,MACR,MAAQ,EAAA,MACN,OAAO,wDAA2C,CAAE,CAAA,IAAA;AAAA,QAAK,OACvD,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,2BAAA,EAAF,EAA8B,CAAE;AAAA;AACjD;AACJ;AAEJ;AAGa,MAAA,2BAAA,GAA8B,oBAAoB,IAAK,CAAA;AAAA,EAClE,IAAM,EAAA,QAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,MAAQ,EAAA,sBAAA;AAAA,IACR,MAAQ,EAAA,YACN,OAAO,uCAA0B,CAAE,CAAA,IAAA;AAAA,MAAK,OACtC,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,UAAA,EAAF,EAAa,CAAE;AAAA;AAChC;AAEN,CAAC;AAGD,aAAe,oBAAqB,CAAA;AAAA,EAClC,QAAU,EAAA,cAAA;AAAA,EACV,UAAY,EAAA;AAAA,IACV,cAAA;AAAA,IACA,2BAAA;AAAA,IACA,iCAAA;AAAA,IACA,+BAAA;AAAA,IACA,oCAAA;AAAA,IACA;AAAA;AAEJ,CAAC,CAAA;;;;"}
1
+ {"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 ApiBlueprint,\n PageBlueprint,\n createFrontendPlugin,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/frontend-plugin-api';\nimport { azureDevOpsApiRef, AzureDevOpsClient } from '../api';\nimport {\n compatWrapper,\n convertLegacyRouteRef,\n} from '@backstage/core-compat-api';\nimport {\n EntityCardBlueprint,\n EntityContentBlueprint,\n} from '@backstage/plugin-catalog-react/alpha';\nimport { azurePullRequestDashboardRouteRef } from '../routes';\nimport { isAzureDevOpsAvailable, isAzurePipelinesAvailable } from '../plugin';\n\n/** @alpha */\nexport const azureDevOpsApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: azureDevOpsApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ discoveryApi, fetchApi }) =>\n new AzureDevOpsClient({ discoveryApi, fetchApi }),\n }),\n});\n\n/** @alpha */\nexport const azureDevOpsPullRequestPage = PageBlueprint.make({\n params: {\n path: '/azure-pull-requests',\n routeRef: convertLegacyRouteRef(azurePullRequestDashboardRouteRef),\n loader: () =>\n import('../components/PullRequestsPage').then(m =>\n compatWrapper(<m.PullRequestsPage />),\n ),\n },\n});\n\n/** @alpha */\nexport const azureDevOpsPipelinesEntityContent = EntityContentBlueprint.make({\n name: 'pipelines',\n params: {\n path: '/pipelines',\n title: 'Pipelines',\n filter: isAzurePipelinesAvailable,\n loader: () =>\n import('../components/EntityPageAzurePipelines').then(m =>\n compatWrapper(<m.EntityPageAzurePipelines />),\n ),\n },\n});\n\n/** @alpha */\nexport const azureDevOpsGitTagsEntityContent = EntityContentBlueprint.make({\n name: 'git-tags',\n params: {\n path: '/git-tags',\n title: 'Git Tags',\n filter: isAzureDevOpsAvailable,\n loader: () =>\n import('../components/EntityPageAzureGitTags').then(m =>\n compatWrapper(<m.EntityPageAzureGitTags />),\n ),\n },\n});\n\n/** @alpha */\nexport const azureDevOpsPullRequestsEntityContent = EntityContentBlueprint.make(\n {\n name: 'pull-requests',\n params: {\n path: '/pull-requests',\n title: 'Pull Requests',\n filter: isAzureDevOpsAvailable,\n loader: () =>\n import('../components/EntityPageAzurePullRequests').then(m =>\n compatWrapper(<m.EntityPageAzurePullRequests />),\n ),\n },\n },\n);\n\n/** @alpha */\nexport const azureDevOpsReadmeEntityCard = EntityCardBlueprint.make({\n name: 'readme',\n params: {\n filter: isAzureDevOpsAvailable,\n loader: async () =>\n import('../components/ReadmeCard').then(m =>\n compatWrapper(<m.ReadmeCard />),\n ),\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'azure-devops',\n extensions: [\n azureDevOpsApi,\n azureDevOpsReadmeEntityCard,\n azureDevOpsPipelinesEntityContent,\n azureDevOpsGitTagsEntityContent,\n azureDevOpsPullRequestsEntityContent,\n azureDevOpsPullRequestPage,\n ],\n});\n"],"names":[],"mappings":";;;;;;;;;AAoCa,MAAA,cAAA,GAAiB,aAAa,IAAK,CAAA;AAAA,EAC9C,MAAA,EAAQ,kBACN,YAAa,CAAA;AAAA,IACX,GAAK,EAAA,iBAAA;AAAA,IACL,IAAM,EAAA;AAAA,MACJ,YAAc,EAAA,eAAA;AAAA,MACd,QAAU,EAAA;AAAA,KACZ;AAAA,IACA,OAAA,EAAS,CAAC,EAAE,YAAc,EAAA,QAAA,EACxB,KAAA,IAAI,iBAAkB,CAAA,EAAE,YAAc,EAAA,QAAA,EAAU;AAAA,GACnD;AACL,CAAC;AAGY,MAAA,0BAAA,GAA6B,cAAc,IAAK,CAAA;AAAA,EAC3D,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,sBAAA;AAAA,IACN,QAAA,EAAU,sBAAsB,iCAAiC,CAAA;AAAA,IACjE,MAAQ,EAAA,MACN,OAAO,6CAAgC,CAAE,CAAA,IAAA;AAAA,MAAK,OAC5C,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,gBAAA,EAAF,EAAmB,CAAE;AAAA;AACtC;AAEN,CAAC;AAGY,MAAA,iCAAA,GAAoC,uBAAuB,IAAK,CAAA;AAAA,EAC3E,IAAM,EAAA,WAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,YAAA;AAAA,IACN,KAAO,EAAA,WAAA;AAAA,IACP,MAAQ,EAAA,yBAAA;AAAA,IACR,MAAQ,EAAA,MACN,OAAO,qDAAwC,CAAE,CAAA,IAAA;AAAA,MAAK,OACpD,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,wBAAA,EAAF,EAA2B,CAAE;AAAA;AAC9C;AAEN,CAAC;AAGY,MAAA,+BAAA,GAAkC,uBAAuB,IAAK,CAAA;AAAA,EACzE,IAAM,EAAA,UAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,WAAA;AAAA,IACN,KAAO,EAAA,UAAA;AAAA,IACP,MAAQ,EAAA,sBAAA;AAAA,IACR,MAAQ,EAAA,MACN,OAAO,mDAAsC,CAAE,CAAA,IAAA;AAAA,MAAK,OAClD,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,sBAAA,EAAF,EAAyB,CAAE;AAAA;AAC5C;AAEN,CAAC;AAGM,MAAM,uCAAuC,sBAAuB,CAAA,IAAA;AAAA,EACzE;AAAA,IACE,IAAM,EAAA,eAAA;AAAA,IACN,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,gBAAA;AAAA,MACN,KAAO,EAAA,eAAA;AAAA,MACP,MAAQ,EAAA,sBAAA;AAAA,MACR,MAAQ,EAAA,MACN,OAAO,wDAA2C,CAAE,CAAA,IAAA;AAAA,QAAK,OACvD,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,2BAAA,EAAF,EAA8B,CAAE;AAAA;AACjD;AACJ;AAEJ;AAGa,MAAA,2BAAA,GAA8B,oBAAoB,IAAK,CAAA;AAAA,EAClE,IAAM,EAAA,QAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,MAAQ,EAAA,sBAAA;AAAA,IACR,MAAQ,EAAA,YACN,OAAO,uCAA0B,CAAE,CAAA,IAAA;AAAA,MAAK,OACtC,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,UAAA,EAAF,EAAa,CAAE;AAAA;AAChC;AAEN,CAAC;AAGD,aAAe,oBAAqB,CAAA;AAAA,EAClC,QAAU,EAAA,cAAA;AAAA,EACV,UAAY,EAAA;AAAA,IACV,cAAA;AAAA,IACA,2BAAA;AAAA,IACA,iCAAA;AAAA,IACA,+BAAA;AAAA,IACA,oCAAA;AAAA,IACA;AAAA;AAEJ,CAAC,CAAA;;;;"}
package/dist/alpha.d.ts CHANGED
@@ -6,17 +6,17 @@ import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api'
6
6
  import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
7
7
 
8
8
  /** @alpha */
9
- declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
9
+ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin<{}, {}, {
10
10
  "api:azure-devops": _backstage_frontend_plugin_api.ExtensionDefinition<{
11
11
  kind: "api";
12
12
  name: undefined;
13
13
  config: {};
14
14
  configInput: {};
15
- output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_core_plugin_api.AnyApiFactory, "core.api.factory", {}>;
15
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_core_plugin_api.AnyApiFactory, "core.api.factory", {}>;
16
16
  inputs: {};
17
- params: {
18
- factory: _backstage_core_plugin_api.AnyApiFactory;
19
- };
17
+ params: <TApi, TImpl extends TApi, TDeps extends {
18
+ [x: string]: unknown;
19
+ }>(params: _backstage_core_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_core_plugin_api.AnyApiFactory>;
20
20
  }>;
21
21
  "entity-card:azure-devops/readme": _backstage_frontend_plugin_api.ExtensionDefinition<{
22
22
  kind: "entity-card";
@@ -29,11 +29,11 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
29
29
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
30
30
  type?: "content" | "summary" | "info" | undefined;
31
31
  };
32
- output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
32
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
33
33
  optional: true;
34
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-filter-expression", {
34
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
35
35
  optional: true;
36
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_plugin_catalog_react_alpha.EntityCardType, "catalog.entity-card-type", {
36
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_plugin_catalog_react_alpha.EntityCardType, "catalog.entity-card-type", {
37
37
  optional: true;
38
38
  }>;
39
39
  inputs: {};
@@ -58,21 +58,24 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
58
58
  path?: string | undefined;
59
59
  group?: string | false | undefined;
60
60
  };
61
- output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
61
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
62
62
  optional: true;
63
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
63
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
64
64
  optional: true;
65
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-filter-expression", {
65
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
66
66
  optional: true;
67
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-content-group", {
67
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-group", {
68
68
  optional: true;
69
69
  }>;
70
70
  inputs: {};
71
71
  params: {
72
+ defaultPath?: [Error: "Use the 'path' param instead"] | undefined;
73
+ path: string;
74
+ defaultTitle?: [Error: "Use the 'title' param instead"] | undefined;
75
+ title: string;
76
+ defaultGroup?: [Error: "Use the 'group' param instead"] | undefined;
77
+ group?: (string & {}) | "development" | "deployment" | "overview" | "documentation" | "operation" | "observability" | undefined;
72
78
  loader: () => Promise<JSX.Element>;
73
- defaultPath: string;
74
- defaultTitle: string;
75
- defaultGroup?: (string & {}) | "development" | "deployment" | "overview" | "documentation" | "operation" | "observability" | undefined;
76
79
  routeRef?: _backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams> | undefined;
77
80
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean) | undefined;
78
81
  };
@@ -92,21 +95,24 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
92
95
  path?: string | undefined;
93
96
  group?: string | false | undefined;
94
97
  };
95
- output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
98
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
96
99
  optional: true;
97
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
100
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
98
101
  optional: true;
99
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-filter-expression", {
102
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
100
103
  optional: true;
101
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-content-group", {
104
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-group", {
102
105
  optional: true;
103
106
  }>;
104
107
  inputs: {};
105
108
  params: {
109
+ defaultPath?: [Error: "Use the 'path' param instead"] | undefined;
110
+ path: string;
111
+ defaultTitle?: [Error: "Use the 'title' param instead"] | undefined;
112
+ title: string;
113
+ defaultGroup?: [Error: "Use the 'group' param instead"] | undefined;
114
+ group?: (string & {}) | "development" | "deployment" | "overview" | "documentation" | "operation" | "observability" | undefined;
106
115
  loader: () => Promise<JSX.Element>;
107
- defaultPath: string;
108
- defaultTitle: string;
109
- defaultGroup?: (string & {}) | "development" | "deployment" | "overview" | "documentation" | "operation" | "observability" | undefined;
110
116
  routeRef?: _backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams> | undefined;
111
117
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean) | undefined;
112
118
  };
@@ -126,21 +132,24 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
126
132
  path?: string | undefined;
127
133
  group?: string | false | undefined;
128
134
  };
129
- output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
135
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
130
136
  optional: true;
131
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
137
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
132
138
  optional: true;
133
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-filter-expression", {
139
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-filter-expression", {
134
140
  optional: true;
135
- }> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-content-group", {
141
+ }> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-title", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "catalog.entity-content-group", {
136
142
  optional: true;
137
143
  }>;
138
144
  inputs: {};
139
145
  params: {
146
+ defaultPath?: [Error: "Use the 'path' param instead"] | undefined;
147
+ path: string;
148
+ defaultTitle?: [Error: "Use the 'title' param instead"] | undefined;
149
+ title: string;
150
+ defaultGroup?: [Error: "Use the 'group' param instead"] | undefined;
151
+ group?: (string & {}) | "development" | "deployment" | "overview" | "documentation" | "operation" | "observability" | undefined;
140
152
  loader: () => Promise<JSX.Element>;
141
- defaultPath: string;
142
- defaultTitle: string;
143
- defaultGroup?: (string & {}) | "development" | "deployment" | "overview" | "documentation" | "operation" | "observability" | undefined;
144
153
  routeRef?: _backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams> | undefined;
145
154
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean) | undefined;
146
155
  };
@@ -154,12 +163,13 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {}, {
154
163
  configInput: {
155
164
  path?: string | undefined;
156
165
  };
157
- output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
166
+ output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
158
167
  optional: true;
159
168
  }>;
160
169
  inputs: {};
161
170
  params: {
162
- defaultPath: string;
171
+ defaultPath?: [Error: "Use the 'path' param instead"] | undefined;
172
+ path: string;
163
173
  loader: () => Promise<JSX.Element>;
164
174
  routeRef?: _backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams> | undefined;
165
175
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage-community/plugin-azure-devops",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "backstage": {
5
5
  "role": "frontend-plugin",
6
6
  "pluginId": "azure-devops",
@@ -63,14 +63,14 @@
63
63
  "test": "backstage-cli package test"
64
64
  },
65
65
  "dependencies": {
66
- "@backstage-community/plugin-azure-devops-common": "^0.13.0",
66
+ "@backstage-community/plugin-azure-devops-common": "^0.14.0",
67
67
  "@backstage/catalog-model": "^1.7.5",
68
- "@backstage/core-compat-api": "^0.4.4",
69
- "@backstage/core-components": "^0.17.4",
68
+ "@backstage/core-compat-api": "^0.5.1",
69
+ "@backstage/core-components": "^0.17.5",
70
70
  "@backstage/core-plugin-api": "^1.10.9",
71
71
  "@backstage/errors": "^1.2.7",
72
- "@backstage/frontend-plugin-api": "^0.10.4",
73
- "@backstage/plugin-catalog-react": "^1.19.1",
72
+ "@backstage/frontend-plugin-api": "^0.11.0",
73
+ "@backstage/plugin-catalog-react": "^1.20.1",
74
74
  "@backstage/plugin-permission-react": "^0.4.36",
75
75
  "@material-ui/core": "^4.12.2",
76
76
  "@material-ui/icons": "^4.9.1",
@@ -80,9 +80,9 @@
80
80
  "react-use": "^17.2.4"
81
81
  },
82
82
  "devDependencies": {
83
- "@backstage/cli": "^0.33.1",
84
- "@backstage/dev-utils": "^1.1.12",
85
- "@backstage/test-utils": "^1.7.10",
83
+ "@backstage/cli": "^0.34.0",
84
+ "@backstage/dev-utils": "^1.1.13",
85
+ "@backstage/test-utils": "^1.7.11",
86
86
  "@testing-library/dom": "^10.0.0",
87
87
  "@testing-library/jest-dom": "^6.0.0",
88
88
  "@testing-library/react": "^15.0.0",