@backstage/plugin-catalog-import 0.13.6 → 0.13.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,44 @@
1
1
  # @backstage/plugin-catalog-import
2
2
 
3
+ ## 0.13.7
4
+
5
+ ### Patch Changes
6
+
7
+ - f987bfd: Fixed missing `catalog.entity.create` permission authorization in the default page extension.
8
+ - 05f60e1: Refactored constructor parameter properties to explicit property declarations for compatibility with TypeScript's `erasableSyntaxOnly` setting. This internal refactoring maintains all existing functionality while ensuring TypeScript compilation compatibility.
9
+ - Updated dependencies
10
+ - @backstage/frontend-plugin-api@0.13.0
11
+ - @backstage/core-compat-api@0.5.4
12
+ - @backstage/plugin-catalog-react@1.21.3
13
+ - @backstage/integration@1.18.2
14
+ - @backstage/core-components@0.18.3
15
+ - @backstage/core-plugin-api@1.12.0
16
+ - @backstage/plugin-permission-react@0.4.38
17
+ - @backstage/config@1.3.6
18
+ - @backstage/catalog-model@1.7.6
19
+ - @backstage/catalog-client@1.12.1
20
+ - @backstage/integration-react@1.2.12
21
+ - @backstage/plugin-catalog-common@1.1.7
22
+
23
+ ## 0.13.7-next.0
24
+
25
+ ### Patch Changes
26
+
27
+ - 05f60e1: Refactored constructor parameter properties to explicit property declarations for compatibility with TypeScript's `erasableSyntaxOnly` setting. This internal refactoring maintains all existing functionality while ensuring TypeScript compilation compatibility.
28
+ - Updated dependencies
29
+ - @backstage/plugin-catalog-react@1.21.3-next.0
30
+ - @backstage/core-plugin-api@1.11.2-next.0
31
+ - @backstage/config@1.3.6-next.0
32
+ - @backstage/core-components@0.18.3-next.0
33
+ - @backstage/catalog-model@1.7.6-next.0
34
+ - @backstage/integration@1.18.2-next.0
35
+ - @backstage/frontend-plugin-api@0.12.2-next.0
36
+ - @backstage/catalog-client@1.12.1-next.0
37
+ - @backstage/core-compat-api@0.5.4-next.0
38
+ - @backstage/errors@1.2.7
39
+ - @backstage/integration-react@1.2.12-next.0
40
+ - @backstage/plugin-catalog-common@1.1.7-next.0
41
+
3
42
  ## 0.13.6
4
43
 
5
44
  ### Patch Changes
package/dist/alpha.d.ts CHANGED
@@ -77,7 +77,7 @@ declare const catalogImportTranslationRef: _backstage_core_plugin_api_alpha.Tran
77
77
  declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin<{
78
78
  importPage: _backstage_frontend_plugin_api.RouteRef<undefined>;
79
79
  }, {}, {
80
- "api:catalog-import": _backstage_frontend_plugin_api.ExtensionDefinition<{
80
+ "api:catalog-import": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
81
81
  kind: "api";
82
82
  name: undefined;
83
83
  config: {};
@@ -86,7 +86,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
86
86
  inputs: {};
87
87
  params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_core_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_core_plugin_api.AnyApiFactory>;
88
88
  }>;
89
- "page:catalog-import": _backstage_frontend_plugin_api.ExtensionDefinition<{
89
+ "page:catalog-import": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
90
90
  kind: "page";
91
91
  name: undefined;
92
92
  config: {
package/dist/alpha.esm.js CHANGED
@@ -7,6 +7,8 @@ import { catalogImportApiRef } from './api/CatalogImportApi.esm.js';
7
7
  import { CatalogImportClient } from './api/CatalogImportClient.esm.js';
8
8
  import { rootRouteRef } from './plugin.esm.js';
9
9
  import { catalogApiRef } from '@backstage/plugin-catalog-react';
10
+ import { RequirePermission } from '@backstage/plugin-permission-react';
11
+ import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha';
10
12
  export { catalogImportTranslationRef } from './translation.esm.js';
11
13
 
12
14
  const catalogImportPage = PageBlueprint.make({
@@ -14,7 +16,9 @@ const catalogImportPage = PageBlueprint.make({
14
16
  path: "/catalog-import",
15
17
  routeRef: convertLegacyRouteRef(rootRouteRef),
16
18
  loader: () => import('./components/ImportPage/index.esm.js').then(
17
- (m) => compatWrapper(/* @__PURE__ */ jsx(m.ImportPage, {}))
19
+ (m) => compatWrapper(
20
+ /* @__PURE__ */ jsx(RequirePermission, { permission: catalogEntityCreatePermission, children: /* @__PURE__ */ jsx(m.ImportPage, {}) })
21
+ )
18
22
  )
19
23
  }
20
24
  });
@@ -1 +1 @@
1
- {"version":3,"file":"alpha.esm.js","sources":["../src/alpha.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 configApiRef,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n compatWrapper,\n convertLegacyRouteRef,\n} from '@backstage/core-compat-api';\nimport {\n createFrontendPlugin,\n PageBlueprint,\n ApiBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport {\n scmAuthApiRef,\n scmIntegrationsApiRef,\n} from '@backstage/integration-react';\nimport { CatalogImportClient, catalogImportApiRef } from './api';\nimport { rootRouteRef } from './plugin';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\n\nexport * from './translation';\n\n// TODO: It's currently possible to override the import page with a custom one. We need to decide\n// whether this type of override is typically done with an input or by overriding the entire extension.\nconst catalogImportPage = PageBlueprint.make({\n params: {\n path: '/catalog-import',\n routeRef: convertLegacyRouteRef(rootRouteRef),\n loader: () =>\n import('./components/ImportPage').then(m =>\n compatWrapper(<m.ImportPage />),\n ),\n },\n});\n\nconst catalogImportApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: catalogImportApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n scmAuthApi: scmAuthApiRef,\n fetchApi: fetchApiRef,\n scmIntegrationsApi: scmIntegrationsApiRef,\n catalogApi: catalogApiRef,\n configApi: configApiRef,\n },\n factory: ({\n discoveryApi,\n scmAuthApi,\n fetchApi,\n scmIntegrationsApi,\n catalogApi,\n configApi,\n }) =>\n new CatalogImportClient({\n discoveryApi,\n scmAuthApi,\n scmIntegrationsApi,\n fetchApi,\n catalogApi,\n configApi,\n }),\n }),\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'catalog-import',\n info: { packageJson: () => import('../package.json') },\n extensions: [catalogImportApi, catalogImportPage],\n routes: {\n importPage: convertLegacyRouteRef(rootRouteRef),\n },\n});\n\nexport { catalogImportTranslationRef } from './translation';\n"],"names":[],"mappings":";;;;;;;;;;;AA0CA,MAAM,iBAAA,GAAoB,cAAc,IAAA,CAAK;AAAA,EAC3C,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,iBAAA;AAAA,IACN,QAAA,EAAU,sBAAsB,YAAY,CAAA;AAAA,IAC5C,MAAA,EAAQ,MACN,OAAO,sCAAyB,CAAA,CAAE,IAAA;AAAA,MAAK,OACrC,aAAA,iBAAc,GAAA,CAAC,CAAA,CAAE,UAAA,EAAF,EAAa,CAAE;AAAA;AAChC;AAEN,CAAC,CAAA;AAED,MAAM,gBAAA,GAAmB,aAAa,IAAA,CAAK;AAAA,EACzC,MAAA,EAAQ,kBACN,YAAA,CAAa;AAAA,IACX,GAAA,EAAK,mBAAA;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,YAAA,EAAc,eAAA;AAAA,MACd,UAAA,EAAY,aAAA;AAAA,MACZ,QAAA,EAAU,WAAA;AAAA,MACV,kBAAA,EAAoB,qBAAA;AAAA,MACpB,UAAA,EAAY,aAAA;AAAA,MACZ,SAAA,EAAW;AAAA,KACb;AAAA,IACA,SAAS,CAAC;AAAA,MACR,YAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,kBAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,KACE,IAAI,mBAAA,CAAoB;AAAA,MACtB,YAAA;AAAA,MACA,UAAA;AAAA,MACA,kBAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACD;AAAA,GACJ;AACL,CAAC,CAAA;AAGD,YAAe,oBAAA,CAAqB;AAAA,EAClC,QAAA,EAAU,gBAAA;AAAA,EACV,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,uBAAiB,CAAA,EAAE;AAAA,EACrD,UAAA,EAAY,CAAC,gBAAA,EAAkB,iBAAiB,CAAA;AAAA,EAChD,MAAA,EAAQ;AAAA,IACN,UAAA,EAAY,sBAAsB,YAAY;AAAA;AAElD,CAAC,CAAA;;;;"}
1
+ {"version":3,"file":"alpha.esm.js","sources":["../src/alpha.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 configApiRef,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n compatWrapper,\n convertLegacyRouteRef,\n} from '@backstage/core-compat-api';\nimport {\n createFrontendPlugin,\n PageBlueprint,\n ApiBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport {\n scmAuthApiRef,\n scmIntegrationsApiRef,\n} from '@backstage/integration-react';\nimport { CatalogImportClient, catalogImportApiRef } from './api';\nimport { rootRouteRef } from './plugin';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\nimport { RequirePermission } from '@backstage/plugin-permission-react';\nimport { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common/alpha';\n\nexport * from './translation';\n\n// TODO: It's currently possible to override the import page with a custom one. We need to decide\n// whether this type of override is typically done with an input or by overriding the entire extension.\nconst catalogImportPage = PageBlueprint.make({\n params: {\n path: '/catalog-import',\n routeRef: convertLegacyRouteRef(rootRouteRef),\n loader: () =>\n import('./components/ImportPage').then(m =>\n compatWrapper(\n <RequirePermission permission={catalogEntityCreatePermission}>\n <m.ImportPage />\n </RequirePermission>,\n ),\n ),\n },\n});\n\nconst catalogImportApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: catalogImportApiRef,\n deps: {\n discoveryApi: discoveryApiRef,\n scmAuthApi: scmAuthApiRef,\n fetchApi: fetchApiRef,\n scmIntegrationsApi: scmIntegrationsApiRef,\n catalogApi: catalogApiRef,\n configApi: configApiRef,\n },\n factory: ({\n discoveryApi,\n scmAuthApi,\n fetchApi,\n scmIntegrationsApi,\n catalogApi,\n configApi,\n }) =>\n new CatalogImportClient({\n discoveryApi,\n scmAuthApi,\n scmIntegrationsApi,\n fetchApi,\n catalogApi,\n configApi,\n }),\n }),\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'catalog-import',\n info: { packageJson: () => import('../package.json') },\n extensions: [catalogImportApi, catalogImportPage],\n routes: {\n importPage: convertLegacyRouteRef(rootRouteRef),\n },\n});\n\nexport { catalogImportTranslationRef } from './translation';\n"],"names":[],"mappings":";;;;;;;;;;;;;AA4CA,MAAM,iBAAA,GAAoB,cAAc,IAAA,CAAK;AAAA,EAC3C,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,iBAAA;AAAA,IACN,QAAA,EAAU,sBAAsB,YAAY,CAAA;AAAA,IAC5C,MAAA,EAAQ,MACN,OAAO,sCAAyB,CAAA,CAAE,IAAA;AAAA,MAAK,CAAA,CAAA,KACrC,aAAA;AAAA,wBACE,GAAA,CAAC,qBAAkB,UAAA,EAAY,6BAAA,EAC7B,8BAAC,CAAA,CAAE,UAAA,EAAF,EAAa,CAAA,EAChB;AAAA;AACF;AACF;AAEN,CAAC,CAAA;AAED,MAAM,gBAAA,GAAmB,aAAa,IAAA,CAAK;AAAA,EACzC,MAAA,EAAQ,kBACN,YAAA,CAAa;AAAA,IACX,GAAA,EAAK,mBAAA;AAAA,IACL,IAAA,EAAM;AAAA,MACJ,YAAA,EAAc,eAAA;AAAA,MACd,UAAA,EAAY,aAAA;AAAA,MACZ,QAAA,EAAU,WAAA;AAAA,MACV,kBAAA,EAAoB,qBAAA;AAAA,MACpB,UAAA,EAAY,aAAA;AAAA,MACZ,SAAA,EAAW;AAAA,KACb;AAAA,IACA,SAAS,CAAC;AAAA,MACR,YAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,kBAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,KACE,IAAI,mBAAA,CAAoB;AAAA,MACtB,YAAA;AAAA,MACA,UAAA;AAAA,MACA,kBAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACD;AAAA,GACJ;AACL,CAAC,CAAA;AAGD,YAAe,oBAAA,CAAqB;AAAA,EAClC,QAAA,EAAU,gBAAA;AAAA,EACV,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,uBAAiB,CAAA,EAAE;AAAA,EACrD,UAAA,EAAY,CAAC,gBAAA,EAAkB,iBAAiB,CAAA;AAAA,EAChD,MAAA,EAAQ;AAAA,IACN,UAAA,EAAY,sBAAsB,YAAY;AAAA;AAElD,CAAC,CAAA;;;;"}
@@ -1,8 +1,5 @@
1
1
  const apiVersions = "6.0";
2
2
  class RepoApiClient {
3
- constructor(_options) {
4
- this._options = _options;
5
- }
6
3
  createEndpoint = (path, version, queryParams = void 0) => {
7
4
  const url = new URL(
8
5
  `${this._options.tenantUrl}/${this._options.project}/_apis/git/repositories`
@@ -14,6 +11,10 @@ class RepoApiClient {
14
11
  );
15
12
  return url.toString();
16
13
  };
14
+ _options;
15
+ constructor(_options) {
16
+ this._options = _options;
17
+ }
17
18
  async get(path, version, queryParams = void 0, token) {
18
19
  const endpoint = this.createEndpoint(path, version, queryParams);
19
20
  const result = await fetch(endpoint, {
@@ -1 +1 @@
1
- {"version":3,"file":"AzureRepoApiClient.esm.js","sources":["../../src/api/AzureRepoApiClient.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface AzurePrOptions {\n tenantUrl: string;\n title: string;\n project: string;\n branchName: string;\n repository: string;\n token: string;\n fileContent: string;\n fileName: string;\n description: string;\n}\n\nexport interface CreateAzurePr {\n sourceRefName: string;\n targetRefName: string;\n title: string;\n description: string;\n}\n\nexport interface AzureRepo {\n id: string;\n name: string;\n defaultBranch: string;\n}\n\nexport interface AzureRef {\n name: string;\n objectId: string;\n}\n\ninterface RefQueryResult {\n value: AzureRef[];\n}\n\nexport interface AzureCommit {\n comment: string;\n\n changes: {\n changeType: string;\n item: {\n path: string;\n };\n newContent: {\n content: string;\n contentType: 'rawtext';\n };\n }[];\n}\n\nexport interface AzureRefUpdate {\n repositoryId: string;\n name: string;\n oldObjectId: string;\n newObjectId: string;\n}\n\nexport interface AzurePushResult {\n refUpdates: AzureRefUpdate[];\n}\n\nexport interface AzurePush {\n refUpdates: {\n name: string;\n oldObjectId: string;\n }[];\n commits: AzureCommit[];\n}\n\nexport interface AzurePrResult {\n pullRequestId: string;\n repository: {\n name: string;\n webUrl: string;\n };\n}\n\nconst apiVersions = '6.0';\n\nexport interface RepoApiClientOptions {\n project: string;\n tenantUrl: string;\n}\n\nexport interface NewBranchOptions {\n fileContent: string;\n fileName: string;\n title: string;\n branchName: string;\n repoName: string;\n sourceBranch: AzureRef;\n}\n\nexport interface CreatePrOptions {\n repoName: string;\n sourceName: string;\n targetName: string;\n description: string;\n title: string;\n}\n\nexport class RepoApiClient {\n private createEndpoint = (\n path: string,\n version: string,\n queryParams: Record<string, string> | undefined = undefined,\n ) => {\n const url = new URL(\n `${this._options.tenantUrl}/${this._options.project}/_apis/git/repositories`,\n );\n url.pathname += path;\n\n url.searchParams.set('api-version', version);\n Object.entries(queryParams ?? {}).forEach(([key, value]) =>\n url.searchParams.set(key, value),\n );\n return url.toString();\n };\n\n constructor(private _options: RepoApiClientOptions) {}\n\n private async get<T>(\n path: string,\n version: string,\n queryParams: Record<string, string> | undefined = undefined,\n token: string,\n ): Promise<T> {\n const endpoint = this.createEndpoint(path, version, queryParams);\n const result = await fetch(endpoint, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n if (!result.ok) {\n return result.json().then(it => Promise.reject(new Error(it.message)));\n }\n return await result.json();\n }\n\n private async post<T>(\n path: string,\n version: string,\n payload: unknown,\n token: string,\n ): Promise<T> {\n const endpoint = this.createEndpoint(path, version);\n const result = await fetch(endpoint, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n });\n if (!result.ok) {\n return result.json().then(it => Promise.reject(new Error(it.message)));\n }\n return await result.json();\n }\n\n async getRepository(\n repositoryName: string,\n token: string,\n ): Promise<AzureRepo> {\n return this.get(`/${repositoryName}`, apiVersions, undefined, token);\n }\n\n async getDefaultBranch(repo: AzureRepo, token: string): Promise<AzureRef> {\n const filter = repo.defaultBranch.replace('refs/', '');\n const result: RefQueryResult = await this.get(\n `/${repo.name}/refs`,\n apiVersions,\n { filter },\n token,\n );\n if (!result.value?.length) {\n return Promise.reject(\n new Error(`The requested ref '${filter}' was not found`),\n );\n }\n return result.value[0];\n }\n\n async pushNewBranch(\n options: NewBranchOptions,\n token: string,\n ): Promise<AzureRefUpdate> {\n const { sourceBranch, repoName } = options;\n const push: AzurePush = {\n refUpdates: [\n {\n name: `refs/heads/${options.branchName}`,\n oldObjectId: sourceBranch.objectId,\n },\n ],\n commits: [\n {\n comment: options.title,\n changes: [\n {\n changeType: 'add',\n item: {\n path: `/${options.fileName}`,\n },\n newContent: {\n content: options.fileContent,\n contentType: 'rawtext',\n },\n },\n ],\n },\n ],\n };\n const result = await this.post<AzurePushResult>(\n `/${repoName}/pushes`,\n apiVersions,\n push,\n token,\n );\n return result.refUpdates[0];\n }\n\n async createPullRequest(\n options: CreatePrOptions,\n token: string,\n ): Promise<AzurePrResult> {\n const { repoName, sourceName, targetName } = options;\n const payload: CreateAzurePr = {\n title: options.title,\n description: options.description,\n sourceRefName: sourceName,\n targetRefName: targetName,\n };\n\n return await this.post<AzurePrResult>(\n `/${repoName}/pullrequests`,\n apiVersions,\n payload,\n token,\n );\n }\n}\n\nexport async function createAzurePullRequest(\n options: AzurePrOptions,\n client: RepoApiClient | undefined = undefined,\n): Promise<AzurePrResult> {\n const {\n title,\n repository,\n token,\n fileContent,\n fileName,\n branchName,\n description,\n } = options;\n const actualClient = client ?? new RepoApiClient(options);\n const repo = await actualClient.getRepository(repository, token);\n const defaultBranch = await actualClient.getDefaultBranch(repo, token);\n const branchOptions: NewBranchOptions = {\n title: title,\n repoName: repo.name,\n sourceBranch: defaultBranch,\n branchName: branchName,\n fileContent: fileContent,\n fileName: fileName,\n };\n const refUpdate = await actualClient.pushNewBranch(branchOptions, token);\n const prOptions: CreatePrOptions = {\n title,\n description,\n repoName: repo.name,\n sourceName: refUpdate.name,\n targetName: defaultBranch.name,\n };\n return actualClient.createPullRequest(prOptions, token);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AzureRepoApiClient.esm.js","sources":["../../src/api/AzureRepoApiClient.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface AzurePrOptions {\n tenantUrl: string;\n title: string;\n project: string;\n branchName: string;\n repository: string;\n token: string;\n fileContent: string;\n fileName: string;\n description: string;\n}\n\nexport interface CreateAzurePr {\n sourceRefName: string;\n targetRefName: string;\n title: string;\n description: string;\n}\n\nexport interface AzureRepo {\n id: string;\n name: string;\n defaultBranch: string;\n}\n\nexport interface AzureRef {\n name: string;\n objectId: string;\n}\n\ninterface RefQueryResult {\n value: AzureRef[];\n}\n\nexport interface AzureCommit {\n comment: string;\n\n changes: {\n changeType: string;\n item: {\n path: string;\n };\n newContent: {\n content: string;\n contentType: 'rawtext';\n };\n }[];\n}\n\nexport interface AzureRefUpdate {\n repositoryId: string;\n name: string;\n oldObjectId: string;\n newObjectId: string;\n}\n\nexport interface AzurePushResult {\n refUpdates: AzureRefUpdate[];\n}\n\nexport interface AzurePush {\n refUpdates: {\n name: string;\n oldObjectId: string;\n }[];\n commits: AzureCommit[];\n}\n\nexport interface AzurePrResult {\n pullRequestId: string;\n repository: {\n name: string;\n webUrl: string;\n };\n}\n\nconst apiVersions = '6.0';\n\nexport interface RepoApiClientOptions {\n project: string;\n tenantUrl: string;\n}\n\nexport interface NewBranchOptions {\n fileContent: string;\n fileName: string;\n title: string;\n branchName: string;\n repoName: string;\n sourceBranch: AzureRef;\n}\n\nexport interface CreatePrOptions {\n repoName: string;\n sourceName: string;\n targetName: string;\n description: string;\n title: string;\n}\n\nexport class RepoApiClient {\n private createEndpoint = (\n path: string,\n version: string,\n queryParams: Record<string, string> | undefined = undefined,\n ) => {\n const url = new URL(\n `${this._options.tenantUrl}/${this._options.project}/_apis/git/repositories`,\n );\n url.pathname += path;\n\n url.searchParams.set('api-version', version);\n Object.entries(queryParams ?? {}).forEach(([key, value]) =>\n url.searchParams.set(key, value),\n );\n return url.toString();\n };\n\n private _options: RepoApiClientOptions;\n\n constructor(_options: RepoApiClientOptions) {\n this._options = _options;\n }\n\n private async get<T>(\n path: string,\n version: string,\n queryParams: Record<string, string> | undefined = undefined,\n token: string,\n ): Promise<T> {\n const endpoint = this.createEndpoint(path, version, queryParams);\n const result = await fetch(endpoint, {\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n if (!result.ok) {\n return result.json().then(it => Promise.reject(new Error(it.message)));\n }\n return await result.json();\n }\n\n private async post<T>(\n path: string,\n version: string,\n payload: unknown,\n token: string,\n ): Promise<T> {\n const endpoint = this.createEndpoint(path, version);\n const result = await fetch(endpoint, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(payload),\n });\n if (!result.ok) {\n return result.json().then(it => Promise.reject(new Error(it.message)));\n }\n return await result.json();\n }\n\n async getRepository(\n repositoryName: string,\n token: string,\n ): Promise<AzureRepo> {\n return this.get(`/${repositoryName}`, apiVersions, undefined, token);\n }\n\n async getDefaultBranch(repo: AzureRepo, token: string): Promise<AzureRef> {\n const filter = repo.defaultBranch.replace('refs/', '');\n const result: RefQueryResult = await this.get(\n `/${repo.name}/refs`,\n apiVersions,\n { filter },\n token,\n );\n if (!result.value?.length) {\n return Promise.reject(\n new Error(`The requested ref '${filter}' was not found`),\n );\n }\n return result.value[0];\n }\n\n async pushNewBranch(\n options: NewBranchOptions,\n token: string,\n ): Promise<AzureRefUpdate> {\n const { sourceBranch, repoName } = options;\n const push: AzurePush = {\n refUpdates: [\n {\n name: `refs/heads/${options.branchName}`,\n oldObjectId: sourceBranch.objectId,\n },\n ],\n commits: [\n {\n comment: options.title,\n changes: [\n {\n changeType: 'add',\n item: {\n path: `/${options.fileName}`,\n },\n newContent: {\n content: options.fileContent,\n contentType: 'rawtext',\n },\n },\n ],\n },\n ],\n };\n const result = await this.post<AzurePushResult>(\n `/${repoName}/pushes`,\n apiVersions,\n push,\n token,\n );\n return result.refUpdates[0];\n }\n\n async createPullRequest(\n options: CreatePrOptions,\n token: string,\n ): Promise<AzurePrResult> {\n const { repoName, sourceName, targetName } = options;\n const payload: CreateAzurePr = {\n title: options.title,\n description: options.description,\n sourceRefName: sourceName,\n targetRefName: targetName,\n };\n\n return await this.post<AzurePrResult>(\n `/${repoName}/pullrequests`,\n apiVersions,\n payload,\n token,\n );\n }\n}\n\nexport async function createAzurePullRequest(\n options: AzurePrOptions,\n client: RepoApiClient | undefined = undefined,\n): Promise<AzurePrResult> {\n const {\n title,\n repository,\n token,\n fileContent,\n fileName,\n branchName,\n description,\n } = options;\n const actualClient = client ?? new RepoApiClient(options);\n const repo = await actualClient.getRepository(repository, token);\n const defaultBranch = await actualClient.getDefaultBranch(repo, token);\n const branchOptions: NewBranchOptions = {\n title: title,\n repoName: repo.name,\n sourceBranch: defaultBranch,\n branchName: branchName,\n fileContent: fileContent,\n fileName: fileName,\n };\n const refUpdate = await actualClient.pushNewBranch(branchOptions, token);\n const prOptions: CreatePrOptions = {\n title,\n description,\n repoName: repo.name,\n sourceName: refUpdate.name,\n targetName: defaultBranch.name,\n };\n return actualClient.createPullRequest(prOptions, token);\n}\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  var name = "@backstage/plugin-catalog-import";
2
- var version = "0.13.6";
2
+ var version = "0.13.7";
3
3
  var description = "A Backstage plugin the helps you import entities into your catalog";
4
4
  var backstage = {
5
5
  role: "frontend-plugin",
@@ -65,6 +65,7 @@ var dependencies = {
65
65
  "@backstage/integration-react": "workspace:^",
66
66
  "@backstage/plugin-catalog-common": "workspace:^",
67
67
  "@backstage/plugin-catalog-react": "workspace:^",
68
+ "@backstage/plugin-permission-react": "workspace:^",
68
69
  "@material-ui/core": "^4.12.2",
69
70
  "@material-ui/icons": "^4.9.1",
70
71
  "@material-ui/lab": "4.0.0-alpha.61",
@@ -1 +1 @@
1
- {"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-catalog-import",
3
- "version": "0.13.6",
3
+ "version": "0.13.7",
4
4
  "description": "A Backstage plugin the helps you import entities into your catalog",
5
5
  "backstage": {
6
6
  "role": "frontend-plugin",
@@ -66,18 +66,19 @@
66
66
  "test": "backstage-cli package test"
67
67
  },
68
68
  "dependencies": {
69
- "@backstage/catalog-client": "^1.12.0",
70
- "@backstage/catalog-model": "^1.7.5",
71
- "@backstage/config": "^1.3.5",
72
- "@backstage/core-compat-api": "^0.5.3",
73
- "@backstage/core-components": "^0.18.2",
74
- "@backstage/core-plugin-api": "^1.11.1",
69
+ "@backstage/catalog-client": "^1.12.1",
70
+ "@backstage/catalog-model": "^1.7.6",
71
+ "@backstage/config": "^1.3.6",
72
+ "@backstage/core-compat-api": "^0.5.4",
73
+ "@backstage/core-components": "^0.18.3",
74
+ "@backstage/core-plugin-api": "^1.12.0",
75
75
  "@backstage/errors": "^1.2.7",
76
- "@backstage/frontend-plugin-api": "^0.12.1",
77
- "@backstage/integration": "^1.18.1",
78
- "@backstage/integration-react": "^1.2.11",
79
- "@backstage/plugin-catalog-common": "^1.1.6",
80
- "@backstage/plugin-catalog-react": "^1.21.2",
76
+ "@backstage/frontend-plugin-api": "^0.13.0",
77
+ "@backstage/integration": "^1.18.2",
78
+ "@backstage/integration-react": "^1.2.12",
79
+ "@backstage/plugin-catalog-common": "^1.1.7",
80
+ "@backstage/plugin-catalog-react": "^1.21.3",
81
+ "@backstage/plugin-permission-react": "^0.4.38",
81
82
  "@material-ui/core": "^4.12.2",
82
83
  "@material-ui/icons": "^4.9.1",
83
84
  "@material-ui/lab": "4.0.0-alpha.61",
@@ -90,11 +91,11 @@
90
91
  "yaml": "^2.0.0"
91
92
  },
92
93
  "devDependencies": {
93
- "@backstage/cli": "^0.34.4",
94
- "@backstage/core-app-api": "^1.19.1",
95
- "@backstage/dev-utils": "^1.1.15",
96
- "@backstage/plugin-catalog": "^1.31.4",
97
- "@backstage/test-utils": "^1.7.12",
94
+ "@backstage/cli": "^0.34.5",
95
+ "@backstage/core-app-api": "^1.19.2",
96
+ "@backstage/dev-utils": "^1.1.17",
97
+ "@backstage/plugin-catalog": "^1.32.0",
98
+ "@backstage/test-utils": "^1.7.13",
98
99
  "@testing-library/dom": "^10.0.0",
99
100
  "@testing-library/jest-dom": "^6.0.0",
100
101
  "@testing-library/react": "^16.0.0",