@elisra-devops/docgen-data-provider 1.18.0 → 1.20.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.
@@ -1,7 +1,22 @@
1
1
  export declare class TFSServices {
2
+ private static connectionPool;
3
+ private static axiosInstance;
2
4
  static downloadZipFile(url: string, pat: string): Promise<any>;
3
5
  static fetchAzureDevOpsImageAsBase64(url: string, pat: string, requestMethod?: string, data?: any, customHeaders?: any, printError?: boolean): Promise<any>;
4
6
  static getItemContent(url: string, pat: string, requestMethod?: string, data?: any, customHeaders?: any, printError?: boolean): Promise<any>;
5
7
  static getJfrogRequest(url: string, header?: any): Promise<any>;
6
8
  static postRequest(url: string, pat: string, requestMethod: string | undefined, data: any, customHeaders?: any): Promise<any>;
9
+ /**
10
+ * Execute a request with intelligent retry logic
11
+ */
12
+ private static executeWithRetry;
13
+ /**
14
+ * Check if an error is retryable
15
+ */
16
+ private static isRetryableError;
17
+ /**
18
+ * Log detailed error information
19
+ */
20
+ private static logDetailedError;
21
+ private static getErrorMessage;
7
22
  }
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ var _a;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.TFSServices = void 0;
4
5
  const axios_1 = require("axios");
@@ -6,13 +7,11 @@ const logger_1 = require("../utils/logger");
6
7
  class TFSServices {
7
8
  static async downloadZipFile(url, pat) {
8
9
  try {
9
- let res = await axios_1.default.request({
10
+ const res = await this.axiosInstance.request({
10
11
  url: url,
11
12
  headers: { 'Content-Type': 'application/zip' },
12
- auth: {
13
- username: '',
14
- password: pat,
15
- },
13
+ auth: { username: '', password: pat },
14
+ timeout: 15000, // Increased timeout for large files
16
15
  });
17
16
  return res;
18
17
  }
@@ -22,166 +21,185 @@ class TFSServices {
22
21
  }
23
22
  }
24
23
  static async fetchAzureDevOpsImageAsBase64(url, pat, requestMethod = 'get', data = {}, customHeaders = {}, printError = true) {
25
- let config = {
24
+ const config = {
26
25
  headers: customHeaders,
27
26
  method: requestMethod,
28
- auth: {
29
- username: '',
30
- password: pat,
31
- },
27
+ auth: { username: '', password: pat },
32
28
  data: data,
33
29
  responseType: 'arraybuffer', // Important for binary data
34
- timeout: 5000, // Set timeout to 5 seconds
30
+ timeout: 8000, // Increased timeout for images
35
31
  };
36
- let json;
37
- let attempts = 0;
38
- const maxAttempts = 3;
39
- logger_1.default.silly(`making request:
40
- url: ${url}
41
- config: ${JSON.stringify(config)}`);
42
- while (attempts < maxAttempts) {
43
- try {
44
- const response = await (0, axios_1.default)(url, config);
45
- // Convert binary data to Base64
46
- const base64String = Buffer.from(response.data, 'binary').toString('base64');
47
- const contentType = response.headers['content-type']; // e.g., "image/png; api-version=7.1"
48
- const mimeType = contentType.split(';')[0].trim(); // Extracts "image/png"
49
- return `data:${mimeType};base64,${base64String}`;
50
- }
51
- catch (e) {
52
- attempts++;
53
- if (e.message.includes('ETIMEDOUT') && attempts < maxAttempts) {
54
- logger_1.default.warn(`Request timed out. Retrying attempt ${attempts} of ${maxAttempts}...`);
55
- continue;
56
- }
57
- if (printError) {
58
- if (e.response) {
59
- logger_1.default.error(`Error fetching image from Azure DevOps at ${url}: ${e.message}`);
60
- logger_1.default.error(`Status: ${e.response.status}`);
61
- logger_1.default.error(`Response Data: ${JSON.stringify(e.response.data)}`);
62
- }
63
- else {
64
- logger_1.default.error(`Error fetching image from Azure DevOps at ${url}: ${e.message}`);
65
- }
66
- }
67
- throw e;
68
- }
69
- }
32
+ return this.executeWithRetry(url, config, printError, (response) => {
33
+ // Convert binary data to Base64
34
+ const base64String = Buffer.from(response.data, 'binary').toString('base64');
35
+ const contentType = response.headers['content-type'] || 'application/octet-stream';
36
+ const mimeType = contentType.split(';')[0].trim();
37
+ return `data:${mimeType};base64,${base64String}`;
38
+ });
70
39
  }
71
40
  static async getItemContent(url, pat, requestMethod = 'get', data = {}, customHeaders = {}, printError = true) {
72
- var _a, _b, _c, _d, _e, _f, _g, _h;
73
- let config = {
41
+ // Clean URL
42
+ const cleanUrl = url.replace(/ /g, '%20');
43
+ const config = {
44
+ headers: customHeaders,
45
+ method: requestMethod,
46
+ auth: { username: '', password: pat },
47
+ data: data,
48
+ timeout: 10000, // More reasonable timeout
49
+ };
50
+ return this.executeWithRetry(cleanUrl, config, printError, (response) => {
51
+ // Direct return of data without extra JSON parsing
52
+ return response.data;
53
+ });
54
+ }
55
+ static async getJfrogRequest(url, header) {
56
+ const config = {
57
+ method: 'GET',
58
+ headers: header,
59
+ timeout: 8000, // Reasonable timeout
60
+ };
61
+ try {
62
+ const result = await this.axiosInstance.request(config);
63
+ return result.data;
64
+ }
65
+ catch (e) {
66
+ this.logDetailedError(e, url);
67
+ throw e;
68
+ }
69
+ }
70
+ static async postRequest(url, pat, requestMethod = 'post', data, customHeaders = { headers: { 'Content-Type': 'application/json' } }) {
71
+ const config = {
74
72
  headers: customHeaders,
75
73
  method: requestMethod,
76
- auth: {
77
- username: '',
78
- password: pat,
79
- },
74
+ auth: { username: '', password: pat },
80
75
  data: data,
81
- timeout: 3000, // Set timeout to 3 seconds
76
+ timeout: 10000, // More reasonable timeout
82
77
  };
83
- let json;
78
+ // Use shorter log format for better performance
79
+ logger_1.default.silly(`Request: ${url} [${requestMethod}]`);
80
+ try {
81
+ const result = await this.axiosInstance.request(config);
82
+ return result;
83
+ }
84
+ catch (e) {
85
+ this.logDetailedError(e, url);
86
+ throw e;
87
+ }
88
+ }
89
+ /**
90
+ * Execute a request with intelligent retry logic
91
+ */
92
+ static async executeWithRetry(url, config, printError, responseProcessor) {
84
93
  let attempts = 0;
85
94
  const maxAttempts = 3;
86
- url = url.replace(/ /g, '%20');
87
- logger_1.default.silly(`making request:
88
- url: ${url}
89
- config: ${JSON.stringify(config)}`);
90
- while (attempts < maxAttempts) {
95
+ const baseDelay = 500; // Start with 500ms delay
96
+ while (true) {
91
97
  try {
92
- let result = await (0, axios_1.default)(url, config);
93
- json = JSON.parse(JSON.stringify(result.data));
94
- return json;
98
+ const result = await this.axiosInstance.request(Object.assign(Object.assign({}, config), { url }));
99
+ return responseProcessor(result);
95
100
  }
96
101
  catch (e) {
97
- logger_1.default.warn(`error fetching item content from azure devops at ${url}`);
98
- logger_1.default.warn(`error: ${JSON.stringify((_b = (_a = e.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message)}`);
99
- if ((_d = (_c = e.response) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.message.includes('could not be found')) {
102
+ attempts++;
103
+ const errorMessage = this.getErrorMessage(e);
104
+ // Handle not found errors
105
+ if (errorMessage.includes('could not be found')) {
100
106
  logger_1.default.info(`File does not exist, or you do not have permissions to read it.`);
101
107
  return undefined;
102
108
  }
103
- attempts++;
104
- if (e.message.includes('ETIMEDOUT') ||
105
- e.message.includes('timeout') ||
106
- (((_g = (_f = (_e = e.response) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.message) === null || _g === void 0 ? void 0 : _g.includes('timeout')) && attempts < maxAttempts)) {
107
- logger_1.default.warn(`Request timed out. Retrying attempt ${attempts} of ${maxAttempts}...`);
109
+ // Check if we should retry
110
+ if (attempts < maxAttempts && this.isRetryableError(e)) {
111
+ // Calculate exponential backoff with jitter
112
+ const jitter = Math.random() * 0.3 + 0.85; // Between 0.85 and 1.15
113
+ const delay = Math.min(baseDelay * Math.pow(2, attempts - 1) * jitter, 5000);
114
+ logger_1.default.warn(`Request failed. Retrying in ${Math.round(delay)}ms (${attempts}/${maxAttempts})`);
115
+ await new Promise((resolve) => setTimeout(resolve, delay));
108
116
  continue;
109
117
  }
118
+ // Log error if needed
110
119
  if (printError) {
111
- if (e.response) {
112
- // Log detailed error information including the URL
113
- logger_1.default.error(`Error making request to Azure DevOps at ${url}: ${e.message}`);
114
- logger_1.default.error(`Status: ${e.response.status}`);
115
- logger_1.default.error(`Response Data: ${JSON.stringify((_h = e.response.data) === null || _h === void 0 ? void 0 : _h.message)}`);
116
- }
117
- else {
118
- // Handle other errors (network, etc.)
119
- logger_1.default.error(`Error making request to Azure DevOps at ${url}: ${e.message}`);
120
- }
120
+ this.logDetailedError(e, url);
121
121
  }
122
122
  throw e;
123
123
  }
124
124
  }
125
125
  }
126
- static async getJfrogRequest(url, header) {
127
- let config = {
128
- method: 'GET',
129
- };
130
- if (header) {
131
- config['headers'] = header;
126
+ /**
127
+ * Check if an error is retryable
128
+ */
129
+ static isRetryableError(error) {
130
+ var _b, _c;
131
+ // Network errors
132
+ if (error.code === 'ECONNRESET' || error.code === 'ETIMEDOUT' || error.message.includes('timeout')) {
133
+ return true;
132
134
  }
133
- let json;
134
- try {
135
- let result = await (0, axios_1.default)(url, config);
136
- json = JSON.parse(JSON.stringify(result.data));
135
+ // Server errors (5xx)
136
+ if (((_b = error.response) === null || _b === void 0 ? void 0 : _b.status) >= 500) {
137
+ return true;
137
138
  }
138
- catch (e) {
139
- if (e.response) {
140
- // Log detailed error information including the URL
141
- logger_1.default.error(`Error making request Jfrog at ${url}: ${e.message}`);
142
- logger_1.default.error(`Status: ${e.response.status}`);
143
- logger_1.default.error(`Response Data: ${JSON.stringify(e.response.data)}`);
144
- }
145
- else {
146
- // Handle other errors (network, etc.)
147
- logger_1.default.error(`Error making request to Jfrog at ${url}: ${e.message}`);
139
+ // Rate limiting (429)
140
+ if (((_c = error.response) === null || _c === void 0 ? void 0 : _c.status) === 429) {
141
+ return true;
142
+ }
143
+ return false;
144
+ }
145
+ /**
146
+ * Log detailed error information
147
+ */
148
+ static logDetailedError(error, url) {
149
+ if (error.response) {
150
+ logger_1.default.error(`Error for ${url}: ${error.message}`);
151
+ logger_1.default.error(`Status: ${error.response.status}`);
152
+ if (error.response.data) {
153
+ if (typeof error.response.data === 'string') {
154
+ logger_1.default.error(`Response: ${error.response.data.substring(0, 200)}`);
155
+ }
156
+ else {
157
+ const dataMessage = error.response.data.message || JSON.stringify(error.response.data).substring(0, 200);
158
+ logger_1.default.error(`Response: ${dataMessage}`);
159
+ }
148
160
  }
149
- throw e;
150
161
  }
151
- return json;
162
+ else {
163
+ logger_1.default.error(`Error for ${url}: ${error.message}`);
164
+ }
152
165
  }
153
- static async postRequest(url, pat, requestMethod = 'post', data, customHeaders = { headers: { 'Content-Type': 'application/json' } }) {
154
- var _a;
155
- let config = {
156
- headers: customHeaders,
157
- method: requestMethod,
158
- auth: {
159
- username: '',
160
- password: pat,
161
- },
162
- data: data,
163
- };
164
- let result;
165
- logger_1.default.silly(`making request:
166
- url: ${url}
167
- config: ${JSON.stringify(config)}`);
168
- try {
169
- result = await (0, axios_1.default)(url, config);
166
+ static getErrorMessage(error) {
167
+ var _b, _c, _d;
168
+ if ((_c = (_b = error.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.message) {
169
+ return JSON.stringify(error.response.data.message);
170
170
  }
171
- catch (e) {
172
- if (e.response) {
173
- // Log detailed error information including the URL
174
- logger_1.default.error(`Error making request to Azure DevOps at ${url}: ${e.message}`);
175
- logger_1.default.error(`Status: ${e.response.status}`);
176
- logger_1.default.error(`Response Data: ${JSON.stringify((_a = e.response.data) === null || _a === void 0 ? void 0 : _a.message)}`);
177
- }
178
- else {
179
- // Handle other errors (network, etc.)
180
- logger_1.default.error(`Error making request to Azure DevOps at ${url}: ${e.message}`);
181
- }
171
+ else if ((_d = error.response) === null || _d === void 0 ? void 0 : _d.data) {
172
+ return JSON.stringify(error.response.data);
173
+ }
174
+ else if (error.response) {
175
+ return `HTTP ${error.response.status}`;
176
+ }
177
+ else if (error.message) {
178
+ return error.message;
179
+ }
180
+ else {
181
+ return 'Unknown error occurred';
182
182
  }
183
- return result;
184
183
  }
185
184
  }
186
185
  exports.TFSServices = TFSServices;
186
+ _a = TFSServices;
187
+ // Connection pooling
188
+ TFSServices.connectionPool = {
189
+ httpAgent: new (require('http').Agent)({
190
+ keepAlive: true,
191
+ maxSockets: 50, // Allow more connections
192
+ keepAliveMsecs: 30000, // Keep connections alive longer
193
+ }),
194
+ httpsAgent: new (require('https').Agent)({
195
+ keepAlive: true,
196
+ maxSockets: 50,
197
+ keepAliveMsecs: 30000,
198
+ }),
199
+ };
200
+ // Axios instance with connection reuse
201
+ TFSServices.axiosInstance = axios_1.default.create({
202
+ httpAgent: _a.connectionPool.httpAgent,
203
+ httpsAgent: _a.connectionPool.httpsAgent,
204
+ });
187
205
  //# sourceMappingURL=tfs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tfs.js","sourceRoot":"","sources":["../../src/helpers/tfs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tfs.js","sourceRoot":"","sources":["../../src/helpers/tfs.ts"],"names":[],"mappings":"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"}
@@ -4,15 +4,18 @@ export default class TestDataProvider {
4
4
  orgUrl: string;
5
5
  token: string;
6
6
  private testStepParserHelper;
7
+ private cache;
8
+ private limit;
7
9
  constructor(orgUrl: string, token: string);
10
+ private fetchWithCache;
8
11
  GetTestSuiteByTestCase(testCaseId: string): Promise<any>;
9
12
  GetTestPlans(project: string): Promise<string>;
10
13
  GetTestSuites(project: string, planId: string): Promise<any>;
11
14
  GetTestSuitesForPlan(project: string, planid: string): Promise<any>;
12
15
  GetTestSuitesByPlan(project: string, planId: string, recursive: boolean): Promise<any>;
13
16
  GetTestSuiteById(project: string, planId: string, suiteId: string, recursive: boolean): Promise<any>;
14
- GetTestCasesBySuites(project: string, planId: string, suiteId: string, recursiv: boolean, includeRequirements: boolean, CustomerRequirementId: boolean, stepResultDetailsMap?: Map<string, any>): Promise<any>;
15
- StructureTestCase(project: string, testCases: any, suite: suiteData, includeRequirements: boolean, CustomerRequirementId: boolean, requirementToTestCaseTraceMap: Map<string, string[]>, testCaseToRequirementsTraceMap: Map<string, string[]>, stepResultDetailsMap?: Map<string, any>): Promise<Array<any>>;
17
+ GetTestCasesBySuites(project: string, planId: string, suiteId: string, recursive: boolean, includeRequirements: boolean, CustomerRequirementId: boolean, stepResultDetailsMap?: Map<string, any>): Promise<any>;
18
+ StructureTestCase(project: string, testCases: any, suite: suiteData, includeRequirements: boolean, CustomerRequirementId: boolean, requirementToTestCaseTraceMap: Map<string, string[]>, testCaseToRequirementsTraceMap: Map<string, string[]>, stepResultDetailsMap?: Map<string, any>): Promise<any[]>;
16
19
  private createNewRequirement;
17
20
  ParseSteps(steps: string): TestSteps[];
18
21
  GetTestCases(project: string, planId: string, suiteId: string): Promise<any>;
@@ -24,4 +27,8 @@ export default class TestDataProvider {
24
27
  GetTestRunById(projectName: string, runId: string): Promise<any>;
25
28
  GetTestPointByTestCaseId(projectName: string, testCaseId: string): Promise<any>;
26
29
  private addToMap;
30
+ /**
31
+ * Clears the cache to free memory
32
+ */
33
+ clearCache(): void;
27
34
  }