From 28533c1689d1f9c680f001ce80814e4c5de30908 Mon Sep 17 00:00:00 2001 From: Roman Kuznetsov Date: Mon, 11 Aug 2025 04:08:45 +0300 Subject: [PATCH] chore: remove extra deps --- index.js | 9 +- lib/img-buffer/index.js | 4 +- lib/utils.js | 3 +- lib/validators.js | 5 +- package-lock.json | 255 ++++---------------------------- package.json | 3 - test/ignore-caret-comparator.js | 3 +- test/validators.js | 8 +- 8 files changed, 42 insertions(+), 248 deletions(-) diff --git a/index.js b/index.js index 40642ab..35ea3de 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,5 @@ 'use strict'; -const _ = require('lodash'); const colorDiff = require('color-diff'); const img = require('./lib/image'); const areColorsSame = require('./lib/same-colors'); @@ -152,7 +151,7 @@ const buildDiffImage = async (img1, img2, options) => { }; const getToleranceFromOpts = (opts) => { - if (!_.hasIn(opts, 'tolerance')) { + if (!Object.hasOwn(opts, 'tolerance')) { return JND; } @@ -167,11 +166,13 @@ const prepareOpts = (opts) => { opts = opts || {}; opts.tolerance = getToleranceFromOpts(opts); - return _.defaults(opts, { + const defaults = { ignoreCaret: true, ignoreAntialiasing: true, antialiasingTolerance: 0 - }); + }; + + return Object.assign(defaults, opts); }; const getMaxDiffBounds = (first, second) => { diff --git a/lib/img-buffer/index.js b/lib/img-buffer/index.js index 8ff50c4..7d2697e 100644 --- a/lib/img-buffer/index.js +++ b/lib/img-buffer/index.js @@ -1,6 +1,6 @@ 'use strict'; -const fs = require('fs-extra'); +const fs = require('fs'); const NestedError = require('nested-error-stacks'); const OriginalBuffer = require('./original-buffer'); const BoundedBuffer = require('./bounded-buffer'); @@ -13,7 +13,7 @@ exports.create = (buffer, {boundingBox} = {}) => { exports.fromFile = async (filePath, opts = {}) => { try { - const buffer = await fs.readFile(filePath); + const buffer = await fs.promises.readFile(filePath); return exports.create(buffer, opts); } catch (err) { throw new NestedError(`Can't load img file ${filePath}`, err); diff --git a/lib/utils.js b/lib/utils.js index 19702f3..33207c7 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,6 +1,5 @@ 'use strict'; -const _ = require('lodash'); const parseColor = require('parse-color'); const img = require('./image'); const buffer = require('./img-buffer'); @@ -88,7 +87,7 @@ exports.formatImages = (img1, img2) => { validators.validateImages(img1, img2); return [img1, img2].map((i) => { - return _.isObject(i) && !Buffer.isBuffer(i) ? i : {source: i, boundingBox: null}; + return i !== null && typeof i === 'object' && !Buffer.isBuffer(i) ? i : {source: i, boundingBox: null}; }); }; diff --git a/lib/validators.js b/lib/validators.js index cb6602d..7ae0721 100644 --- a/lib/validators.js +++ b/lib/validators.js @@ -1,11 +1,10 @@ 'use strict'; -const _ = require('lodash'); const {REQUIRED_IMAGE_FIELDS, REQUIRED_BOUNDING_BOX_FIELDS} = require('./constants'); const validateRequiredFields = (value, fields) => { [].concat(fields).forEach((field) => { - if (!_.hasIn(value, field)) { + if (!value || !Object.hasOwn(value, field)) { throw new TypeError(`Field "${field}" does not exist in ${JSON.stringify(value)}`); } }); @@ -23,7 +22,7 @@ const validateBoundingBoxCoords = ({boundingBox}) => { exports.validateImages = (img1, img2) => { [img1, img2].forEach((i) => { - if (Buffer.isBuffer(i) || !_.isObject(i)) { + if (Buffer.isBuffer(i) || i === null || typeof i !== 'object') { return; } diff --git a/package-lock.json b/package-lock.json index df3031e..a11e059 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,8 +12,6 @@ "@jsquash/png": "^3.1.1", "buffer-crc32": "^1.0.0", "color-diff": "^1.1.0", - "fs-extra": "^8.1.0", - "lodash": "^4.17.3", "nested-error-stacks": "^2.1.0", "parse-color": "^1.0.0" }, @@ -26,7 +24,6 @@ "eslint": "^8.57.1", "eslint-config-gemini-testing": "^3.0.0", "globals": "^15.15.0", - "gm": "^1.23.1", "js-graph-algorithms": "^1.0.18", "mocha": "^5.2.0", "proxyquire": "^1.7.10", @@ -139,6 +136,18 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, + "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/js": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", @@ -419,18 +428,6 @@ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", "dev": true }, - "node_modules/array-parallel": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/array-parallel/-/array-parallel-0.1.3.tgz", - "integrity": "sha1-j3hTCJJu1apHjEfmTRszS2wMlH0=", - "dev": true - }, - "node_modules/array-series": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/array-series/-/array-series-0.1.5.tgz", - "integrity": "sha1-3103v8XC7wdV4qpPkv6ufUtaly8=", - "dev": true - }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -1675,24 +1672,6 @@ "node": ">=0.10.0" } }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-extra/node_modules/graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2082,36 +2061,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gm": { - "version": "1.23.1", - "resolved": "https://registry.npmjs.org/gm/-/gm-1.23.1.tgz", - "integrity": "sha1-Lt7rlYCE0PjqeYjl2ZWxx9/BR3c=", - "dev": true, - "dependencies": { - "array-parallel": "~0.1.3", - "array-series": "~0.1.5", - "cross-spawn": "^4.0.0", - "debug": "^3.1.0" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/gm/node_modules/cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, "node_modules/graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "devOptional": true, + "dev": true, "engines": { "node": ">=0.4.0" } @@ -2358,7 +2312,7 @@ "node_modules/js-graph-algorithms": { "version": "1.0.18", "resolved": "https://registry.npmjs.org/js-graph-algorithms/-/js-graph-algorithms-1.0.18.tgz", - "integrity": "sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==", + "integrity": "sha1-+W7Ie/GU9cCjE2X6Dh0Ht7li2JE=", "dev": true, "bin": { "js-graphs": "src/jsgraphs.js" @@ -2406,14 +2360,6 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -2507,7 +2453,8 @@ "node_modules/lodash": { "version": "4.17.10", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true }, "node_modules/lodash._reinterpolate": { "version": "3.0.0", @@ -2571,16 +2518,6 @@ "node": ">=0.10.0" } }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "node_modules/map-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", @@ -3063,12 +3000,6 @@ "resolve": "~1.1.7" } }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -3622,18 +3553,6 @@ "node": ">=4" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3795,14 +3714,6 @@ "dev": true, "optional": true }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3828,18 +3739,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -3952,12 +3851,6 @@ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, - "node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, "node_modules/yargs": { "version": "13.3.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", @@ -4166,6 +4059,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true } } }, @@ -4391,18 +4290,6 @@ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", "dev": true }, - "array-parallel": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/array-parallel/-/array-parallel-0.1.3.tgz", - "integrity": "sha1-j3hTCJJu1apHjEfmTRszS2wMlH0=", - "dev": true - }, - "array-series": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/array-series/-/array-series-0.1.5.tgz", - "integrity": "sha1-3103v8XC7wdV4qpPkv6ufUtaly8=", - "dev": true - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -5362,23 +5249,6 @@ "null-check": "^1.0.0" } }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", - "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" - } - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -5681,35 +5551,11 @@ "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true }, - "gm": { - "version": "1.23.1", - "resolved": "https://registry.npmjs.org/gm/-/gm-1.23.1.tgz", - "integrity": "sha1-Lt7rlYCE0PjqeYjl2ZWxx9/BR3c=", - "dev": true, - "requires": { - "array-parallel": "~0.1.3", - "array-series": "~0.1.5", - "cross-spawn": "^4.0.0", - "debug": "^3.1.0" - }, - "dependencies": { - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - } - } - }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "devOptional": true + "dev": true }, "graphemer": { "version": "1.4.0", @@ -5893,7 +5739,7 @@ "js-graph-algorithms": { "version": "1.0.18", "resolved": "https://registry.npmjs.org/js-graph-algorithms/-/js-graph-algorithms-1.0.18.tgz", - "integrity": "sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==", + "integrity": "sha1-+W7Ie/GU9cCjE2X6Dh0Ht7li2JE=", "dev": true }, "js-yaml": { @@ -5935,14 +5781,6 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -6017,7 +5855,8 @@ "lodash": { "version": "4.17.10", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "dev": true }, "lodash._reinterpolate": { "version": "3.0.0", @@ -6078,16 +5917,6 @@ "signal-exit": "^3.0.0" } }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "map-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", @@ -6490,12 +6319,6 @@ "resolve": "~1.1.7" } }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -6926,12 +6749,6 @@ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", "dev": true }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7059,11 +6876,6 @@ } } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -7089,15 +6901,6 @@ "spdx-expression-parse": "^3.0.0" } }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -7191,12 +6994,6 @@ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, "yargs": { "version": "13.3.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", diff --git a/package.json b/package.json index c0f5645..6a5c50b 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,6 @@ "@jsquash/png": "^3.1.1", "buffer-crc32": "^1.0.0", "color-diff": "^1.1.0", - "fs-extra": "^8.1.0", - "lodash": "^4.17.3", "nested-error-stacks": "^2.1.0", "parse-color": "^1.0.0" }, @@ -25,7 +23,6 @@ "eslint": "^8.57.1", "eslint-config-gemini-testing": "^3.0.0", "globals": "^15.15.0", - "gm": "^1.23.1", "js-graph-algorithms": "^1.0.18", "mocha": "^5.2.0", "proxyquire": "^1.7.10", diff --git a/test/ignore-caret-comparator.js b/test/ignore-caret-comparator.js index 39a6d4d..e59401f 100644 --- a/test/ignore-caret-comparator.js +++ b/test/ignore-caret-comparator.js @@ -1,6 +1,5 @@ 'use strict'; -const _ = require('lodash'); const expect = require('chai').expect; const sinon = require('sinon'); const proxyquire = require('proxyquire'); @@ -12,7 +11,7 @@ describe('IgnoreCaretComparator', () => { let areColorsSame; const compareImages = (pixels, comparator) => { - const emptyPixels = _.map(pixels, (pixelRow) => Array(pixelRow.length).fill(0)); + const emptyPixels = pixels.map(pixelRow => Array(pixelRow.length).fill(0)); const width = pixels[0].length; const height = pixels.length; diff --git a/test/validators.js b/test/validators.js index b99c100..e6bc3e0 100644 --- a/test/validators.js +++ b/test/validators.js @@ -1,6 +1,5 @@ 'use strict'; -const _ = require('lodash'); const {validateImages} = require('../lib/validators'); describe('lib/validators', () => { @@ -27,10 +26,13 @@ describe('lib/validators', () => { ['left', 'top', 'right', 'bottom'].forEach((field) => { it(`required field "${field}" does not exist in "boundingBox"`, () => { + const boundingBox = {left: 0, top: 0, right: 0, bottom: 0}; + delete boundingBox[field]; + assert.throws(() => { return validateImages( - {source: 'image-path', boundingBox: _.omit({left: 0, top: 0, right: 0, bottom: 0}, field)}, - {source: 'image-path', boundingBox: _.omit({left: 0, top: 0, right: 0, bottom: 0}, field)} + {source: 'image-path', boundingBox}, + {source: 'image-path', boundingBox} ); }, TypeError, `Field "${field}" does not exist`); });