@elisra-devops/docgen-data-provider 0.4.6 → 0.4.13

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.
Files changed (68) hide show
  1. package/.github/sonar-project.properties +4 -4
  2. package/.github/workflows/ci.yml +21 -21
  3. package/.github/workflows/release.yml +45 -40
  4. package/LICENSE +21 -21
  5. package/README.md +39 -38
  6. package/bin/helpers/helper.d.ts +37 -0
  7. package/bin/helpers/helper.js +83 -0
  8. package/bin/helpers/helper.js.map +1 -0
  9. package/bin/helpers/tfs.d.ts +5 -0
  10. package/bin/helpers/tfs.js +100 -0
  11. package/bin/helpers/tfs.js.map +1 -0
  12. package/bin/index.d.ts +16 -0
  13. package/bin/index.js +53 -0
  14. package/bin/index.js.map +1 -0
  15. package/bin/models/tfs-data.d.ts +86 -0
  16. package/bin/models/tfs-data.js +63 -0
  17. package/bin/models/tfs-data.js.map +1 -0
  18. package/bin/modules/GitDataProvider.d.ts +26 -0
  19. package/bin/modules/GitDataProvider.js +301 -0
  20. package/bin/modules/GitDataProvider.js.map +1 -0
  21. package/bin/modules/MangementDataProvider.d.ts +9 -0
  22. package/bin/modules/MangementDataProvider.js +62 -0
  23. package/bin/modules/MangementDataProvider.js.map +1 -0
  24. package/bin/modules/PipelinesDataProvider.d.ts +13 -0
  25. package/bin/modules/PipelinesDataProvider.js +103 -0
  26. package/bin/modules/PipelinesDataProvider.js.map +1 -0
  27. package/bin/modules/TestDataProvider.d.ts +24 -0
  28. package/bin/modules/TestDataProvider.js +294 -0
  29. package/bin/modules/TestDataProvider.js.map +1 -0
  30. package/bin/modules/TicketsDataProvider.d.ts +26 -0
  31. package/bin/modules/TicketsDataProvider.js +385 -0
  32. package/bin/modules/TicketsDataProvider.js.map +1 -0
  33. package/bin/modules/test/gitDataProvider.test.d.ts +1 -0
  34. package/bin/modules/test/gitDataProvider.test.js +138 -0
  35. package/bin/modules/test/gitDataProvider.test.js.map +1 -0
  36. package/bin/modules/test/managmentDataProvider.test.d.ts +1 -0
  37. package/bin/modules/test/managmentDataProvider.test.js +40 -0
  38. package/bin/modules/test/managmentDataProvider.test.js.map +1 -0
  39. package/bin/modules/test/pipelineDataProvider.test.d.ts +1 -0
  40. package/bin/modules/test/pipelineDataProvider.test.js +62 -0
  41. package/bin/modules/test/pipelineDataProvider.test.js.map +1 -0
  42. package/bin/modules/test/testDataProvider.test.d.ts +1 -0
  43. package/bin/modules/test/testDataProvider.test.js +103 -0
  44. package/bin/modules/test/testDataProvider.test.js.map +1 -0
  45. package/bin/modules/test/ticketsDataProvider.test.d.ts +1 -0
  46. package/bin/modules/test/ticketsDataProvider.test.js +103 -0
  47. package/bin/modules/test/ticketsDataProvider.test.js.map +1 -0
  48. package/bin/utils/logger.d.ts +3 -0
  49. package/bin/utils/logger.js +33 -0
  50. package/bin/utils/logger.js.map +1 -0
  51. package/enviroment.d.ts +12 -12
  52. package/package.json +53 -53
  53. package/src/helpers/helper.ts +117 -117
  54. package/src/helpers/tfs.ts +92 -92
  55. package/src/index.ts +36 -36
  56. package/src/models/tfs-data.ts +136 -136
  57. package/src/modules/GitDataProvider.ts +446 -446
  58. package/src/modules/MangementDataProvider.ts +59 -59
  59. package/src/modules/PipelinesDataProvider.ts +142 -142
  60. package/src/modules/TestDataProvider.ts +423 -423
  61. package/src/modules/TicketsDataProvider.ts +435 -435
  62. package/src/modules/test/gitDataProvider.test.ts +207 -207
  63. package/src/modules/test/managmentDataProvider.test.ts +33 -33
  64. package/src/modules/test/pipelineDataProvider.test.ts +79 -79
  65. package/src/modules/test/testDataProvider.test.ts +139 -139
  66. package/src/modules/test/ticketsDataProvider.test.ts +138 -138
  67. package/src/utils/logger.ts +37 -37
  68. package/tsconfig.json +27 -27
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TestSteps = exports.TestCase = exports.QueryType = exports.value = exports.Workitem = exports.Column = exports.Query = exports.QueryAllTypes = void 0;
4
+ class QueryAllTypes {
5
+ }
6
+ exports.QueryAllTypes = QueryAllTypes;
7
+ class Query {
8
+ constructor() {
9
+ this.columns = new Array();
10
+ //sortColumns: Sortcolumn[] =new Array<Sortcolumn>()
11
+ this.workItems = new Array();
12
+ }
13
+ }
14
+ exports.Query = Query;
15
+ class QueryTree {
16
+ constructor() {
17
+ this.columns = new Array();
18
+ //sortColumns: Sortcolumn[] =new Array<Sortcolumn>()
19
+ this.workItems = new Array();
20
+ }
21
+ }
22
+ class Column {
23
+ }
24
+ exports.Column = Column;
25
+ class Sortcolumn {
26
+ }
27
+ class Field {
28
+ }
29
+ class Workitem {
30
+ constructor() {
31
+ this.Source = 0;
32
+ }
33
+ }
34
+ exports.Workitem = Workitem;
35
+ class value {
36
+ }
37
+ exports.value = value;
38
+ var QueryResultType;
39
+ (function (QueryResultType) {
40
+ QueryResultType[QueryResultType["WorkItem"] = 1] = "WorkItem";
41
+ QueryResultType[QueryResultType["WorkItemLink"] = 2] = "WorkItemLink";
42
+ })(QueryResultType || (QueryResultType = {}));
43
+ var QueryType;
44
+ (function (QueryType) {
45
+ QueryType["Flat"] = "flat";
46
+ QueryType["Tree"] = "tree";
47
+ QueryType["OneHop"] = "oneHop";
48
+ })(QueryType = exports.QueryType || (exports.QueryType = {}));
49
+ class Workitemrelation {
50
+ }
51
+ class Workrelation {
52
+ }
53
+ class Source {
54
+ }
55
+ class Target {
56
+ }
57
+ class TestCase {
58
+ }
59
+ exports.TestCase = TestCase;
60
+ class TestSteps {
61
+ }
62
+ exports.TestSteps = TestSteps;
63
+ //# sourceMappingURL=tfs-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tfs-data.js","sourceRoot":"","sources":["../../src/models/tfs-data.ts"],"names":[],"mappings":";;;AACA,MAAa,aAAa;CAGzB;AAHD,sCAGC;AAED,MAAa,KAAK;IAAlB;QAIE,YAAO,GAAa,IAAI,KAAK,EAAU,CAAC;QACxC,qDAAqD;QACrD,cAAS,GAAe,IAAI,KAAK,EAAY,CAAC;IAChD,CAAC;CAAA;AAPD,sBAOC;AACD,MAAM,SAAS;IAAf;QAIE,YAAO,GAAa,IAAI,KAAK,EAAU,CAAC;QACxC,qDAAqD;QACrD,cAAS,GAAuB,IAAI,KAAK,EAAoB,CAAC;IAChE,CAAC;CAAA;AAED,MAAa,MAAM;CAIlB;AAJD,wBAIC;AAED,MAAM,UAAU;CAGf;AAED,MAAM,KAAK;CAIV;AAED,MAAa,QAAQ;IAArB;QAKE,WAAM,GAAW,CAAC,CAAC;IAGrB,CAAC;CAAA;AARD,4BAQC;AACD,MAAa,KAAK;CAGjB;AAHD,sBAGC;AACD,IAAK,eAGJ;AAHD,WAAK,eAAe;IAClB,6DAAY,CAAA;IACZ,qEAAgB,CAAA;AAClB,CAAC,EAHI,eAAe,KAAf,eAAe,QAGnB;AACD,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,0BAAa,CAAA;IACb,0BAAa,CAAA;IACb,8BAAiB,CAAA;AACnB,CAAC,EAJW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAIpB;AAED,MAAM,gBAAgB;CAIrB;AAED,MAAM,YAAY;CAGjB;AAED,MAAM,MAAM;CAGX;AAED,MAAM,MAAM;CAGX;AA0CD,MAAa,QAAQ;CAQpB;AARD,4BAQC;AACD,MAAa,SAAS;CAGrB;AAHD,8BAGC"}
@@ -0,0 +1,26 @@
1
+ import TicketsDataProvider from "./TicketsDataProvider";
2
+ export default class GitDataProvider {
3
+ orgUrl: string;
4
+ token: string;
5
+ ticketsDataProvider: TicketsDataProvider;
6
+ constructor(orgUrl: string, token: string);
7
+ GetTeamProjectGitReposList(teamProject: string): Promise<any>;
8
+ GetGitRepoFromRepoId(repoId: string): Promise<any>;
9
+ GetJsonFileFromGitRepo(projectName: string, repoName: string, filePath: string): Promise<any>;
10
+ GetGitRepoFromPrId(pullRequestId: number): Promise<any>;
11
+ GetPullRequestCommits(repositoryId: string, pullRequestId: number): Promise<any>;
12
+ GetPullRequestsLinkedItemsInCommitRange(projectId: string, repositoryId: string, commitRangeArray: any): Promise<any>;
13
+ GetItemsInCommitRange(projectId: string, repositoryId: string, commitRange: any): Promise<any>;
14
+ GetPullRequestsInCommitRangeWithoutLinkedItems(projectId: string, repositoryId: string, commitRangeArray: any): Promise<any[]>;
15
+ GetCommitByCommitId(projectId: string, repositoryId: string, commitSha: string): Promise<any>;
16
+ GetCommitForPipeline(projectId: string, buildId: number): Promise<any>;
17
+ GetItemsForPipelinesRange(projectId: string, fromBuildId: number, toBuildId: number): Promise<any>;
18
+ GetCommitsInDateRange(projectId: string, repositoryId: string, fromDate: string, toDate: string, branchName?: string): Promise<any>;
19
+ GetCommitsInCommitRange(projectId: string, repositoryId: string, fromSha: string, toSha: string): Promise<any>;
20
+ CreatePullRequestComment(projectName: string, repoID: string, pullRequestID: number, threads: any): Promise<any>;
21
+ GetPullRequestComments(projectName: string, repoID: string, pullRequestID: number): Promise<any>;
22
+ GetCommitsForRepo(projectName: string, repoID: string, branchName?: string): Promise<any>;
23
+ GetPullRequestsForRepo(projectName: string, repoID: string): Promise<any>;
24
+ GetItemsInPullRequestRange(projectId: string, repositoryId: string, pullRequestIDs: any): Promise<any>;
25
+ GetRepoBranches(projectName: string, repoID: string): Promise<any>;
26
+ }
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const tfs_1 = require("../helpers/tfs");
13
+ const TicketsDataProvider_1 = require("./TicketsDataProvider");
14
+ const logger_1 = require("../utils/logger");
15
+ class GitDataProvider {
16
+ constructor(orgUrl, token) {
17
+ this.orgUrl = "";
18
+ this.token = "";
19
+ this.orgUrl = orgUrl;
20
+ this.token = token;
21
+ this.ticketsDataProvider = new TicketsDataProvider_1.default(this.orgUrl, this.token);
22
+ }
23
+ GetTeamProjectGitReposList(teamProject) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ logger_1.default.debug(`fetching repos list for team project - ${teamProject}`);
26
+ let url = `${this.orgUrl}/${teamProject}/_apis/git/repositories`;
27
+ return tfs_1.TFSServices.getItemContent(url, this.token, "get");
28
+ });
29
+ } //GetGitRepoFromPrId
30
+ GetGitRepoFromRepoId(repoId) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ logger_1.default.debug(`fetching repo data by id - ${repoId}`);
33
+ let url = `${this.orgUrl}_apis/git/repositories/${repoId}`;
34
+ return tfs_1.TFSServices.getItemContent(url, this.token, "get");
35
+ });
36
+ } //GetGitRepoFromPrId
37
+ GetJsonFileFromGitRepo(projectName, repoName, filePath) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ let url = `${this.orgUrl}${projectName}/_apis/git/repositories/${repoName}/items?path=${filePath}&includeContent=true`;
40
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get");
41
+ let jsonObject = JSON.parse(res.content);
42
+ return jsonObject;
43
+ });
44
+ } //GetJsonFileFromGitRepo
45
+ GetGitRepoFromPrId(pullRequestId) {
46
+ return __awaiter(this, void 0, void 0, function* () {
47
+ let url = `${this.orgUrl}_apis/git/pullrequests/${pullRequestId}`;
48
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get");
49
+ return res;
50
+ });
51
+ } //GetGitRepoFromPrId
52
+ GetPullRequestCommits(repositoryId, pullRequestId) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ let url = `${this.orgUrl}_apis/git/repositories/${repositoryId}/pullRequests/${pullRequestId}/commits`;
55
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get");
56
+ return res;
57
+ });
58
+ } //GetGitRepoFromPrId
59
+ GetPullRequestsLinkedItemsInCommitRange(projectId, repositoryId, commitRangeArray) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ let pullRequestsFilteredArray = [];
62
+ let ChangeSetsArray = [];
63
+ //get all pr's in git repo
64
+ let url = `${this.orgUrl}${projectId}/_apis/git/repositories/${repositoryId}/pullrequests?status=completed&includeLinks=true&$top=2000}`;
65
+ logger_1.default.debug(`request url: ${url}`);
66
+ let pullRequestsArray = yield tfs_1.TFSServices.getItemContent(url, this.token, "get");
67
+ logger_1.default.info(`got ${pullRequestsArray.count} pullrequests for repo: ${repositoryId}`);
68
+ //iterate commit list to filter relavant pullrequests
69
+ pullRequestsArray.value.forEach((pr) => {
70
+ commitRangeArray.value.forEach((commit) => {
71
+ if (pr.lastMergeCommit.commitId == commit.commitId) {
72
+ pullRequestsFilteredArray.push(pr);
73
+ }
74
+ });
75
+ });
76
+ logger_1.default.info(`filtered in commit range ${pullRequestsFilteredArray.length} pullrequests for repo: ${repositoryId}`);
77
+ //extract linked items and append them to result
78
+ yield Promise.all(pullRequestsFilteredArray.map((pr) => __awaiter(this, void 0, void 0, function* () {
79
+ let linkedItems = {};
80
+ try {
81
+ if (pr._links.workItems.href) {
82
+ //get workitems linked to pr
83
+ let url = pr._links.workItems.href;
84
+ linkedItems = yield tfs_1.TFSServices.getItemContent(url, this.token, "get");
85
+ logger_1.default.info(`got ${linkedItems.count} items linked to pr ${pr.pullRequestId}`);
86
+ yield Promise.all(linkedItems.value.map((item) => __awaiter(this, void 0, void 0, function* () {
87
+ let populatedItem = yield this.ticketsDataProvider.GetWorkItem(projectId, item.id);
88
+ let changeSet = {
89
+ workItem: populatedItem,
90
+ pullrequest: pr,
91
+ };
92
+ ChangeSetsArray.push(changeSet);
93
+ })));
94
+ }
95
+ }
96
+ catch (error) {
97
+ logger_1.default.error(error);
98
+ }
99
+ })));
100
+ return ChangeSetsArray;
101
+ });
102
+ } //GetPullRequestsInCommitRange
103
+ GetItemsInCommitRange(projectId, repositoryId, commitRange) {
104
+ return __awaiter(this, void 0, void 0, function* () {
105
+ //get all items linked to commits
106
+ let res = [];
107
+ let commitChangesArray = [];
108
+ //extract linked items and append them to result
109
+ for (const commit of commitRange.value) {
110
+ if (commit.workItems) {
111
+ for (const wi of commit.workItems) {
112
+ let populatedItem = yield this.ticketsDataProvider.GetWorkItem(projectId, wi.id);
113
+ let changeSet = { workItem: populatedItem, commit: commit };
114
+ commitChangesArray.push(changeSet);
115
+ }
116
+ }
117
+ }
118
+ //get all items and pr data from pr's in commit range - using the above function
119
+ let pullRequestsChangesArray = yield this.GetPullRequestsLinkedItemsInCommitRange(projectId, repositoryId, commitRange);
120
+ //merge commit links with pr links
121
+ logger_1.default.info(`got ${pullRequestsChangesArray.length} items from pr's and`);
122
+ res = [...commitChangesArray, ...pullRequestsChangesArray];
123
+ let workItemIds = [];
124
+ for (let index = 0; index < res.length; index++) {
125
+ if (workItemIds.includes(res[index].workItem.id)) {
126
+ res.splice(index, 1);
127
+ index--;
128
+ }
129
+ else {
130
+ workItemIds.push(res[index].workItem.id);
131
+ }
132
+ }
133
+ return res;
134
+ });
135
+ } //GetItemsInCommitRange
136
+ GetPullRequestsInCommitRangeWithoutLinkedItems(projectId, repositoryId, commitRangeArray) {
137
+ return __awaiter(this, void 0, void 0, function* () {
138
+ let pullRequestsFilteredArray = [];
139
+ // Extract the organization name from orgUrl
140
+ let orgName = this.orgUrl.split('/').filter(Boolean).pop();
141
+ // Get all PRs in the git repo
142
+ let url = `${this.orgUrl}${projectId}/_apis/git/repositories/${repositoryId}/pullrequests?status=completed&includeLinks=true&$top=2000}`;
143
+ logger_1.default.debug(`request url: ${url}`);
144
+ let pullRequestsArray = yield tfs_1.TFSServices.getItemContent(url, this.token, "get");
145
+ logger_1.default.info(`got ${pullRequestsArray.count} pullrequests for repo: ${repositoryId}`);
146
+ // Iterate commit list to filter relevant pull requests
147
+ pullRequestsArray.value.forEach((pr) => {
148
+ commitRangeArray.value.forEach((commit) => {
149
+ if (pr.lastMergeCommit.commitId == commit.commitId) {
150
+ // Construct the pull request URL
151
+ const prUrl = `https://dev.azure.com/${orgName}/${projectId}/_git/${repositoryId}/pullrequest/${pr.pullRequestId}`;
152
+ // Extract only the desired properties from the PR
153
+ const prFilteredData = {
154
+ pullRequestId: pr.pullRequestId,
155
+ createdBy: pr.createdBy.displayName,
156
+ creationDate: pr.creationDate,
157
+ closedDate: pr.closedDate,
158
+ title: pr.title,
159
+ description: pr.description,
160
+ url: prUrl // Use the constructed URL here
161
+ };
162
+ pullRequestsFilteredArray.push(prFilteredData);
163
+ }
164
+ });
165
+ });
166
+ logger_1.default.info(`filtered in commit range ${pullRequestsFilteredArray.length} pullrequests for repo: ${repositoryId}`);
167
+ return pullRequestsFilteredArray;
168
+ });
169
+ } // GetPullRequestsInCommitRangeWithoutLinkedItems
170
+ GetCommitByCommitId(projectId, repositoryId, commitSha) {
171
+ return __awaiter(this, void 0, void 0, function* () {
172
+ let url = `${this.orgUrl}${projectId}/_apis/git/repositories/${repositoryId}/commits/${commitSha}`;
173
+ return tfs_1.TFSServices.getItemContent(url, this.token, "get");
174
+ });
175
+ }
176
+ GetCommitForPipeline(projectId, buildId) {
177
+ return __awaiter(this, void 0, void 0, function* () {
178
+ let url = `${this.orgUrl}${projectId}/_apis/build/builds/${buildId}`;
179
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get");
180
+ return res.sourceVersion;
181
+ });
182
+ } //GetCommitForPipeline
183
+ GetItemsForPipelinesRange(projectId, fromBuildId, toBuildId) {
184
+ return __awaiter(this, void 0, void 0, function* () {
185
+ let linkedItemsArray = [];
186
+ let url = `${this.orgUrl}${projectId}/_apis/build/workitems?fromBuildId=${fromBuildId}&toBuildId=${toBuildId}&$top=2000`;
187
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get");
188
+ logger_1.default.info(`recieved ${res.count} items in build range ${fromBuildId}-${toBuildId}`);
189
+ yield Promise.all(res.value.map((wi) => __awaiter(this, void 0, void 0, function* () {
190
+ let populatedItem = yield this.ticketsDataProvider.GetWorkItem(projectId, wi.id);
191
+ let changeSet = { workItem: populatedItem, build: toBuildId };
192
+ linkedItemsArray.push(changeSet);
193
+ })));
194
+ return linkedItemsArray;
195
+ });
196
+ } //GetCommitForPipeline
197
+ GetCommitsInDateRange(projectId, repositoryId, fromDate, toDate, branchName) {
198
+ return __awaiter(this, void 0, void 0, function* () {
199
+ let url;
200
+ if (typeof branchName !== 'undefined') {
201
+ url = `${this.orgUrl}${projectId}/_apis/git/repositories/${repositoryId}/commits?searchCriteria.fromDate=${fromDate}&searchCriteria.toDate=${toDate}&searchCriteria.includeWorkItems=true&searchCriteria.$top=2000&searchCriteria.itemVersion.version=${branchName}`;
202
+ }
203
+ else {
204
+ url = `${this.orgUrl}${projectId}/_apis/git/repositories/${repositoryId}/commits?searchCriteria.fromDate=${fromDate}&searchCriteria.toDate=${toDate}&searchCriteria.includeWorkItems=true&searchCriteria.$top=2000`;
205
+ }
206
+ return tfs_1.TFSServices.getItemContent(url, this.token, "get");
207
+ });
208
+ } //GetCommitsInDateRange
209
+ GetCommitsInCommitRange(projectId, repositoryId, fromSha, toSha) {
210
+ return __awaiter(this, void 0, void 0, function* () {
211
+ let url = `${this.orgUrl}${projectId}/_apis/git/repositories/${repositoryId}/commits?searchCriteria.fromCommitId=${fromSha}&searchCriteria.toCommitId=${toSha}&searchCriteria.includeWorkItems=true&searchCriteria.$top=2000`;
212
+ return tfs_1.TFSServices.getItemContent(url, this.token, "get");
213
+ });
214
+ } //GetCommitsInCommitRange doesen't work!!!
215
+ CreatePullRequestComment(projectName, repoID, pullRequestID, threads) {
216
+ return __awaiter(this, void 0, void 0, function* () {
217
+ let url = `${this.orgUrl}${projectName}/_apis/git/repositories/${repoID}/pullRequests/${pullRequestID}/threads?api-version=5.0`;
218
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "post", threads, null);
219
+ return res;
220
+ });
221
+ }
222
+ GetPullRequestComments(projectName, repoID, pullRequestID) {
223
+ return __awaiter(this, void 0, void 0, function* () {
224
+ let url = `${this.orgUrl}${projectName}/_apis/git/repositories/${repoID}/pullRequests/${pullRequestID}/threads`;
225
+ return tfs_1.TFSServices.getItemContent(url, this.token, "get", null, null);
226
+ });
227
+ }
228
+ GetCommitsForRepo(projectName, repoID, branchName) {
229
+ return __awaiter(this, void 0, void 0, function* () {
230
+ let url;
231
+ if (typeof branchName !== 'undefined') {
232
+ url = `${this.orgUrl}${projectName}/_apis/git/repositories/${repoID}/commits?searchCriteria.$top=2000&searchCriteria.itemVersion.version=${branchName}`;
233
+ }
234
+ else {
235
+ url = `${this.orgUrl}${projectName}/_apis/git/repositories/${repoID}/commits?searchCriteria.$top=2000`;
236
+ }
237
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get", null, null);
238
+ return res;
239
+ });
240
+ }
241
+ GetPullRequestsForRepo(projectName, repoID) {
242
+ return __awaiter(this, void 0, void 0, function* () {
243
+ let url = `${this.orgUrl}${projectName}/_apis/git/repositories/${repoID}/pullrequests?status=completed&includeLinks=true&$top=2000}`;
244
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get", null, null);
245
+ return res;
246
+ });
247
+ }
248
+ GetItemsInPullRequestRange(projectId, repositoryId, pullRequestIDs) {
249
+ return __awaiter(this, void 0, void 0, function* () {
250
+ let pullRequestsFilteredArray = [];
251
+ let ChangeSetsArray = [];
252
+ //get all pr's in git repo
253
+ let url = `${this.orgUrl}${projectId}/_apis/git/repositories/${repositoryId}/pullrequests?status=completed&includeLinks=true&$top=2000}`;
254
+ logger_1.default.debug(`request url: ${url}`);
255
+ let pullRequestsArray = yield tfs_1.TFSServices.getItemContent(url, this.token, "get");
256
+ logger_1.default.info(`got ${pullRequestsArray.count} pullrequests for repo: ${repositoryId}`);
257
+ //iterate commit list to filter relavant pullrequests
258
+ pullRequestsArray.value.forEach((pr) => {
259
+ pullRequestIDs.forEach((prId) => {
260
+ if (prId == pr.pullRequestId) {
261
+ pullRequestsFilteredArray.push(pr);
262
+ }
263
+ });
264
+ });
265
+ logger_1.default.info(`filtered in prId range ${pullRequestsFilteredArray.length} pullrequests for repo: ${repositoryId}`);
266
+ //extract linked items and append them to result
267
+ yield Promise.all(pullRequestsFilteredArray.map((pr) => __awaiter(this, void 0, void 0, function* () {
268
+ let linkedItems = {};
269
+ try {
270
+ if (pr._links.workItems.href) {
271
+ //get workitems linked to pr
272
+ let url = pr._links.workItems.href;
273
+ linkedItems = yield tfs_1.TFSServices.getItemContent(url, this.token, "get");
274
+ logger_1.default.info(`got ${linkedItems.count} items linked to pr ${pr.pullRequestId}`);
275
+ yield Promise.all(linkedItems.value.map((item) => __awaiter(this, void 0, void 0, function* () {
276
+ let populatedItem = yield this.ticketsDataProvider.GetWorkItem(projectId, item.id);
277
+ let changeSet = {
278
+ workItem: populatedItem,
279
+ pullrequest: pr,
280
+ };
281
+ ChangeSetsArray.push(changeSet);
282
+ })));
283
+ }
284
+ }
285
+ catch (error) {
286
+ logger_1.default.error(error);
287
+ }
288
+ })));
289
+ return ChangeSetsArray;
290
+ });
291
+ }
292
+ GetRepoBranches(projectName, repoID) {
293
+ return __awaiter(this, void 0, void 0, function* () {
294
+ let url = `${this.orgUrl}${projectName}/_apis/git/repositories/${repoID}/refs?searchCriteria.$top=1000&filter=heads`;
295
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get", null, null);
296
+ return res;
297
+ });
298
+ }
299
+ }
300
+ exports.default = GitDataProvider;
301
+ //# sourceMappingURL=GitDataProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitDataProvider.js","sourceRoot":"","sources":["../../src/modules/GitDataProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export default class MangementDataProvider {
2
+ orgUrl: string;
3
+ token: string;
4
+ constructor(orgUrl: string, token: string);
5
+ GetCllectionLinkTypes(): Promise<any>;
6
+ GetProjects(): Promise<any>;
7
+ GetProjectByName(projectName: string): Promise<any>;
8
+ GetProjectByID(projectID: string): Promise<any>;
9
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const tfs_1 = require("../helpers/tfs");
13
+ class MangementDataProvider {
14
+ constructor(orgUrl, token) {
15
+ this.orgUrl = "";
16
+ this.token = "";
17
+ this.orgUrl = orgUrl;
18
+ this.token = token;
19
+ }
20
+ GetCllectionLinkTypes() {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ let url = `${this.orgUrl}_apis/wit/workitemrelationtypes`;
23
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get", null, null);
24
+ return res;
25
+ });
26
+ }
27
+ //get all projects
28
+ GetProjects() {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ let projectUrl = `${this.orgUrl}_apis/projects?$top=1000`;
31
+ let projects = yield tfs_1.TFSServices.getItemContent(projectUrl, this.token);
32
+ return projects;
33
+ });
34
+ }
35
+ // get project by name return project object
36
+ GetProjectByName(projectName) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ try {
39
+ let projects = yield this.GetProjects();
40
+ for (let i = 0; i < projects.value.length; i++) {
41
+ if (projects.value[i].name === projectName)
42
+ return projects.value[i];
43
+ }
44
+ return {};
45
+ }
46
+ catch (err) {
47
+ console.log(err);
48
+ return {};
49
+ }
50
+ });
51
+ }
52
+ // get project by id return project object
53
+ GetProjectByID(projectID) {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ let projectUrl = `${this.orgUrl}_apis/projects/${projectID}`;
56
+ let project = yield tfs_1.TFSServices.getItemContent(projectUrl, this.token);
57
+ return project;
58
+ });
59
+ }
60
+ }
61
+ exports.default = MangementDataProvider;
62
+ //# sourceMappingURL=MangementDataProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MangementDataProvider.js","sourceRoot":"","sources":["../../src/modules/MangementDataProvider.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,wCAA6C;AAG7C,MAAqB,qBAAqB;IAIxC,YAAY,MAAc,EAAE,KAAa;QAHzC,WAAM,GAAW,EAAE,CAAC;QACpB,UAAK,GAAW,EAAE,CAAC;QAGjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEK,qBAAqB;;YACzB,IAAI,GAAG,GAAW,GAAG,IAAI,CAAC,MAAM,iCAAiC,CAAC;YAClE,IAAI,GAAG,GAAQ,MAAM,iBAAW,CAAC,cAAc,CAC7C,GAAG,EACH,IAAI,CAAC,KAAK,EACV,KAAK,EACL,IAAI,EACJ,IAAI,CACL,CAAC;YACF,OAAO,GAAG,CAAC;QACb,CAAC;KAAA;IAED,mBAAmB;IACb,WAAW;;YACf,IAAI,UAAU,GAAW,GAAG,IAAI,CAAC,MAAM,0BAA0B,CAAC;YAClE,IAAI,QAAQ,GAAQ,MAAM,iBAAW,CAAC,cAAc,CAClD,UAAU,EACV,IAAI,CAAC,KAAK,CACX,CAAC;YACF,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;IAED,6CAA6C;IACvC,gBAAgB,CACpB,WAAmB;;YAEnB,IAAI;gBACF,IAAI,QAAQ,GAAQ,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC9C,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW;wBAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACtE;gBACD,OAAO,EAAE,CAAC;aACX;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjB,OAAO,EAAE,CAAC;aACX;QACH,CAAC;KAAA;IAED,0CAA0C;IACpC,cAAc,CAClB,SAAiB;;YAEjB,IAAI,UAAU,GAAW,GAAG,IAAI,CAAC,MAAM,kBAAkB,SAAS,EAAE,CAAC;YACrE,IAAI,OAAO,GAAQ,MAAM,iBAAW,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,OAAO,CAAC;QACjB,CAAC;KAAA;CACF;AAvDD,wCAuDC"}
@@ -0,0 +1,13 @@
1
+ export default class PipelinesDataProvider {
2
+ orgUrl: string;
3
+ token: string;
4
+ constructor(orgUrl: string, token: string);
5
+ getPipelineFromPipelineId(projectName: string, buildId: number): Promise<any>;
6
+ TriggerBuildById(projectName: string, buildDefanitionId: string, parameter: any): Promise<any>;
7
+ GetArtifactByBuildId(projectName: string, buildId: string, artifactName: string): Promise<any>;
8
+ GetReleaseByReleaseId(projectName: string, releaseId: number): Promise<any>;
9
+ GetPipelineRunHistory(projectName: string, pipelineId: string): Promise<any>;
10
+ GetReleaseHistory(projectName: string, definitionId: string): Promise<any>;
11
+ GetAllPipelines(projectName: string): Promise<any>;
12
+ GetAllReleaseDefenitions(projectName: string): Promise<any>;
13
+ }
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const tfs_1 = require("../helpers/tfs");
13
+ const logger_1 = require("../utils/logger");
14
+ class PipelinesDataProvider {
15
+ constructor(orgUrl, token) {
16
+ this.orgUrl = "";
17
+ this.token = "";
18
+ this.orgUrl = orgUrl;
19
+ this.token = token;
20
+ }
21
+ getPipelineFromPipelineId(projectName, buildId) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ let url = `${this.orgUrl}${projectName}/_apis/build/builds/${buildId}`;
24
+ return tfs_1.TFSServices.getItemContent(url, this.token, "get");
25
+ });
26
+ } //GetCommitForPipeline
27
+ TriggerBuildById(projectName, buildDefanitionId, parameter) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ let data = {
30
+ definition: {
31
+ id: buildDefanitionId,
32
+ },
33
+ parameters: parameter,
34
+ };
35
+ logger_1.default.info(JSON.stringify(data));
36
+ let url = `${this.orgUrl}${projectName}/_apis/build/builds?api-version=5.0`;
37
+ let res = yield tfs_1.TFSServices.postRequest(url, this.token, "post", data, null);
38
+ return res;
39
+ });
40
+ }
41
+ GetArtifactByBuildId(projectName, buildId, artifactName) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ try {
44
+ logger_1.default.info(`Get artifactory from project ${projectName},BuildId ${buildId} artifact name ${artifactName}`);
45
+ logger_1.default.info(`Check if build ${buildId} have artifact`);
46
+ let url = `${this.orgUrl}${projectName}/_apis/build/builds/${buildId}/artifacts`;
47
+ let response = yield tfs_1.TFSServices.getItemContent(url, this.token, "Get", null, null);
48
+ if (response.count == 0) {
49
+ logger_1.default.info(`No artifact for build ${buildId} was published `);
50
+ return response;
51
+ }
52
+ url = `${this.orgUrl}${projectName}/_apis/build/builds/${buildId}/artifacts?artifactName=${artifactName}`;
53
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "Get", null, null);
54
+ logger_1.default.info(`Url for download :${res.resource.downloadUrl}`);
55
+ let result = yield tfs_1.TFSServices.downloadZipFile(res.resource.downloadUrl, this.token);
56
+ return result;
57
+ }
58
+ catch (err) {
59
+ logger_1.default.error(`Error : ${err}`);
60
+ throw new Error(String(err));
61
+ }
62
+ });
63
+ }
64
+ GetReleaseByReleaseId(projectName, releaseId) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ let url = `${this.orgUrl}${projectName}/_apis/release/releases/${releaseId}`;
67
+ url = url.replace("dev.azure.com", "vsrm.dev.azure.com");
68
+ return tfs_1.TFSServices.getItemContent(url, this.token, "get", null, null);
69
+ });
70
+ }
71
+ GetPipelineRunHistory(projectName, pipelineId) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ let url = `${this.orgUrl}${projectName}/_apis/pipelines/${pipelineId}/runs`;
74
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get", null, null);
75
+ return res;
76
+ });
77
+ }
78
+ GetReleaseHistory(projectName, definitionId) {
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ let url = `${this.orgUrl}${projectName}/_apis/release/releases?definitionId=${definitionId}&$top=2000`;
81
+ url = url.replace("dev.azure.com", "vsrm.dev.azure.com");
82
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get", null, null);
83
+ return res;
84
+ });
85
+ }
86
+ GetAllPipelines(projectName) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ let url = `${this.orgUrl}${projectName}/_apis/pipelines?$top=2000`;
89
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get", null, null);
90
+ return res;
91
+ });
92
+ }
93
+ GetAllReleaseDefenitions(projectName) {
94
+ return __awaiter(this, void 0, void 0, function* () {
95
+ let url = `${this.orgUrl}${projectName}/_apis/release/definitions?$top=2000`;
96
+ url = url.replace("dev.azure.com", "vsrm.dev.azure.com");
97
+ let res = yield tfs_1.TFSServices.getItemContent(url, this.token, "get", null, null);
98
+ return res;
99
+ });
100
+ }
101
+ }
102
+ exports.default = PipelinesDataProvider;
103
+ //# sourceMappingURL=PipelinesDataProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PipelinesDataProvider.js","sourceRoot":"","sources":["../../src/modules/PipelinesDataProvider.ts"],"names":[],"mappings":"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"}