const getImages = () => new Promise((resolve, reject) => { const baseImages = fs.readdirSync(options.baselineImageDirectory); const newImages = reduce(baseImages, [], (acc, currentImage, done) => { const basePath = path.join(options.baselineImageDirectory, currentImage); const newPath = path.join(options.newImageDirectory, currentImage); const baseImg = fs.readFileSync(basePath) const newImg = fs.readFileSync(newPath) resemble(newImg) .compareTo(baseImg) .onComplete((data) => { if (Number(data.misMatchPercentage) >= options.resemblejsThreshold) { done(null, acc.concat([{ filename: currentImage, baseImg: dataImg(baseImg.toString('base64')), newImg: dataImg(newImg.toString('base64')), diffImg: data.getImageDataUrl() }])) } else { done(null, acc) } }) }, (err, result) => { resolve(result) }); })
return function preprocess(content, file, done) { var relativePath = file.originalPath.replace(basePath + '/', ''); reduce(rules, content, function step(prevContent, rule, callback) { var pattern = rule.match || "**/*"; var next = callback.bind(null, null); if (minimatch(relativePath, pattern)) { try { rule.process(prevContent, file, next, log); } catch (e) { log.error('%s\n for file %s', e.message, file.originalPath); done(e, null); } } else { next(prevContent); } }, function (err, result) { done(result); }); };
function tree(filenames, mapper, callback) { filenames = filenames.map(resolve) var top = commondir(filenames) reduce(filenames, {}, function(memo, name, next) { var key = path.relative(top, name) mapper(name, function(err, result) { if (err) return next(err) result.__deepest_node__ = true memo[key] = result return next(null, memo) }) }, function(err, object) { if (err) return callback(err) object = flat.unflatten(object, { delimiter: path.sep }) callback(null, clean(reformat(object, 'name'))) }) }