get-composite-details.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. "use strict";
  2. /*
  3. Copyright 2018 Google LLC
  4. Use of this source code is governed by an MIT-style
  5. license that can be found in the LICENSE file or at
  6. https://opensource.org/licenses/MIT.
  7. */
  8. const crypto = require('crypto');
  9. module.exports = (compositeURL, dependencyDetails) => {
  10. let totalSize = 0;
  11. let compositeHash = '';
  12. var _iteratorNormalCompletion = true;
  13. var _didIteratorError = false;
  14. var _iteratorError = undefined;
  15. try {
  16. for (var _iterator = dependencyDetails[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  17. let fileDetails = _step.value;
  18. totalSize += fileDetails.size;
  19. compositeHash += fileDetails.hash;
  20. }
  21. } catch (err) {
  22. _didIteratorError = true;
  23. _iteratorError = err;
  24. } finally {
  25. try {
  26. if (!_iteratorNormalCompletion && _iterator.return != null) {
  27. _iterator.return();
  28. }
  29. } finally {
  30. if (_didIteratorError) {
  31. throw _iteratorError;
  32. }
  33. }
  34. }
  35. const md5 = crypto.createHash('md5');
  36. md5.update(compositeHash);
  37. const hashOfHashes = md5.digest('hex');
  38. return {
  39. file: compositeURL,
  40. hash: hashOfHashes,
  41. size: totalSize
  42. };
  43. };