@backstage-community/plugin-jfrog-artifactory 1.30.1 → 1.31.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 +12 -0
- package/config.schema.json +32 -0
- package/dist/api/index.esm.js +27 -14
- package/dist/api/index.esm.js.map +1 -1
- package/package.json +11 -11
- package/config.d.ts +0 -40
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @backstage-community/plugin-jfrog-artifactory
|
|
2
2
|
|
|
3
|
+
## 1.31.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- f21a634: Backstage version bump to v1.54.5
|
|
8
|
+
|
|
9
|
+
## 1.30.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 010f9ce: Fetch all JFrog Artifactory tags up to the configured `pageLimit`, including when the result spans multiple API pages.
|
|
14
|
+
|
|
3
15
|
## 1.30.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"type": "object",
|
|
4
|
+
"properties": {
|
|
5
|
+
"jfrogArtifactory": {
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"proxyPath": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "The base url of the Jfrog Artifactory instance.",
|
|
11
|
+
"visibility": "frontend"
|
|
12
|
+
},
|
|
13
|
+
"sortField": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"description": "The sort field for the Jfrog Artifactory instance.",
|
|
16
|
+
"visibility": "frontend"
|
|
17
|
+
},
|
|
18
|
+
"repoFilter": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "The repository filter of the Jfrog Artifactory instance.",
|
|
21
|
+
"visibility": "frontend"
|
|
22
|
+
},
|
|
23
|
+
"pageLimit": {
|
|
24
|
+
"type": "number",
|
|
25
|
+
"description": "The page limit of the Jfrog Artifactory instance.",
|
|
26
|
+
"visibility": "frontend"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"description": "Configurations for the Jfrog Artifactory plugin"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
package/dist/api/index.esm.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createApiRef } from '@backstage/core-plugin-api';
|
|
2
2
|
|
|
3
3
|
const DEFAULT_PROXY_PATH = "/jfrog-artifactory/api";
|
|
4
|
+
const MAX_PAGE_SIZE = 200;
|
|
4
5
|
const jfrogArtifactoryApiRef = createApiRef({
|
|
5
6
|
id: "plugin.jfrog-artifactory.service"
|
|
6
7
|
});
|
|
@@ -52,6 +53,7 @@ class JfrogArtifactoryApiClient {
|
|
|
52
53
|
}
|
|
53
54
|
async getTags(image, target, repoFilter) {
|
|
54
55
|
const proxyUrl = await this.getBaseUrl(target);
|
|
56
|
+
const pageLimit = this.getPageLimit();
|
|
55
57
|
const filter = {
|
|
56
58
|
packageId: `docker://${image}`,
|
|
57
59
|
name: "*",
|
|
@@ -63,21 +65,32 @@ class JfrogArtifactoryApiClient {
|
|
|
63
65
|
name: repositoryFilter
|
|
64
66
|
};
|
|
65
67
|
}
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
orderBy: {
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
const edges = [];
|
|
69
|
+
let pageInfo = { hasNextPage: false, endCursor: null };
|
|
70
|
+
let after;
|
|
71
|
+
do {
|
|
72
|
+
const tagQuery = {
|
|
73
|
+
query: "query ($filter: VersionFilter!, $first: Int, $after: ID, $orderBy: VersionOrder) { versions (filter: $filter, first: $first, after: $after, orderBy: $orderBy) { edges { node { name, created, modified, package { id }, repos { name, type, leadFilePath }, licenses { name, source }, size, stats { downloadCount }, vulnerabilities { critical, high, medium, low, info, unknown, skipped }, files { name, lead, size, md5, sha1, sha256, mimeType } } } pageInfo { hasNextPage, endCursor } } }",
|
|
74
|
+
variables: {
|
|
75
|
+
filter,
|
|
76
|
+
first: Math.min(MAX_PAGE_SIZE, pageLimit - edges.length),
|
|
77
|
+
after,
|
|
78
|
+
orderBy: {
|
|
79
|
+
field: this.getSortField(),
|
|
80
|
+
direction: "DESC"
|
|
81
|
+
}
|
|
74
82
|
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
83
|
+
};
|
|
84
|
+
const response = await this.fetcher(
|
|
85
|
+
`${proxyUrl}/metadata/api/v1/query`,
|
|
86
|
+
JSON.stringify(tagQuery)
|
|
87
|
+
);
|
|
88
|
+
const remaining = pageLimit - edges.length;
|
|
89
|
+
edges.push(...response.data.versions.edges.slice(0, remaining));
|
|
90
|
+
pageInfo = response.data.versions.pageInfo;
|
|
91
|
+
after = pageInfo.endCursor ?? void 0;
|
|
92
|
+
} while (edges.length < pageLimit && pageInfo.hasNextPage && after);
|
|
93
|
+
return { data: { versions: { edges, pageInfo } } };
|
|
81
94
|
}
|
|
82
95
|
}
|
|
83
96
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../src/api/index.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ConfigApi,\n createApiRef,\n DiscoveryApi,\n IdentityApi,\n} from '@backstage/core-plugin-api';\n\nimport { TagsResponse } from '../types';\n\nconst DEFAULT_PROXY_PATH = '/jfrog-artifactory/api';\n\nexport interface JfrogArtifactoryApiV1 {\n getTags(\n image: string,\n target?: string,\n repoFilter?: string,\n ): Promise<TagsResponse>;\n}\n\nexport const jfrogArtifactoryApiRef = createApiRef<JfrogArtifactoryApiV1>({\n id: 'plugin.jfrog-artifactory.service',\n});\n\nexport type Options = {\n discoveryApi: DiscoveryApi;\n configApi: ConfigApi;\n identityApi: IdentityApi;\n};\n\nexport class JfrogArtifactoryApiClient implements JfrogArtifactoryApiV1 {\n // @ts-ignore\n private readonly discoveryApi: DiscoveryApi;\n\n private readonly configApi: ConfigApi;\n\n private readonly identityApi: IdentityApi;\n\n constructor(options: Options) {\n this.discoveryApi = options.discoveryApi;\n this.configApi = options.configApi;\n this.identityApi = options.identityApi;\n }\n\n private async getBaseUrl(target?: string) {\n const proxyPath =\n this.configApi.getOptionalString('jfrogArtifactory.proxyPath') ||\n DEFAULT_PROXY_PATH;\n return `${await this.discoveryApi.getBaseUrl('proxy')}${\n target ?? proxyPath\n }`;\n }\n\n private async fetcher(url: string, query: string) {\n const { token: idToken } = await this.identityApi.getCredentials();\n const response = await fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n ...(idToken && { Authorization: `Bearer ${idToken}` }),\n },\n method: 'POST',\n body: query,\n });\n if (!response.ok) {\n throw new Error(\n `failed to fetch data, status ${response.status}: ${response.statusText}`,\n );\n }\n return await response.json();\n }\n\n private getSortField(): string {\n const sortField = this.configApi.getOptionalString(\n 'jfrogArtifactory.sortField',\n );\n\n // Only allow valid sort fields\n if (sortField === 'MODIFIED' || sortField === 'NAME_SEMVER') {\n return sortField;\n }\n\n // Default to NAME_SEMVER if not specified or invalid\n return 'NAME_SEMVER';\n }\n\n private getRepoFilter(): string | undefined {\n return this.configApi.getOptionalString('jfrogArtifactory.repoFilter');\n }\n\n private getPageLimit(): number {\n return (\n this.configApi.getOptionalNumber('jfrogArtifactory.pageLimit') || 100\n );\n }\n\n async getTags(image: string, target?: string, repoFilter?: string) {\n const proxyUrl = await this.getBaseUrl(target);\n\n const filter: any = {\n packageId: `docker://${image}`,\n name: '*',\n ignorePreRelease: false,\n };\n\n const repositoryFilter = repoFilter || this.getRepoFilter();\n if (repositoryFilter) {\n filter.repositoriesIn = {\n name: repositoryFilter,\n };\n }\n\n const tagQuery = {\n
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../src/api/index.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ConfigApi,\n createApiRef,\n DiscoveryApi,\n IdentityApi,\n} from '@backstage/core-plugin-api';\n\nimport { Edge, PageInfo, TagsResponse } from '../types';\n\nconst DEFAULT_PROXY_PATH = '/jfrog-artifactory/api';\nconst MAX_PAGE_SIZE = 200;\n\nexport interface JfrogArtifactoryApiV1 {\n getTags(\n image: string,\n target?: string,\n repoFilter?: string,\n ): Promise<TagsResponse>;\n}\n\nexport const jfrogArtifactoryApiRef = createApiRef<JfrogArtifactoryApiV1>({\n id: 'plugin.jfrog-artifactory.service',\n});\n\nexport type Options = {\n discoveryApi: DiscoveryApi;\n configApi: ConfigApi;\n identityApi: IdentityApi;\n};\n\nexport class JfrogArtifactoryApiClient implements JfrogArtifactoryApiV1 {\n // @ts-ignore\n private readonly discoveryApi: DiscoveryApi;\n\n private readonly configApi: ConfigApi;\n\n private readonly identityApi: IdentityApi;\n\n constructor(options: Options) {\n this.discoveryApi = options.discoveryApi;\n this.configApi = options.configApi;\n this.identityApi = options.identityApi;\n }\n\n private async getBaseUrl(target?: string) {\n const proxyPath =\n this.configApi.getOptionalString('jfrogArtifactory.proxyPath') ||\n DEFAULT_PROXY_PATH;\n return `${await this.discoveryApi.getBaseUrl('proxy')}${\n target ?? proxyPath\n }`;\n }\n\n private async fetcher<T>(url: string, query: string): Promise<T> {\n const { token: idToken } = await this.identityApi.getCredentials();\n const response = await fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n ...(idToken && { Authorization: `Bearer ${idToken}` }),\n },\n method: 'POST',\n body: query,\n });\n if (!response.ok) {\n throw new Error(\n `failed to fetch data, status ${response.status}: ${response.statusText}`,\n );\n }\n return (await response.json()) as T;\n }\n\n private getSortField(): string {\n const sortField = this.configApi.getOptionalString(\n 'jfrogArtifactory.sortField',\n );\n\n // Only allow valid sort fields\n if (sortField === 'MODIFIED' || sortField === 'NAME_SEMVER') {\n return sortField;\n }\n\n // Default to NAME_SEMVER if not specified or invalid\n return 'NAME_SEMVER';\n }\n\n private getRepoFilter(): string | undefined {\n return this.configApi.getOptionalString('jfrogArtifactory.repoFilter');\n }\n\n private getPageLimit(): number {\n return (\n this.configApi.getOptionalNumber('jfrogArtifactory.pageLimit') || 100\n );\n }\n\n async getTags(image: string, target?: string, repoFilter?: string) {\n const proxyUrl = await this.getBaseUrl(target);\n const pageLimit = this.getPageLimit();\n\n const filter: any = {\n packageId: `docker://${image}`,\n name: '*',\n ignorePreRelease: false,\n };\n\n const repositoryFilter = repoFilter || this.getRepoFilter();\n if (repositoryFilter) {\n filter.repositoriesIn = {\n name: repositoryFilter,\n };\n }\n\n const edges: Edge[] = [];\n let pageInfo: PageInfo = { hasNextPage: false, endCursor: null };\n let after: string | undefined;\n\n do {\n const tagQuery = {\n query:\n 'query ($filter: VersionFilter!, $first: Int, $after: ID, $orderBy: VersionOrder) { versions (filter: $filter, first: $first, after: $after, orderBy: $orderBy) { edges { node { name, created, modified, package { id }, repos { name, type, leadFilePath }, licenses { name, source }, size, stats { downloadCount }, vulnerabilities { critical, high, medium, low, info, unknown, skipped }, files { name, lead, size, md5, sha1, sha256, mimeType } } } pageInfo { hasNextPage, endCursor } } }',\n variables: {\n filter,\n first: Math.min(MAX_PAGE_SIZE, pageLimit - edges.length),\n after,\n orderBy: {\n field: this.getSortField(),\n direction: 'DESC',\n },\n },\n };\n\n const response = await this.fetcher<TagsResponse>(\n `${proxyUrl}/metadata/api/v1/query`,\n JSON.stringify(tagQuery),\n );\n const remaining = pageLimit - edges.length;\n edges.push(...response.data.versions.edges.slice(0, remaining));\n pageInfo = response.data.versions.pageInfo;\n after = pageInfo.endCursor ?? undefined;\n } while (edges.length < pageLimit && pageInfo.hasNextPage && after);\n\n return { data: { versions: { edges, pageInfo } } };\n }\n}\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage-community/plugin-jfrog-artifactory",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.31.0",
|
|
4
4
|
"main": "./dist/index.esm.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -50,11 +50,11 @@
|
|
|
50
50
|
"tsc": "tsc"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@backstage/catalog-model": "^1.
|
|
54
|
-
"@backstage/core-components": "^0.18.
|
|
55
|
-
"@backstage/core-plugin-api": "^1.12.
|
|
56
|
-
"@backstage/plugin-catalog-react": "^3.
|
|
57
|
-
"@backstage/ui": "^0.
|
|
53
|
+
"@backstage/catalog-model": "^1.10.0",
|
|
54
|
+
"@backstage/core-components": "^0.18.13",
|
|
55
|
+
"@backstage/core-plugin-api": "^1.12.9",
|
|
56
|
+
"@backstage/plugin-catalog-react": "^3.2.2",
|
|
57
|
+
"@backstage/ui": "^0.17.1",
|
|
58
58
|
"filesize": "^11.0.0",
|
|
59
59
|
"luxon": "^3.6.1",
|
|
60
60
|
"react-use": "^17.4.0"
|
|
@@ -65,9 +65,9 @@
|
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@axe-core/playwright": "^4.11.0",
|
|
68
|
-
"@backstage/cli": "^0.36.
|
|
69
|
-
"@backstage/dev-utils": "^1.1.
|
|
70
|
-
"@backstage/test-utils": "^1.7.
|
|
68
|
+
"@backstage/cli": "^0.36.5",
|
|
69
|
+
"@backstage/dev-utils": "^1.1.26",
|
|
70
|
+
"@backstage/test-utils": "^1.7.21",
|
|
71
71
|
"@playwright/test": "1.61.1",
|
|
72
72
|
"@testing-library/dom": "^10.4.1",
|
|
73
73
|
"@testing-library/jest-dom": "^6.9.1",
|
|
@@ -78,10 +78,10 @@
|
|
|
78
78
|
},
|
|
79
79
|
"files": [
|
|
80
80
|
"dist",
|
|
81
|
-
"config.
|
|
81
|
+
"config.schema.json",
|
|
82
82
|
"app-config.yaml"
|
|
83
83
|
],
|
|
84
|
-
"configSchema": "config.
|
|
84
|
+
"configSchema": "config.schema.json",
|
|
85
85
|
"repository": {
|
|
86
86
|
"type": "git",
|
|
87
87
|
"url": "https://github.com/backstage/community-plugins",
|
package/config.d.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2024 The Backstage Authors
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
export interface Config {
|
|
17
|
-
/** Configurations for the Jfrog Artifactory plugin */
|
|
18
|
-
jfrogArtifactory?: {
|
|
19
|
-
/**
|
|
20
|
-
* The base url of the Jfrog Artifactory instance.
|
|
21
|
-
* @visibility frontend
|
|
22
|
-
*/
|
|
23
|
-
proxyPath?: string;
|
|
24
|
-
/**
|
|
25
|
-
* The sort field for the Jfrog Artifactory instance.
|
|
26
|
-
* @visibility frontend
|
|
27
|
-
*/
|
|
28
|
-
sortField?: string;
|
|
29
|
-
/**
|
|
30
|
-
* The repository filter of the Jfrog Artifactory instance.
|
|
31
|
-
* @visibility frontend
|
|
32
|
-
*/
|
|
33
|
-
repoFilter?: string;
|
|
34
|
-
/**
|
|
35
|
-
* The page limit of the Jfrog Artifactory instance.
|
|
36
|
-
* @visibility frontend
|
|
37
|
-
*/
|
|
38
|
-
pageLimit?: number;
|
|
39
|
-
};
|
|
40
|
-
}
|