zephyr-agent 1.0.3 → 1.1.0-next.2
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.
|
@@ -9,6 +9,9 @@ const STANDARD_DOMAINS = {
|
|
|
9
9
|
'github.com': 'github',
|
|
10
10
|
'gitlab.com': 'gitlab',
|
|
11
11
|
'bitbucket.org': 'bitbucket',
|
|
12
|
+
'dev.azure.com': 'azure',
|
|
13
|
+
'ssh.dev.azure.com': 'azure',
|
|
14
|
+
'vs-ssh.visualstudio.com': 'azure',
|
|
12
15
|
};
|
|
13
16
|
/**
|
|
14
17
|
* Git provider detection and information extraction. In Zephyr, application_uid is
|
|
@@ -16,14 +19,13 @@ const STANDARD_DOMAINS = {
|
|
|
16
19
|
* package.json name field, not from the git URL.
|
|
17
20
|
*/
|
|
18
21
|
function getGitProviderInfo(gitUrl) {
|
|
19
|
-
var _a;
|
|
20
22
|
if (!gitUrl) {
|
|
21
23
|
throw new errors_1.ZephyrError(errors_1.ZeErrors.ERR_GIT_REMOTE_ORIGIN);
|
|
22
24
|
}
|
|
23
25
|
const parsed = (0, git_url_parse_1.default)(gitUrl);
|
|
24
26
|
const resource = parsed.resource.toLowerCase();
|
|
25
27
|
// Determine provider type and enterprise status from resource domain
|
|
26
|
-
const provider = (
|
|
28
|
+
const provider = detectProvider(parsed, resource);
|
|
27
29
|
const isEnterprise = provider === 'custom';
|
|
28
30
|
// Extract owner based on provider and enterprise status
|
|
29
31
|
const owner = isEnterprise
|
|
@@ -33,6 +35,20 @@ function getGitProviderInfo(gitUrl) {
|
|
|
33
35
|
const project = extractProjectName(parsed, provider, isEnterprise);
|
|
34
36
|
return { provider, owner, project, isEnterprise };
|
|
35
37
|
}
|
|
38
|
+
function detectProvider(parsed, resource) {
|
|
39
|
+
const standardProvider = STANDARD_DOMAINS[resource];
|
|
40
|
+
if (standardProvider) {
|
|
41
|
+
return standardProvider;
|
|
42
|
+
}
|
|
43
|
+
if (resource.endsWith('.visualstudio.com')) {
|
|
44
|
+
return 'azure';
|
|
45
|
+
}
|
|
46
|
+
const pathParts = getPathParts(parsed);
|
|
47
|
+
if (pathParts[0] === 'v3' && pathParts.length >= 4) {
|
|
48
|
+
return 'azure';
|
|
49
|
+
}
|
|
50
|
+
return 'custom';
|
|
51
|
+
}
|
|
36
52
|
/** Extracts organization name from enterprise domain */
|
|
37
53
|
function extractEnterpriseOwner(parsed) {
|
|
38
54
|
const domainParts = parsed.resource.split('.');
|
|
@@ -43,6 +59,9 @@ function extractEnterpriseOwner(parsed) {
|
|
|
43
59
|
}
|
|
44
60
|
/** Extracts owner from standard domain providers with special handling */
|
|
45
61
|
function extractStandardOwner(parsed, provider) {
|
|
62
|
+
if (provider === 'azure') {
|
|
63
|
+
return extractAzureOrganization(parsed);
|
|
64
|
+
}
|
|
46
65
|
const rawOwner = parsed.owner.toLowerCase();
|
|
47
66
|
// For GitLab and Bitbucket with subgroups, extract just the first part as the owner
|
|
48
67
|
if ((provider === 'gitlab' || provider === 'bitbucket') && rawOwner.includes('/')) {
|
|
@@ -52,6 +71,9 @@ function extractStandardOwner(parsed, provider) {
|
|
|
52
71
|
}
|
|
53
72
|
/** Extracts project name based on provider and URL structure */
|
|
54
73
|
function extractProjectName(parsed, provider, isEnterprise) {
|
|
74
|
+
if (provider === 'azure') {
|
|
75
|
+
return extractAzureRepoName(parsed);
|
|
76
|
+
}
|
|
55
77
|
// Special handling for self-hosted GitLab with deep subgroups
|
|
56
78
|
if (isEnterprise && provider === 'gitlab' && parsed.pathname) {
|
|
57
79
|
const pathParts = parsed.pathname.split('/').filter(Boolean);
|
|
@@ -63,4 +85,37 @@ function extractProjectName(parsed, provider, isEnterprise) {
|
|
|
63
85
|
// For all other cases, use the name property directly
|
|
64
86
|
return parsed.name.toLowerCase();
|
|
65
87
|
}
|
|
88
|
+
function extractAzureOrganization(parsed) {
|
|
89
|
+
const pathParts = getPathParts(parsed);
|
|
90
|
+
if (pathParts[0] === 'v3' && pathParts[1]) {
|
|
91
|
+
return pathParts[1].toLowerCase();
|
|
92
|
+
}
|
|
93
|
+
const resource = parsed.resource.toLowerCase();
|
|
94
|
+
if (resource.endsWith('.visualstudio.com')) {
|
|
95
|
+
return resource.replace(/\.visualstudio\.com$/, '').toLowerCase();
|
|
96
|
+
}
|
|
97
|
+
const organization = pathParts[0];
|
|
98
|
+
return (organization || parsed.owner).toLowerCase();
|
|
99
|
+
}
|
|
100
|
+
function extractAzureRepoName(parsed) {
|
|
101
|
+
const pathParts = getPathParts(parsed);
|
|
102
|
+
const gitSegmentIndex = pathParts.findIndex((part) => part.toLowerCase() === '_git');
|
|
103
|
+
const repoName = gitSegmentIndex >= 0
|
|
104
|
+
? pathParts[gitSegmentIndex + 1]
|
|
105
|
+
: pathParts[pathParts.length - 1];
|
|
106
|
+
return sanitizeGitName(repoName || parsed.name);
|
|
107
|
+
}
|
|
108
|
+
function getPathParts(parsed) {
|
|
109
|
+
return parsed.pathname.split('/').filter(Boolean);
|
|
110
|
+
}
|
|
111
|
+
function sanitizeGitName(name) {
|
|
112
|
+
try {
|
|
113
|
+
return decodeURIComponent(name)
|
|
114
|
+
.replace(/\.git$/, '')
|
|
115
|
+
.toLowerCase();
|
|
116
|
+
}
|
|
117
|
+
catch (_a) {
|
|
118
|
+
return name.replace(/\.git$/, '').toLowerCase();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
66
121
|
//# sourceMappingURL=git-provider-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-provider-utils.js","sourceRoot":"","sources":["../../../src/lib/build-context/git-provider-utils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"git-provider-utils.js","sourceRoot":"","sources":["../../../src/lib/build-context/git-provider-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/package.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zephyr-agent",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.1.0-next.2",
|
|
4
4
|
"description": "Zephyr plugin agent",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"open": "^10.1.0",
|
|
42
42
|
"proper-lockfile": "^4.1.2",
|
|
43
43
|
"tslib": "^2.8.1",
|
|
44
|
-
"zephyr-edge-contract": "1.0.
|
|
44
|
+
"zephyr-edge-contract": "1.1.0-next.2"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@jest/globals": "^29.7.0",
|