@elisra-devops/docgen-data-provider 1.141.0 → 1.142.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/bin/helpers/requestContext.d.ts +51 -0
- package/bin/helpers/requestContext.js +218 -0
- package/bin/helpers/requestContext.js.map +1 -0
- package/bin/helpers/tfs.d.ts +5 -0
- package/bin/helpers/tfs.js +22 -29
- package/bin/helpers/tfs.js.map +1 -1
- package/bin/modules/GitDataProvider.js +3 -2
- package/bin/modules/GitDataProvider.js.map +1 -1
- package/bin/modules/JfrogDataProvider.js +2 -1
- package/bin/modules/JfrogDataProvider.js.map +1 -1
- package/bin/modules/PipelinesDataProvider.js +4 -3
- package/bin/modules/PipelinesDataProvider.js.map +1 -1
- package/bin/modules/ResultDataProvider.js +12 -11
- package/bin/modules/ResultDataProvider.js.map +1 -1
- package/bin/modules/TestDataProvider.js +4 -3
- package/bin/modules/TestDataProvider.js.map +1 -1
- package/bin/modules/TicketsDataProvider.js +13 -12
- package/bin/modules/TicketsDataProvider.js.map +1 -1
- package/bin/tests/helpers/requestContext.test.d.ts +1 -0
- package/bin/tests/helpers/requestContext.test.js +165 -0
- package/bin/tests/helpers/requestContext.test.js.map +1 -0
- package/bin/tests/helpers/tfs.test.js +54 -0
- package/bin/tests/helpers/tfs.test.js.map +1 -1
- package/bin/tests/modules/JfrogDataProvider.test.js +1 -1
- package/bin/tests/modules/JfrogDataProvider.test.js.map +1 -1
- package/bin/tests/modules/ResultDataProvider.test.js +4 -2
- package/bin/tests/modules/ResultDataProvider.test.js.map +1 -1
- package/bin/tests/modules/gitDataProvider.test.js +1 -1
- package/bin/tests/modules/gitDataProvider.test.js.map +1 -1
- package/bin/tests/modules/pipelineDataProvider.test.js +1 -1
- package/bin/tests/modules/pipelineDataProvider.test.js.map +1 -1
- package/bin/tests/modules/testDataProvider.test.js +1 -1
- package/bin/tests/modules/testDataProvider.test.js.map +1 -1
- package/bin/tests/modules/ticketsDataProvider.test.js +2 -2
- package/bin/tests/modules/ticketsDataProvider.test.js.map +1 -1
- package/bin/tests/utils/logger.test.js +94 -0
- package/bin/tests/utils/logger.test.js.map +1 -1
- package/bin/utils/logSink.d.ts +14 -0
- package/bin/utils/logSink.js +12 -0
- package/bin/utils/logSink.js.map +1 -1
- package/bin/utils/logger.d.ts +1 -0
- package/bin/utils/logger.js +48 -1
- package/bin/utils/logger.js.map +1 -1
- package/package.json +1 -1
- package/src/helpers/requestContext.ts +222 -0
- package/src/helpers/tfs.ts +28 -26
- package/src/modules/GitDataProvider.ts +3 -2
- package/src/modules/JfrogDataProvider.ts +2 -1
- package/src/modules/PipelinesDataProvider.ts +4 -3
- package/src/modules/ResultDataProvider.ts +12 -11
- package/src/modules/TestDataProvider.ts +4 -3
- package/src/modules/TicketsDataProvider.ts +13 -12
- package/src/tests/helpers/requestContext.test.ts +202 -0
- package/src/tests/helpers/tfs.test.ts +86 -0
- package/src/tests/modules/JfrogDataProvider.test.ts +2 -1
- package/src/tests/modules/ResultDataProvider.test.ts +5 -2
- package/src/tests/modules/gitDataProvider.test.ts +2 -1
- package/src/tests/modules/pipelineDataProvider.test.ts +2 -1
- package/src/tests/modules/testDataProvider.test.ts +4 -1
- package/src/tests/modules/ticketsDataProvider.test.ts +2 -2
- package/src/tests/utils/logger.test.ts +111 -0
- package/src/utils/logSink.ts +18 -3
- package/src/utils/logger.ts +43 -3
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export interface AdoRequestContext {
|
|
2
|
+
method?: string;
|
|
3
|
+
url?: string;
|
|
4
|
+
status?: number;
|
|
5
|
+
attempt?: number;
|
|
6
|
+
requestBody?: string;
|
|
7
|
+
responseExcerpt?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Strips credentials embedded in the URL and masks sensitive query parameter values. */
|
|
10
|
+
export declare function sanitizeUrl(raw: unknown): string | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Replaces each single-quoted WIQL literal with its length — the query structure (fields,
|
|
13
|
+
* operators, numbers, @macros) stays readable, free-text values never reach the logs.
|
|
14
|
+
* `''` is WIQL's escaped quote.
|
|
15
|
+
*/
|
|
16
|
+
export declare function maskWiqlLiterals(text: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* A short, safe description of a request body — enough to see *what was asked* (the WIQL
|
|
19
|
+
* text, the id list) without ever carrying credentials or work-item content:
|
|
20
|
+
* - GET/HEAD never have one.
|
|
21
|
+
* - JSON-Patch arrays (work item / test case updates) keep only `op` + `path`; the `value`s
|
|
22
|
+
* are real field content and are dropped.
|
|
23
|
+
* - a WIQL `query` keeps its structure but its quoted literals are masked.
|
|
24
|
+
* - other JSON goes through redactValue (credential-looking keys scrubbed at any depth),
|
|
25
|
+
* with every string and the total length bounded.
|
|
26
|
+
* - anything that isn't plain JSON is described by type and size only.
|
|
27
|
+
*/
|
|
28
|
+
export declare function summarizeBody(data: unknown, method?: string): string | undefined;
|
|
29
|
+
/** The server's own explanation of the failure (ADO puts it in `message`), bounded. */
|
|
30
|
+
export declare function summarizeResponse(data: unknown): string | undefined;
|
|
31
|
+
export declare function buildAdoRequestContext(error: any, request: {
|
|
32
|
+
method?: string;
|
|
33
|
+
url?: string;
|
|
34
|
+
data?: unknown;
|
|
35
|
+
}, attempt?: number): AdoRequestContext;
|
|
36
|
+
/**
|
|
37
|
+
* Attaches the context as an enumerable own property: winston's errors() / log() merge an
|
|
38
|
+
* Error's own enumerable properties onto the log record, which is how the transport and the
|
|
39
|
+
* text formatter find it without every call site having to pass it along.
|
|
40
|
+
*/
|
|
41
|
+
export declare function annotateAdoError<T>(error: T, context: AdoRequestContext): T;
|
|
42
|
+
/**
|
|
43
|
+
* The log metadata for a caught error: message, stack, code, and the request description when
|
|
44
|
+
* the error came through TFSServices. Deliberately NOT the error object itself — passing a
|
|
45
|
+
* whole AxiosError would merge its entire config/request/response graph onto the record.
|
|
46
|
+
* winston concatenates meta.message onto the call's own message, so
|
|
47
|
+
* `logger.error('Could not fetch X:', describeError(err))` reads the same as the old
|
|
48
|
+
* `logger.error(\`Could not fetch X: ${err.message}\`)` — plus the request, which a message
|
|
49
|
+
* string can't carry.
|
|
50
|
+
*/
|
|
51
|
+
export declare function describeError(error: unknown): Record<string, unknown>;
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sanitizeUrl = sanitizeUrl;
|
|
4
|
+
exports.maskWiqlLiterals = maskWiqlLiterals;
|
|
5
|
+
exports.summarizeBody = summarizeBody;
|
|
6
|
+
exports.summarizeResponse = summarizeResponse;
|
|
7
|
+
exports.buildAdoRequestContext = buildAdoRequestContext;
|
|
8
|
+
exports.annotateAdoError = annotateAdoError;
|
|
9
|
+
exports.describeError = describeError;
|
|
10
|
+
const logger_1 = require("../utils/logger");
|
|
11
|
+
const logSink_1 = require("../utils/logSink");
|
|
12
|
+
const MAX_URL_LEN = logSink_1.CONTEXT_LIMITS.url;
|
|
13
|
+
const MAX_BODY_LEN = logSink_1.CONTEXT_LIMITS.requestBody;
|
|
14
|
+
const MAX_STRING_VALUE_LEN = 500;
|
|
15
|
+
const MAX_ARRAY_ITEMS = 50;
|
|
16
|
+
const MAX_PATCH_OPS = 20;
|
|
17
|
+
const MAX_RESPONSE_LEN = logSink_1.CONTEXT_LIMITS.responseExcerpt;
|
|
18
|
+
const MAX_TEXT_RESPONSE_LEN = 200;
|
|
19
|
+
// Exact names, not a substring match — "key" must not mask a legitimate "keywords" parameter.
|
|
20
|
+
const SENSITIVE_PARAM = /^(access_?token|token|pat|password|pwd|secret|sig|signature|api_?key|key|authorization|auth)$/i;
|
|
21
|
+
const truncate = (text, max) => (text.length > max ? `${text.slice(0, max)}…` : text);
|
|
22
|
+
/** Strips credentials embedded in the URL and masks sensitive query parameter values. */
|
|
23
|
+
function sanitizeUrl(raw) {
|
|
24
|
+
if (typeof raw !== 'string' || !raw)
|
|
25
|
+
return undefined;
|
|
26
|
+
try {
|
|
27
|
+
const parsed = new URL(raw);
|
|
28
|
+
parsed.username = '';
|
|
29
|
+
parsed.password = '';
|
|
30
|
+
// Rewrite only the sensitive values in the raw query string — re-serializing through
|
|
31
|
+
// URLSearchParams would re-encode every other parameter ($depth, %20, +).
|
|
32
|
+
if (parsed.search) {
|
|
33
|
+
parsed.search = parsed.search
|
|
34
|
+
.slice(1)
|
|
35
|
+
.split('&')
|
|
36
|
+
.map((pair) => {
|
|
37
|
+
const eq = pair.indexOf('=');
|
|
38
|
+
if (eq < 0)
|
|
39
|
+
return pair;
|
|
40
|
+
let name = pair.slice(0, eq);
|
|
41
|
+
try {
|
|
42
|
+
name = decodeURIComponent(name);
|
|
43
|
+
}
|
|
44
|
+
catch (_a) {
|
|
45
|
+
// keep the raw name
|
|
46
|
+
}
|
|
47
|
+
return SENSITIVE_PARAM.test(name) ? `${pair.slice(0, eq)}=[REDACTED]` : pair;
|
|
48
|
+
})
|
|
49
|
+
.join('&');
|
|
50
|
+
}
|
|
51
|
+
return truncate(parsed.toString(), MAX_URL_LEN);
|
|
52
|
+
}
|
|
53
|
+
catch (_a) {
|
|
54
|
+
return truncate(raw, MAX_URL_LEN);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Replaces each single-quoted WIQL literal with its length — the query structure (fields,
|
|
59
|
+
* operators, numbers, @macros) stays readable, free-text values never reach the logs.
|
|
60
|
+
* `''` is WIQL's escaped quote.
|
|
61
|
+
*/
|
|
62
|
+
function maskWiqlLiterals(text) {
|
|
63
|
+
return text.replace(/'(?:[^']|'')*'/g, (m) => `'[${m.length - 2} chars]'`);
|
|
64
|
+
}
|
|
65
|
+
function isBinaryLike(data) {
|
|
66
|
+
return ((typeof Buffer !== 'undefined' && Buffer.isBuffer(data)) ||
|
|
67
|
+
data instanceof ArrayBuffer ||
|
|
68
|
+
ArrayBuffer.isView(data));
|
|
69
|
+
}
|
|
70
|
+
function isJsonPatch(data) {
|
|
71
|
+
return (Array.isArray(data) &&
|
|
72
|
+
data.length > 0 &&
|
|
73
|
+
data.every((item) => item &&
|
|
74
|
+
typeof item === 'object' &&
|
|
75
|
+
typeof item.op === 'string' &&
|
|
76
|
+
typeof item.path === 'string'));
|
|
77
|
+
}
|
|
78
|
+
function clampValues(value, depth = 0) {
|
|
79
|
+
if (typeof value === 'string')
|
|
80
|
+
return truncate(value, MAX_STRING_VALUE_LEN);
|
|
81
|
+
if (depth > 6 || value === null || typeof value !== 'object')
|
|
82
|
+
return value;
|
|
83
|
+
if (Array.isArray(value)) {
|
|
84
|
+
const items = value.slice(0, MAX_ARRAY_ITEMS).map((v) => clampValues(v, depth + 1));
|
|
85
|
+
return value.length > MAX_ARRAY_ITEMS ? [...items, `…(+${value.length - MAX_ARRAY_ITEMS} more)`] : items;
|
|
86
|
+
}
|
|
87
|
+
const out = {};
|
|
88
|
+
for (const key of Object.keys(value)) {
|
|
89
|
+
out[key] = clampValues(value[key], depth + 1);
|
|
90
|
+
}
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* A short, safe description of a request body — enough to see *what was asked* (the WIQL
|
|
95
|
+
* text, the id list) without ever carrying credentials or work-item content:
|
|
96
|
+
* - GET/HEAD never have one.
|
|
97
|
+
* - JSON-Patch arrays (work item / test case updates) keep only `op` + `path`; the `value`s
|
|
98
|
+
* are real field content and are dropped.
|
|
99
|
+
* - a WIQL `query` keeps its structure but its quoted literals are masked.
|
|
100
|
+
* - other JSON goes through redactValue (credential-looking keys scrubbed at any depth),
|
|
101
|
+
* with every string and the total length bounded.
|
|
102
|
+
* - anything that isn't plain JSON is described by type and size only.
|
|
103
|
+
*/
|
|
104
|
+
function summarizeBody(data, method) {
|
|
105
|
+
const verb = String(method || '').toUpperCase();
|
|
106
|
+
if (verb === 'GET' || verb === 'HEAD')
|
|
107
|
+
return undefined;
|
|
108
|
+
if (data === undefined || data === null || data === '')
|
|
109
|
+
return undefined;
|
|
110
|
+
if (typeof data === 'string') {
|
|
111
|
+
try {
|
|
112
|
+
const parsed = JSON.parse(data);
|
|
113
|
+
return typeof parsed === 'string' ? `[text, ${data.length} chars]` : summarizeBody(parsed, method);
|
|
114
|
+
}
|
|
115
|
+
catch (_a) {
|
|
116
|
+
return `[text, ${data.length} chars]`;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (typeof data !== 'object')
|
|
120
|
+
return `[${typeof data}]`;
|
|
121
|
+
if (isBinaryLike(data)) {
|
|
122
|
+
const size = data.byteLength;
|
|
123
|
+
return `[binary${typeof size === 'number' ? `, ${size} bytes` : ''}]`;
|
|
124
|
+
}
|
|
125
|
+
if (typeof data.pipe === 'function')
|
|
126
|
+
return '[stream]';
|
|
127
|
+
if (typeof FormData !== 'undefined' && data instanceof FormData)
|
|
128
|
+
return '[form-data]';
|
|
129
|
+
if (isJsonPatch(data)) {
|
|
130
|
+
const ops = data.slice(0, MAX_PATCH_OPS).map((o) => `${o.op} ${o.path}`);
|
|
131
|
+
const more = data.length > MAX_PATCH_OPS ? ` …(+${data.length - MAX_PATCH_OPS} more)` : '';
|
|
132
|
+
return truncate(`json-patch (${data.length} ops, values omitted): ${ops.join('; ')}${more}`, MAX_BODY_LEN);
|
|
133
|
+
}
|
|
134
|
+
if (Array.isArray(data) ? data.length === 0 : Object.keys(data).length === 0)
|
|
135
|
+
return undefined;
|
|
136
|
+
try {
|
|
137
|
+
const body = !Array.isArray(data) && typeof data.query === 'string'
|
|
138
|
+
? Object.assign(Object.assign({}, data), { query: maskWiqlLiterals(data.query) }) : data;
|
|
139
|
+
return truncate(JSON.stringify(clampValues((0, logger_1.redactValue)(body))), MAX_BODY_LEN);
|
|
140
|
+
}
|
|
141
|
+
catch (_b) {
|
|
142
|
+
return '[unserializable body]';
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/** The server's own explanation of the failure (ADO puts it in `message`), bounded. */
|
|
146
|
+
function summarizeResponse(data) {
|
|
147
|
+
if (data === undefined || data === null)
|
|
148
|
+
return undefined;
|
|
149
|
+
if (typeof data === 'string')
|
|
150
|
+
return truncate(data, MAX_TEXT_RESPONSE_LEN);
|
|
151
|
+
if (isBinaryLike(data))
|
|
152
|
+
return undefined;
|
|
153
|
+
if (typeof data.pipe === 'function')
|
|
154
|
+
return '[stream]';
|
|
155
|
+
try {
|
|
156
|
+
const message = data.message;
|
|
157
|
+
if (typeof message === 'string')
|
|
158
|
+
return truncate(message, MAX_RESPONSE_LEN);
|
|
159
|
+
return truncate(JSON.stringify((0, logger_1.redactValue)(data)), MAX_RESPONSE_LEN);
|
|
160
|
+
}
|
|
161
|
+
catch (_a) {
|
|
162
|
+
return '[unserializable response data]';
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function buildAdoRequestContext(error, request, attempt) {
|
|
166
|
+
var _a, _b, _c, _d, _e;
|
|
167
|
+
const method = String(request.method || ((_a = error === null || error === void 0 ? void 0 : error.config) === null || _a === void 0 ? void 0 : _a.method) || 'get').toUpperCase();
|
|
168
|
+
const context = { method, url: sanitizeUrl((_b = request.url) !== null && _b !== void 0 ? _b : (_c = error === null || error === void 0 ? void 0 : error.config) === null || _c === void 0 ? void 0 : _c.url) };
|
|
169
|
+
const status = Number((_d = error === null || error === void 0 ? void 0 : error.response) === null || _d === void 0 ? void 0 : _d.status);
|
|
170
|
+
if (Number.isFinite(status) && status > 0)
|
|
171
|
+
context.status = status;
|
|
172
|
+
if (attempt !== undefined)
|
|
173
|
+
context.attempt = attempt;
|
|
174
|
+
const requestBody = summarizeBody(request.data, method);
|
|
175
|
+
if (requestBody)
|
|
176
|
+
context.requestBody = requestBody;
|
|
177
|
+
const responseExcerpt = summarizeResponse((_e = error === null || error === void 0 ? void 0 : error.response) === null || _e === void 0 ? void 0 : _e.data);
|
|
178
|
+
if (responseExcerpt)
|
|
179
|
+
context.responseExcerpt = responseExcerpt;
|
|
180
|
+
return context;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Attaches the context as an enumerable own property: winston's errors() / log() merge an
|
|
184
|
+
* Error's own enumerable properties onto the log record, which is how the transport and the
|
|
185
|
+
* text formatter find it without every call site having to pass it along.
|
|
186
|
+
*/
|
|
187
|
+
function annotateAdoError(error, context) {
|
|
188
|
+
if (error && typeof error === 'object') {
|
|
189
|
+
try {
|
|
190
|
+
Object.defineProperty(error, 'adoRequest', { value: context, enumerable: true, configurable: true, writable: true });
|
|
191
|
+
}
|
|
192
|
+
catch (_a) {
|
|
193
|
+
// A frozen/exotic error object just goes unannotated — never worth failing the request path.
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return error;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* The log metadata for a caught error: message, stack, code, and the request description when
|
|
200
|
+
* the error came through TFSServices. Deliberately NOT the error object itself — passing a
|
|
201
|
+
* whole AxiosError would merge its entire config/request/response graph onto the record.
|
|
202
|
+
* winston concatenates meta.message onto the call's own message, so
|
|
203
|
+
* `logger.error('Could not fetch X:', describeError(err))` reads the same as the old
|
|
204
|
+
* `logger.error(\`Could not fetch X: ${err.message}\`)` — plus the request, which a message
|
|
205
|
+
* string can't carry.
|
|
206
|
+
*/
|
|
207
|
+
function describeError(error) {
|
|
208
|
+
if (!error || typeof error !== 'object')
|
|
209
|
+
return { message: String(error) };
|
|
210
|
+
const e = error;
|
|
211
|
+
const meta = { message: e.message, stack: e.stack };
|
|
212
|
+
if (typeof e.code === 'string')
|
|
213
|
+
meta.code = e.code;
|
|
214
|
+
if (e.adoRequest)
|
|
215
|
+
meta.adoRequest = e.adoRequest;
|
|
216
|
+
return meta;
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=requestContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestContext.js","sourceRoot":"","sources":["../../src/helpers/requestContext.ts"],"names":[],"mappings":"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"}
|
package/bin/helpers/tfs.d.ts
CHANGED
|
@@ -22,6 +22,11 @@ export declare class TFSServices {
|
|
|
22
22
|
* Check if an error is retryable
|
|
23
23
|
*/
|
|
24
24
|
private static isRetryableError;
|
|
25
|
+
/**
|
|
26
|
+
* Describes the failed request once, attaches it to the error, and (optionally) emits the one
|
|
27
|
+
* dedicated "ADO request failed" record.
|
|
28
|
+
*/
|
|
29
|
+
private static reportFailure;
|
|
25
30
|
/**
|
|
26
31
|
* Log detailed error information
|
|
27
32
|
*/
|
package/bin/helpers/tfs.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.TFSServices = void 0;
|
|
5
5
|
const axios_1 = require("axios");
|
|
6
6
|
const logger_1 = require("../utils/logger");
|
|
7
|
+
const requestContext_1 = require("./requestContext");
|
|
7
8
|
// Environment detection
|
|
8
9
|
const isNode = typeof window === 'undefined' && typeof process !== 'undefined' && ((_a = process.versions) === null || _a === void 0 ? void 0 : _a.node);
|
|
9
10
|
class TFSServices {
|
|
@@ -61,7 +62,7 @@ class TFSServices {
|
|
|
61
62
|
}
|
|
62
63
|
catch (e) {
|
|
63
64
|
logger_1.default.error(`error download zip file , url : ${url}`);
|
|
64
|
-
throw new Error(String(e));
|
|
65
|
+
throw (0, requestContext_1.annotateAdoError)(new Error(String(e)), (0, requestContext_1.buildAdoRequestContext)(e, { method: 'GET', url }));
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
static async fetchAzureDevOpsImageAsBase64(url, pat, requestMethod = 'get', data = {}, customHeaders = {}, printError = true) {
|
|
@@ -123,7 +124,7 @@ class TFSServices {
|
|
|
123
124
|
return result.data;
|
|
124
125
|
}
|
|
125
126
|
catch (e) {
|
|
126
|
-
this.
|
|
127
|
+
this.reportFailure(e, { method: 'GET', url });
|
|
127
128
|
throw e;
|
|
128
129
|
}
|
|
129
130
|
}
|
|
@@ -140,7 +141,7 @@ class TFSServices {
|
|
|
140
141
|
return result;
|
|
141
142
|
}
|
|
142
143
|
catch (e) {
|
|
143
|
-
this.
|
|
144
|
+
this.reportFailure(e, { method: requestMethod, url, data });
|
|
144
145
|
throw e;
|
|
145
146
|
}
|
|
146
147
|
}
|
|
@@ -173,10 +174,9 @@ class TFSServices {
|
|
|
173
174
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
174
175
|
continue;
|
|
175
176
|
}
|
|
176
|
-
//
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
177
|
+
// Always annotate (so any caller that logs this error — however it words its own
|
|
178
|
+
// message — carries the request), log the dedicated record only when asked to.
|
|
179
|
+
this.reportFailure(e, { method: config.method, url, data: config.data }, attempts, printError);
|
|
180
180
|
throw e;
|
|
181
181
|
}
|
|
182
182
|
}
|
|
@@ -204,31 +204,24 @@ class TFSServices {
|
|
|
204
204
|
return false;
|
|
205
205
|
}
|
|
206
206
|
/**
|
|
207
|
-
*
|
|
207
|
+
* Describes the failed request once, attaches it to the error, and (optionally) emits the one
|
|
208
|
+
* dedicated "ADO request failed" record.
|
|
208
209
|
*/
|
|
209
|
-
static
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
if (
|
|
213
|
-
|
|
214
|
-
responseExcerpt = error.response.data.substring(0, 200);
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
try {
|
|
218
|
-
responseExcerpt = error.response.data.message || JSON.stringify(error.response.data).substring(0, 200);
|
|
219
|
-
}
|
|
220
|
-
catch (_c) {
|
|
221
|
-
responseExcerpt = '[unserializable response data]';
|
|
222
|
-
}
|
|
223
|
-
}
|
|
210
|
+
static reportFailure(error, request, attempt, print = true) {
|
|
211
|
+
const context = (0, requestContext_1.buildAdoRequestContext)(error, request, attempt);
|
|
212
|
+
(0, requestContext_1.annotateAdoError)(error, context);
|
|
213
|
+
if (print) {
|
|
214
|
+
this.logDetailedError(error, context);
|
|
224
215
|
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Log detailed error information
|
|
219
|
+
*/
|
|
220
|
+
static logDetailedError(error, context) {
|
|
225
221
|
logger_1.default.error('ADO request failed', {
|
|
226
|
-
message: error.message,
|
|
227
|
-
stack: error.stack,
|
|
228
|
-
|
|
229
|
-
status: (_b = error.response) === null || _b === void 0 ? void 0 : _b.status,
|
|
230
|
-
responseExcerpt,
|
|
231
|
-
attempt,
|
|
222
|
+
message: error === null || error === void 0 ? void 0 : error.message,
|
|
223
|
+
stack: error === null || error === void 0 ? void 0 : error.stack,
|
|
224
|
+
adoRequest: context,
|
|
232
225
|
});
|
|
233
226
|
}
|
|
234
227
|
static getErrorMessage(error) {
|
package/bin/helpers/tfs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tfs.js","sourceRoot":"","sources":["../../src/helpers/tfs.ts"],"names":[],"mappings":";;;;AAAA,iCAAiE;AACjE,4CAAqC;
|
|
1
|
+
{"version":3,"file":"tfs.js","sourceRoot":"","sources":["../../src/helpers/tfs.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tfs_1 = require("../helpers/tfs");
|
|
4
4
|
const TicketsDataProvider_1 = require("./TicketsDataProvider");
|
|
5
5
|
const logger_1 = require("../utils/logger");
|
|
6
|
+
const requestContext_1 = require("../helpers/requestContext");
|
|
6
7
|
const tfs_data_1 = require("../models/tfs-data");
|
|
7
8
|
class GitDataProvider {
|
|
8
9
|
constructor(orgUrl, token) {
|
|
@@ -102,7 +103,7 @@ class GitDataProvider {
|
|
|
102
103
|
return undefined;
|
|
103
104
|
}
|
|
104
105
|
catch (err) {
|
|
105
|
-
logger_1.default.warn(`File ${fileName} could not be read
|
|
106
|
+
logger_1.default.warn(`File ${fileName} could not be read:`, (0, requestContext_1.describeError)(err));
|
|
106
107
|
return undefined;
|
|
107
108
|
}
|
|
108
109
|
}
|
|
@@ -939,7 +940,7 @@ class GitDataProvider {
|
|
|
939
940
|
}
|
|
940
941
|
}
|
|
941
942
|
catch (error) {
|
|
942
|
-
logger_1.default.error(
|
|
943
|
+
logger_1.default.error('Error in getSubmodulesData:', (0, requestContext_1.describeError)(error));
|
|
943
944
|
}
|
|
944
945
|
finally {
|
|
945
946
|
return submodules;
|