1- import { RepositoryAccessLevel } from '../../../../git/models/issue' ;
1+ import type { IssueMember } from '../../../../git/models/issue' ;
2+ import { Issue , RepositoryAccessLevel } from '../../../../git/models/issue' ;
23import type { IssueOrPullRequestState } from '../../../../git/models/issueOrPullRequest' ;
34import type { PullRequestMember , PullRequestReviewer } from '../../../../git/models/pullRequest' ;
45import {
@@ -8,9 +9,43 @@ import {
89 PullRequestReviewState ,
910} from '../../../../git/models/pullRequest' ;
1011import type { Provider } from '../../../../git/models/remoteProvider' ;
12+ import type { ResourceDescriptor } from '../../integration' ;
1113
1214const vstsHostnameRegex = / \. v i s u a l s t u d i o \. c o m $ / ;
1315
16+ export interface AzureRepositoryDescriptor extends ResourceDescriptor {
17+ owner : string ;
18+ name : string ;
19+ }
20+
21+ export interface AzureOrganizationDescriptor extends ResourceDescriptor {
22+ id : string ;
23+ name : string ;
24+ }
25+
26+ export interface AzureProjectDescriptor extends ResourceDescriptor {
27+ id : string ;
28+ name : string ;
29+ resourceId : string ;
30+ resourceName : string ;
31+ }
32+
33+ export interface AzureRemoteRepositoryDescriptor extends ResourceDescriptor {
34+ id : string ;
35+ nodeId ?: string ;
36+ resourceName : string ;
37+ name : string ;
38+ projectName ?: string ;
39+ url ?: string ;
40+ cloneUrlHttps ?: string ;
41+ cloneUrlSsh ?: string ;
42+ }
43+
44+ export interface AzureProjectInputDescriptor extends ResourceDescriptor {
45+ owner : string ;
46+ name : string ;
47+ }
48+
1449export type AzureWorkItemStateCategory = 'Proposed' | 'InProgress' | 'Resolved' | 'Completed' | 'Removed' ;
1550
1651export function isClosedAzureWorkItemStateCategory ( category : AzureWorkItemStateCategory | undefined ) : boolean {
@@ -91,18 +126,21 @@ export interface WorkItem {
91126 workItemUpdates : AzureLink ;
92127 } ;
93128 fields : {
94- // 'System.AreaPath': string;
95- // 'System.TeamProject': string;
129+ //'System.AreaPath': string;
130+ 'System.TeamProject' : string ;
96131 // 'System.IterationPath': string;
97132 'System.WorkItemType' : string ;
98133 'System.State' : string ;
99134 // 'System.Reason': string;
135+ 'System.AssignedTo' : AzureUser ;
100136 'System.CreatedDate' : string ;
101- // 'System.CreatedBy': AzureUser;
137+ 'System.CreatedBy' : AzureUser ;
102138 'System.ChangedDate' : string ;
103- // 'System.ChangedBy': AzureUser;
104- // 'System.CommentCount': number;
139+ 'System.ChangedBy' : AzureUser ;
140+ 'System.CommentCount' : number ;
141+ 'System.Description' : string ;
105142 'System.Title' : string ;
143+ 'Microsoft.VSTS.Common.ClosedDate' : string ;
106144 // 'Microsoft.VSTS.Common.StateChangeDate': string;
107145 // 'Microsoft.VSTS.Common.Priority': number;
108146 // 'Microsoft.VSTS.Common.Severity': string;
@@ -390,6 +428,17 @@ function normalizeAzureBranchName(branchName: string): string {
390428 return branchName . startsWith ( 'refs/heads/' ) ? branchName . replace ( 'refs/heads/' , '' ) : branchName ;
391429}
392430
431+ function fromAzureUserToMember ( user : AzureUser , type : 'issue' ) : IssueMember ;
432+ function fromAzureUserToMember ( user : AzureUser , type : 'pullRequest' ) : PullRequestMember ;
433+ function fromAzureUserToMember ( user : AzureUser , _type : 'issue' | 'pullRequest' ) : PullRequestMember | IssueMember {
434+ return {
435+ avatarUrl : user . imageUrl ,
436+ id : user . id ,
437+ name : user . displayName ,
438+ url : user . url ,
439+ } ;
440+ }
441+
393442export function fromAzurePullRequest (
394443 pr : AzurePullRequest ,
395444 provider : Provider ,
@@ -399,12 +448,7 @@ export function fromAzurePullRequest(
399448 const url = new URL ( pr . url ) ;
400449 return new PullRequest (
401450 provider ,
402- {
403- id : pr . createdBy . id ,
404- name : pr . createdBy . displayName ,
405- avatarUrl : pr . createdBy . imageUrl ,
406- url : pr . createdBy . url ,
407- } ,
451+ fromAzureUserToMember ( pr . createdBy , 'pullRequest' ) ,
408452 pr . pullRequestId . toString ( ) ,
409453 pr . pullRequestId . toString ( ) ,
410454 pr . title ,
@@ -460,3 +504,33 @@ export function fromAzurePullRequest(
460504 } ,
461505 ) ;
462506}
507+
508+ export function fromAzureWorkItem (
509+ workItem : WorkItem ,
510+ provider : Provider ,
511+ project : AzureProjectDescriptor ,
512+ stateCategory ?: AzureWorkItemStateCategory ,
513+ ) : Issue {
514+ return new Issue (
515+ provider ,
516+ workItem . id . toString ( ) ,
517+ workItem . id . toString ( ) ,
518+ workItem . fields [ 'System.Title' ] ,
519+ workItem . _links . html . href ,
520+ new Date ( workItem . fields [ 'System.CreatedDate' ] ) ,
521+ new Date ( workItem . fields [ 'System.ChangedDate' ] ) ,
522+ isClosedAzureWorkItemStateCategory ( stateCategory ) ,
523+ azureWorkItemsStateCategoryToState ( stateCategory ) ,
524+ fromAzureUserToMember ( workItem . fields [ 'System.CreatedBy' ] , 'issue' ) ,
525+ [ fromAzureUserToMember ( workItem . fields [ 'System.AssignedTo' ] , 'issue' ) ] ,
526+ undefined ,
527+ workItem . fields [ 'Microsoft.VSTS.Common.ClosedDate' ]
528+ ? new Date ( workItem . fields [ 'Microsoft.VSTS.Common.ClosedDate' ] )
529+ : undefined ,
530+ undefined ,
531+ workItem . fields [ 'System.CommentCount' ] ,
532+ undefined ,
533+ workItem . fields [ 'System.Description' ] ,
534+ project ,
535+ ) ;
536+ }
0 commit comments