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.
@@ -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
- return res.success ? family : undefined;
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