UNPKG

chainscript

Version:
81 lines (56 loc) 2.12 kB
'use strict'; exports.__esModule = true; exports['default'] = verifyFiles; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _path = require('path'); var _path2 = _interopRequireDefault(_path); var _multihashes = require('multihashes'); var _multihashes2 = _interopRequireDefault(_multihashes); var _bs58 = require('bs58'); var _bs582 = _interopRequireDefault(_bs58); var _invertHash = require('invert-hash'); var _invertHash2 = _interopRequireDefault(_invertHash); var _objectPath = require('object-path'); var _objectPath2 = _interopRequireDefault(_objectPath); var _hashFile = require('./hashFile'); var _hashFile2 = _interopRequireDefault(_hashFile); var INVERTED_HASH_MAP = _invertHash2['default'](_hashFile.HASH_MAP); function verifyFiles(cwd, json, root) { var top = _objectPath2['default'].get(json, root || ''); var hashes = Object.keys(top); var errors = []; var next = function next() { var _again = true; _function: while (_again) { hash = file = buf = algorithmName = algorithm = undefined; _again = false; if (hashes.length === 0) { if (errors.length > 0) { throw new Error(errors.map(function (err) { return err.message; }).join('\n')); } return true; } var hash = hashes.shift(); var file = top[hash]; var buf = new Buffer(_bs582['default'].decode(hash)); var algorithmName = _multihashes2['default'].decode(buf).name; var algorithm = INVERTED_HASH_MAP[algorithmName]; if (typeof algorithm === 'undefined') { errors.push(new Error('Unsupported algorithm: ' + algorithmName)); _again = true; continue _function; } return _hashFile2['default'](_path2['default'].resolve(cwd, file), algorithm).then(function (h) { if (hash !== h) { errors.push(new Error('Mismatch: ' + file)); } })['catch'](function (err) { return errors.push(err); }).then(next); } }; return next(); } module.exports = exports['default'];