@backstage/plugin-catalog-backend-module-azure 0.3.14-next.1 → 0.3.14

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,28 @@
1
1
  # @backstage/plugin-catalog-backend-module-azure
2
2
 
3
+ ## 0.3.14
4
+
5
+ ### Patch Changes
6
+
7
+ - cc6206e: Added support for `{org}.visualstudio.com` domains used by Azure DevOps
8
+ - cfd8103: Updated imports to use stable catalog extension points from `@backstage/plugin-catalog-node` instead of the deprecated alpha exports.
9
+ - 6c8a464: Added missing `branch` field to the `azureDevOps` provider config schema.
10
+ - Updated dependencies
11
+ - @backstage/integration@1.20.0
12
+ - @backstage/plugin-catalog-node@2.0.0
13
+ - @backstage/backend-plugin-api@1.7.0
14
+ - @backstage/plugin-catalog-common@1.1.8
15
+
16
+ ## 0.3.14-next.2
17
+
18
+ ### Patch Changes
19
+
20
+ - cc6206e: Added support for `{org}.visualstudio.com` domains used by Azure DevOps
21
+ - Updated dependencies
22
+ - @backstage/integration@1.20.0-next.2
23
+ - @backstage/plugin-catalog-node@2.0.0-next.1
24
+ - @backstage/backend-plugin-api@1.7.0-next.1
25
+
3
26
  ## 0.3.14-next.1
4
27
 
5
28
  ### Patch Changes
package/config.d.ts CHANGED
@@ -44,6 +44,10 @@ export interface Config {
44
44
  * If not set, all repositories will be searched.
45
45
  */
46
46
  repository?: string;
47
+ /**
48
+ * (Optional) The name of a branch to use. If not set, defaults to the default branch of the repository.
49
+ */
50
+ branch?: string;
47
51
  /**
48
52
  * (Optional) Where to find catalog-info.yaml files. Wildcards are supported.
49
53
  * If not set, defaults to /catalog-info.yaml.
@@ -13,11 +13,12 @@ const PAGE_SIZE = 1e3;
13
13
  async function codeSearch(credentialsProvider, azureConfig, org, project, repo, path, branch) {
14
14
  const searchBaseUrl = isCloud(azureConfig.host) ? "https://almsearch.dev.azure.com" : `https://${azureConfig.host}`;
15
15
  const searchUrl = `${searchBaseUrl}/${org}/_apis/search/codesearchresults?api-version=6.0-preview.1`;
16
+ const url = azureConfig.host.endsWith(".visualstudio.com") ? `https://${azureConfig.host}` : `https://${azureConfig.host}/${org}`;
16
17
  let items = [];
17
18
  let hasMorePages = true;
18
19
  do {
19
20
  const credentials = await credentialsProvider.getCredentials({
20
- url: `https://${azureConfig.host}/${org}`
21
+ url
21
22
  });
22
23
  const searchRequestBody = {
23
24
  searchText: `path:${path} repo:${repo || "*"} proj:${project || "*"}`,
@@ -1 +1 @@
1
- {"version":3,"file":"azure.cjs.js","sources":["../../src/lib/azure.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 AzureDevOpsCredentialsProvider,\n AzureIntegrationConfig,\n} from '@backstage/integration';\n\nexport interface CodeSearchResponse {\n count: number;\n results: CodeSearchResultItem[];\n}\n\nexport interface CodeSearchResultItem {\n fileName: string;\n path: string;\n repository: {\n name: string;\n };\n project: {\n name: string;\n };\n branch?: string;\n}\n\ninterface CodeSearchRequest {\n searchText: string;\n $orderBy: Array<{ field: string; sortOrder: string }>;\n $skip: number;\n $top: number;\n filters?: {\n Branch: string[];\n };\n}\n\nconst isCloud = (host: string) => {\n if (host === 'dev.azure.com') {\n return true;\n }\n\n if (host.endsWith('.visualstudio.com')) {\n return true;\n }\n\n return false;\n};\n\nconst PAGE_SIZE = 1000;\n\n// codeSearch returns all files that matches the given search path.\nexport async function codeSearch(\n credentialsProvider: AzureDevOpsCredentialsProvider,\n azureConfig: AzureIntegrationConfig,\n org: string,\n project: string,\n repo: string,\n path: string,\n branch: string,\n): Promise<CodeSearchResultItem[]> {\n const searchBaseUrl = isCloud(azureConfig.host)\n ? 'https://almsearch.dev.azure.com'\n : `https://${azureConfig.host}`;\n const searchUrl = `${searchBaseUrl}/${org}/_apis/search/codesearchresults?api-version=6.0-preview.1`;\n\n let items: CodeSearchResultItem[] = [];\n let hasMorePages = true;\n\n do {\n const credentials = await credentialsProvider.getCredentials({\n url: `https://${azureConfig.host}/${org}`,\n });\n\n const searchRequestBody: CodeSearchRequest = {\n searchText: `path:${path} repo:${repo || '*'} proj:${project || '*'}`,\n $orderBy: [\n {\n field: 'path',\n sortOrder: 'ASC',\n },\n ],\n $skip: items.length,\n $top: PAGE_SIZE,\n };\n\n if (branch) {\n searchRequestBody.filters = { Branch: [branch] };\n }\n\n const response = await fetch(searchUrl, {\n headers: {\n ...credentials?.headers,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: JSON.stringify(searchRequestBody),\n });\n\n if (response.status !== 200) {\n throw new Error(\n `Azure DevOps search failed with response status ${response.status}`,\n );\n }\n\n const body: CodeSearchResponse = await response.json();\n items = [...items, ...body.results];\n hasMorePages = body.count > items.length;\n } while (hasMorePages);\n\n return items;\n}\n"],"names":[],"mappings":";;AAgDA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAiB;AAChC,EAAA,IAAI,SAAS,eAAA,EAAiB;AAC5B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,IAAA,CAAK,QAAA,CAAS,mBAAmB,CAAA,EAAG;AACtC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,KAAA;AACT,CAAA;AAEA,MAAM,SAAA,GAAY,GAAA;AAGlB,eAAsB,WACpB,mBAAA,EACA,WAAA,EACA,KACA,OAAA,EACA,IAAA,EACA,MACA,MAAA,EACiC;AACjC,EAAA,MAAM,aAAA,GAAgB,QAAQ,WAAA,CAAY,IAAI,IAC1C,iCAAA,GACA,CAAA,QAAA,EAAW,YAAY,IAAI,CAAA,CAAA;AAC/B,EAAA,MAAM,SAAA,GAAY,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,GAAG,CAAA,yDAAA,CAAA;AAEzC,EAAA,IAAI,QAAgC,EAAC;AACrC,EAAA,IAAI,YAAA,GAAe,IAAA;AAEnB,EAAA,GAAG;AACD,IAAA,MAAM,WAAA,GAAc,MAAM,mBAAA,CAAoB,cAAA,CAAe;AAAA,MAC3D,GAAA,EAAK,CAAA,QAAA,EAAW,WAAA,CAAY,IAAI,IAAI,GAAG,CAAA;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,iBAAA,GAAuC;AAAA,MAC3C,UAAA,EAAY,QAAQ,IAAI,CAAA,MAAA,EAAS,QAAQ,GAAG,CAAA,MAAA,EAAS,WAAW,GAAG,CAAA,CAAA;AAAA,MACnE,QAAA,EAAU;AAAA,QACR;AAAA,UACE,KAAA,EAAO,MAAA;AAAA,UACP,SAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,OAAO,KAAA,CAAM,MAAA;AAAA,MACb,IAAA,EAAM;AAAA,KACR;AAEA,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,iBAAA,CAAkB,OAAA,GAAU,EAAE,MAAA,EAAQ,CAAC,MAAM,CAAA,EAAE;AAAA,IACjD;AAEA,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,SAAA,EAAW;AAAA,MACtC,OAAA,EAAS;AAAA,QACP,GAAG,WAAA,EAAa,OAAA;AAAA,QAChB,cAAA,EAAgB;AAAA,OAClB;AAAA,MACA,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,iBAAiB;AAAA,KACvC,CAAA;AAED,IAAA,IAAI,QAAA,CAAS,WAAW,GAAA,EAAK;AAC3B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,gDAAA,EAAmD,SAAS,MAAM,CAAA;AAAA,OACpE;AAAA,IACF;AAEA,IAAA,MAAM,IAAA,GAA2B,MAAM,QAAA,CAAS,IAAA,EAAK;AACrD,IAAA,KAAA,GAAQ,CAAC,GAAG,KAAA,EAAO,GAAG,KAAK,OAAO,CAAA;AAClC,IAAA,YAAA,GAAe,IAAA,CAAK,QAAQ,KAAA,CAAM,MAAA;AAAA,EACpC,CAAA,QAAS,YAAA;AAET,EAAA,OAAO,KAAA;AACT;;;;"}
1
+ {"version":3,"file":"azure.cjs.js","sources":["../../src/lib/azure.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 AzureDevOpsCredentialsProvider,\n AzureIntegrationConfig,\n} from '@backstage/integration';\n\nexport interface CodeSearchResponse {\n count: number;\n results: CodeSearchResultItem[];\n}\n\nexport interface CodeSearchResultItem {\n fileName: string;\n path: string;\n repository: {\n name: string;\n };\n project: {\n name: string;\n };\n branch?: string;\n}\n\ninterface CodeSearchRequest {\n searchText: string;\n $orderBy: Array<{ field: string; sortOrder: string }>;\n $skip: number;\n $top: number;\n filters?: {\n Branch: string[];\n };\n}\n\nconst isCloud = (host: string) => {\n if (host === 'dev.azure.com') {\n return true;\n }\n\n if (host.endsWith('.visualstudio.com')) {\n return true;\n }\n\n return false;\n};\n\nconst PAGE_SIZE = 1000;\n\n// codeSearch returns all files that matches the given search path.\nexport async function codeSearch(\n credentialsProvider: AzureDevOpsCredentialsProvider,\n azureConfig: AzureIntegrationConfig,\n org: string,\n project: string,\n repo: string,\n path: string,\n branch: string,\n): Promise<CodeSearchResultItem[]> {\n const searchBaseUrl = isCloud(azureConfig.host)\n ? 'https://almsearch.dev.azure.com'\n : `https://${azureConfig.host}`;\n const searchUrl = `${searchBaseUrl}/${org}/_apis/search/codesearchresults?api-version=6.0-preview.1`;\n\n const url = azureConfig.host.endsWith('.visualstudio.com')\n ? `https://${azureConfig.host}`\n : `https://${azureConfig.host}/${org}`;\n\n let items: CodeSearchResultItem[] = [];\n let hasMorePages = true;\n\n do {\n const credentials = await credentialsProvider.getCredentials({\n url,\n });\n\n const searchRequestBody: CodeSearchRequest = {\n searchText: `path:${path} repo:${repo || '*'} proj:${project || '*'}`,\n $orderBy: [\n {\n field: 'path',\n sortOrder: 'ASC',\n },\n ],\n $skip: items.length,\n $top: PAGE_SIZE,\n };\n\n if (branch) {\n searchRequestBody.filters = { Branch: [branch] };\n }\n\n const response = await fetch(searchUrl, {\n headers: {\n ...credentials?.headers,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n body: JSON.stringify(searchRequestBody),\n });\n\n if (response.status !== 200) {\n throw new Error(\n `Azure DevOps search failed with response status ${response.status}`,\n );\n }\n\n const body: CodeSearchResponse = await response.json();\n items = [...items, ...body.results];\n hasMorePages = body.count > items.length;\n } while (hasMorePages);\n\n return items;\n}\n"],"names":[],"mappings":";;AAgDA,MAAM,OAAA,GAAU,CAAC,IAAA,KAAiB;AAChC,EAAA,IAAI,SAAS,eAAA,EAAiB;AAC5B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,IAAA,CAAK,QAAA,CAAS,mBAAmB,CAAA,EAAG;AACtC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,KAAA;AACT,CAAA;AAEA,MAAM,SAAA,GAAY,GAAA;AAGlB,eAAsB,WACpB,mBAAA,EACA,WAAA,EACA,KACA,OAAA,EACA,IAAA,EACA,MACA,MAAA,EACiC;AACjC,EAAA,MAAM,aAAA,GAAgB,QAAQ,WAAA,CAAY,IAAI,IAC1C,iCAAA,GACA,CAAA,QAAA,EAAW,YAAY,IAAI,CAAA,CAAA;AAC/B,EAAA,MAAM,SAAA,GAAY,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,GAAG,CAAA,yDAAA,CAAA;AAEzC,EAAA,MAAM,GAAA,GAAM,WAAA,CAAY,IAAA,CAAK,QAAA,CAAS,mBAAmB,CAAA,GACrD,CAAA,QAAA,EAAW,WAAA,CAAY,IAAI,CAAA,CAAA,GAC3B,CAAA,QAAA,EAAW,WAAA,CAAY,IAAI,IAAI,GAAG,CAAA,CAAA;AAEtC,EAAA,IAAI,QAAgC,EAAC;AACrC,EAAA,IAAI,YAAA,GAAe,IAAA;AAEnB,EAAA,GAAG;AACD,IAAA,MAAM,WAAA,GAAc,MAAM,mBAAA,CAAoB,cAAA,CAAe;AAAA,MAC3D;AAAA,KACD,CAAA;AAED,IAAA,MAAM,iBAAA,GAAuC;AAAA,MAC3C,UAAA,EAAY,QAAQ,IAAI,CAAA,MAAA,EAAS,QAAQ,GAAG,CAAA,MAAA,EAAS,WAAW,GAAG,CAAA,CAAA;AAAA,MACnE,QAAA,EAAU;AAAA,QACR;AAAA,UACE,KAAA,EAAO,MAAA;AAAA,UACP,SAAA,EAAW;AAAA;AACb,OACF;AAAA,MACA,OAAO,KAAA,CAAM,MAAA;AAAA,MACb,IAAA,EAAM;AAAA,KACR;AAEA,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,iBAAA,CAAkB,OAAA,GAAU,EAAE,MAAA,EAAQ,CAAC,MAAM,CAAA,EAAE;AAAA,IACjD;AAEA,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,SAAA,EAAW;AAAA,MACtC,OAAA,EAAS;AAAA,QACP,GAAG,WAAA,EAAa,OAAA;AAAA,QAChB,cAAA,EAAgB;AAAA,OAClB;AAAA,MACA,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,iBAAiB;AAAA,KACvC,CAAA;AAED,IAAA,IAAI,QAAA,CAAS,WAAW,GAAA,EAAK;AAC3B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,CAAA,gDAAA,EAAmD,SAAS,MAAM,CAAA;AAAA,OACpE;AAAA,IACF;AAEA,IAAA,MAAM,IAAA,GAA2B,MAAM,QAAA,CAAS,IAAA,EAAK;AACrD,IAAA,KAAA,GAAQ,CAAC,GAAG,KAAA,EAAO,GAAG,KAAK,OAAO,CAAA;AAClC,IAAA,YAAA,GAAe,IAAA,CAAK,QAAQ,KAAA,CAAM,MAAA;AAAA,EACpC,CAAA,QAAS,YAAA;AAET,EAAA,OAAO,KAAA;AACT;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-catalog-backend-module-azure",
3
- "version": "0.3.14-next.1",
3
+ "version": "0.3.14",
4
4
  "description": "A Backstage catalog backend module that helps integrate towards Azure",
5
5
  "backstage": {
6
6
  "role": "backend-plugin-module",
@@ -67,16 +67,16 @@
67
67
  "dependencies": {
68
68
  "@azure/identity": "^4.0.0",
69
69
  "@azure/storage-blob": "^12.5.0",
70
- "@backstage/backend-plugin-api": "1.7.0-next.1",
71
- "@backstage/config": "1.3.6",
72
- "@backstage/integration": "1.20.0-next.1",
73
- "@backstage/plugin-catalog-common": "1.1.8-next.0",
74
- "@backstage/plugin-catalog-node": "1.21.0-next.0",
70
+ "@backstage/backend-plugin-api": "^1.7.0",
71
+ "@backstage/config": "^1.3.6",
72
+ "@backstage/integration": "^1.20.0",
73
+ "@backstage/plugin-catalog-common": "^1.1.8",
74
+ "@backstage/plugin-catalog-node": "^2.0.0",
75
75
  "uuid": "^11.0.0"
76
76
  },
77
77
  "devDependencies": {
78
- "@backstage/backend-test-utils": "1.10.5-next.0",
79
- "@backstage/cli": "0.35.4-next.1",
78
+ "@backstage/backend-test-utils": "^1.11.0",
79
+ "@backstage/cli": "^0.35.4",
80
80
  "msw": "^1.0.0"
81
81
  },
82
82
  "configSchema": "config.d.ts"