@axe-core/watcher 3.22.0-next.6b6a4dc8 → 3.22.0-next.f73377ac
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/dist/sendResultsToServer.js +82 -45
- package/dist/sendResultsToServer.js.map +1 -1
- package/dist/utils/createAbortController.d.ts +11 -0
- package/dist/utils/createAbortController.js +14 -0
- package/dist/utils/createAbortController.js.map +1 -0
- package/extension/background.js +1 -1
- package/extension/content.js +1 -1
- package/package.json +1 -1
@@ -41,6 +41,7 @@ const node_fetch_1 = __importStar(require("node-fetch"));
|
|
41
41
|
const uuid_1 = require("uuid");
|
42
42
|
const readVariables_1 = __importDefault(require("./utils/readVariables"));
|
43
43
|
const linearBackoff_1 = __importDefault(require("./utils/linearBackoff"));
|
44
|
+
const createAbortController_1 = __importStar(require("./utils/createAbortController"));
|
44
45
|
const { version } = require('../package.json');
|
45
46
|
exports.MAX_PAGE_STATES_PER_REQUEST = 5;
|
46
47
|
exports.MAX_RETRIES = 3;
|
@@ -60,54 +61,90 @@ const sendResultsToServer = async ({ results, debugLogger }) => {
|
|
60
61
|
results: bodyResults,
|
61
62
|
...git_data
|
62
63
|
};
|
63
|
-
const
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
batchResults: bodyResults.length,
|
75
|
-
reqSize: Buffer.byteLength(JSON.stringify(body)),
|
76
|
-
resStatus: res.status,
|
77
|
-
resStatusText: res.statusText
|
64
|
+
const { signal, cleanup } = (0, createAbortController_1.default)();
|
65
|
+
try {
|
66
|
+
const res = await (0, node_fetch_1.default)(resultsURL, {
|
67
|
+
method: 'PUT',
|
68
|
+
redirect: 'follow',
|
69
|
+
headers: {
|
70
|
+
'Content-Type': 'application/json',
|
71
|
+
'X-API-Key': api_key
|
72
|
+
},
|
73
|
+
body: JSON.stringify(body),
|
74
|
+
signal
|
78
75
|
});
|
79
|
-
|
76
|
+
if (!res.ok) {
|
77
|
+
debugLogger('SendResultsToServer: Failed to send results', {
|
78
|
+
batchResults: bodyResults.length,
|
79
|
+
reqSize: Buffer.byteLength(JSON.stringify(body)),
|
80
|
+
resStatus: res.status,
|
81
|
+
resStatusText: res.statusText
|
82
|
+
});
|
83
|
+
console.warn('@axe-core/watcher: Unable to send results to server');
|
84
|
+
}
|
85
|
+
else {
|
86
|
+
debugLogger('SendResultsToServer: Successfully sent', {
|
87
|
+
batchResults: bodyResults.length,
|
88
|
+
reqSize: Buffer.byteLength(JSON.stringify(body)),
|
89
|
+
resStatus: res.status,
|
90
|
+
resStatusText: res.statusText
|
91
|
+
});
|
92
|
+
}
|
93
|
+
const is500 = res.status === 500;
|
94
|
+
const is408 = res.status === 408;
|
95
|
+
const is429 = res.status === 429;
|
96
|
+
if ((is500 || is408 || is429) && retryAttempt !== exports.MAX_RETRIES) {
|
97
|
+
const incrementRetry = retryAttempt + 1;
|
98
|
+
console.warn('@axe-core/watcher: Retrying...');
|
99
|
+
debugLogger('SendResultsToServer: Retrying...', {
|
100
|
+
retryAttempt: incrementRetry,
|
101
|
+
resStatus: res.status,
|
102
|
+
batchResults: bodyResults.length,
|
103
|
+
reqSize: Buffer.byteLength(JSON.stringify(body))
|
104
|
+
});
|
105
|
+
await (0, linearBackoff_1.default)(incrementRetry);
|
106
|
+
await putResults(bodyResults, incrementRetry);
|
107
|
+
}
|
108
|
+
else if (retryAttempt === exports.MAX_RETRIES && !res.ok) {
|
109
|
+
debugLogger('SendResultsToServer: Max retries reached', {
|
110
|
+
retryAttempt,
|
111
|
+
resStatus: res.status
|
112
|
+
});
|
113
|
+
console.warn('@axe-core/watcher: Unable to send results to server, max retries reached');
|
114
|
+
return Promise.reject(new node_fetch_1.FetchError('Maximum retries reached', MAX_RETRIES_ERROR_TYPE));
|
115
|
+
}
|
80
116
|
}
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
117
|
+
catch (error) {
|
118
|
+
if (error.name === 'AbortError') {
|
119
|
+
debugLogger('SendResultsToServer: Aborted request due to timeout', {
|
120
|
+
abortTimeout: createAbortController_1.ABORT_CONTROLLER_TIMEOUT,
|
121
|
+
retryAttempt,
|
122
|
+
batchResults: bodyResults.length,
|
123
|
+
reqSize: Buffer.byteLength(JSON.stringify(body))
|
124
|
+
});
|
125
|
+
if (retryAttempt !== exports.MAX_RETRIES) {
|
126
|
+
const incrementRetry = retryAttempt + 1;
|
127
|
+
console.warn('@axe-core/watcher: Retrying after timeout...');
|
128
|
+
debugLogger('SendResultsToServer: Retrying after timeout...', {
|
129
|
+
retryAttempt: incrementRetry,
|
130
|
+
batchResults: bodyResults.length,
|
131
|
+
reqSize: Buffer.byteLength(JSON.stringify(body))
|
132
|
+
});
|
133
|
+
await (0, linearBackoff_1.default)(incrementRetry);
|
134
|
+
await putResults(bodyResults, incrementRetry);
|
135
|
+
}
|
136
|
+
else {
|
137
|
+
debugLogger('SendResultsToServer: Max retries reached after timeout', {
|
138
|
+
retryAttempt
|
139
|
+
});
|
140
|
+
console.warn('@axe-core/watcher: Request timed out, max retries reached');
|
141
|
+
return Promise.reject(new node_fetch_1.FetchError('Request timed out, maximum retries reached', MAX_RETRIES_ERROR_TYPE));
|
142
|
+
}
|
143
|
+
}
|
144
|
+
throw error;
|
103
145
|
}
|
104
|
-
|
105
|
-
|
106
|
-
retryAttempt,
|
107
|
-
resStatus: res.status
|
108
|
-
});
|
109
|
-
console.warn('@axe-core/watcher: Unable to send results to server, max retries reached');
|
110
|
-
return Promise.reject(new node_fetch_1.FetchError('Maximum retries reached', MAX_RETRIES_ERROR_TYPE));
|
146
|
+
finally {
|
147
|
+
cleanup();
|
111
148
|
}
|
112
149
|
};
|
113
150
|
results.forEach(result => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sendResultsToServer.js","sourceRoot":"","sources":["../src/sendResultsToServer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA8C;AAG9C,+BAAiC;AAEjC,0EAAiD;AACjD,0EAAiD;
|
1
|
+
{"version":3,"file":"sendResultsToServer.js","sourceRoot":"","sources":["../src/sendResultsToServer.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
/**
|
2
|
+
* The timeout for the AbortController, in milliseconds.
|
3
|
+
* If the request takes longer than this, it will be aborted.
|
4
|
+
*/
|
5
|
+
export declare const ABORT_CONTROLLER_TIMEOUT = 10000;
|
6
|
+
interface CreateAbortControllerReturn {
|
7
|
+
signal: AbortSignal;
|
8
|
+
cleanup: () => void;
|
9
|
+
}
|
10
|
+
declare function createAbortController(): CreateAbortControllerReturn;
|
11
|
+
export default createAbortController;
|
@@ -0,0 +1,14 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ABORT_CONTROLLER_TIMEOUT = void 0;
|
4
|
+
exports.ABORT_CONTROLLER_TIMEOUT = 10000;
|
5
|
+
function createAbortController() {
|
6
|
+
const abortController = new AbortController();
|
7
|
+
const timeoutId = setTimeout(() => abortController.abort(), exports.ABORT_CONTROLLER_TIMEOUT);
|
8
|
+
return {
|
9
|
+
signal: abortController.signal,
|
10
|
+
cleanup: () => clearTimeout(timeoutId)
|
11
|
+
};
|
12
|
+
}
|
13
|
+
exports.default = createAbortController;
|
14
|
+
//# sourceMappingURL=createAbortController.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"createAbortController.js","sourceRoot":"","sources":["../../src/utils/createAbortController.ts"],"names":[],"mappings":";;;AAIa,QAAA,wBAAwB,GAAG,KAAK,CAAA;AAO7C,SAAS,qBAAqB;IAC5B,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;IAC7C,MAAM,SAAS,GAAG,UAAU,CAC1B,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAC7B,gCAAwB,CACzB,CAAA;IAED,OAAO;QACL,MAAM,EAAE,eAAe,CAAC,MAAM;QAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;KACvC,CAAA;AACH,CAAC;AAED,kBAAe,qBAAqB,CAAA"}
|