snyk 1.853.0 → 1.854.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/dist/cli/245.index.js
CHANGED
|
@@ -5550,6 +5550,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
5550
5550
|
exports.extendAnalysis = exports.analyzeFolders = exports.analyzeBundle = void 0;
|
|
5551
5551
|
/* eslint-disable no-await-in-loop */
|
|
5552
5552
|
const lodash_omit_1 = __importDefault(__webpack_require__(76427));
|
|
5553
|
+
const uuid_1 = __webpack_require__(42277);
|
|
5553
5554
|
const files_1 = __webpack_require__(32083);
|
|
5554
5555
|
const constants_1 = __webpack_require__(65765);
|
|
5555
5556
|
const http_1 = __webpack_require__(60776);
|
|
@@ -5612,6 +5613,9 @@ function normalizeResultFiles(files, baseDir) {
|
|
|
5612
5613
|
return files;
|
|
5613
5614
|
}
|
|
5614
5615
|
async function analyzeFolders(options) {
|
|
5616
|
+
if (!options.connection.requestId) {
|
|
5617
|
+
options.connection.requestId = (0, uuid_1.v4)();
|
|
5618
|
+
}
|
|
5615
5619
|
const fileBundle = await (0, bundles_1.createBundleFromFolders)({
|
|
5616
5620
|
...options.connection,
|
|
5617
5621
|
...options.fileOptions,
|
|
@@ -5794,7 +5798,7 @@ async function* prepareRemoteBundle(options) {
|
|
|
5794
5798
|
emitter_1.emitter.createBundleProgress(cumulativeProgress, options.files.length);
|
|
5795
5799
|
for (const chunkedFiles of (0, files_1.composeFilePayloads)(options.files, constants_1.MAX_PAYLOAD)) {
|
|
5796
5800
|
const apiParams = {
|
|
5797
|
-
...(0, lodash_pick_1.default)(options, ['baseURL', 'sessionToken', 'source', 'removedFiles']),
|
|
5801
|
+
...(0, lodash_pick_1.default)(options, ['baseURL', 'sessionToken', 'source', 'removedFiles', 'requestId']),
|
|
5798
5802
|
files: chunkedFiles.reduce((d, f) => {
|
|
5799
5803
|
// deepcode ignore PrototypePollution: FP this is an internal code
|
|
5800
5804
|
d[f.bundlePath] = f.hash;
|
|
@@ -5829,7 +5833,7 @@ async function* prepareRemoteBundle(options) {
|
|
|
5829
5833
|
async function uploadRemoteBundle(options) {
|
|
5830
5834
|
let uploadedFiles = 0;
|
|
5831
5835
|
emitter_1.emitter.uploadBundleProgress(0, options.files.length);
|
|
5832
|
-
const apiParams = (0, lodash_pick_1.default)(options, ['baseURL', 'sessionToken', 'source', 'bundleHash']);
|
|
5836
|
+
const apiParams = (0, lodash_pick_1.default)(options, ['baseURL', 'sessionToken', 'source', 'bundleHash', 'requestId']);
|
|
5833
5837
|
const uploadFileChunks = async (bucketFiles) => {
|
|
5834
5838
|
// Note: we specifically create __new__ isolated bundles here to faster files upload
|
|
5835
5839
|
const resp = await (0, http_1.createBundle)({
|
|
@@ -5858,7 +5862,7 @@ async function fullfillRemoteBundle(options) {
|
|
|
5858
5862
|
// Check remove bundle to make sure no missing files left
|
|
5859
5863
|
let attempts = 0;
|
|
5860
5864
|
let { remoteBundle } = options;
|
|
5861
|
-
const connectionOptions = (0, lodash_pick_1.default)(options, ['baseURL', 'sessionToken', 'source']);
|
|
5865
|
+
const connectionOptions = (0, lodash_pick_1.default)(options, ['baseURL', 'sessionToken', 'source', 'requestId']);
|
|
5862
5866
|
while (remoteBundle.missingFiles.length && attempts < (options.maxAttempts || constants_1.MAX_UPLOAD_ATTEMPTS)) {
|
|
5863
5867
|
const missingFiles = await (0, files_1.resolveBundleFiles)(options.baseDir, remoteBundle.missingFiles);
|
|
5864
5868
|
await uploadRemoteBundle({
|
|
@@ -5878,7 +5882,7 @@ async function fullfillRemoteBundle(options) {
|
|
|
5878
5882
|
}
|
|
5879
5883
|
async function remoteBundleFactory(options) {
|
|
5880
5884
|
let remoteBundle = null;
|
|
5881
|
-
const baseOptions = (0, lodash_pick_1.default)(options, ['baseURL', 'sessionToken', 'source', 'baseDir']);
|
|
5885
|
+
const baseOptions = (0, lodash_pick_1.default)(options, ['baseURL', 'sessionToken', 'source', 'baseDir', 'requestId']);
|
|
5882
5886
|
const bundleFactory = prepareRemoteBundle((0, lodash_omit_1.default)(options, ['baseDir']));
|
|
5883
5887
|
for await (const response of bundleFactory) {
|
|
5884
5888
|
if (response.type === 'error') {
|
|
@@ -5899,9 +5903,9 @@ exports.remoteBundleFactory = remoteBundleFactory;
|
|
|
5899
5903
|
* @param source
|
|
5900
5904
|
* @returns
|
|
5901
5905
|
*/
|
|
5902
|
-
async function getSupportedFiles(baseURL, source) {
|
|
5906
|
+
async function getSupportedFiles(baseURL, source, requestId) {
|
|
5903
5907
|
emitter_1.emitter.supportedFilesLoaded(null);
|
|
5904
|
-
const resp = await (0, http_1.getFilters)(baseURL, source);
|
|
5908
|
+
const resp = await (0, http_1.getFilters)(baseURL, source, undefined, requestId);
|
|
5905
5909
|
if (resp.type === 'error') {
|
|
5906
5910
|
throw resp.error;
|
|
5907
5911
|
}
|
|
@@ -5919,7 +5923,7 @@ async function createBundleFromFolders(options) {
|
|
|
5919
5923
|
const baseDir = (0, files_1.determineBaseDir)(options.paths);
|
|
5920
5924
|
const [supportedFiles, fileIgnores] = await Promise.all([
|
|
5921
5925
|
// Fetch supporte files to save network traffic
|
|
5922
|
-
getSupportedFiles(options.baseURL, options.source),
|
|
5926
|
+
getSupportedFiles(options.baseURL, options.source, options.requestId),
|
|
5923
5927
|
// Scan for custom ignore rules
|
|
5924
5928
|
(0, files_1.collectIgnoreRules)(options.paths, options.symlinksEnabled, options.defaultFileIgnores),
|
|
5925
5929
|
]);
|
|
@@ -5938,7 +5942,7 @@ async function createBundleFromFolders(options) {
|
|
|
5938
5942
|
emitter_1.emitter.scanFilesProgress(totalFiles);
|
|
5939
5943
|
}
|
|
5940
5944
|
const bundleOptions = {
|
|
5941
|
-
...(0, lodash_pick_1.default)(options, ['baseURL', 'sessionToken', 'source']),
|
|
5945
|
+
...(0, lodash_pick_1.default)(options, ['baseURL', 'sessionToken', 'source', 'requestId']),
|
|
5942
5946
|
baseDir,
|
|
5943
5947
|
files: bundleFiles,
|
|
5944
5948
|
};
|
|
@@ -6437,6 +6441,9 @@ async function prepareExtendingBundle(baseDir, supportedFiles, fileIgnores = con
|
|
|
6437
6441
|
processingFiles = processingFiles.map(f => resolveBundleFilePath(baseDir, f)).filter(f => !isMatch(f, fileIgnores));
|
|
6438
6442
|
if (processingFiles.length) {
|
|
6439
6443
|
// Determine existing files (minus removed)
|
|
6444
|
+
if (isWindows) {
|
|
6445
|
+
processingFiles = processingFiles.map(f => f.replace(/\\/g, '/')); // fg requires forward-slashes in Windows globs
|
|
6446
|
+
}
|
|
6440
6447
|
const entries = await (0, fast_glob_1.default)(processingFiles, {
|
|
6441
6448
|
...fgOptions,
|
|
6442
6449
|
cwd: baseDir,
|
|
@@ -6641,7 +6648,8 @@ async function getIpFamily(authHost) {
|
|
|
6641
6648
|
method: 'post',
|
|
6642
6649
|
family, // family param forces the handler to dispatch a request using IP at "family" version
|
|
6643
6650
|
}, 0);
|
|
6644
|
-
|
|
6651
|
+
const ipv6Incompatible = res.error;
|
|
6652
|
+
return ipv6Incompatible ? undefined : family;
|
|
6645
6653
|
}
|
|
6646
6654
|
exports.getIpFamily = getIpFamily;
|
|
6647
6655
|
const CHECK_SESSION_ERROR_MESSAGES = {
|
|
@@ -6671,10 +6679,10 @@ async function checkSession(options) {
|
|
|
6671
6679
|
return generateError(res.errorCode, CHECK_SESSION_ERROR_MESSAGES, 'checkSession');
|
|
6672
6680
|
}
|
|
6673
6681
|
exports.checkSession = checkSession;
|
|
6674
|
-
async function getFilters(baseURL, source, attempts = constants_1.MAX_RETRY_ATTEMPTS) {
|
|
6682
|
+
async function getFilters(baseURL, source, attempts = constants_1.MAX_RETRY_ATTEMPTS, requestId) {
|
|
6675
6683
|
const apiName = 'filters';
|
|
6676
6684
|
const res = await (0, needle_1.makeRequest)({
|
|
6677
|
-
headers: { source },
|
|
6685
|
+
headers: { source, ...(requestId && { 'snyk-request-id': requestId }) },
|
|
6678
6686
|
url: `${baseURL}/${apiName}`,
|
|
6679
6687
|
method: 'get',
|
|
6680
6688
|
}, attempts);
|
|
@@ -6704,6 +6712,7 @@ async function createBundle(options) {
|
|
|
6704
6712
|
headers: {
|
|
6705
6713
|
...prepareTokenHeaders(options.sessionToken),
|
|
6706
6714
|
source: options.source,
|
|
6715
|
+
...(options.requestId && { 'snyk-request-id': options.requestId })
|
|
6707
6716
|
},
|
|
6708
6717
|
url: `${options.baseURL}/bundle`,
|
|
6709
6718
|
method: 'post',
|
|
@@ -6727,6 +6736,7 @@ async function checkBundle(options) {
|
|
|
6727
6736
|
headers: {
|
|
6728
6737
|
...prepareTokenHeaders(options.sessionToken),
|
|
6729
6738
|
source: options.source,
|
|
6739
|
+
...(options.requestId && { 'snyk-request-id': options.requestId })
|
|
6730
6740
|
},
|
|
6731
6741
|
url: `${options.baseURL}/bundle/${options.bundleHash}`,
|
|
6732
6742
|
method: 'get',
|
|
@@ -6749,6 +6759,7 @@ async function extendBundle(options) {
|
|
|
6749
6759
|
headers: {
|
|
6750
6760
|
...prepareTokenHeaders(options.sessionToken),
|
|
6751
6761
|
source: options.source,
|
|
6762
|
+
...(options.requestId && { 'snyk-request-id': options.requestId })
|
|
6752
6763
|
},
|
|
6753
6764
|
url: `${options.baseURL}/bundle/${options.bundleHash}`,
|
|
6754
6765
|
method: 'put',
|
|
@@ -6782,6 +6793,7 @@ async function getAnalysis(options) {
|
|
|
6782
6793
|
headers: {
|
|
6783
6794
|
...prepareTokenHeaders(options.sessionToken),
|
|
6784
6795
|
source: options.source,
|
|
6796
|
+
...(options.requestId && { 'snyk-request-id': options.requestId })
|
|
6785
6797
|
},
|
|
6786
6798
|
url: `${options.baseURL}/analysis`,
|
|
6787
6799
|
method: 'post',
|
|
@@ -6947,6 +6959,7 @@ async function makeRequest(payload, attempts = constants_1.MAX_RETRY_ATTEMPTS) {
|
|
|
6947
6959
|
emitter_1.emitter.apiRequestLog(`=> HTTP ${method === null || method === void 0 ? void 0 : method.toUpperCase()} ${url} ${data !== null && data !== void 0 ? data : ''}`.slice(0, 399));
|
|
6948
6960
|
do {
|
|
6949
6961
|
let errorCode;
|
|
6962
|
+
let error;
|
|
6950
6963
|
let response;
|
|
6951
6964
|
try {
|
|
6952
6965
|
response = await (0, needle_1.default)(method, url, data, options);
|
|
@@ -6957,6 +6970,7 @@ async function makeRequest(payload, attempts = constants_1.MAX_RETRY_ATTEMPTS) {
|
|
|
6957
6970
|
errorCode = response.statusCode;
|
|
6958
6971
|
}
|
|
6959
6972
|
catch (err) {
|
|
6973
|
+
error = err; // do not swallow the error, pass further to the caller instead
|
|
6960
6974
|
errorCode = constants_1.NETWORK_ERRORS[err.code || err.errno];
|
|
6961
6975
|
emitter_1.emitter.apiRequestLog(`Requested url --> ${url} | error --> ${err}`);
|
|
6962
6976
|
}
|
|
@@ -6975,10 +6989,10 @@ async function makeRequest(payload, attempts = constants_1.MAX_RETRY_ATTEMPTS) {
|
|
|
6975
6989
|
}
|
|
6976
6990
|
else {
|
|
6977
6991
|
attempts = 0;
|
|
6978
|
-
return { success: false, errorCode };
|
|
6992
|
+
return { success: false, errorCode, error };
|
|
6979
6993
|
}
|
|
6980
6994
|
} while (attempts > 0);
|
|
6981
|
-
return { success: false, errorCode: constants_1.ErrorCodes.serviceUnavailable };
|
|
6995
|
+
return { success: false, errorCode: constants_1.ErrorCodes.serviceUnavailable, error: undefined };
|
|
6982
6996
|
}
|
|
6983
6997
|
exports.makeRequest = makeRequest;
|
|
6984
6998
|
//# sourceMappingURL=needle.js.map
|