From b4700bd9d4946f72fa2b02bbf5860dd17dcfe3c6 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 6 Sep 2018 13:48:39 +0000 Subject: [PATCH 001/110] Add renovate.json --- renovate.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 renovate.json diff --git a/renovate.json b/renovate.json new file mode 100644 index 00000000..f45d8f11 --- /dev/null +++ b/renovate.json @@ -0,0 +1,5 @@ +{ + "extends": [ + "config:base" + ] +} From 73ad498fe8b7b7a1313b465489960c22ed09b4f1 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 6 Sep 2018 16:04:41 +0000 Subject: [PATCH 002/110] chore(deps): pin dependencies --- package-lock.json | 4 +++- package.json | 14 +++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 35d530c8..18f6580d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1202,6 +1202,7 @@ "version": "0.1.4", "bundled": true, "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -2384,7 +2385,8 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "loose-envify": { "version": "1.3.1", diff --git a/package.json b/package.json index ee5ebba5..9b045968 100644 --- a/package.json +++ b/package.json @@ -41,12 +41,12 @@ "author": "netroy (http://netroy.in/)", "license": "MIT", "devDependencies": { - "coveralls": "^3.0.1", - "eslint": "^4.19.1", - "expect.js": "^0.3.1", - "glob": "^7.1.1", - "mocha": "^5.2.0", - "nyc": "^11.9.0", - "sinon": "^5.1.1" + "coveralls": "3.0.1", + "eslint": "4.19.1", + "expect.js": "0.3.1", + "glob": "7.1.2", + "mocha": "5.2.0", + "nyc": "11.9.0", + "sinon": "5.1.1" } } From ab04895a9bfeef67212ce0e6ee83d96c31e44f9b Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 18 Sep 2018 08:51:25 +0000 Subject: [PATCH 003/110] chore(deps): update dependency sinon to v6 --- package-lock.json | 93 +++++++++++++++++++++++++++++++---------------- package.json | 2 +- 2 files changed, 63 insertions(+), 32 deletions(-) diff --git a/package-lock.json b/package-lock.json index 18f6580d..727e4bcf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,13 +4,42 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@sinonjs/commons": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.0.2.tgz", + "integrity": "sha512-WR3dlgqJP4QNrLC4iXN/5/2WaLQQ0VijOOkmflqFGVJ6wLEpbSjo7c0ZeGIdtY8Crk7xBBp87sM6+Mkerz7alw==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, "@sinonjs/formatio": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", - "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.0.0.tgz", + "integrity": "sha512-vdjoYLDptCgvtJs57ULshak3iJe4NW3sJ3g36xVDGff5AE8P30S6A093EIEPjdi2noGhfuNOEkbxt3J3awFW1w==", "dev": true, "requires": { - "samsam": "1.3.0" + "@sinonjs/samsam": "2.1.0" + }, + "dependencies": { + "@sinonjs/samsam": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.1.0.tgz", + "integrity": "sha512-5x2kFgJYupaF1ns/RmharQ90lQkd2ELS8A9X0ymkAAdemYHGtI2KiUHG8nX2WU0T1qgnOU5YMqnBM2V7NUanNw==", + "dev": true, + "requires": { + "array-from": "^2.1.1" + } + } + } + }, + "@sinonjs/samsam": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.1.1.tgz", + "integrity": "sha512-7oX6PXMulvdN37h88dvlvRyu61GYZau40fL4wEZvPEHvrjpJc3lDv6xDM5n4Z0StufUVB5nDvVZUM+jZHdMOOQ==", + "dev": true, + "requires": { + "array-from": "^2.1.1" } }, "acorn": { @@ -81,6 +110,12 @@ "sprintf-js": "~1.0.2" } }, + "array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "dev": true + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -994,9 +1029,9 @@ } }, "just-extend": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.27.tgz", - "integrity": "sha512-mJVp13Ix6gFo3SBAy9U/kL+oeZqzlYYYLQBwXVBlVzIsZwBqGREnOro24oC/8s8aox+rJhtZ2DiQof++IrkA+g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-3.0.0.tgz", + "integrity": "sha512-Fu3T6pKBuxjWT/p4DkqGHFRsysc8OauWr4ZRTY9dIx07Y9O0RkoR5jcv28aeD1vuAwhm3nLkDurwLXoALp4DpQ==", "dev": true }, "lcov-parse": { @@ -1034,9 +1069,9 @@ "dev": true }, "lolex": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.0.tgz", - "integrity": "sha512-uJkH2e0BVfU5KOJUevbTOtpDduooSarH5PopO+LfM/vZf8Z9sJzODqKev804JYM2i++ktJfUmC1le4LwFQ1VMg==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.4.tgz", + "integrity": "sha512-Gh6Vffq/piTeHwunLNFR1jFVaqlwK9GMNUxFcsO1cwHyvbRKHwX8UDkxmrDnbcPdHNmpv7z2kxtkkSx5xkNpMw==", "dev": true }, "lru-cache": { @@ -1151,13 +1186,13 @@ "dev": true }, "nise": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.1.tgz", - "integrity": "sha512-9JX3YwoIt3kS237scmSSOpEv7vCukVzLfwK0I0XhocDSHUANid8ZHnLEULbbSkfeMn98B2y5kphIWzZUylESRQ==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.5.tgz", + "integrity": "sha512-OHRVvdxKgwZELf2DTgsJEIA4MOq8XWvpSUzoOXyxJ2mY0mMENWC66+70AShLR2z05B1dzrzWlUQJmJERlOUpZw==", "dev": true, "requires": { - "@sinonjs/formatio": "^2.0.0", - "just-extend": "^1.1.27", + "@sinonjs/formatio": "3.0.0", + "just-extend": "^3.0.0", "lolex": "^2.3.2", "path-to-regexp": "^1.7.0", "text-encoding": "^0.6.4" @@ -4065,12 +4100,6 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, - "samsam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", - "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", - "dev": true - }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", @@ -4099,24 +4128,26 @@ "dev": true }, "sinon": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-5.1.1.tgz", - "integrity": "sha512-h/3uHscbt5pQNxkf7Y/Lb9/OM44YNCicHakcq73ncbrIS8lXg+ZGOZbtuU+/km4YnyiCYfQQEwANaReJz7KDfw==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.3.4.tgz", + "integrity": "sha512-NIaR56Z1mefuRBXYrf4otqBxkWiKveX+fvqs3HzFq2b07HcgpkMgIwmQM/owNjNFAHkx0kJXW+Q0mDthiuslXw==", "dev": true, "requires": { - "@sinonjs/formatio": "^2.0.0", + "@sinonjs/commons": "^1.0.2", + "@sinonjs/formatio": "^3.0.0", + "@sinonjs/samsam": "^2.1.1", "diff": "^3.5.0", "lodash.get": "^4.4.2", - "lolex": "^2.4.2", - "nise": "^1.3.3", - "supports-color": "^5.4.0", + "lolex": "^2.7.4", + "nise": "^1.4.5", + "supports-color": "^5.5.0", "type-detect": "^4.0.8" }, "dependencies": { "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" diff --git a/package.json b/package.json index 9b045968..309e1816 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.2", "mocha": "5.2.0", "nyc": "11.9.0", - "sinon": "5.1.1" + "sinon": "6.3.4" } } From 4650ea1ec9693c3997c94d3b0c7775acd69e85a5 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 6 Sep 2018 21:41:47 +0000 Subject: [PATCH 004/110] chore(deps): update dependency coveralls to v3.0.2 --- package-lock.json | 199 +++++++++++++++++----------------------------- package.json | 2 +- 2 files changed, 75 insertions(+), 126 deletions(-) diff --git a/package-lock.json b/package-lock.json index 727e4bcf..ee635457 100644 --- a/package-lock.json +++ b/package-lock.json @@ -138,10 +138,13 @@ "dev": true }, "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } }, "assert-plus": { "version": "1.0.0", @@ -162,9 +165,9 @@ "dev": true }, "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, "babel-code-frame": { @@ -209,24 +212,15 @@ "dev": true }, "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "optional": true, "requires": { "tweetnacl": "^0.14.3" } }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, - "requires": { - "hoek": "4.x.x" - } - }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", @@ -389,16 +383,17 @@ "dev": true }, "coveralls": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.1.tgz", - "integrity": "sha512-FAzXwiDOYLGDWH+zgoIA+8GbWv50hlx+kpEJyvzLKOdnIBv9uWoVl4DhqGgyUHpiRjAlF8KYZSipWXYtllWH6Q==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.2.tgz", + "integrity": "sha512-Tv0LKe/MkBOilH2v7WBiTBdudg2ChfGbdXafc/s330djpF3zKOmuehTeRwjXWc7pzfj9FrDUTA7tEx6Div8NFw==", "dev": true, "requires": { - "js-yaml": "^3.6.1", + "growl": "~> 1.10.0", + "js-yaml": "^3.11.0", "lcov-parse": "^0.0.10", - "log-driver": "^1.2.5", + "log-driver": "^1.2.7", "minimist": "^1.2.0", - "request": "^2.79.0" + "request": "^2.85.0" } }, "cross-spawn": { @@ -412,26 +407,6 @@ "which": "^1.2.9" } }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, - "requires": { - "boom": "5.x.x" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "requires": { - "hoek": "4.x.x" - } - } - } - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -493,13 +468,14 @@ } }, "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, "optional": true, "requires": { - "jsbn": "~0.1.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "escape-string-regexp": { @@ -623,9 +599,9 @@ "dev": true }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, "external-editor": { @@ -785,12 +761,12 @@ "dev": true }, "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", "dev": true, "requires": { - "ajv": "^5.1.0", + "ajv": "^5.3.0", "har-schema": "^2.0.0" } }, @@ -809,30 +785,12 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "dev": true, - "requires": { - "boom": "4.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" - } - }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", "dev": true }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "dev": true - }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -1085,18 +1043,18 @@ } }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", "dev": true }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", "dev": true, "requires": { - "mime-db": "~1.33.0" + "mime-db": "~1.36.0" } }, "mimic-fn": { @@ -1116,7 +1074,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -3831,9 +3789,9 @@ } }, "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, "object-assign": { @@ -3966,6 +3924,12 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "dev": true + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -4000,33 +3964,31 @@ "dev": true }, "request": { - "version": "2.85.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "dev": true, "requires": { "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", + "aws4": "^1.8.0", "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "hawk": "~6.0.2", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "stringstream": "~0.0.5", - "tough-cookie": "~2.3.3", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" + "uuid": "^3.3.2" } }, "require-uncached": { @@ -4164,15 +4126,6 @@ "is-fullwidth-code-point": "^2.0.0" } }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "dev": true, - "requires": { - "hoek": "4.x.x" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -4180,9 +4133,9 @@ "dev": true }, "sshpk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", "dev": true, "requires": { "asn1": "~0.2.3", @@ -4192,6 +4145,7 @@ "ecc-jsbn": "~0.1.1", "getpass": "^0.1.1", "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" } }, @@ -4214,12 +4168,6 @@ "safe-buffer": "~5.1.0" } }, - "stringstream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", - "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", - "dev": true - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -4291,11 +4239,12 @@ } }, "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "dev": true, "requires": { + "psl": "^1.1.24", "punycode": "^1.4.1" } }, @@ -4343,9 +4292,9 @@ "dev": true }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", "dev": true }, "verror": { diff --git a/package.json b/package.json index 309e1816..5fbf1530 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "author": "netroy (http://netroy.in/)", "license": "MIT", "devDependencies": { - "coveralls": "3.0.1", + "coveralls": "3.0.2", "eslint": "4.19.1", "expect.js": "0.3.1", "glob": "7.1.2", From b308795b8e58a4d1700dac95911e80ad01f69105 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 1 Oct 2018 09:07:11 +0000 Subject: [PATCH 005/110] chore(deps): update dependency glob to v7.1.3 --- package-lock.json | 20 +++++++++++++++++--- package.json | 2 +- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index ee635457..9cda36a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -709,9 +709,9 @@ } }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1114,6 +1114,20 @@ "supports-color": "5.4.0" }, "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "supports-color": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", diff --git a/package.json b/package.json index 5fbf1530..1c715dd5 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "coveralls": "3.0.2", "eslint": "4.19.1", "expect.js": "0.3.1", - "glob": "7.1.2", + "glob": "7.1.3", "mocha": "5.2.0", "nyc": "11.9.0", "sinon": "6.3.4" From c514545791cf12082df1f6f76976469024276b8b Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 31 Oct 2018 15:29:46 +0000 Subject: [PATCH 006/110] chore(deps): update dependency sinon to v7 --- package-lock.json | 53 ++++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9cda36a0..382bbacd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@sinonjs/commons": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.0.2.tgz", - "integrity": "sha512-WR3dlgqJP4QNrLC4iXN/5/2WaLQQ0VijOOkmflqFGVJ6wLEpbSjo7c0ZeGIdtY8Crk7xBBp87sM6+Mkerz7alw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.3.0.tgz", + "integrity": "sha512-j4ZwhaHmwsCb4DlDOIWnI5YyKDNMoNThsmwEpfHx6a1EpsGZ9qYLxP++LMlmBRjtGptGHFsGItJ768snllFWpA==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -34,13 +34,10 @@ } }, "@sinonjs/samsam": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.1.1.tgz", - "integrity": "sha512-7oX6PXMulvdN37h88dvlvRyu61GYZau40fL4wEZvPEHvrjpJc3lDv6xDM5n4Z0StufUVB5nDvVZUM+jZHdMOOQ==", - "dev": true, - "requires": { - "array-from": "^2.1.1" - } + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.1.2.tgz", + "integrity": "sha512-ZwTHAlC9akprWDinwEPD4kOuwaYZlyMwVJIANsKNC3QVp0AHB04m7RnB4eqeWfgmxw8MGTzS9uMaw93Z3QcZbw==", + "dev": true }, "acorn": { "version": "5.5.3", @@ -1027,9 +1024,9 @@ "dev": true }, "lolex": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.4.tgz", - "integrity": "sha512-Gh6Vffq/piTeHwunLNFR1jFVaqlwK9GMNUxFcsO1cwHyvbRKHwX8UDkxmrDnbcPdHNmpv7z2kxtkkSx5xkNpMw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-3.0.0.tgz", + "integrity": "sha512-hcnW80h3j2lbUfFdMArd5UPA/vxZJ+G8vobd+wg3nVEQA0EigStbYcrG030FJxL6xiDDPEkoMatV9xIh5OecQQ==", "dev": true }, "lru-cache": { @@ -1158,9 +1155,9 @@ "dev": true }, "nise": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.5.tgz", - "integrity": "sha512-OHRVvdxKgwZELf2DTgsJEIA4MOq8XWvpSUzoOXyxJ2mY0mMENWC66+70AShLR2z05B1dzrzWlUQJmJERlOUpZw==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.6.tgz", + "integrity": "sha512-1GedetLKzmqmgwabuMSqPsT7oumdR77SBpDfNNJhADRIeA3LN/2RVqR4fFqwvzhAqcTef6PPCzQwITE/YQ8S8A==", "dev": true, "requires": { "@sinonjs/formatio": "3.0.0", @@ -1168,6 +1165,14 @@ "lolex": "^2.3.2", "path-to-regexp": "^1.7.0", "text-encoding": "^0.6.4" + }, + "dependencies": { + "lolex": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", + "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", + "dev": true + } } }, "nyc": { @@ -4104,18 +4109,18 @@ "dev": true }, "sinon": { - "version": "6.3.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-6.3.4.tgz", - "integrity": "sha512-NIaR56Z1mefuRBXYrf4otqBxkWiKveX+fvqs3HzFq2b07HcgpkMgIwmQM/owNjNFAHkx0kJXW+Q0mDthiuslXw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.1.1.tgz", + "integrity": "sha512-iYagtjLVt1vN3zZY7D8oH7dkjNJEjLjyuzy8daX5+3bbQl8gaohrheB9VfH1O3L6LKuue5WTJvFluHiuZ9y3nQ==", "dev": true, "requires": { - "@sinonjs/commons": "^1.0.2", + "@sinonjs/commons": "^1.2.0", "@sinonjs/formatio": "^3.0.0", - "@sinonjs/samsam": "^2.1.1", + "@sinonjs/samsam": "^2.1.2", "diff": "^3.5.0", "lodash.get": "^4.4.2", - "lolex": "^2.7.4", - "nise": "^1.4.5", + "lolex": "^3.0.0", + "nise": "^1.4.6", "supports-color": "^5.5.0", "type-detect": "^4.0.8" }, @@ -4227,7 +4232,7 @@ }, "text-encoding": { "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "resolved": "http://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", "dev": true }, diff --git a/package.json b/package.json index 1c715dd5..3bc0c2e5 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.3", "mocha": "5.2.0", "nyc": "11.9.0", - "sinon": "6.3.4" + "sinon": "7.1.1" } } From 78f655b031a7c5ecf59615d2280c71bd4df05a6c Mon Sep 17 00:00:00 2001 From: Daniel Ruf Date: Fri, 18 May 2018 11:18:13 +0200 Subject: [PATCH 007/110] chore: remove Node.js 4 --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3942fffc..315584ee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,6 @@ cache: directories: - node_modules node_js: - - 4 - 6 - 8 - 10 From 6652495fc8e0618221794933b85b2a1ff5978ae8 Mon Sep 17 00:00:00 2001 From: Aditya Date: Wed, 14 Nov 2018 12:45:32 +0100 Subject: [PATCH 008/110] Migrate to Buffer.alloc close #114 --- lib/index.js | 4 ++-- lib/types/tiff.js | 2 +- specs/fs-close.spec.js | 2 +- specs/others.spec.js | 2 +- specs/valid.spec.js | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/index.js b/lib/index.js index 746802d6..22dc8c2c 100644 --- a/lib/index.js +++ b/lib/index.js @@ -55,7 +55,7 @@ function asyncFileToBuffer (filepath, callback) { return callback(new Error('File size is not greater than 0 —— ' + filepath)); } var bufferSize = Math.min(size, MaxBufferSize); - var buffer = new Buffer(bufferSize); + var buffer = Buffer.alloc(bufferSize); // read first buffer block from the file, asynchronously fs.read(descriptor, buffer, 0, bufferSize, 0, function (err) { if (err) { return callback(err); } @@ -79,7 +79,7 @@ function syncFileToBuffer (filepath) { var descriptor = fs.openSync(filepath, 'r'); var size = fs.fstatSync(descriptor).size; var bufferSize = Math.min(size, MaxBufferSize); - var buffer = new Buffer(bufferSize); + var buffer = Buffer.alloc(bufferSize); fs.readSync(descriptor, buffer, 0, bufferSize, 0); fs.closeSync(descriptor); return buffer; diff --git a/lib/types/tiff.js b/lib/types/tiff.js index 3833e15d..6f50c61b 100644 --- a/lib/types/tiff.js +++ b/lib/types/tiff.js @@ -24,7 +24,7 @@ function readIFD (buffer, filepath, isBigEndian) { } // populate the buffer - var endBuffer = new Buffer(bufferSize); + var endBuffer = Buffer.alloc(bufferSize); var descriptor = fs.openSync(filepath, 'r'); fs.readSync(descriptor, endBuffer, 0, bufferSize, ifdOffset); diff --git a/specs/fs-close.spec.js b/specs/fs-close.spec.js index 6975bafd..42c25e4f 100644 --- a/specs/fs-close.spec.js +++ b/specs/fs-close.spec.js @@ -8,7 +8,7 @@ var imageSize = require('..'); describe('after done reading from files', function () { function readFromClosed (descriptor) { - fs.readSync(descriptor, new Buffer(1), 0, 1, 0); + fs.readSync(descriptor, Buffer.alloc(1), 0, 1, 0); } describe('should close the file descriptor', function () { diff --git a/specs/others.spec.js b/specs/others.spec.js index 9831034d..52729c19 100644 --- a/specs/others.spec.js +++ b/specs/others.spec.js @@ -34,7 +34,7 @@ describe('Invalid invocation', function () { var bufferSize = 2048; var file = 'specs/images/valid/tiff/little-endian.tiff'; - buffer = new Buffer(bufferSize); + buffer = Buffer.alloc(bufferSize); var filepath = path.resolve(file); var descriptor = fs.openSync(filepath, 'r'); fs.readSync(descriptor, buffer, 0, bufferSize, 0); diff --git a/specs/valid.spec.js b/specs/valid.spec.js index a3a9aa97..80fb459d 100644 --- a/specs/valid.spec.js +++ b/specs/valid.spec.js @@ -105,7 +105,7 @@ describe('Valid images', function () { beforeEach(function (done) { - var buffer = new Buffer(bufferSize); + var buffer = Buffer.alloc(bufferSize); var filepath = path.resolve(file); var descriptor = fs.openSync(filepath, 'r'); fs.readSync(descriptor, buffer, 0, bufferSize, 0); From 1f29311c5794ff2257776ed8397c8addcfff332a Mon Sep 17 00:00:00 2001 From: ZaneHannanAU Date: Thu, 4 Oct 2018 20:50:38 +1000 Subject: [PATCH 009/110] svg: use higher specifity regexp for checks Based on http://dassur.ma/things/regexp-quote/#bonus-html-tags Essentially for if ``. A gigantic increase in complexity though... --- lib/types/svg.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/types/svg.js b/lib/types/svg.js index 73c8d270..b561d1d3 100644 --- a/lib/types/svg.js +++ b/lib/types/svg.js @@ -1,12 +1,12 @@ 'use strict'; -var svgReg = /]+[^>]*>/; +var svgReg = /"']|"([^"\\]|\\[^])*"|'([^'\\]|\\[^])*')*>/; function isSVG (buffer) { return svgReg.test(buffer); } var extractorRegExps = { - 'root': /]+>/, + 'root': svgReg, 'width': /\bwidth=(['"])([^%]+?)\1/, 'height': /\bheight=(['"])([^%]+?)\1/, 'viewbox': /\bviewBox=(['"])(.+?)\1/ From 665cc9ac9999e15baccc213f154366f2d3db2d18 Mon Sep 17 00:00:00 2001 From: ZaneHannanAU Date: Thu, 4 Oct 2018 21:18:14 +1000 Subject: [PATCH 010/110] Create viewbox-width-height-brackets.svg Used for possible HTML stuff. --- specs/images/valid/svg/viewbox-width-height-brackets.svg | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 specs/images/valid/svg/viewbox-width-height-brackets.svg diff --git a/specs/images/valid/svg/viewbox-width-height-brackets.svg b/specs/images/valid/svg/viewbox-width-height-brackets.svg new file mode 100644 index 00000000..ddfcd9f6 --- /dev/null +++ b/specs/images/valid/svg/viewbox-width-height-brackets.svg @@ -0,0 +1,7 @@ + + + + From f7f02c382b444f61952d8cff3b736f510c65cfe0 Mon Sep 17 00:00:00 2001 From: ZaneHannanAU Date: Thu, 4 Oct 2018 22:35:04 +1000 Subject: [PATCH 011/110] Create no-quotes.svg should fail; but can (possibly) pass. --- specs/images/invalid/no-quotes.svg | 1 + 1 file changed, 1 insertion(+) create mode 100644 specs/images/invalid/no-quotes.svg diff --git a/specs/images/invalid/no-quotes.svg b/specs/images/invalid/no-quotes.svg new file mode 100644 index 00000000..57b3e409 --- /dev/null +++ b/specs/images/invalid/no-quotes.svg @@ -0,0 +1 @@ + From 7d8a4ef5e96c3e8c758cd0b58c185070e99b4f1d Mon Sep 17 00:00:00 2001 From: ZaneHannanAU Date: Thu, 4 Oct 2018 22:36:34 +1000 Subject: [PATCH 012/110] Create broken-quotes.svg Unescaped quotes within image. --- specs/images/invalid/broken-quotes.svg | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 specs/images/invalid/broken-quotes.svg diff --git a/specs/images/invalid/broken-quotes.svg b/specs/images/invalid/broken-quotes.svg new file mode 100644 index 00000000..0c19065c --- /dev/null +++ b/specs/images/invalid/broken-quotes.svg @@ -0,0 +1,7 @@ + <(^-^)> ^(^_^)>")' + height="456px"> + + + From f48e2f0f2785ea89304e1204d173ef2256461691 Mon Sep 17 00:00:00 2001 From: ZaneHannanAU Date: Thu, 4 Oct 2018 22:50:28 +1000 Subject: [PATCH 013/110] break broken quotes --- specs/images/invalid/broken-quotes.svg | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/specs/images/invalid/broken-quotes.svg b/specs/images/invalid/broken-quotes.svg index 0c19065c..9d22b52f 100644 --- a/specs/images/invalid/broken-quotes.svg +++ b/specs/images/invalid/broken-quotes.svg @@ -1,7 +1,6 @@ - <(^-^)> ^(^_^)>")' - height="456px"> + height="456px" viewBox="0 0 246 912" width="123px"> From bce261dbd03da2307a9235be6cc2b38a63a83120 Mon Sep 17 00:00:00 2001 From: ZaneHannanAU Date: Fri, 5 Oct 2018 11:51:43 +1000 Subject: [PATCH 014/110] Comply with DOM parser spec --- lib/types/svg.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/types/svg.js b/lib/types/svg.js index b561d1d3..1b821f21 100644 --- a/lib/types/svg.js +++ b/lib/types/svg.js @@ -1,6 +1,6 @@ 'use strict'; -var svgReg = /"']|"([^"\\]|\\[^])*"|'([^'\\]|\\[^])*')*>/; +var svgReg = /"']|"[^"]*"|'[^']*')*>/; function isSVG (buffer) { return svgReg.test(buffer); } From 555165af21371130d84d40bcfe825f16d4ddac5a Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 14 Nov 2018 12:16:48 +0000 Subject: [PATCH 015/110] chore(deps): update dependency nyc to v13 --- package-lock.json | 2088 +++++++++------------------------------------ package.json | 2 +- 2 files changed, 387 insertions(+), 1703 deletions(-) diff --git a/package-lock.json b/package-lock.json index 382bbacd..03cb79d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,138 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.6.tgz", + "integrity": "sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ==", + "dev": true, + "requires": { + "@babel/types": "^7.1.6", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/parser": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.6.tgz", + "integrity": "sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ==", + "dev": true + }, + "@babel/template": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz", + "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.1.2", + "@babel/types": "^7.1.2" + } + }, + "@babel/traverse": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz", + "integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.1.6", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.1.6", + "@babel/types": "^7.1.6", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + }, + "dependencies": { + "debug": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.6.tgz", + "integrity": "sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + } + }, "@sinonjs/commons": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.3.0.tgz", @@ -924,6 +1056,27 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, + "istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.0.tgz", + "integrity": "sha512-eQY9vN9elYjdgN9Iv6NS/00bptm02EBBk70lRMaVjeA6QYocQgenVrSgC28TJurdnZa80AGO3ASdFN+w/njGiQ==", + "dev": true, + "requires": { + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "istanbul-lib-coverage": "^2.0.1", + "semver": "^5.5.0" + } + }, "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", @@ -947,6 +1100,12 @@ "dev": true, "optional": true }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -1176,45 +1335,42 @@ } }, "nyc": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.9.0.tgz", - "integrity": "sha512-w8OdJAhXL5izerzZMdqzYKMj/pgHJyY3qEPYBjLLxrhcVoHEY9pU5ENIiZyCgG9OR7x3VcUMoD40o6PtVpfR4g==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.1.0.tgz", + "integrity": "sha512-3GyY6TpQ58z9Frpv4GMExE1SV2tAgYqC7HSy2omEhNiCT3mhT9NyiOvIE8zkbuJVFzmvvNTnE4h/7/wQae7xLg==", "dev": true, "requires": { "archy": "^1.0.0", "arrify": "^1.0.1", - "caching-transform": "^1.0.0", - "convert-source-map": "^1.5.1", + "caching-transform": "^2.0.0", + "convert-source-map": "^1.6.0", "debug-log": "^1.0.1", - "default-require-extensions": "^1.0.0", - "find-cache-dir": "^0.1.1", - "find-up": "^2.1.0", - "foreground-child": "^1.5.3", - "glob": "^7.0.6", - "istanbul-lib-coverage": "^1.1.2", - "istanbul-lib-hook": "^1.1.0", - "istanbul-lib-instrument": "^1.10.0", - "istanbul-lib-report": "^1.1.3", - "istanbul-lib-source-maps": "^1.2.3", - "istanbul-reports": "^1.4.0", - "md5-hex": "^1.2.0", + "find-cache-dir": "^2.0.0", + "find-up": "^3.0.0", + "foreground-child": "^1.5.6", + "glob": "^7.1.3", + "istanbul-lib-coverage": "^2.0.1", + "istanbul-lib-hook": "^2.0.1", + "istanbul-lib-instrument": "^3.0.0", + "istanbul-lib-report": "^2.0.2", + "istanbul-lib-source-maps": "^2.0.1", + "istanbul-reports": "^2.0.1", + "make-dir": "^1.3.0", "merge-source-map": "^1.1.0", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.0", - "resolve-from": "^2.0.0", + "resolve-from": "^4.0.0", "rimraf": "^2.6.2", - "signal-exit": "^3.0.1", + "signal-exit": "^3.0.2", "spawn-wrap": "^1.4.2", - "test-exclude": "^4.2.0", + "test-exclude": "^5.0.0", + "uuid": "^3.3.2", "yargs": "11.1.0", - "yargs-parser": "^8.0.0" + "yargs-parser": "^9.0.2" }, "dependencies": { "align-text": { "version": "0.1.4", "bundled": true, "dev": true, - "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -1227,21 +1383,16 @@ "dev": true }, "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", + "version": "3.0.0", "bundled": true, "dev": true }, "append-transform": { - "version": "0.4.0", + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "default-require-extensions": "^1.0.0" + "default-require-extensions": "^2.0.0" } }, "archy": { @@ -1249,197 +1400,21 @@ "bundled": true, "dev": true }, - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, "arrify": { "version": "1.0.1", "bundled": true, "dev": true }, - "assign-symbols": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "async": { "version": "1.5.2", "bundled": true, "dev": true }, - "atob": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "babel-generator": { - "version": "6.26.1", - "bundled": true, - "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "babel-template": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "bundled": true, - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "bundled": true, - "dev": true - }, "balanced-match": { "version": "1.0.0", "bundled": true, "dev": true }, - "base": { - "version": "0.11.2", - "bundled": true, - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, "brace-expansion": { "version": "1.1.11", "bundled": true, @@ -1449,69 +1424,20 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "builtin-modules": { "version": "1.1.1", "bundled": true, "dev": true }, - "cache-base": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } - } - }, "caching-transform": { - "version": "1.0.1", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "md5-hex": "^1.2.0", - "mkdirp": "^0.5.1", - "write-file-atomic": "^1.1.4" + "make-dir": "^1.0.0", + "md5-hex": "^2.0.0", + "package-hash": "^2.0.0", + "write-file-atomic": "^2.0.0" } }, "camelcase": { @@ -1530,44 +1456,6 @@ "lazy-cache": "^1.0.3" } }, - "chalk": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "class-utils": { - "version": "0.3.6", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } - } - }, "cliui": { "version": "2.1.0", "bundled": true, @@ -1592,44 +1480,23 @@ "bundled": true, "dev": true }, - "collection-visit": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "commondir": { "version": "1.0.1", "bundled": true, "dev": true }, - "component-emitter": { - "version": "1.2.1", - "bundled": true, - "dev": true - }, "concat-map": { "version": "0.0.1", "bundled": true, "dev": true }, "convert-source-map": { - "version": "1.5.1", - "bundled": true, - "dev": true - }, - "copy-descriptor": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "core-js": { - "version": "2.5.6", + "version": "1.6.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } }, "cross-spawn": { "version": "4.0.2", @@ -1641,7 +1508,7 @@ } }, "debug": { - "version": "2.6.9", + "version": "3.1.0", "bundled": true, "dev": true, "requires": { @@ -1658,89 +1525,24 @@ "bundled": true, "dev": true }, - "decode-uri-component": { - "version": "0.2.0", - "bundled": true, - "dev": true - }, "default-require-extensions": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "strip-bom": "^2.0.0" - } - }, - "define-property": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "detect-indent": { - "version": "4.0.0", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "repeating": "^2.0.0" + "strip-bom": "^3.0.0" } }, "error-ex": { - "version": "1.3.1", + "version": "1.3.2", "bundled": true, "dev": true, "requires": { "is-arrayish": "^0.2.1" } }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "esutils": { - "version": "2.0.2", + "es6-error": { + "version": "4.1.1", "bundled": true, "dev": true }, @@ -1770,165 +1572,24 @@ } } }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "extend-shallow": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "find-cache-dir": { - "version": "0.1.1", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" + "make-dir": "^1.0.0", + "pkg-dir": "^3.0.0" } }, "find-up": { - "version": "2.1.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^3.0.0" } }, - "for-in": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, "foreground-child": { "version": "1.5.6", "bundled": true, @@ -1938,21 +1599,13 @@ "signal-exit": "^3.0.0" } }, - "fragment-cache": { - "version": "0.2.1", - "bundled": true, - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "fs.realpath": { "version": "1.0.0", "bundled": true, "dev": true }, "get-caller-file": { - "version": "1.0.2", + "version": "1.0.3", "bundled": true, "dev": true }, @@ -1961,13 +1614,8 @@ "bundled": true, "dev": true }, - "get-value": { - "version": "2.0.6", - "bundled": true, - "dev": true - }, "glob": { - "version": "7.1.2", + "version": "7.1.3", "bundled": true, "dev": true, "requires": { @@ -1979,11 +1627,6 @@ "path-is-absolute": "^1.0.0" } }, - "globals": { - "version": "9.18.0", - "bundled": true, - "dev": true - }, "graceful-fs": { "version": "4.1.11", "bundled": true, @@ -2010,75 +1653,13 @@ } } }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "has-flag": { - "version": "1.0.0", + "version": "3.0.0", "bundled": true, "dev": true }, - "has-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } - } - }, - "has-values": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "hosted-git-info": { - "version": "2.6.0", + "version": "2.7.1", "bundled": true, "dev": true }, @@ -2101,27 +1682,11 @@ "bundled": true, "dev": true }, - "invariant": { - "version": "2.2.4", - "bundled": true, - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "invert-kv": { "version": "1.0.0", "bundled": true, "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, "is-arrayish": { "version": "0.2.1", "bundled": true, @@ -2140,202 +1705,73 @@ "builtin-modules": "^1.0.0" } }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "bundled": true, - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "bundled": true, "dev": true }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "is-odd": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "bundled": true, - "dev": true - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } - } - }, "is-stream": { "version": "1.1.0", "bundled": true, "dev": true }, - "is-utf8": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, "isexe": { "version": "2.0.0", "bundled": true, "dev": true }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, "istanbul-lib-coverage": { - "version": "1.2.0", + "version": "2.0.1", "bundled": true, "dev": true }, "istanbul-lib-hook": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "append-transform": "^0.4.0" - } - }, - "istanbul-lib-instrument": { - "version": "1.10.1", + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.0", - "semver": "^5.3.0" + "append-transform": "^1.0.0" } }, "istanbul-lib-report": { - "version": "1.1.3", + "version": "2.0.2", "bundled": true, "dev": true, "requires": { - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^1.0.0" - } - } + "istanbul-lib-coverage": "^2.0.1", + "make-dir": "^1.3.0", + "supports-color": "^5.4.0" } }, "istanbul-lib-source-maps": { - "version": "1.2.3", + "version": "2.0.1", "bundled": true, "dev": true, "requires": { "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.1.2", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" + "istanbul-lib-coverage": "^2.0.1", + "make-dir": "^1.3.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" }, "dependencies": { - "debug": { - "version": "3.1.0", + "source-map": { + "version": "0.6.1", "bundled": true, - "dev": true, - "requires": { - "ms": "2.0.0" - } + "dev": true } } }, "istanbul-reports": { - "version": "1.4.0", + "version": "2.0.1", "bundled": true, "dev": true, "requires": { - "handlebars": "^4.0.3" + "handlebars": "^4.0.11" } }, - "js-tokens": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "jsesc": { - "version": "1.3.0", + "json-parse-better-errors": { + "version": "1.0.2", "bundled": true, "dev": true }, @@ -2362,51 +1798,34 @@ } }, "load-json-file": { - "version": "1.1.0", + "version": "4.0.0", "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" } }, "locate-path": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "p-locate": "^2.0.0", + "p-locate": "^3.0.0", "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - } } }, - "lodash": { - "version": "4.17.10", + "lodash.flattendeep": { + "version": "4.4.0", "bundled": true, "dev": true }, "longest": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true - }, - "loose-envify": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "js-tokens": "^3.0.0" - } + "dev": true }, "lru-cache": { "version": "4.1.3", @@ -2417,21 +1836,16 @@ "yallist": "^2.1.2" } }, - "map-cache": { - "version": "0.2.2", - "bundled": true, - "dev": true - }, - "map-visit": { - "version": "1.0.0", + "make-dir": { + "version": "1.3.0", "bundled": true, "dev": true, "requires": { - "object-visit": "^1.0.0" + "pify": "^3.0.0" } }, "md5-hex": { - "version": "1.3.0", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { @@ -2462,123 +1876,48 @@ "source-map": { "version": "0.6.1", "bundled": true, - "dev": true - } - } - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mixin-deep": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } + "dev": true } } }, - "mkdirp": { - "version": "0.5.1", + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", "bundled": true, "dev": true, "requires": { - "minimist": "0.0.8" + "brace-expansion": "^1.1.7" } }, - "ms": { - "version": "2.0.0", + "minimist": { + "version": "0.0.10", "bundled": true, "dev": true }, - "nanomatch": { - "version": "1.2.9", + "mkdirp": { + "version": "0.5.1", "bundled": true, "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "minimist": "0.0.8" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", + "minimist": { + "version": "0.0.8", "bundled": true, "dev": true } } }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, "normalize-package-data": { "version": "2.4.0", "bundled": true, @@ -2603,61 +1942,6 @@ "bundled": true, "dev": true }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "object-visit": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } - } - }, - "object.pick": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } - } - }, "once": { "version": "1.4.0", "bundled": true, @@ -2696,47 +1980,51 @@ "dev": true }, "p-limit": { - "version": "1.2.0", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.0.0" } }, "p-try": { - "version": "1.0.0", + "version": "2.0.0", "bundled": true, "dev": true }, - "parse-json": { - "version": "2.2.0", + "package-hash": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "error-ex": "^1.2.0" + "graceful-fs": "^4.1.11", + "lodash.flattendeep": "^4.4.0", + "md5-hex": "^2.0.0", + "release-zalgo": "^1.0.0" } }, - "pascalcase": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, - "path-exists": { - "version": "2.1.0", + "parse-json": { + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "pinkie-promise": "^2.0.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "bundled": true, @@ -2747,130 +2035,64 @@ "bundled": true, "dev": true }, - "path-parse": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, "path-type": { - "version": "1.1.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "pify": "^3.0.0" } }, "pify": { - "version": "2.3.0", - "bundled": true, - "dev": true - }, - "pinkie": { - "version": "2.0.4", + "version": "3.0.0", "bundled": true, "dev": true }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, "pkg-dir": { - "version": "1.0.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } + "find-up": "^3.0.0" } }, - "posix-character-classes": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, "pseudomap": { "version": "1.0.2", "bundled": true, "dev": true }, "read-pkg": { - "version": "1.1.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "load-json-file": "^1.0.0", + "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "path-type": "^3.0.0" } }, "read-pkg-up": { - "version": "1.0.1", + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - } + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" } }, - "regenerator-runtime": { - "version": "0.11.1", - "bundled": true, - "dev": true - }, - "regex-not": { - "version": "1.0.2", + "release-zalgo": { + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "es6-error": "^4.0.1" } }, - "repeat-element": { - "version": "1.1.2", - "bundled": true, - "dev": true - }, "repeat-string": { "version": "1.6.1", "bundled": true, "dev": true }, - "repeating": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } - }, "require-directory": { "version": "2.1.1", "bundled": true, @@ -2882,17 +2104,7 @@ "dev": true }, "resolve-from": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "ret": { - "version": "0.1.15", + "version": "4.0.0", "bundled": true, "dev": true }, @@ -2913,13 +2125,10 @@ "glob": "^7.0.5" } }, - "safe-regex": { - "version": "1.1.0", + "safe-buffer": { + "version": "5.1.2", "bundled": true, - "dev": true, - "requires": { - "ret": "~0.1.10" - } + "dev": true }, "semver": { "version": "5.5.0", @@ -2931,168 +2140,29 @@ "bundled": true, "dev": true }, - "set-value": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "shebang-command": { "version": "1.2.0", "bundled": true, "dev": true, "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "slide": { - "version": "1.1.6", - "bundled": true, - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.2.0" + "shebang-regex": "^1.0.0" } }, - "source-map": { - "version": "0.5.7", + "shebang-regex": { + "version": "1.0.0", "bundled": true, "dev": true }, - "source-map-resolve": { - "version": "0.5.1", + "signal-exit": { + "version": "3.0.2", "bundled": true, - "dev": true, - "requires": { - "atob": "^2.0.0", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } + "dev": true }, - "source-map-url": { - "version": "0.4.0", + "source-map": { + "version": "0.5.7", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "spawn-wrap": { "version": "1.4.2", @@ -3135,33 +2205,6 @@ "bundled": true, "dev": true }, - "split-string": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "static-extend": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "string-width": { "version": "2.1.1", "bundled": true, @@ -3169,38 +2212,20 @@ "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } } }, "strip-ansi": { - "version": "3.0.1", + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^3.0.0" } }, "strip-bom": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } + "dev": true }, "strip-eof": { "version": "1.0.0", @@ -3208,320 +2233,24 @@ "dev": true }, "supports-color": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "test-exclude": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "requires": { - "arrify": "^1.0.1", - "micromatch": "^3.1.8", - "object-assign": "^4.1.0", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "bundled": true, - "dev": true - }, - "braces": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "bundled": true, - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "bundled": true, - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "to-fast-properties": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - }, - "to-regex": { - "version": "3.0.2", + "version": "5.4.0", "bundled": true, "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "has-flag": "^3.0.0" } }, - "to-regex-range": { - "version": "2.1.1", + "test-exclude": { + "version": "5.0.0", "bundled": true, "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - } + "arrify": "^1.0.1", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^1.0.1" } }, - "trim-right": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, "uglify-js": { "version": "2.8.29", "bundled": true, @@ -3553,99 +2282,11 @@ "dev": true, "optional": true }, - "union-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "bundled": true, - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "bundled": true, - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "isobject": { - "version": "3.0.1", - "bundled": true, - "dev": true - } - } - }, - "urix": { - "version": "0.1.0", + "uuid": { + "version": "3.3.2", "bundled": true, "dev": true }, - "use": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "bundled": true, - "dev": true - } - } - }, "validate-npm-package-license": { "version": "3.0.3", "bundled": true, @@ -3656,7 +2297,7 @@ } }, "which": { - "version": "1.3.0", + "version": "1.3.1", "bundled": true, "dev": true, "requires": { @@ -3688,6 +2329,11 @@ "strip-ansi": "^3.0.1" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, @@ -3705,6 +2351,14 @@ "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } } } }, @@ -3714,13 +2368,13 @@ "dev": true }, "write-file-atomic": { - "version": "1.3.4", + "version": "2.3.0", "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "slide": "^1.1.5" + "signal-exit": "^3.0.2" } }, "y18n": { @@ -3752,16 +2406,6 @@ "yargs-parser": "^9.0.2" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - }, "cliui": { "version": "4.1.0", "bundled": true, @@ -3772,26 +2416,48 @@ "wrap-ansi": "^2.0.0" } }, - "strip-ansi": { - "version": "4.0.0", + "find-up": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", "bundled": true, "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "p-try": "^1.0.0" } }, - "yargs-parser": { - "version": "9.0.2", + "p-locate": { + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "camelcase": "^4.1.0" + "p-limit": "^1.1.0" } + }, + "p-try": { + "version": "1.0.0", + "bundled": true, + "dev": true } } }, "yargs-parser": { - "version": "8.1.0", + "version": "9.0.2", "bundled": true, "dev": true, "requires": { @@ -4145,6 +2811,12 @@ "is-fullwidth-code-point": "^2.0.0" } }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -4257,6 +2929,12 @@ "os-tmpdir": "~1.0.2" } }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -4267,6 +2945,12 @@ "punycode": "^1.4.1" } }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", diff --git a/package.json b/package.json index 3bc0c2e5..61a675fe 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "5.2.0", - "nyc": "11.9.0", + "nyc": "13.1.0", "sinon": "7.1.1" } } From 911bcaf9f0958442a7837702d44e97fe79943fce Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 14 Nov 2018 12:19:59 +0000 Subject: [PATCH 016/110] chore(deps): update dependency eslint to v5 --- package-lock.json | 562 +++++++++++++++++++++------------------------- package.json | 2 +- 2 files changed, 262 insertions(+), 302 deletions(-) diff --git a/package-lock.json b/package-lock.json index 03cb79d0..379f0155 100644 --- a/package-lock.json +++ b/package-lock.json @@ -172,27 +172,16 @@ "dev": true }, "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", + "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==", "dev": true }, "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.0.tgz", + "integrity": "sha512-XkB50fn0MURDyww9+UYL3c1yLbOBz0ZFvrdYlGB8l+Ije1oSC75qAqrzSPjYQbdnQUzhlUGNKuesryAv0gxZOg==", + "dev": true }, "ajv": { "version": "5.5.2", @@ -206,28 +195,16 @@ "json-schema-traverse": "^0.3.0" } }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true - }, "ansi-escapes": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "argparse": { @@ -260,12 +237,6 @@ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", "dev": true }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -299,41 +270,6 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -366,12 +302,6 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "dev": true - }, "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -425,9 +355,9 @@ } }, "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, "circular-json": { @@ -493,18 +423,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -526,12 +444,14 @@ } }, "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "lru-cache": "^4.0.1", + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" } @@ -561,17 +481,16 @@ "dev": true }, "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", "dev": true, "requires": { - "globby": "^5.0.0", + "globby": "^6.1.0", "is-path-cwd": "^1.0.0", "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", "rimraf": "^2.2.8" } }, @@ -614,61 +533,130 @@ "dev": true }, "eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.9.0.tgz", + "integrity": "sha512-g4KWpPdqN0nth+goDNICNXGfJF7nNnepthp46CAlJoJtC5K/cLu3NgCM3AHu1CkJ5Hzt9V0Y0PBAO6Ay/gGb+w==", "dev": true, "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", + "@babel/code-frame": "^7.0.0", + "ajv": "^6.5.3", "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^2.0.0", "functional-red-black-tree": "^1.0.1", "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", + "globals": "^11.7.0", + "ignore": "^4.0.6", "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", + "inquirer": "^6.1.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.12.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", "optionator": "^0.8.2", "path-is-inside": "^1.0.2", "pluralize": "^7.0.0", "progress": "^2.0.0", - "regexpp": "^1.0.1", + "regexpp": "^2.0.1", "require-uncached": "^1.0.3", - "semver": "^5.3.0", + "semver": "^5.5.1", "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" + "strip-json-comments": "^2.0.1", + "table": "^5.0.2", + "text-table": "^0.2.0" + }, + "dependencies": { + "ajv": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "debug": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", + "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "globals": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", + "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", + "dev": true + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + } } }, "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", "dev": true, "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } }, + "eslint-utils": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", + "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", + "dev": true + }, "eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", @@ -676,13 +664,14 @@ "dev": true }, "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", "dev": true, "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" } }, "esprima": { @@ -734,13 +723,13 @@ "dev": true }, "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", "dev": true, "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", "tmp": "^0.0.33" } }, @@ -788,13 +777,13 @@ } }, "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.2.tgz", + "integrity": "sha512-KByBY8c98sLUAGpnmjEdWTrtrLZRtZdwds+kAL/ciFXTCb7AZgqKsAnVnYFQj1hxepwO8JKN/8AsRWwLq+RK0A==", "dev": true, "requires": { "circular-json": "^0.3.1", - "del": "^2.0.2", + "del": "^3.0.0", "graceful-fs": "^4.1.2", "write": "^0.2.1" } @@ -858,23 +847,30 @@ "dev": true }, "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", "dev": true, "requires": { "array-union": "^1.0.1", - "arrify": "^1.0.0", "glob": "^7.0.3", "object-assign": "^4.0.1", "pify": "^2.0.0", "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, "growl": { @@ -899,15 +895,6 @@ "har-schema": "^2.0.0" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -932,18 +919,18 @@ } }, "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "ignore": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", - "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "imurmurhash": { @@ -969,22 +956,21 @@ "dev": true }, "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", + "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==", "dev": true, "requires": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.0", "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", - "external-editor": "^2.0.4", + "external-editor": "^3.0.0", "figures": "^2.0.0", - "lodash": "^4.3.0", + "lodash": "^4.17.10", "mute-stream": "0.0.7", "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", + "rxjs": "^6.1.0", "string-width": "^2.1.0", "strip-ansi": "^4.0.0", "through": "^2.3.6" @@ -1038,12 +1024,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1077,12 +1057,6 @@ "semver": "^5.5.0" } }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, "js-yaml": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", @@ -1188,16 +1162,6 @@ "integrity": "sha512-hcnW80h3j2lbUfFdMArd5UPA/vxZJ+G8vobd+wg3nVEQA0EigStbYcrG030FJxL6xiDDPEkoMatV9xIh5OecQQ==", "dev": true }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "mime-db": { "version": "1.36.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", @@ -1313,6 +1277,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, "nise": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.6.tgz", @@ -1371,6 +1341,7 @@ "version": "0.1.4", "bundled": true, "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -1695,7 +1666,8 @@ "is-buffer": { "version": "1.1.6", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "is-builtin-module": { "version": "1.0.0", @@ -1779,6 +1751,7 @@ "version": "3.2.2", "bundled": true, "dev": true, + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -1825,7 +1798,8 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "lru-cache": { "version": "4.1.3", @@ -2091,7 +2065,8 @@ "repeat-string": { "version": "1.6.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "require-directory": { "version": "2.1.1", @@ -2519,10 +2494,16 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2535,6 +2516,12 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-to-regexp": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", @@ -2559,9 +2546,9 @@ "dev": true }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "pinkie": { @@ -2591,22 +2578,10 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", + "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", "dev": true }, "psl": { @@ -2627,25 +2602,10 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, "request": { @@ -2678,7 +2638,7 @@ }, "require-uncached": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { @@ -2720,19 +2680,13 @@ "is-promise": "^2.1.0" } }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", "dev": true, "requires": { - "rx-lite": "*" + "tslib": "^1.9.0" } }, "safe-buffer": { @@ -2850,15 +2804,6 @@ "strip-ansi": "^4.0.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -2866,14 +2811,6 @@ "dev": true, "requires": { "ansi-regex": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } } }, "strip-json-comments": { @@ -2882,24 +2819,42 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/table/-/table-5.1.0.tgz", + "integrity": "sha512-e542in22ZLhD/fOIuXs/8yDZ9W61ltF8daM88rkRNtgTIct+vI2fTnAyu/Db2TCfEcI8i7mjZz6meLq0nW7TYg==", "dev": true, "requires": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", + "ajv": "^6.5.3", + "lodash": "^4.17.10", "slice-ansi": "1.0.0", "string-width": "^2.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } } }, "text-encoding": { @@ -2916,7 +2871,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -2951,6 +2906,12 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -2982,17 +2943,22 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } }, "uuid": { "version": "3.3.2", @@ -3012,9 +2978,9 @@ } }, "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "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" @@ -3040,12 +3006,6 @@ "requires": { "mkdirp": "^0.5.1" } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true } } } diff --git a/package.json b/package.json index 61a675fe..87de973c 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.2", - "eslint": "4.19.1", + "eslint": "5.9.0", "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "5.2.0", From ea9740693129b5402d53ba9e3af474b77c27d5a1 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 10 Dec 2018 08:14:47 +0000 Subject: [PATCH 017/110] chore(deps): update dependency sinon to v7.2.0 --- package-lock.json | 93 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 47 insertions(+), 48 deletions(-) diff --git a/package-lock.json b/package-lock.json index 379f0155..9318f39f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -146,31 +146,36 @@ } }, "@sinonjs/formatio": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.0.0.tgz", - "integrity": "sha512-vdjoYLDptCgvtJs57ULshak3iJe4NW3sJ3g36xVDGff5AE8P30S6A093EIEPjdi2noGhfuNOEkbxt3J3awFW1w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.1.0.tgz", + "integrity": "sha512-ZAR2bPHOl4Xg6eklUGpsdiIJ4+J1SNag1DHHrG/73Uz/nVwXqjgUtRPLoS+aVyieN9cSbc0E4LsU984tWcDyNg==", "dev": true, "requires": { - "@sinonjs/samsam": "2.1.0" + "@sinonjs/samsam": "^2 || ^3" + } + }, + "@sinonjs/samsam": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.0.1.tgz", + "integrity": "sha512-pSgyLnrBNtKHosNULXd+wEk6edqlBs2qfGHagS14t+zOhDkE5Yto5HbsZwQRmRoCBNg13osPHb/4uwvLOJBkug==", + "dev": true, + "requires": { + "@sinonjs/commons": "1.0.2", + "array-from": "^2.1.1", + "lodash.get": "4.4.2" }, "dependencies": { - "@sinonjs/samsam": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.1.0.tgz", - "integrity": "sha512-5x2kFgJYupaF1ns/RmharQ90lQkd2ELS8A9X0ymkAAdemYHGtI2KiUHG8nX2WU0T1qgnOU5YMqnBM2V7NUanNw==", + "@sinonjs/commons": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.0.2.tgz", + "integrity": "sha512-WR3dlgqJP4QNrLC4iXN/5/2WaLQQ0VijOOkmflqFGVJ6wLEpbSjo7c0ZeGIdtY8Crk7xBBp87sM6+Mkerz7alw==", "dev": true, "requires": { - "array-from": "^2.1.1" + "type-detect": "4.0.8" } } } }, - "@sinonjs/samsam": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-2.1.2.tgz", - "integrity": "sha512-ZwTHAlC9akprWDinwEPD4kOuwaYZlyMwVJIANsKNC3QVp0AHB04m7RnB4eqeWfgmxw8MGTzS9uMaw93Z3QcZbw==", - "dev": true - }, "acorn": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", @@ -1024,6 +1029,12 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1284,12 +1295,12 @@ "dev": true }, "nise": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.6.tgz", - "integrity": "sha512-1GedetLKzmqmgwabuMSqPsT7oumdR77SBpDfNNJhADRIeA3LN/2RVqR4fFqwvzhAqcTef6PPCzQwITE/YQ8S8A==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.7.tgz", + "integrity": "sha512-5cxvo/pEAEHBX5s0zl+zd96BvHHuua/zttIHeQuTWSDjGrWsEHamty8xbZNfocC+fx7NMrle7XHvvxtFxobIZQ==", "dev": true, "requires": { - "@sinonjs/formatio": "3.0.0", + "@sinonjs/formatio": "^3.1.0", "just-extend": "^3.0.0", "lolex": "^2.3.2", "path-to-regexp": "^1.7.0", @@ -2529,14 +2540,6 @@ "dev": true, "requires": { "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } } }, "performance-now": { @@ -2729,31 +2732,18 @@ "dev": true }, "sinon": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.1.1.tgz", - "integrity": "sha512-iYagtjLVt1vN3zZY7D8oH7dkjNJEjLjyuzy8daX5+3bbQl8gaohrheB9VfH1O3L6LKuue5WTJvFluHiuZ9y3nQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.0.tgz", + "integrity": "sha512-N+ebPVqU55E6IUUGPSia57D5nTlCjfxrVR/33KTMRjsJJP5ZoGW1TXyLa2kDREgMtzqdnnksv7gA9oGC2v2LGw==", "dev": true, "requires": { "@sinonjs/commons": "^1.2.0", - "@sinonjs/formatio": "^3.0.0", - "@sinonjs/samsam": "^2.1.2", + "@sinonjs/formatio": "^3.1.0", + "@sinonjs/samsam": "^3.0.1", "diff": "^3.5.0", - "lodash.get": "^4.4.2", "lolex": "^3.0.0", - "nise": "^1.4.6", - "supports-color": "^5.5.0", - "type-detect": "^4.0.8" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "nise": "^1.4.7", + "supports-color": "^5.5.0" } }, "slice-ansi": { @@ -2819,6 +2809,15 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, "table": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/table/-/table-5.1.0.tgz", diff --git a/package.json b/package.json index 87de973c..a89a8e2b 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.3", "mocha": "5.2.0", "nyc": "13.1.0", - "sinon": "7.1.1" + "sinon": "7.2.0" } } From 95276b6ea2d448d4fad17871692a21a3549baefb Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 8 Dec 2018 06:30:00 +0000 Subject: [PATCH 018/110] chore(deps): update dependency eslint to v5.10.0 --- package-lock.json | 222 ++++++++++++++++------------------------------ package.json | 2 +- 2 files changed, 78 insertions(+), 146 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9318f39f..52f169e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -183,9 +183,9 @@ "dev": true }, "acorn-jsx": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.0.tgz", - "integrity": "sha512-XkB50fn0MURDyww9+UYL3c1yLbOBz0ZFvrdYlGB8l+Ije1oSC75qAqrzSPjYQbdnQUzhlUGNKuesryAv0gxZOg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", + "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", "dev": true }, "ajv": { @@ -212,6 +212,15 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -227,21 +236,6 @@ "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", "dev": true }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -257,6 +251,12 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -318,7 +318,7 @@ }, "callsites": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", "dev": true }, @@ -485,20 +485,6 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "del": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", - "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", - "dev": true, - "requires": { - "globby": "^6.1.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "p-map": "^1.1.1", - "pify": "^3.0.0", - "rimraf": "^2.2.8" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -538,9 +524,9 @@ "dev": true }, "eslint": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.9.0.tgz", - "integrity": "sha512-g4KWpPdqN0nth+goDNICNXGfJF7nNnepthp46CAlJoJtC5K/cLu3NgCM3AHu1CkJ5Hzt9V0Y0PBAO6Ay/gGb+w==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.10.0.tgz", + "integrity": "sha512-HpqzC+BHULKlnPwWae9MaVZ5AXJKpkxCVXQHrFaRw3hbDj26V/9ArYM4Rr/SQ8pi6qUPLXSSXC4RBJlyq2Z2OQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -552,7 +538,7 @@ "eslint-scope": "^4.0.0", "eslint-utils": "^1.3.1", "eslint-visitor-keys": "^1.0.0", - "espree": "^4.0.0", + "espree": "^5.0.0", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^2.0.0", @@ -562,7 +548,6 @@ "ignore": "^4.0.6", "imurmurhash": "^0.1.4", "inquirer": "^6.1.0", - "is-resolvable": "^1.1.0", "js-yaml": "^3.12.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", @@ -584,9 +569,9 @@ }, "dependencies": { "ajv": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", - "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz", + "integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -669,9 +654,9 @@ "dev": true }, "espree": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", - "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.0.tgz", + "integrity": "sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==", "dev": true, "requires": { "acorn": "^6.0.2", @@ -782,14 +767,14 @@ } }, "flat-cache": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.2.tgz", - "integrity": "sha512-KByBY8c98sLUAGpnmjEdWTrtrLZRtZdwds+kAL/ciFXTCb7AZgqKsAnVnYFQj1hxepwO8JKN/8AsRWwLq+RK0A==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", "dev": true, "requires": { "circular-json": "^0.3.1", - "del": "^3.0.0", "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", "write": "^0.2.1" } }, @@ -851,27 +836,6 @@ "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", "dev": true }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", @@ -961,9 +925,9 @@ "dev": true }, "inquirer": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", - "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz", + "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==", "dev": true, "requires": { "ansi-escapes": "^3.0.0", @@ -977,8 +941,25 @@ "run-async": "^2.2.0", "rxjs": "^6.1.0", "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", + "strip-ansi": "^5.0.0", "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", + "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "dev": true + }, + "strip-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", + "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "dev": true, + "requires": { + "ansi-regex": "^4.0.0" + } + } } }, "is-fullwidth-code-point": { @@ -987,42 +968,12 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -2509,12 +2460,6 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "p-map": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", - "dev": true - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2548,27 +2493,6 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, "pluralize": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", @@ -2582,9 +2506,9 @@ "dev": true }, "progress": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "psl": { @@ -2747,11 +2671,13 @@ } }, "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.0.0.tgz", + "integrity": "sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ==", "dev": true, "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" } }, @@ -2819,21 +2745,21 @@ } }, "table": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/table/-/table-5.1.0.tgz", - "integrity": "sha512-e542in22ZLhD/fOIuXs/8yDZ9W61ltF8daM88rkRNtgTIct+vI2fTnAyu/Db2TCfEcI8i7mjZz6meLq0nW7TYg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/table/-/table-5.1.1.tgz", + "integrity": "sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw==", "dev": true, "requires": { - "ajv": "^6.5.3", - "lodash": "^4.17.10", - "slice-ansi": "1.0.0", + "ajv": "^6.6.1", + "lodash": "^4.17.11", + "slice-ansi": "2.0.0", "string-width": "^2.1.1" }, "dependencies": { "ajv": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", - "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz", + "integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -2853,6 +2779,12 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true } } }, diff --git a/package.json b/package.json index a89a8e2b..28c13ebd 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.2", - "eslint": "5.9.0", + "eslint": "5.10.0", "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "5.2.0", From c274339578a32c61656fcfb679e2f9b6c64383f3 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 12 Dec 2018 08:24:24 +0000 Subject: [PATCH 019/110] chore(deps): update dependency sinon to v7.2.2 --- package-lock.json | 29 +++++++++-------------------- package.json | 2 +- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index 52f169e8..1027e637 100644 --- a/package-lock.json +++ b/package-lock.json @@ -155,25 +155,14 @@ } }, "@sinonjs/samsam": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.0.1.tgz", - "integrity": "sha512-pSgyLnrBNtKHosNULXd+wEk6edqlBs2qfGHagS14t+zOhDkE5Yto5HbsZwQRmRoCBNg13osPHb/4uwvLOJBkug==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.0.2.tgz", + "integrity": "sha512-m08g4CS3J6lwRQk1pj1EO+KEVWbrbXsmi9Pw0ySmrIbcVxVaedoFgLvFsV8wHLwh01EpROVz3KvVcD1Jmks9FQ==", "dev": true, "requires": { - "@sinonjs/commons": "1.0.2", + "@sinonjs/commons": "^1.0.2", "array-from": "^2.1.1", - "lodash.get": "4.4.2" - }, - "dependencies": { - "@sinonjs/commons": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.0.2.tgz", - "integrity": "sha512-WR3dlgqJP4QNrLC4iXN/5/2WaLQQ0VijOOkmflqFGVJ6wLEpbSjo7c0ZeGIdtY8Crk7xBBp87sM6+Mkerz7alw==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - } + "lodash.get": "^4.4.2" } }, "acorn": { @@ -2656,14 +2645,14 @@ "dev": true }, "sinon": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.0.tgz", - "integrity": "sha512-N+ebPVqU55E6IUUGPSia57D5nTlCjfxrVR/33KTMRjsJJP5ZoGW1TXyLa2kDREgMtzqdnnksv7gA9oGC2v2LGw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.2.tgz", + "integrity": "sha512-WLagdMHiEsrRmee3jr6IIDntOF4kbI6N2pfbi8wkv50qaUQcBglkzkjtoOEbeJ2vf1EsrHhLI+5Ny8//WHdMoA==", "dev": true, "requires": { "@sinonjs/commons": "^1.2.0", "@sinonjs/formatio": "^3.1.0", - "@sinonjs/samsam": "^3.0.1", + "@sinonjs/samsam": "^3.0.2", "diff": "^3.5.0", "lolex": "^3.0.0", "nise": "^1.4.7", diff --git a/package.json b/package.json index 28c13ebd..2d68e9b9 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.3", "mocha": "5.2.0", "nyc": "13.1.0", - "sinon": "7.2.0" + "sinon": "7.2.2" } } From 8b0876ebee6949f54177ef6339794bd0a06a73f0 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 27 Dec 2018 02:22:34 +0000 Subject: [PATCH 020/110] chore(deps): update dependency eslint to v5.11.1 --- package-lock.json | 24 ++++++++++++------------ package.json | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1027e637..2f6dec7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -513,9 +513,9 @@ "dev": true }, "eslint": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.10.0.tgz", - "integrity": "sha512-HpqzC+BHULKlnPwWae9MaVZ5AXJKpkxCVXQHrFaRw3hbDj26V/9ArYM4Rr/SQ8pi6qUPLXSSXC4RBJlyq2Z2OQ==", + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.11.1.tgz", + "integrity": "sha512-gOKhM8JwlFOc2acbOrkYR05NW8M6DCMSvfcJiBB5NDxRE1gv8kbvxKaC9u69e6ZGEMWXcswA/7eKR229cEIpvg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -558,9 +558,9 @@ }, "dependencies": { "ajv": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz", - "integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", + "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -570,9 +570,9 @@ } }, "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -2746,9 +2746,9 @@ }, "dependencies": { "ajv": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz", - "integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", + "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", diff --git a/package.json b/package.json index 2d68e9b9..26eaaa4c 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.2", - "eslint": "5.10.0", + "eslint": "5.11.1", "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "5.2.0", From 99e4fd6ebed895f32e618b0b4ce2aa984e9347fe Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 4 Jan 2019 21:25:49 +0000 Subject: [PATCH 021/110] chore(deps): update dependency eslint to v5.12.0 --- package-lock.json | 74 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2f6dec7d..55919a05 100644 --- a/package-lock.json +++ b/package-lock.json @@ -166,9 +166,9 @@ } }, "acorn": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", - "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz", + "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==", "dev": true }, "acorn-jsx": { @@ -191,7 +191,7 @@ }, "ansi-escapes": { "version": "3.1.0", - "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, @@ -296,19 +296,10 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "^0.2.0" - } - }, "callsites": { - "version": "0.2.0", - "resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", + "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", "dev": true }, "caseless": { @@ -513,9 +504,9 @@ "dev": true }, "eslint": { - "version": "5.11.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.11.1.tgz", - "integrity": "sha512-gOKhM8JwlFOc2acbOrkYR05NW8M6DCMSvfcJiBB5NDxRE1gv8kbvxKaC9u69e6ZGEMWXcswA/7eKR229cEIpvg==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.12.0.tgz", + "integrity": "sha512-LntwyPxtOHrsJdcSwyQKVtHofPHdv+4+mFwEe91r2V13vqpM8yLr7b1sW+Oo/yheOPkWYsYlYJCkzlFAt8KV7g==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -535,6 +526,7 @@ "glob": "^7.1.2", "globals": "^11.7.0", "ignore": "^4.0.6", + "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "inquirer": "^6.1.0", "js-yaml": "^3.12.0", @@ -549,7 +541,6 @@ "pluralize": "^7.0.0", "progress": "^2.0.0", "regexpp": "^2.0.1", - "require-uncached": "^1.0.3", "semver": "^5.5.1", "strip-ansi": "^4.0.0", "strip-json-comments": "^2.0.1", @@ -891,6 +882,16 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "import-fresh": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", + "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -2449,6 +2450,15 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "parent-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", + "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2552,20 +2562,10 @@ "uuid": "^3.3.2" } }, - "require-uncached": { - "version": "1.0.3", - "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - } - }, "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "restore-cursor": { @@ -2579,12 +2579,12 @@ } }, "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "run-async": { diff --git a/package.json b/package.json index 26eaaa4c..6ec788c2 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.2", - "eslint": "5.11.1", + "eslint": "5.12.0", "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "5.2.0", From 22005333ba007058250acb3d6003b8f038363422 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 8 Jan 2019 11:59:44 +0100 Subject: [PATCH 022/110] 0.7.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 55919a05..ef701ae6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.6.3", + "version": "0.7.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 6ec788c2..a3a219bd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.6.3", + "version": "0.7.0", "description": "get dimensions of any image file", "main": "lib/index.js", "files": [ From 93cb70f09c143542085297af52e7ebf9d9177fd8 Mon Sep 17 00:00:00 2001 From: Stephan Schneider Date: Wed, 17 Oct 2018 11:29:37 +0200 Subject: [PATCH 023/110] feat(jpg): detect image orientation --- .eslintrc | 4 +- lib/types/jpg.js | 87 ++++++++++++++++++++++++- specs/images/valid/jpg/1x2-flipped.jpg | Bin 0 -> 735 bytes specs/valid.spec.js | 11 +++- 4 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 specs/images/valid/jpg/1x2-flipped.jpg diff --git a/.eslintrc b/.eslintrc index 00314109..c98dd0ae 100644 --- a/.eslintrc +++ b/.eslintrc @@ -9,7 +9,7 @@ "linebreak-style": ["error", "unix"], "quotes": ["error", "single"], "semi": ["error", "always"], - "complexity": ["error", 5], - "max-statements": ["error", 15] + "complexity": ["error", 7], + "max-statements": ["error", 23] } } diff --git a/lib/types/jpg.js b/lib/types/jpg.js index e8ed127d..68a22709 100644 --- a/lib/types/jpg.js +++ b/lib/types/jpg.js @@ -10,6 +10,11 @@ function isJPG (buffer) { //, filepath return ('ffd8' === SOIMarker); } +function isEXIF (buffer) { //, filepath + var exifMarker = buffer.toString('hex', 2, 6); + return (exifMarker === '45786966'); // 'Exif' +} + function extractSize (buffer, i) { return { 'height' : buffer.readUInt16BE(i), @@ -17,6 +22,68 @@ function extractSize (buffer, i) { }; } +var APP1_DATA_SIZE_BYTES = 2; +var EXIF_HEADER_BYTES = 6; +var TIFF_BYTE_ALIGN_BYTES = 2; +var MOTOROLA_BYTE_ALIGN = '4d4d'; + +// Each entry is exactly 12 bytes +var IDF_ENTRY_BYTES = 12; +var NUM_DIRECTORY_ENTRIES_BYTES = 2; + +function extractOrientation (buffer, i) { + // Skip APP1 Data Size + var exifBlock = buffer.slice(APP1_DATA_SIZE_BYTES, i); + + // TODO: support intel byte alignment + var byteAlign = exifBlock.toString('hex', EXIF_HEADER_BYTES, EXIF_HEADER_BYTES + TIFF_BYTE_ALIGN_BYTES); + if (byteAlign !== MOTOROLA_BYTE_ALIGN) { + return; + } + + // TODO: assert that this contains 0x002A + // var STATIC_MOTOROLA_TIFF_HEADER_BYTES = 2; + // var TIFF_IMAGE_FILE_DIRECTORY_BYTES = 4; + + // TODO: derive from TIFF_IMAGE_FILE_DIRECTORY_BYTES + var idfOffset = 8; + + // IDF osset works from right after the header bytes + // (so the offset includes the tiff byte align) + var offset = EXIF_HEADER_BYTES + idfOffset; + + var idfDirectoryEntries = exifBlock.readUInt16BE(offset); + + var start; + var end; + for (var directoryEntryNumber = 0; directoryEntryNumber < idfDirectoryEntries; directoryEntryNumber++) { + start = offset + NUM_DIRECTORY_ENTRIES_BYTES + (directoryEntryNumber * IDF_ENTRY_BYTES); + end = start + IDF_ENTRY_BYTES; + + var block = exifBlock.slice(start, end); + var tagNumber = block.readUInt16BE(0); + + // 0x0112 (decimal: 274) is the `orientation` tag ID + if (tagNumber === 274) { + var dataFormat = block.readUInt16BE(2); + if (dataFormat !== 3) { + return; + } + + // unsinged int has 2 bytes per component + // if there would more than 4 bytes in total it's a pointer + var numberOfComponents = block.readUInt32BE(4); + if (numberOfComponents !== 1) { + return; + } + + var orientation = block.readUInt16BE(8); + + return orientation; + } + } +} + function validateBuffer (buffer, i) { // index should be within buffer limits if (i > buffer.length) { @@ -29,15 +96,21 @@ function validateBuffer (buffer, i) { } function calculate (buffer) { - // Skip 4 chars, they are for signature buffer = buffer.slice(4); + var orientation; + var i, next; while (buffer.length) { // read length of the next block i = buffer.readUInt16BE(0); + + if (isEXIF(buffer)) { + orientation = extractOrientation(buffer, i); + } + // ensure correct format validateBuffer(buffer, i); @@ -46,7 +119,17 @@ function calculate (buffer) { // 0xFFC2 is progressive(SOF2) next = buffer[i + 1]; if (next === 0xC0 || next === 0xC1 || next === 0xC2) { - return extractSize(buffer, i + 5); + var size = extractSize(buffer, i + 5); + + if (!orientation) { + return size; + } + + return { + width: size.width, + height: size.height, + orientation: orientation + }; } // move to the next block diff --git a/specs/images/valid/jpg/1x2-flipped.jpg b/specs/images/valid/jpg/1x2-flipped.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1ba30fada48b1999e92fa42d9e8eb73140c3c1ec GIT binary patch literal 735 zcmbVJJxc>Y5PdV7+?^n}t3gF8yC^9xX)Lc0gCC@|)K17hu(Pxh6v5Uj?D7k2MG))- zqmBNOb#`y>G!jn8D{kKnZ{C~PwQu$l`k=qx2MIdV0qhrEcF%^Vz+iwa00|;mgc3%= zL2GDw4jj>X#gC~SGz{=k-~?O@(Fl6+^w$bbzgL-q+Rxzb6@xhnmw!oFi( z5m+lNFL1ITs%7oB{oNj~h%S+CYVys+Rdi_o2?MkB Date: Tue, 8 Jan 2019 12:58:15 +0100 Subject: [PATCH 024/110] We only support LTS versions of node 6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a3a219bd..047b7dbb 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "lib" ], "engines": { - "node": ">=4.0" + "node": ">=6.9.0" }, "bin": { "image-size": "bin/image-size.js" From 5c444a887cfc1079ad5d614ff0bfac3d1fc014b0 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 8 Jan 2019 13:01:36 +0100 Subject: [PATCH 025/110] 0.7.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 047b7dbb..f267400f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.7.0", + "version": "0.7.1", "description": "get dimensions of any image file", "main": "lib/index.js", "files": [ From 9839f4355de603bb322dcf5de344cef2ecd827ad Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 19 Jan 2019 14:13:10 +0000 Subject: [PATCH 026/110] chore(deps): update dependency sinon to v7.2.3 --- package-lock.json | 28 ++++++++++++++-------------- package.json | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef701ae6..c7f1a577 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.7.0", + "version": "0.7.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1069,9 +1069,9 @@ } }, "just-extend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-3.0.0.tgz", - "integrity": "sha512-Fu3T6pKBuxjWT/p4DkqGHFRsysc8OauWr4ZRTY9dIx07Y9O0RkoR5jcv28aeD1vuAwhm3nLkDurwLXoALp4DpQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz", + "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==", "dev": true }, "lcov-parse": { @@ -1236,13 +1236,13 @@ "dev": true }, "nise": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.7.tgz", - "integrity": "sha512-5cxvo/pEAEHBX5s0zl+zd96BvHHuua/zttIHeQuTWSDjGrWsEHamty8xbZNfocC+fx7NMrle7XHvvxtFxobIZQ==", + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.8.tgz", + "integrity": "sha512-kGASVhuL4tlAV0tvA34yJYZIVihrUt/5bDwpp4tTluigxUr2bBlJeDXmivb6NuEdFkqvdv/Ybb9dm16PSKUhtw==", "dev": true, "requires": { "@sinonjs/formatio": "^3.1.0", - "just-extend": "^3.0.0", + "just-extend": "^4.0.2", "lolex": "^2.3.2", "path-to-regexp": "^1.7.0", "text-encoding": "^0.6.4" @@ -2645,17 +2645,17 @@ "dev": true }, "sinon": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.2.tgz", - "integrity": "sha512-WLagdMHiEsrRmee3jr6IIDntOF4kbI6N2pfbi8wkv50qaUQcBglkzkjtoOEbeJ2vf1EsrHhLI+5Ny8//WHdMoA==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.3.tgz", + "integrity": "sha512-i6j7sqcLEqTYqUcMV327waI745VASvYuSuQMCjbAwlpAeuCgKZ3LtrjDxAbu+GjNQR0FEDpywtwGCIh8GicNyg==", "dev": true, "requires": { - "@sinonjs/commons": "^1.2.0", + "@sinonjs/commons": "^1.3.0", "@sinonjs/formatio": "^3.1.0", "@sinonjs/samsam": "^3.0.2", "diff": "^3.5.0", "lolex": "^3.0.0", - "nise": "^1.4.7", + "nise": "^1.4.8", "supports-color": "^5.5.0" } }, @@ -2779,7 +2779,7 @@ }, "text-encoding": { "version": "0.6.4", - "resolved": "http://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", "dev": true }, diff --git a/package.json b/package.json index f267400f..c557b9d9 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.3", "mocha": "5.2.0", "nyc": "13.1.0", - "sinon": "7.2.2" + "sinon": "7.2.3" } } From 5e5a9ddd37a79a8d4f3e31c44db41af607d1ff57 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 18 Jan 2019 21:42:08 +0000 Subject: [PATCH 027/110] chore(deps): update dependency eslint to v5.12.1 --- package-lock.json | 40 ++++++++++++++++++++-------------------- package.json | 2 +- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index c7f1a577..5d8ddfb6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -504,9 +504,9 @@ "dev": true }, "eslint": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.12.0.tgz", - "integrity": "sha512-LntwyPxtOHrsJdcSwyQKVtHofPHdv+4+mFwEe91r2V13vqpM8yLr7b1sW+Oo/yheOPkWYsYlYJCkzlFAt8KV7g==", + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.12.1.tgz", + "integrity": "sha512-54NV+JkTpTu0d8+UYSA8mMKAG4XAsaOrozA9rCW7tgneg1mevcL7wIotPC+fZ0SkWwdhNqoXoxnQCTBp7UvTsg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -549,9 +549,9 @@ }, "dependencies": { "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", + "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -576,15 +576,15 @@ "dev": true }, "globals": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", - "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", + "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", "dev": true }, "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", + "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -2446,7 +2446,7 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, @@ -2734,9 +2734,9 @@ } }, "table": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/table/-/table-5.1.1.tgz", - "integrity": "sha512-NUjapYb/qd4PeFW03HnAuOJ7OMcBkJlqeClWxeNlQ0lXGSb52oZXGzkO0/I0ARegQ2eUT1g2VDJH0eUxDRcHmw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/table/-/table-5.2.1.tgz", + "integrity": "sha512-qmhNs2GEHNqY5fd2Mo+8N1r2sw/rvTAAvBZTaTx+Y7PHLypqyrxr1MdIu0pLw6Xvl/Gi4ONu/sdceP8vvUjkyA==", "dev": true, "requires": { "ajv": "^6.6.1", @@ -2746,9 +2746,9 @@ }, "dependencies": { "ajv": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.2.tgz", - "integrity": "sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==", + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", + "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -2791,7 +2791,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, diff --git a/package.json b/package.json index c557b9d9..766d56f2 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.2", - "eslint": "5.12.0", + "eslint": "5.12.1", "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "5.2.0", From 0ae40fcdba60a3abc5d4ff29cdfdbe3bd1a2f40a Mon Sep 17 00:00:00 2001 From: Aditya Date: Wed, 23 Jan 2019 16:46:59 +0100 Subject: [PATCH 028/110] move to circleci 2.0 --- .circleci/config.yml | 48 ++++++++++++++++++++++++++++++++++++++++++++ .travis.yml | 12 ----------- 2 files changed, 48 insertions(+), 12 deletions(-) create mode 100644 .circleci/config.yml delete mode 100644 .travis.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..245b3472 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,48 @@ +version: 2.1 + +commands: + build: + steps: + - run: node --version && npm --version + - checkout + - restore_cache: + keys: + - npm-{{ checksum "package-lock.json" }} + - npm-cache + - run: npm install + - run: npm test + - save_cache: + key: npm-{{ checksum "package-lock.json" }} + paths: + - "~/.npm/" + +jobs: + node-6: + docker: + - image: node:6 + steps: + - build + node-8: + docker: + - image: node:8 + steps: + - build + node-10: + docker: + - image: node:10 + steps: + - build + node-11: + docker: + - image: node:11 + steps: + - build + +workflows: + version: 2 + node-multi-build: + jobs: + - node-6 + - node-8 + - node-10 + - node-11 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 315584ee..00000000 --- a/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -sudo: false -git: - depth: 1 -language: node_js -cache: - directories: - - node_modules -node_js: - - 6 - - 8 - - 10 -after_success: npm run coverage From 5e380e25d4ec6f872ae98d64c8e093893dee9b46 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 1 Feb 2019 18:13:41 +0000 Subject: [PATCH 029/110] chore(deps): update dependency eslint to v5.13.0 --- package-lock.json | 78 ++++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 45 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5d8ddfb6..a75d77da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -166,9 +166,9 @@ } }, "acorn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz", - "integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==", + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.6.tgz", + "integrity": "sha512-5M3G/A4uBSMIlfJ+h9W125vJvPFH/zirISsW5qfxF5YzEvXJCtolLoQvM5yZft0DvMcUrPGKPOlgEu55I6iUtA==", "dev": true }, "acorn-jsx": { @@ -190,9 +190,9 @@ } }, "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, "ansi-regex": { @@ -504,9 +504,9 @@ "dev": true }, "eslint": { - "version": "5.12.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.12.1.tgz", - "integrity": "sha512-54NV+JkTpTu0d8+UYSA8mMKAG4XAsaOrozA9rCW7tgneg1mevcL7wIotPC+fZ0SkWwdhNqoXoxnQCTBp7UvTsg==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.13.0.tgz", + "integrity": "sha512-nqD5WQMisciZC5EHZowejLKQjWGuFS5c70fxqSKlnDME+oz9zmE8KTlX+lHSg+/5wsC/kf9Q9eMkC8qS3oM2fg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -538,7 +538,6 @@ "natural-compare": "^1.4.0", "optionator": "^0.8.2", "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", "progress": "^2.0.0", "regexpp": "^2.0.1", "semver": "^5.5.1", @@ -915,21 +914,21 @@ "dev": true }, "inquirer": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.1.tgz", - "integrity": "sha512-088kl3DRT2dLU5riVMKKr1DlImd6X7smDhpXUCkJDCKvTEJeRiXh0G132HG9u5a+6Ylw9plFRY7RuTnwohYSpg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", + "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", "dev": true, "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", - "external-editor": "^3.0.0", + "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "mute-stream": "0.0.7", "run-async": "^2.2.0", - "rxjs": "^6.1.0", + "rxjs": "^6.4.0", "string-width": "^2.1.0", "strip-ansi": "^5.0.0", "through": "^2.3.6" @@ -941,6 +940,23 @@ "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", "dev": true }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, "strip-ansi": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", @@ -2492,12 +2508,6 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -2597,9 +2607,9 @@ } }, "rxjs": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", - "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", + "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -2660,9 +2670,9 @@ } }, "slice-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.0.0.tgz", - "integrity": "sha512-4j2WTWjp3GsZ+AOagyzVbzp4vWGtZ0hEZ/gDY/uTvm6MTxUfTUIsnMIFb1bn8o0RuXiqUw15H1bue8f22Vw2oQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -2734,14 +2744,14 @@ } }, "table": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.1.tgz", - "integrity": "sha512-qmhNs2GEHNqY5fd2Mo+8N1r2sw/rvTAAvBZTaTx+Y7PHLypqyrxr1MdIu0pLw6Xvl/Gi4ONu/sdceP8vvUjkyA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/table/-/table-5.2.2.tgz", + "integrity": "sha512-f8mJmuu9beQEDkKHLzOv4VxVYlU68NpdzjbGPl69i4Hx0sTopJuNxuzJd17iV2h24dAfa93u794OnDA5jqXvfQ==", "dev": true, "requires": { "ajv": "^6.6.1", "lodash": "^4.17.11", - "slice-ansi": "2.0.0", + "slice-ansi": "^2.0.0", "string-width": "^2.1.1" }, "dependencies": { diff --git a/package.json b/package.json index 766d56f2..c9cfae9c 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.2", - "eslint": "5.12.1", + "eslint": "5.13.0", "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "5.2.0", From d95429a0d288c8e047ed6e98d29318f15e8532c0 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 5 Feb 2019 01:11:20 +0000 Subject: [PATCH 030/110] chore(deps): update dependency nyc to v13.2.0 --- package-lock.json | 510 ++++++++++++++++++---------------------------- package.json | 2 +- 2 files changed, 201 insertions(+), 311 deletions(-) diff --git a/package-lock.json b/package-lock.json index a75d77da..f3c13e04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,12 +14,12 @@ } }, "@babel/generator": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.6.tgz", - "integrity": "sha512-brwPBtVvdYdGxtenbQgfCdDPmtkmUBZPjUoK5SXJEBuHaA5BCubh9ly65fzXz7R6o5rA76Rs22ES8Z+HCc0YIQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.2.tgz", + "integrity": "sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ==", "dev": true, "requires": { - "@babel/types": "^7.1.6", + "@babel/types": "^7.3.2", "jsesc": "^2.5.1", "lodash": "^4.17.10", "source-map": "^0.5.0", @@ -75,43 +75,43 @@ } }, "@babel/parser": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.6.tgz", - "integrity": "sha512-dWP6LJm9nKT6ALaa+bnL247GHHMWir3vSlZ2+IHgHgktZQx0L3Uvq2uAWcuzIe+fujRsYWBW2q622C5UvGK9iQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.2.tgz", + "integrity": "sha512-QzNUC2RO1gadg+fs21fi0Uu0OuGNzRKEmgCxoLNzbCdoprLwjfmZwzUrpUNfJPaVRwBpDY47A17yYEGWyRelnQ==", "dev": true }, "@babel/template": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz", - "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", + "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.1.2", - "@babel/types": "^7.1.2" + "@babel/parser": "^7.2.2", + "@babel/types": "^7.2.2" } }, "@babel/traverse": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.6.tgz", - "integrity": "sha512-CXedit6GpISz3sC2k2FsGCUpOhUqKdyL0lqNrImQojagnUMXf8hex4AxYFRuMkNGcvJX5QAFGzB5WJQmSv8SiQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", + "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.1.6", + "@babel/generator": "^7.2.2", "@babel/helper-function-name": "^7.1.0", "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.1.6", - "@babel/types": "^7.1.6", + "@babel/parser": "^7.2.3", + "@babel/types": "^7.2.2", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.10" }, "dependencies": { "debug": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", - "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -126,9 +126,9 @@ } }, "@babel/types": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.6.tgz", - "integrity": "sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.2.tgz", + "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -810,9 +810,9 @@ } }, "globals": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", - "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", + "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", "dev": true }, "graceful-fs": { @@ -1005,15 +1005,15 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", - "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==", "dev": true }, "istanbul-lib-instrument": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.0.tgz", - "integrity": "sha512-eQY9vN9elYjdgN9Iv6NS/00bptm02EBBk70lRMaVjeA6QYocQgenVrSgC28TJurdnZa80AGO3ASdFN+w/njGiQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz", + "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==", "dev": true, "requires": { "@babel/generator": "^7.0.0", @@ -1021,7 +1021,7 @@ "@babel/template": "^7.0.0", "@babel/traverse": "^7.0.0", "@babel/types": "^7.0.0", - "istanbul-lib-coverage": "^2.0.1", + "istanbul-lib-coverage": "^2.0.3", "semver": "^5.5.0" } }, @@ -1273,54 +1273,37 @@ } }, "nyc": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.1.0.tgz", - "integrity": "sha512-3GyY6TpQ58z9Frpv4GMExE1SV2tAgYqC7HSy2omEhNiCT3mhT9NyiOvIE8zkbuJVFzmvvNTnE4h/7/wQae7xLg==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.2.0.tgz", + "integrity": "sha512-gQBlOqvfpYt9b2PZ7qElrHWt8x4y8ApNfbMBoDPdl3sY4/4RJwCxDGTSqhA9RnaguZjS5nW7taW8oToe86JLgQ==", "dev": true, "requires": { "archy": "^1.0.0", "arrify": "^1.0.1", - "caching-transform": "^2.0.0", + "caching-transform": "^3.0.1", "convert-source-map": "^1.6.0", - "debug-log": "^1.0.1", "find-cache-dir": "^2.0.0", "find-up": "^3.0.0", "foreground-child": "^1.5.6", "glob": "^7.1.3", - "istanbul-lib-coverage": "^2.0.1", - "istanbul-lib-hook": "^2.0.1", - "istanbul-lib-instrument": "^3.0.0", - "istanbul-lib-report": "^2.0.2", - "istanbul-lib-source-maps": "^2.0.1", - "istanbul-reports": "^2.0.1", + "istanbul-lib-coverage": "^2.0.3", + "istanbul-lib-hook": "^2.0.3", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.2", + "istanbul-reports": "^2.1.0", "make-dir": "^1.3.0", "merge-source-map": "^1.1.0", "resolve-from": "^4.0.0", - "rimraf": "^2.6.2", + "rimraf": "^2.6.3", "signal-exit": "^3.0.2", "spawn-wrap": "^1.4.2", - "test-exclude": "^5.0.0", + "test-exclude": "^5.1.0", "uuid": "^3.3.2", - "yargs": "11.1.0", - "yargs-parser": "^9.0.2" + "yargs": "^12.0.5", + "yargs-parser": "^11.1.1" }, "dependencies": { - "align-text": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, "ansi-regex": { "version": "3.0.0", "bundled": true, @@ -1345,9 +1328,12 @@ "dev": true }, "async": { - "version": "1.5.2", + "version": "2.6.1", "bundled": true, - "dev": true + "dev": true, + "requires": { + "lodash": "^4.17.10" + } }, "balanced-match": { "version": "1.0.0", @@ -1369,49 +1355,29 @@ "dev": true }, "caching-transform": { - "version": "2.0.0", + "version": "3.0.1", "bundled": true, "dev": true, "requires": { - "make-dir": "^1.0.0", - "md5-hex": "^2.0.0", - "package-hash": "^2.0.0", - "write-file-atomic": "^2.0.0" + "hasha": "^3.0.0", + "make-dir": "^1.3.0", + "package-hash": "^3.0.0", + "write-file-atomic": "^2.3.0" } }, "camelcase": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true - }, - "center-align": { - "version": "0.1.3", + "version": "5.0.0", "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } + "dev": true }, "cliui": { - "version": "2.1.0", + "version": "4.1.0", "bundled": true, "dev": true, - "optional": true, "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "bundled": true, - "dev": true, - "optional": true - } + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, "code-point-at": { @@ -1419,6 +1385,12 @@ "bundled": true, "dev": true }, + "commander": { + "version": "2.17.1", + "bundled": true, + "dev": true, + "optional": true + }, "commondir": { "version": "1.0.1", "bundled": true, @@ -1447,18 +1419,13 @@ } }, "debug": { - "version": "3.1.0", + "version": "4.1.1", "bundled": true, "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "debug-log": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, "decamelize": { "version": "1.2.0", "bundled": true, @@ -1472,6 +1439,14 @@ "strip-bom": "^3.0.0" } }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, "error-ex": { "version": "1.3.2", "bundled": true, @@ -1486,12 +1461,12 @@ "dev": true }, "execa": { - "version": "0.7.0", + "version": "1.0.0", "bundled": true, "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -1500,11 +1475,13 @@ }, "dependencies": { "cross-spawn": { - "version": "5.1.0", + "version": "6.0.5", "bundled": true, "dev": true, "requires": { - "lru-cache": "^4.0.1", + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" } @@ -1549,9 +1526,12 @@ "dev": true }, "get-stream": { - "version": "3.0.0", + "version": "4.1.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "pump": "^3.0.0" + } }, "glob": { "version": "7.1.3", @@ -1567,28 +1547,25 @@ } }, "graceful-fs": { - "version": "4.1.11", + "version": "4.1.15", "bundled": true, "dev": true }, "handlebars": { - "version": "4.0.11", + "version": "4.0.12", "bundled": true, "dev": true, "requires": { - "async": "^1.4.0", + "async": "^2.5.0", "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" }, "dependencies": { "source-map": { - "version": "0.4.4", + "version": "0.6.1", "bundled": true, - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } + "dev": true } } }, @@ -1597,6 +1574,14 @@ "bundled": true, "dev": true }, + "hasha": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-stream": "^1.0.1" + } + }, "hosted-git-info": { "version": "2.7.1", "bundled": true, @@ -1622,7 +1607,7 @@ "dev": true }, "invert-kv": { - "version": "1.0.0", + "version": "2.0.0", "bundled": true, "dev": true }, @@ -1631,12 +1616,6 @@ "bundled": true, "dev": true }, - "is-buffer": { - "version": "1.1.6", - "bundled": true, - "dev": true, - "optional": true - }, "is-builtin-module": { "version": "1.0.0", "bundled": true, @@ -1661,12 +1640,12 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "2.0.1", + "version": "2.0.3", "bundled": true, "dev": true }, "istanbul-lib-hook": { - "version": "2.0.1", + "version": "2.0.3", "bundled": true, "dev": true, "requires": { @@ -1674,22 +1653,32 @@ } }, "istanbul-lib-report": { - "version": "2.0.2", + "version": "2.0.4", "bundled": true, "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.1", + "istanbul-lib-coverage": "^2.0.3", "make-dir": "^1.3.0", - "supports-color": "^5.4.0" + "supports-color": "^6.0.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "istanbul-lib-source-maps": { - "version": "2.0.1", + "version": "3.0.2", "bundled": true, "dev": true, "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^2.0.1", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.3", "make-dir": "^1.3.0", "rimraf": "^2.6.2", "source-map": "^0.6.1" @@ -1703,7 +1692,7 @@ } }, "istanbul-reports": { - "version": "2.0.1", + "version": "2.1.0", "bundled": true, "dev": true, "requires": { @@ -1715,27 +1704,12 @@ "bundled": true, "dev": true }, - "kind-of": { - "version": "3.2.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "bundled": true, - "dev": true, - "optional": true - }, "lcid": { - "version": "1.0.0", + "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "invert-kv": "^1.0.0" + "invert-kv": "^2.0.0" } }, "load-json-file": { @@ -1758,19 +1732,18 @@ "path-exists": "^3.0.0" } }, - "lodash.flattendeep": { - "version": "4.4.0", + "lodash": { + "version": "4.17.11", "bundled": true, "dev": true }, - "longest": { - "version": "1.0.1", + "lodash.flattendeep": { + "version": "4.4.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "lru-cache": { - "version": "4.1.3", + "version": "4.1.5", "bundled": true, "dev": true, "requires": { @@ -1786,25 +1759,22 @@ "pify": "^3.0.0" } }, - "md5-hex": { - "version": "2.0.0", + "map-age-cleaner": { + "version": "0.1.3", "bundled": true, "dev": true, "requires": { - "md5-o-matic": "^0.1.1" + "p-defer": "^1.0.0" } }, - "md5-o-matic": { - "version": "0.1.1", - "bundled": true, - "dev": true - }, "mem": { - "version": "1.1.0", + "version": "4.0.0", "bundled": true, "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" } }, "merge-source-map": { @@ -1856,7 +1826,12 @@ } }, "ms": { - "version": "2.0.0", + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "nice-try": { + "version": "1.0.5", "bundled": true, "dev": true }, @@ -1907,22 +1882,32 @@ "dev": true }, "os-locale": { - "version": "2.1.0", + "version": "3.1.0", "bundled": true, "dev": true, "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" } }, + "p-defer": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "p-finally": { "version": "1.0.0", "bundled": true, "dev": true }, + "p-is-promise": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, "p-limit": { - "version": "2.0.0", + "version": "2.1.0", "bundled": true, "dev": true, "requires": { @@ -1943,13 +1928,13 @@ "dev": true }, "package-hash": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "graceful-fs": "^4.1.11", + "graceful-fs": "^4.1.15", + "hasha": "^3.0.0", "lodash.flattendeep": "^4.4.0", - "md5-hex": "^2.0.0", "release-zalgo": "^1.0.0" } }, @@ -2003,6 +1988,15 @@ "bundled": true, "dev": true }, + "pump": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "read-pkg": { "version": "3.0.0", "bundled": true, @@ -2030,12 +2024,6 @@ "es6-error": "^4.0.1" } }, - "repeat-string": { - "version": "1.6.1", - "bundled": true, - "dev": true, - "optional": true - }, "require-directory": { "version": "2.1.1", "bundled": true, @@ -2051,21 +2039,12 @@ "bundled": true, "dev": true }, - "right-align": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "dev": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { @@ -2074,7 +2053,7 @@ "dev": true }, "semver": { - "version": "5.5.0", + "version": "5.6.0", "bundled": true, "dev": true }, @@ -2101,12 +2080,6 @@ "bundled": true, "dev": true }, - "source-map": { - "version": "0.5.7", - "bundled": true, - "dev": true, - "optional": true - }, "spawn-wrap": { "version": "1.4.2", "bundled": true, @@ -2121,7 +2094,7 @@ } }, "spdx-correct": { - "version": "3.0.0", + "version": "3.1.0", "bundled": true, "dev": true, "requires": { @@ -2130,7 +2103,7 @@ } }, "spdx-exceptions": { - "version": "2.1.0", + "version": "2.2.0", "bundled": true, "dev": true }, @@ -2144,7 +2117,7 @@ } }, "spdx-license-ids": { - "version": "3.0.0", + "version": "3.0.3", "bundled": true, "dev": true }, @@ -2175,16 +2148,8 @@ "bundled": true, "dev": true }, - "supports-color": { - "version": "5.4.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, "test-exclude": { - "version": "5.0.0", + "version": "5.1.0", "bundled": true, "dev": true, "requires": { @@ -2195,43 +2160,30 @@ } }, "uglify-js": { - "version": "2.8.29", + "version": "3.4.9", "bundled": true, "dev": true, "optional": true, "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" + "commander": "~2.17.1", + "source-map": "~0.6.1" }, "dependencies": { - "yargs": { - "version": "3.10.0", + "source-map": { + "version": "0.6.1", "bundled": true, "dev": true, - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } + "optional": true } } }, - "uglify-to-browserify": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, "uuid": { "version": "3.3.2", "bundled": true, "dev": true }, "validate-npm-package-license": { - "version": "3.0.3", + "version": "3.0.4", "bundled": true, "dev": true, "requires": { @@ -2252,12 +2204,6 @@ "bundled": true, "dev": true }, - "window-size": { - "version": "0.1.0", - "bundled": true, - "dev": true, - "optional": true - }, "wordwrap": { "version": "0.0.3", "bundled": true, @@ -2311,7 +2257,7 @@ "dev": true }, "write-file-atomic": { - "version": "2.3.0", + "version": "2.4.2", "bundled": true, "dev": true, "requires": { @@ -2321,7 +2267,7 @@ } }, "y18n": { - "version": "3.2.1", + "version": "4.0.0", "bundled": true, "dev": true }, @@ -2331,87 +2277,31 @@ "dev": true }, "yargs": { - "version": "11.1.0", + "version": "12.0.5", "bundled": true, "dev": true, "requires": { "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", + "os-locale": "^3.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", "string-width": "^2.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" - }, - "dependencies": { - "cliui": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "bundled": true, - "dev": true - } + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" } }, "yargs-parser": { - "version": "9.0.2", + "version": "11.1.1", "bundled": true, "dev": true, "requires": { - "camelcase": "^4.1.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "bundled": true, - "dev": true - } + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } diff --git a/package.json b/package.json index c9cfae9c..523272cb 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "5.2.0", - "nyc": "13.1.0", + "nyc": "13.2.0", "sinon": "7.2.3" } } From e33bc4ba425463c2c737cba953393f0e0696b415 Mon Sep 17 00:00:00 2001 From: Jusonex Date: Mon, 11 Feb 2019 12:24:05 +0100 Subject: [PATCH 031/110] Support little endian in exif orientation extraction --- lib/types/jpg.js | 20 +++++++++--------- ...flipped.jpg => 1x2-flipped-big-endian.jpg} | Bin .../valid/jpg/1x2-flipped-little-endian.jpg | Bin 0 -> 733 bytes specs/valid.spec.js | 7 +++++- 4 files changed, 16 insertions(+), 11 deletions(-) rename specs/images/valid/jpg/{1x2-flipped.jpg => 1x2-flipped-big-endian.jpg} (100%) create mode 100644 specs/images/valid/jpg/1x2-flipped-little-endian.jpg diff --git a/lib/types/jpg.js b/lib/types/jpg.js index 68a22709..92b70034 100644 --- a/lib/types/jpg.js +++ b/lib/types/jpg.js @@ -1,5 +1,7 @@ 'use strict'; +var readUInt = require('../readUInt'); + // NOTE: we only support baseline and progressive JPGs here // due to the structure of the loader class, we only get a buffer // with a maximum size of 4096 bytes. so if the SOF marker is outside @@ -25,7 +27,7 @@ function extractSize (buffer, i) { var APP1_DATA_SIZE_BYTES = 2; var EXIF_HEADER_BYTES = 6; var TIFF_BYTE_ALIGN_BYTES = 2; -var MOTOROLA_BYTE_ALIGN = '4d4d'; +var BIG_ENDIAN_BYTE_ALIGN = '4d4d'; // Each entry is exactly 12 bytes var IDF_ENTRY_BYTES = 12; @@ -35,11 +37,9 @@ function extractOrientation (buffer, i) { // Skip APP1 Data Size var exifBlock = buffer.slice(APP1_DATA_SIZE_BYTES, i); - // TODO: support intel byte alignment + // Consider byte alignment var byteAlign = exifBlock.toString('hex', EXIF_HEADER_BYTES, EXIF_HEADER_BYTES + TIFF_BYTE_ALIGN_BYTES); - if (byteAlign !== MOTOROLA_BYTE_ALIGN) { - return; - } + var bigEndian = byteAlign === BIG_ENDIAN_BYTE_ALIGN; // TODO: assert that this contains 0x002A // var STATIC_MOTOROLA_TIFF_HEADER_BYTES = 2; @@ -52,7 +52,7 @@ function extractOrientation (buffer, i) { // (so the offset includes the tiff byte align) var offset = EXIF_HEADER_BYTES + idfOffset; - var idfDirectoryEntries = exifBlock.readUInt16BE(offset); + var idfDirectoryEntries = readUInt(exifBlock, 16, offset, bigEndian); var start; var end; @@ -61,23 +61,23 @@ function extractOrientation (buffer, i) { end = start + IDF_ENTRY_BYTES; var block = exifBlock.slice(start, end); - var tagNumber = block.readUInt16BE(0); + var tagNumber = readUInt(block, 16, 0, bigEndian); // 0x0112 (decimal: 274) is the `orientation` tag ID if (tagNumber === 274) { - var dataFormat = block.readUInt16BE(2); + var dataFormat = readUInt(block, 16, 2, bigEndian); if (dataFormat !== 3) { return; } // unsinged int has 2 bytes per component // if there would more than 4 bytes in total it's a pointer - var numberOfComponents = block.readUInt32BE(4); + var numberOfComponents = readUInt(block, 32, 4, bigEndian); if (numberOfComponents !== 1) { return; } - var orientation = block.readUInt16BE(8); + var orientation = readUInt(block, 16, 8, bigEndian); return orientation; } diff --git a/specs/images/valid/jpg/1x2-flipped.jpg b/specs/images/valid/jpg/1x2-flipped-big-endian.jpg similarity index 100% rename from specs/images/valid/jpg/1x2-flipped.jpg rename to specs/images/valid/jpg/1x2-flipped-big-endian.jpg diff --git a/specs/images/valid/jpg/1x2-flipped-little-endian.jpg b/specs/images/valid/jpg/1x2-flipped-little-endian.jpg new file mode 100644 index 0000000000000000000000000000000000000000..799d74ecbf1237c9784029dd9d5c144c348e898d GIT binary patch literal 733 zcmbtSJxc>Y6r9;j?oJTg)1ac2U6d4;G?rJ0!PDMSJ0btT&eBRy1Y1+sbt+;lL9!ibS0RM$Oa89VnoED^iLYlyUmMKh1o6!^M~2<`4?wAO6yzig#oMn~87AHN8^PB8!g literal 0 HcmV?d00001 diff --git a/specs/valid.spec.js b/specs/valid.spec.js index 268c40b5..2da5fe11 100644 --- a/specs/valid.spec.js +++ b/specs/valid.spec.js @@ -81,7 +81,12 @@ var sizes = { 'width': 4800, 'height': 3600 }, - 'specs/images/valid/jpg/1x2-flipped.jpg': { + 'specs/images/valid/jpg/1x2-flipped-big-endian.jpg': { + 'width': 1, + 'height': 2, + 'orientation': 8 + }, + 'specs/images/valid/jpg/1x2-flipped-little-endian.jpg': { 'width': 1, 'height': 2, 'orientation': 8 From 2b640f37523587dfc35dda9f4b6a88c34a44f169 Mon Sep 17 00:00:00 2001 From: Jusonex Date: Mon, 11 Feb 2019 12:32:43 +0100 Subject: [PATCH 032/110] Always checkout JavaScript files in Unix style --- .gitattributes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..cbdcbbc2 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.js text eol=lf From 2e7061894e4186ca80dedb746225007c5b391d56 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 14 Feb 2019 23:18:33 +0000 Subject: [PATCH 033/110] chore(deps): update dependency nyc to v13.3.0 --- package-lock.json | 62 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/package-lock.json b/package-lock.json index f3c13e04..a53a6303 100644 --- a/package-lock.json +++ b/package-lock.json @@ -810,9 +810,9 @@ } }, "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", "dev": true }, "graceful-fs": { @@ -1273,9 +1273,9 @@ } }, "nyc": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.2.0.tgz", - "integrity": "sha512-gQBlOqvfpYt9b2PZ7qElrHWt8x4y8ApNfbMBoDPdl3sY4/4RJwCxDGTSqhA9RnaguZjS5nW7taW8oToe86JLgQ==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.3.0.tgz", + "integrity": "sha512-P+FwIuro2aFG6B0Esd9ZDWUd51uZrAEoGutqZxzrVmYl3qSfkLgcQpBPBjtDFsUQLFY1dvTQJPOyeqr8S9GF8w==", "dev": true, "requires": { "archy": "^1.0.0", @@ -1288,10 +1288,10 @@ "glob": "^7.1.3", "istanbul-lib-coverage": "^2.0.3", "istanbul-lib-hook": "^2.0.3", - "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-instrument": "^3.1.0", "istanbul-lib-report": "^2.0.4", "istanbul-lib-source-maps": "^3.0.2", - "istanbul-reports": "^2.1.0", + "istanbul-reports": "^2.1.1", "make-dir": "^1.3.0", "merge-source-map": "^1.1.0", "resolve-from": "^4.0.0", @@ -1328,11 +1328,11 @@ "dev": true }, "async": { - "version": "2.6.1", + "version": "2.6.2", "bundled": true, "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.11" } }, "balanced-match": { @@ -1349,11 +1349,6 @@ "concat-map": "0.0.1" } }, - "builtin-modules": { - "version": "1.1.1", - "bundled": true, - "dev": true - }, "caching-transform": { "version": "3.0.1", "bundled": true, @@ -1552,7 +1547,7 @@ "dev": true }, "handlebars": { - "version": "4.0.12", + "version": "4.1.0", "bundled": true, "dev": true, "requires": { @@ -1616,14 +1611,6 @@ "bundled": true, "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "builtin-modules": "^1.0.0" - } - }, "is-fullwidth-code-point": { "version": "2.0.0", "bundled": true, @@ -1692,11 +1679,11 @@ } }, "istanbul-reports": { - "version": "2.1.0", + "version": "2.1.1", "bundled": true, "dev": true, "requires": { - "handlebars": "^4.0.11" + "handlebars": "^4.1.0" } }, "json-parse-better-errors": { @@ -1768,13 +1755,13 @@ } }, "mem": { - "version": "4.0.0", + "version": "4.1.0", "bundled": true, "dev": true, "requires": { "map-age-cleaner": "^0.1.1", "mimic-fn": "^1.0.0", - "p-is-promise": "^1.1.0" + "p-is-promise": "^2.0.0" } }, "merge-source-map": { @@ -1836,12 +1823,12 @@ "dev": true }, "normalize-package-data": { - "version": "2.4.0", + "version": "2.5.0", "bundled": true, "dev": true, "requires": { "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } @@ -1902,7 +1889,7 @@ "dev": true }, "p-is-promise": { - "version": "1.1.0", + "version": "2.0.0", "bundled": true, "dev": true }, @@ -1962,6 +1949,11 @@ "bundled": true, "dev": true }, + "path-parse": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, "path-type": { "version": "3.0.0", "bundled": true, @@ -2034,6 +2026,14 @@ "bundled": true, "dev": true }, + "resolve": { + "version": "1.10.0", + "bundled": true, + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, "resolve-from": { "version": "4.0.0", "bundled": true, diff --git a/package.json b/package.json index 523272cb..f41f82fd 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "5.2.0", - "nyc": "13.2.0", + "nyc": "13.3.0", "sinon": "7.2.3" } } From 20da86f13c2931a04845dd2d221a3d3812cd1723 Mon Sep 17 00:00:00 2001 From: Kornel Date: Sat, 7 Jul 2018 18:42:51 +0100 Subject: [PATCH 034/110] Parse CSS units in SVG lengths --- lib/types/svg.js | 26 ++++++++++++++++++++---- specs/images/valid/svg/viewbox-units.svg | 3 +++ 2 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 specs/images/valid/svg/viewbox-units.svg diff --git a/lib/types/svg.js b/lib/types/svg.js index 1b821f21..0aa1c8b9 100644 --- a/lib/types/svg.js +++ b/lib/types/svg.js @@ -12,11 +12,29 @@ var extractorRegExps = { 'viewbox': /\bviewBox=(['"])(.+?)\1/ }; +var units = { + 'cm': 96/2.54, + 'mm': 96/2.54/10, + 'm': 96/2.54*100, + 'pt': 96/72, + 'pc': 96/72/12, + 'em': 16, + 'ex': 8, +}; + +function parseLength (len) { + var m = /([0-9.]+)([a-z]*)/.exec(len); + if (!m) { + return undefined; + } + return Math.round(parseFloat(m[1]) * (units[m[2]] || 1)); +} + function parseViewbox (viewbox) { var bounds = viewbox.split(' '); return { - 'width': parseInt(bounds[2], 10), - 'height': parseInt(bounds[3], 10) + 'width': parseLength(bounds[2]), + 'height': parseLength(bounds[3]) }; } @@ -25,8 +43,8 @@ function parseAttributes (root) { var height = root.match(extractorRegExps.height); var viewbox = root.match(extractorRegExps.viewbox); return { - 'width': width && parseInt(width[2], 10), - 'height': height && parseInt(height[2], 10), + 'width': width && parseLength(width[2]), + 'height': height && parseLength(height[2]), 'viewbox': viewbox && parseViewbox(viewbox[2]) }; } diff --git a/specs/images/valid/svg/viewbox-units.svg b/specs/images/valid/svg/viewbox-units.svg new file mode 100644 index 00000000..e60e66d7 --- /dev/null +++ b/specs/images/valid/svg/viewbox-units.svg @@ -0,0 +1,3 @@ + + + From 50b4fac0a4e131faba8dc9ebc57db63aebd16214 Mon Sep 17 00:00:00 2001 From: Aditya Date: Fri, 15 Feb 2019 16:11:16 +0100 Subject: [PATCH 035/110] 0.7.2 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index a53a6303..fb92282e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.7.1", + "version": "0.7.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index f41f82fd..6d6c90f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.7.1", + "version": "0.7.2", "description": "get dimensions of any image file", "main": "lib/index.js", "files": [ From 9b5353d829e736e034dbdad684f38e7e38414801 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 15 Feb 2019 20:33:53 +0000 Subject: [PATCH 036/110] chore(deps): update dependency eslint to v5.14.0 --- package-lock.json | 160 ++++++++++++++++++++++++++-------------------- package.json | 2 +- 2 files changed, 90 insertions(+), 72 deletions(-) diff --git a/package-lock.json b/package-lock.json index fb92282e..7346e5ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -166,9 +166,9 @@ } }, "acorn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.6.tgz", - "integrity": "sha512-5M3G/A4uBSMIlfJ+h9W125vJvPFH/zirISsW5qfxF5YzEvXJCtolLoQvM5yZft0DvMcUrPGKPOlgEu55I6iUtA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.0.tgz", + "integrity": "sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw==", "dev": true }, "acorn-jsx": { @@ -345,12 +345,6 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -478,9 +472,9 @@ "dev": true }, "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -497,6 +491,12 @@ "safer-buffer": "^2.1.0" } }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -504,35 +504,35 @@ "dev": true }, "eslint": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.13.0.tgz", - "integrity": "sha512-nqD5WQMisciZC5EHZowejLKQjWGuFS5c70fxqSKlnDME+oz9zmE8KTlX+lHSg+/5wsC/kf9Q9eMkC8qS3oM2fg==", + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.14.0.tgz", + "integrity": "sha512-jrOhiYyENRrRnWlMYANlGZTqb89r2FuRT+615AabBoajhNjeh9ywDNlh2LU9vTqf0WYN+L3xdXuIi7xuj/tK9w==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.5.3", + "ajv": "^6.9.1", "chalk": "^2.1.0", "cross-spawn": "^6.0.5", "debug": "^4.0.1", - "doctrine": "^2.1.0", + "doctrine": "^3.0.0", "eslint-scope": "^4.0.0", "eslint-utils": "^1.3.1", "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.0", + "espree": "^5.0.1", "esquery": "^1.0.1", "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", + "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", "glob": "^7.1.2", "globals": "^11.7.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.1.0", + "inquirer": "^6.2.2", "js-yaml": "^3.12.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.5", + "lodash": "^4.17.11", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", @@ -543,14 +543,14 @@ "semver": "^5.5.1", "strip-ansi": "^4.0.0", "strip-json-comments": "^2.0.1", - "table": "^5.0.2", + "table": "^5.2.3", "text-table": "^0.2.0" }, "dependencies": { "ajv": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", - "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -574,12 +574,6 @@ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, - "globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", - "dev": true - }, "js-yaml": { "version": "3.12.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", @@ -596,6 +590,12 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -633,12 +633,12 @@ "dev": true }, "espree": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.0.tgz", - "integrity": "sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", "dev": true, "requires": { - "acorn": "^6.0.2", + "acorn": "^6.0.7", "acorn-jsx": "^5.0.0", "eslint-visitor-keys": "^1.0.0" } @@ -736,27 +736,31 @@ } }, "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", "dev": true, "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "flat-cache": "^2.0.1" } }, "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", "dev": true, "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" } }, + "flatted": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", + "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -815,12 +819,6 @@ "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", "dev": true }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - }, "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", @@ -2312,12 +2310,6 @@ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2634,21 +2626,21 @@ } }, "table": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.2.tgz", - "integrity": "sha512-f8mJmuu9beQEDkKHLzOv4VxVYlU68NpdzjbGPl69i4Hx0sTopJuNxuzJd17iV2h24dAfa93u794OnDA5jqXvfQ==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", + "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", "dev": true, "requires": { - "ajv": "^6.6.1", + "ajv": "^6.9.1", "lodash": "^4.17.11", - "slice-ansi": "^2.0.0", - "string-width": "^2.1.1" + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" }, "dependencies": { "ajv": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", - "integrity": "sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -2657,6 +2649,12 @@ "uri-js": "^4.2.2" } }, + "ansi-regex": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", + "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "dev": true + }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", @@ -2674,6 +2672,26 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true + }, + "string-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.0.0.tgz", + "integrity": "sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "strip-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", + "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "dev": true, + "requires": { + "ansi-regex": "^4.0.0" + } } } }, @@ -2819,9 +2837,9 @@ "dev": true }, "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", "dev": true, "requires": { "mkdirp": "^0.5.1" diff --git a/package.json b/package.json index 6d6c90f2..517e897d 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.2", - "eslint": "5.13.0", + "eslint": "5.14.0", "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "5.2.0", From ca2b837731b67cab6f1edd31664bb9bb6d66f8b3 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 18 Feb 2019 15:24:41 +0000 Subject: [PATCH 037/110] chore(deps): update dependency sinon to v7.2.4 --- package-lock.json | 62 ++++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7346e5ce..fd3f7bb2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -155,16 +155,30 @@ } }, "@sinonjs/samsam": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.0.2.tgz", - "integrity": "sha512-m08g4CS3J6lwRQk1pj1EO+KEVWbrbXsmi9Pw0ySmrIbcVxVaedoFgLvFsV8wHLwh01EpROVz3KvVcD1Jmks9FQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.1.1.tgz", + "integrity": "sha512-ILlwvQUwAiaVBzr3qz8oT1moM7AIUHqUc2UmEjQcH9lLe+E+BZPwUMuc9FFojMswRK4r96x5zDTTrowMLw/vuA==", "dev": true, "requires": { "@sinonjs/commons": "^1.0.2", "array-from": "^2.1.1", - "lodash.get": "^4.4.2" + "lodash": "^4.17.11" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } } }, + "@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true + }, "acorn": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.0.tgz", @@ -1110,12 +1124,6 @@ "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", "dev": true }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, "log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", @@ -1123,9 +1131,9 @@ "dev": true }, "lolex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-3.0.0.tgz", - "integrity": "sha512-hcnW80h3j2lbUfFdMArd5UPA/vxZJ+G8vobd+wg3nVEQA0EigStbYcrG030FJxL6xiDDPEkoMatV9xIh5OecQQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-3.1.0.tgz", + "integrity": "sha512-zFo5MgCJ0rZ7gQg69S4pqBsLURbFw11X68C18OcJjJQbqaXm2NoTrGl1IMM3TIz0/BnN1tIs2tzmmqvCsOMMjw==", "dev": true }, "mime-db": { @@ -1250,16 +1258,16 @@ "dev": true }, "nise": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.8.tgz", - "integrity": "sha512-kGASVhuL4tlAV0tvA34yJYZIVihrUt/5bDwpp4tTluigxUr2bBlJeDXmivb6NuEdFkqvdv/Ybb9dm16PSKUhtw==", + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.10.tgz", + "integrity": "sha512-sa0RRbj53dovjc7wombHmVli9ZihXbXCQ2uH3TNm03DyvOSIQbxg+pbqDKrk2oxMK1rtLGVlKxcB9rrc6X5YjA==", "dev": true, "requires": { "@sinonjs/formatio": "^3.1.0", + "@sinonjs/text-encoding": "^0.7.1", "just-extend": "^4.0.2", "lolex": "^2.3.2", - "path-to-regexp": "^1.7.0", - "text-encoding": "^0.6.4" + "path-to-regexp": "^1.7.0" }, "dependencies": { "lolex": { @@ -2537,17 +2545,17 @@ "dev": true }, "sinon": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.3.tgz", - "integrity": "sha512-i6j7sqcLEqTYqUcMV327waI745VASvYuSuQMCjbAwlpAeuCgKZ3LtrjDxAbu+GjNQR0FEDpywtwGCIh8GicNyg==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.4.tgz", + "integrity": "sha512-FGlcfrkiBRfaEIKRw8s/9mk4nP4AMGswvKFixLo+AzsOhskjaBCHAHGLMd8pCJpQGS+9ZI71px6qoQUyvADeyA==", "dev": true, "requires": { "@sinonjs/commons": "^1.3.0", "@sinonjs/formatio": "^3.1.0", - "@sinonjs/samsam": "^3.0.2", + "@sinonjs/samsam": "^3.1.1", "diff": "^3.5.0", - "lolex": "^3.0.0", - "nise": "^1.4.8", + "lolex": "^3.1.0", + "nise": "^1.4.10", "supports-color": "^5.5.0" } }, @@ -2695,12 +2703,6 @@ } } }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", - "dev": true - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", diff --git a/package.json b/package.json index 517e897d..700efe05 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.3", "mocha": "5.2.0", "nyc": "13.3.0", - "sinon": "7.2.3" + "sinon": "7.2.4" } } From ac5f3d24ae3ae1483033e87c8d326150d4bc95f0 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 18 Feb 2019 17:28:38 +0000 Subject: [PATCH 038/110] chore(deps): update dependency eslint to v5.14.1 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index fd3f7bb2..c6462675 100644 --- a/package-lock.json +++ b/package-lock.json @@ -518,9 +518,9 @@ "dev": true }, "eslint": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.14.0.tgz", - "integrity": "sha512-jrOhiYyENRrRnWlMYANlGZTqb89r2FuRT+615AabBoajhNjeh9ywDNlh2LU9vTqf0WYN+L3xdXuIi7xuj/tK9w==", + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.14.1.tgz", + "integrity": "sha512-CyUMbmsjxedx8B0mr79mNOqetvkbij/zrXnFeK2zc3pGRn3/tibjiNAv/3UxFEyfMDjh+ZqTrJrEGBFiGfD5Og==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", diff --git a/package.json b/package.json index 700efe05..b647dabb 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.2", - "eslint": "5.14.0", + "eslint": "5.14.1", "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "5.2.0", From bc6a4f4f22691e5ce66a4d25db6bfffc90082ea7 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 18 Feb 2019 21:22:24 +0000 Subject: [PATCH 039/110] chore(deps): update dependency mocha to v6 --- package-lock.json | 1780 +++++++++++++++++++++++++++++++++++++++++++-- package.json | 2 +- 2 files changed, 1728 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index c6462675..aeb294ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -203,6 +203,12 @@ "json-schema-traverse": "^0.3.0" } }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", @@ -233,12 +239,36 @@ "sprintf-js": "~1.0.2" } }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, "array-from": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", "dev": true }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -254,6 +284,12 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -266,6 +302,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -284,6 +326,61 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -304,18 +401,70 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, "callsites": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", "dev": true }, + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -359,6 +508,29 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -374,12 +546,39 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", @@ -404,10 +603,10 @@ "delayed-stream": "~1.0.0" } }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, "concat-map": { @@ -416,6 +615,12 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -459,26 +664,94 @@ } }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -511,6 +784,40 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -693,6 +1000,80 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "expect.js": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz", @@ -705,6 +1086,27 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "external-editor": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", @@ -716,6 +1118,71 @@ "tmp": "^0.0.33" } }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -758,6 +1225,67 @@ "flat-cache": "^2.0.1" } }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", + "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "dev": true + } + } + }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -775,6 +1303,12 @@ "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", "dev": true }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -792,18 +1326,54 @@ "mime-types": "^2.1.12" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -827,6 +1397,30 @@ "path-is-absolute": "^1.0.0" } }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, "globals": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", @@ -855,18 +1449,74 @@ "har-schema": "^2.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -925,6 +1575,12 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "inquirer": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", @@ -980,24 +1636,187 @@ } } }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -1010,6 +1829,12 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -1102,6 +1927,21 @@ "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==", "dev": true }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, "lcov-parse": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", @@ -1118,6 +1958,16 @@ "type-check": "~0.3.2" } }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, "lodash": { "version": "4.17.10", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", @@ -1130,12 +1980,77 @@ "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", "dev": true }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, "lolex": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/lolex/-/lolex-3.1.0.tgz", "integrity": "sha512-zFo5MgCJ0rZ7gQg69S4pqBsLURbFw11X68C18OcJjJQbqaXm2NoTrGl1IMM3TIz0/BnN1tIs2tzmmqvCsOMMjw==", "dev": true }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "mem": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", + "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^2.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, "mime-db": { "version": "1.36.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", @@ -1172,6 +2087,27 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -1190,42 +2126,50 @@ } }, "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.0.0.tgz", + "integrity": "sha512-A7g9k3yr8oJaXn2IItFnfgjyxFc/LTe6Wwv7FczP+e8G74o9xYNSbMYmCf1ouldRojLrFcOb+z75P6Ak0GX6ug==", "dev": true, "requires": { + "ansi-colors": "3.2.3", "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", + "debug": "3.2.6", "diff": "3.5.0", "escape-string-regexp": "1.0.5", - "glob": "7.1.2", + "findup-sync": "2.0.0", + "glob": "7.1.3", "growl": "1.10.5", - "he": "1.1.1", + "he": "1.2.0", + "js-yaml": "3.12.0", + "log-symbols": "2.2.0", "minimatch": "3.0.4", "mkdirp": "0.5.1", - "supports-color": "5.4.0" + "ms": "2.1.1", + "node-environment-flags": "1.0.4", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "12.0.5", + "yargs-parser": "11.1.1", + "yargs-unparser": "1.5.0" }, "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -1234,9 +2178,9 @@ } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, "mute-stream": { @@ -1245,6 +2189,25 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -1278,6 +2241,30 @@ } } }, + "node-environment-flags": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.4.tgz", + "integrity": "sha512-M9rwCnWVLW7PX+NUWe3ejEdiLYinRpsEre9hMkU/6NS4h+EEulYaDH1gCEZ2gyXsmw+RXYDaV2JkkTNcsPDJ0Q==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, "nyc": { "version": "13.3.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.3.0.tgz", @@ -2318,31 +3305,108 @@ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { - "wrappy": "1" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "object-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", + "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "isobject": "^3.0.0" } }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, "requires": { - "deep-is": "~0.1.3", + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.4", "levn": "~0.3.0", "prelude-ls": "~1.1.2", @@ -2350,12 +3414,65 @@ "wordwrap": "~1.0.0" } }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", + "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "dev": true + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, "parent-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", @@ -2365,6 +3482,24 @@ "callsites": "^3.0.0" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2398,6 +3533,12 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -2416,6 +3557,16 @@ "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", "dev": true }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -2428,12 +3579,34 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", @@ -2462,12 +3635,40 @@ "uuid": "^3.3.2" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -2478,6 +3679,12 @@ "signal-exit": "^3.0.2" } }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -2511,6 +3718,15 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -2523,6 +3739,35 @@ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -2570,12 +3815,162 @@ "is-fullwidth-code-point": "^2.0.0" } }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -2599,6 +3994,27 @@ "tweetnacl": "~0.14.0" } }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -2618,6 +4034,12 @@ "ansi-regex": "^3.0.0" } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -2730,6 +4152,48 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -2783,6 +4247,87 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -2800,6 +4345,18 @@ } } }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -2826,12 +4383,74 @@ "isexe": "^2.0.0" } }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -2846,6 +4465,61 @@ "requires": { "mkdirp": "^0.5.1" } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz", + "integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.11", + "yargs": "^12.0.5" + }, + "dependencies": { + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + } + } } } } diff --git a/package.json b/package.json index b647dabb..1f5e2d59 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "eslint": "5.14.1", "expect.js": "0.3.1", "glob": "7.1.3", - "mocha": "5.2.0", + "mocha": "6.0.0", "nyc": "13.3.0", "sinon": "7.2.4" } From d27ceb315684ddb66b74cbc284dba4bbd5f7f6e1 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 22 Feb 2019 18:05:27 +0000 Subject: [PATCH 040/110] chore(deps): update dependency coveralls to v3.0.3 --- package-lock.json | 102 +++++++++++++++++++++------------------------- package.json | 2 +- 2 files changed, 47 insertions(+), 57 deletions(-) diff --git a/package-lock.json b/package-lock.json index aeb294ba..9b6d7ced 100644 --- a/package-lock.json +++ b/package-lock.json @@ -192,15 +192,15 @@ "dev": true }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", + "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", "dev": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "ansi-colors": { @@ -386,7 +386,6 @@ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, - "optional": true, "requires": { "tweetnacl": "^0.14.3" } @@ -557,12 +556,6 @@ "wrap-ansi": "^2.0.0" } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -595,9 +588,9 @@ "dev": true }, "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -628,9 +621,9 @@ "dev": true }, "coveralls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.2.tgz", - "integrity": "sha512-Tv0LKe/MkBOilH2v7WBiTBdudg2ChfGbdXafc/s330djpF3zKOmuehTeRwjXWc7pzfj9FrDUTA7tEx6Div8NFw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.3.tgz", + "integrity": "sha512-viNfeGlda2zJr8Gj1zqXpDMRjw9uM54p7wzZdvLRyOgnAfCe974Dq4veZkjJdxQXbmdppu6flEajFYseHYaUhg==", "dev": true, "requires": { "growl": "~> 1.10.0", @@ -638,7 +631,7 @@ "lcov-parse": "^0.0.10", "log-driver": "^1.2.7", "minimist": "^1.2.0", - "request": "^2.85.0" + "request": "^2.86.0" } }, "cross-spawn": { @@ -772,7 +765,6 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, - "optional": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -1190,9 +1182,9 @@ "dev": true }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "fast-json-stable-stringify": { @@ -1316,13 +1308,13 @@ "dev": true }, "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "1.0.6", + "combined-stream": "^1.0.6", "mime-types": "^2.1.12" } }, @@ -1440,12 +1432,12 @@ "dev": true }, "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "dev": true, "requires": { - "ajv": "^5.3.0", + "ajv": "^6.5.5", "har-schema": "^2.0.0" } }, @@ -1863,9 +1855,9 @@ } }, "js-yaml": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz", - "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==", + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", + "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -1876,8 +1868,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true + "dev": true }, "jsesc": { "version": "2.5.2", @@ -1892,9 +1883,9 @@ "dev": true }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json-stable-stringify-without-jsonify": { @@ -2052,18 +2043,18 @@ } }, "mime-db": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", - "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", + "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", "dev": true }, "mime-types": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", - "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", + "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", "dev": true, "requires": { - "mime-db": "~1.36.0" + "mime-db": "~1.38.0" } }, "mimic-fn": { @@ -2083,7 +2074,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, @@ -3552,9 +3543,9 @@ "dev": true }, "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", "dev": true }, "pump": { @@ -3978,9 +3969,9 @@ "dev": true }, "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -4229,8 +4220,7 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true + "dev": true }, "type-check": { "version": "0.3.2", diff --git a/package.json b/package.json index 1f5e2d59..040e4b5c 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "author": "netroy (http://netroy.in/)", "license": "MIT", "devDependencies": { - "coveralls": "3.0.2", + "coveralls": "3.0.3", "eslint": "5.14.1", "expect.js": "0.3.1", "glob": "7.1.3", From 654f7c64e3999e2ca1132ea48945849f5944a7b6 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 21 Feb 2019 20:12:39 +0000 Subject: [PATCH 041/110] chore(deps): update dependency mocha to v6.0.1 --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b6d7ced..03206aa9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1501,9 +1501,9 @@ "dev": true }, "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, "requires": { "parse-passwd": "^1.0.0" @@ -2117,9 +2117,9 @@ } }, "mocha": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.0.0.tgz", - "integrity": "sha512-A7g9k3yr8oJaXn2IItFnfgjyxFc/LTe6Wwv7FczP+e8G74o9xYNSbMYmCf1ouldRojLrFcOb+z75P6Ak0GX6ug==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.0.1.tgz", + "integrity": "sha512-tQzCxWqxSD6Oyg5r7Ptbev0yAMD8p+Vfh4snPFuiUsWqYj0eVYTDT2DkEY307FTj0WRlIWN9rWMMAUzRmijgVQ==", "dev": true, "requires": { "ansi-colors": "3.2.3", diff --git a/package.json b/package.json index 040e4b5c..7c502000 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "eslint": "5.14.1", "expect.js": "0.3.1", "glob": "7.1.3", - "mocha": "6.0.0", + "mocha": "6.0.1", "nyc": "13.3.0", "sinon": "7.2.4" } From 0db4765a0844e6cbe7f522dfd7bcc7ea69856652 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 27 Feb 2019 11:41:35 +0000 Subject: [PATCH 042/110] chore(deps): update dependency sinon to v7.2.5 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 03206aa9..329f193f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -155,9 +155,9 @@ } }, "@sinonjs/samsam": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.1.1.tgz", - "integrity": "sha512-ILlwvQUwAiaVBzr3qz8oT1moM7AIUHqUc2UmEjQcH9lLe+E+BZPwUMuc9FFojMswRK4r96x5zDTTrowMLw/vuA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.2.0.tgz", + "integrity": "sha512-j5F1rScewLtx6pbTK0UAjA3jJj4RYiSKOix53YWv+Jzy/AZ69qHxUpU8fwVLjyKbEEud9QrLpv6Ggs7WqTimYw==", "dev": true, "requires": { "@sinonjs/commons": "^1.0.2", @@ -3781,14 +3781,14 @@ "dev": true }, "sinon": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.4.tgz", - "integrity": "sha512-FGlcfrkiBRfaEIKRw8s/9mk4nP4AMGswvKFixLo+AzsOhskjaBCHAHGLMd8pCJpQGS+9ZI71px6qoQUyvADeyA==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.5.tgz", + "integrity": "sha512-1c2KK6g5NQr9XNYCEcUbeFtBpKZD1FXEw0VX7gNhWUBtkchguT2lNdS7XmS7y64OpQWfSNeeV/f8py3NNcQ63Q==", "dev": true, "requires": { "@sinonjs/commons": "^1.3.0", "@sinonjs/formatio": "^3.1.0", - "@sinonjs/samsam": "^3.1.1", + "@sinonjs/samsam": "^3.2.0", "diff": "^3.5.0", "lolex": "^3.1.0", "nise": "^1.4.10", diff --git a/package.json b/package.json index 7c502000..2607d866 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.3", "mocha": "6.0.1", "nyc": "13.3.0", - "sinon": "7.2.4" + "sinon": "7.2.5" } } From d6733b686ba834536d1550422dd6ff10ab847c44 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 25 Feb 2019 18:23:09 +0000 Subject: [PATCH 043/110] chore(deps): update dependency mocha to v6.0.2 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 329f193f..ba46e3c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2117,9 +2117,9 @@ } }, "mocha": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.0.1.tgz", - "integrity": "sha512-tQzCxWqxSD6Oyg5r7Ptbev0yAMD8p+Vfh4snPFuiUsWqYj0eVYTDT2DkEY307FTj0WRlIWN9rWMMAUzRmijgVQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.0.2.tgz", + "integrity": "sha512-RtTJsmmToGyeTznSOMoM6TPEk1A84FQaHIciKrRqARZx+B5ccJ5tXlmJzEKGBxZdqk9UjpRsesZTUkZmR5YnuQ==", "dev": true, "requires": { "ansi-colors": "3.2.3", diff --git a/package.json b/package.json index 2607d866..90d5d9a2 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "eslint": "5.14.1", "expect.js": "0.3.1", "glob": "7.1.3", - "mocha": "6.0.1", + "mocha": "6.0.2", "nyc": "13.3.0", "sinon": "7.2.5" } From 994acf2b2a63bcb3a7dd3aeb988406e14fc63d9a Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 1 Mar 2019 23:16:07 +0000 Subject: [PATCH 044/110] chore(deps): update dependency sinon to v7.2.6 --- package-lock.json | 23 ++++++++++++----------- package.json | 2 +- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index ba46e3c6..403b0158 100644 --- a/package-lock.json +++ b/package-lock.json @@ -137,21 +137,22 @@ } }, "@sinonjs/commons": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.3.0.tgz", - "integrity": "sha512-j4ZwhaHmwsCb4DlDOIWnI5YyKDNMoNThsmwEpfHx6a1EpsGZ9qYLxP++LMlmBRjtGptGHFsGItJ768snllFWpA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.3.1.tgz", + "integrity": "sha512-rgmZk5CrBGAMATk0HlHOFvo8V44/r+On6cKS80tqid0Eljd+fFBWBOXZp9H2/EB3faxdNdzXTx6QZIKLkbJ7mA==", "dev": true, "requires": { "type-detect": "4.0.8" } }, "@sinonjs/formatio": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.1.0.tgz", - "integrity": "sha512-ZAR2bPHOl4Xg6eklUGpsdiIJ4+J1SNag1DHHrG/73Uz/nVwXqjgUtRPLoS+aVyieN9cSbc0E4LsU984tWcDyNg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.0.tgz", + "integrity": "sha512-hskkZG4qB0HgsxrPUlnk2EiIyBwntM+ETIxCha/gidl172MCfdosNezB5706ciS5P2VhueM7MoACWwMc4A4gMQ==", "dev": true, "requires": { - "@sinonjs/samsam": "^2 || ^3" + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^3.1.0" } }, "@sinonjs/samsam": { @@ -3781,13 +3782,13 @@ "dev": true }, "sinon": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.5.tgz", - "integrity": "sha512-1c2KK6g5NQr9XNYCEcUbeFtBpKZD1FXEw0VX7gNhWUBtkchguT2lNdS7XmS7y64OpQWfSNeeV/f8py3NNcQ63Q==", + "version": "7.2.6", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.6.tgz", + "integrity": "sha512-n5r5wZ/VyrP7oAJpGGGjSxvw2Yy8T+qdGjDBltK01KBqB33O60V/xcG0Hgqm6SbJEIyCGuICpaXg9uFzY5DOYw==", "dev": true, "requires": { "@sinonjs/commons": "^1.3.0", - "@sinonjs/formatio": "^3.1.0", + "@sinonjs/formatio": "^3.2.0", "@sinonjs/samsam": "^3.2.0", "diff": "^3.5.0", "lolex": "^3.1.0", diff --git a/package.json b/package.json index 90d5d9a2..84596f1b 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.3", "mocha": "6.0.2", "nyc": "13.3.0", - "sinon": "7.2.5" + "sinon": "7.2.6" } } From afa7efd3a509ccd7a84f6bbe84d562fb38bd5d06 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 5 Mar 2019 02:51:26 +0000 Subject: [PATCH 045/110] chore(deps): update dependency eslint to v5.15.1 --- package-lock.json | 84 ++++++----------------------------------------- package.json | 2 +- 2 files changed, 11 insertions(+), 75 deletions(-) diff --git a/package-lock.json b/package-lock.json index 403b0158..77ec2a22 100644 --- a/package-lock.json +++ b/package-lock.json @@ -181,9 +181,9 @@ "dev": true }, "acorn": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.0.tgz", - "integrity": "sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", "dev": true }, "acorn-jsx": { @@ -818,9 +818,9 @@ "dev": true }, "eslint": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.14.1.tgz", - "integrity": "sha512-CyUMbmsjxedx8B0mr79mNOqetvkbij/zrXnFeK2zc3pGRn3/tibjiNAv/3UxFEyfMDjh+ZqTrJrEGBFiGfD5Og==", + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.15.1.tgz", + "integrity": "sha512-NTcm6vQ+PTgN3UBsALw5BMhgO6i5EpIjQF/Xb5tIh3sk9QhrFafujUOczGz4J24JBlzWclSB9Vmx8d+9Z6bFCg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -829,7 +829,7 @@ "cross-spawn": "^6.0.5", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.0", + "eslint-scope": "^4.0.2", "eslint-utils": "^1.3.1", "eslint-visitor-keys": "^1.0.0", "espree": "^5.0.1", @@ -861,18 +861,6 @@ "text-table": "^0.2.0" }, "dependencies": { - "ajv": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", - "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -882,40 +870,12 @@ "ms": "^2.1.1" } }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, "semver": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", @@ -925,9 +885,9 @@ } }, "eslint-scope": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", - "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.2.tgz", + "integrity": "sha512-5q1+B/ogmHl8+paxtOKx38Z8LtWkVGuNt3+GQNErqwLl6ViNp/gdJGMCjZNxZ8j/VYjDNZ2Fo+eQc1TAVPIzbg==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -4059,36 +4019,12 @@ "string-width": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", - "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "ansi-regex": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", "dev": true }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", diff --git a/package.json b/package.json index 84596f1b..da0572fd 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.3", - "eslint": "5.14.1", + "eslint": "5.15.1", "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "6.0.2", From e18a902b86d80d8f3f68dc66b1d9699fef88c97b Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 4 Mar 2019 10:45:06 +0000 Subject: [PATCH 046/110] chore(deps): update dependency sinon to v7.2.7 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 77ec2a22..ef6619fa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -146,9 +146,9 @@ } }, "@sinonjs/formatio": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.0.tgz", - "integrity": "sha512-hskkZG4qB0HgsxrPUlnk2EiIyBwntM+ETIxCha/gidl172MCfdosNezB5706ciS5P2VhueM7MoACWwMc4A4gMQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.1.tgz", + "integrity": "sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ==", "dev": true, "requires": { "@sinonjs/commons": "^1", @@ -3742,13 +3742,13 @@ "dev": true }, "sinon": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.6.tgz", - "integrity": "sha512-n5r5wZ/VyrP7oAJpGGGjSxvw2Yy8T+qdGjDBltK01KBqB33O60V/xcG0Hgqm6SbJEIyCGuICpaXg9uFzY5DOYw==", + "version": "7.2.7", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.7.tgz", + "integrity": "sha512-rlrre9F80pIQr3M36gOdoCEWzFAMDgHYD8+tocqOw+Zw9OZ8F84a80Ds69eZfcjnzDqqG88ulFld0oin/6rG/g==", "dev": true, "requires": { - "@sinonjs/commons": "^1.3.0", - "@sinonjs/formatio": "^3.2.0", + "@sinonjs/commons": "^1.3.1", + "@sinonjs/formatio": "^3.2.1", "@sinonjs/samsam": "^3.2.0", "diff": "^3.5.0", "lolex": "^3.1.0", diff --git a/package.json b/package.json index da0572fd..e9832a0d 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.3", "mocha": "6.0.2", "nyc": "13.3.0", - "sinon": "7.2.6" + "sinon": "7.2.7" } } From 183194b615a652675789f5768f2d7c4e5f7ec838 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 15 Mar 2019 17:40:09 +0000 Subject: [PATCH 047/110] chore(deps): update dependency eslint to v5.15.2 --- package-lock.json | 50 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index ef6619fa..a27b49d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -818,9 +818,9 @@ "dev": true }, "eslint": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.15.1.tgz", - "integrity": "sha512-NTcm6vQ+PTgN3UBsALw5BMhgO6i5EpIjQF/Xb5tIh3sk9QhrFafujUOczGz4J24JBlzWclSB9Vmx8d+9Z6bFCg==", + "version": "5.15.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.15.2.tgz", + "integrity": "sha512-I8VM4SILpMwUvsRt83bQVwIRQAJ2iPMXun1FVZ/lV1OHklH2tJaXqoDnNzdiFc6bnCtGKXvQIQNP3kj1eMskSw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -829,7 +829,7 @@ "cross-spawn": "^6.0.5", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.2", + "eslint-scope": "^4.0.3", "eslint-utils": "^1.3.1", "eslint-visitor-keys": "^1.0.0", "espree": "^5.0.1", @@ -885,9 +885,9 @@ } }, "eslint-scope": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.2.tgz", - "integrity": "sha512-5q1+B/ogmHl8+paxtOKx38Z8LtWkVGuNt3+GQNErqwLl6ViNp/gdJGMCjZNxZ8j/VYjDNZ2Fo+eQc1TAVPIzbg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -1556,9 +1556,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "chalk": { @@ -1579,12 +1579,12 @@ "dev": true }, "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.1.0.tgz", + "integrity": "sha512-TjxrkPONqO2Z8QDCpeE2j6n0M6EwxzyDgzEeGp+FbdvaJAt//ClYi6W5my+3ROlC/hZX2KACUwDfK49Ka5eDvg==", "dev": true, "requires": { - "ansi-regex": "^4.0.0" + "ansi-regex": "^4.1.0" } } } @@ -4020,9 +4020,9 @@ }, "dependencies": { "ansi-regex": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz", - "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "lodash": { @@ -4032,23 +4032,23 @@ "dev": true }, "string-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.0.0.tgz", - "integrity": "sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.0.0" + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz", - "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.1.0.tgz", + "integrity": "sha512-TjxrkPONqO2Z8QDCpeE2j6n0M6EwxzyDgzEeGp+FbdvaJAt//ClYi6W5my+3ROlC/hZX2KACUwDfK49Ka5eDvg==", "dev": true, "requires": { - "ansi-regex": "^4.0.0" + "ansi-regex": "^4.1.0" } } } diff --git a/package.json b/package.json index e9832a0d..b39a6aad 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.3", - "eslint": "5.15.1", + "eslint": "5.15.2", "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "6.0.2", From a1784de2ff4c6270ea322d95d7ead6fe131866ba Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 20 Mar 2019 13:25:36 +0000 Subject: [PATCH 048/110] chore(deps): update dependency sinon to v7.3.0 --- package-lock.json | 22 +++++++++++----------- package.json | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index a27b49d0..d967e675 100644 --- a/package-lock.json +++ b/package-lock.json @@ -137,9 +137,9 @@ } }, "@sinonjs/commons": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.3.1.tgz", - "integrity": "sha512-rgmZk5CrBGAMATk0HlHOFvo8V44/r+On6cKS80tqid0Eljd+fFBWBOXZp9H2/EB3faxdNdzXTx6QZIKLkbJ7mA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.4.0.tgz", + "integrity": "sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -156,9 +156,9 @@ } }, "@sinonjs/samsam": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.2.0.tgz", - "integrity": "sha512-j5F1rScewLtx6pbTK0UAjA3jJj4RYiSKOix53YWv+Jzy/AZ69qHxUpU8fwVLjyKbEEud9QrLpv6Ggs7WqTimYw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.0.tgz", + "integrity": "sha512-beHeJM/RRAaLLsMJhsCvHK31rIqZuobfPLa/80yGH5hnD8PV1hyh9xJBJNFfNmO7yWqm+zomijHsXpI6iTQJfQ==", "dev": true, "requires": { "@sinonjs/commons": "^1.0.2", @@ -3742,14 +3742,14 @@ "dev": true }, "sinon": { - "version": "7.2.7", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.2.7.tgz", - "integrity": "sha512-rlrre9F80pIQr3M36gOdoCEWzFAMDgHYD8+tocqOw+Zw9OZ8F84a80Ds69eZfcjnzDqqG88ulFld0oin/6rG/g==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.3.0.tgz", + "integrity": "sha512-0pYvgRv46fODzT/PByqb79MVNpyxsxf38WEiXTABOF8RfIMcIARfZ+1ORuxwAmHkreZ/jST3UDBdKCRhUy/e1A==", "dev": true, "requires": { - "@sinonjs/commons": "^1.3.1", + "@sinonjs/commons": "^1.4.0", "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.2.0", + "@sinonjs/samsam": "^3.3.0", "diff": "^3.5.0", "lolex": "^3.1.0", "nise": "^1.4.10", diff --git a/package.json b/package.json index b39a6aad..7a8db21e 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.3", "mocha": "6.0.2", "nyc": "13.3.0", - "sinon": "7.2.7" + "sinon": "7.3.0" } } From 08d86b6751a90fc3a997d01fb0bd7dfc2b680ef7 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 18 Mar 2019 16:01:42 +0000 Subject: [PATCH 049/110] chore(deps): update dependency eslint to v5.15.3 --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index d967e675..1751a54e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -818,9 +818,9 @@ "dev": true }, "eslint": { - "version": "5.15.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.15.2.tgz", - "integrity": "sha512-I8VM4SILpMwUvsRt83bQVwIRQAJ2iPMXun1FVZ/lV1OHklH2tJaXqoDnNzdiFc6bnCtGKXvQIQNP3kj1eMskSw==", + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.15.3.tgz", + "integrity": "sha512-vMGi0PjCHSokZxE0NLp2VneGw5sio7SSiDNgIUn2tC0XkWJRNOIoHIg3CliLVfXnJsiHxGAYrkw0PieAu8+KYQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -1579,9 +1579,9 @@ "dev": true }, "strip-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.1.0.tgz", - "integrity": "sha512-TjxrkPONqO2Z8QDCpeE2j6n0M6EwxzyDgzEeGp+FbdvaJAt//ClYi6W5my+3ROlC/hZX2KACUwDfK49Ka5eDvg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { "ansi-regex": "^4.1.0" @@ -4043,9 +4043,9 @@ } }, "strip-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.1.0.tgz", - "integrity": "sha512-TjxrkPONqO2Z8QDCpeE2j6n0M6EwxzyDgzEeGp+FbdvaJAt//ClYi6W5my+3ROlC/hZX2KACUwDfK49Ka5eDvg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { "ansi-regex": "^4.1.0" diff --git a/package.json b/package.json index 7a8db21e..cfe1af02 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.3", - "eslint": "5.15.2", + "eslint": "5.15.3", "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "6.0.2", From 7c30133df53e736d185d3cbc9a68a50b75f05f6b Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 27 Mar 2019 12:01:30 +0000 Subject: [PATCH 050/110] chore(deps): update dependency sinon to v7.3.1 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1751a54e..de9cb1a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -156,9 +156,9 @@ } }, "@sinonjs/samsam": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.0.tgz", - "integrity": "sha512-beHeJM/RRAaLLsMJhsCvHK31rIqZuobfPLa/80yGH5hnD8PV1hyh9xJBJNFfNmO7yWqm+zomijHsXpI6iTQJfQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.1.tgz", + "integrity": "sha512-wRSfmyd81swH0hA1bxJZJ57xr22kC07a1N4zuIL47yTS04bDk6AoCkczcqHEjcRPmJ+FruGJ9WBQiJwMtIElFw==", "dev": true, "requires": { "@sinonjs/commons": "^1.0.2", @@ -3742,14 +3742,14 @@ "dev": true }, "sinon": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.3.0.tgz", - "integrity": "sha512-0pYvgRv46fODzT/PByqb79MVNpyxsxf38WEiXTABOF8RfIMcIARfZ+1ORuxwAmHkreZ/jST3UDBdKCRhUy/e1A==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.3.1.tgz", + "integrity": "sha512-eQKMaeWovtOtYe2xThEvaHmmxf870Di+bim10c3ZPrL5bZhLGtu8cz+rOBTFz0CwBV4Q/7dYwZiqZbGVLZ+vjQ==", "dev": true, "requires": { "@sinonjs/commons": "^1.4.0", "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.0", + "@sinonjs/samsam": "^3.3.1", "diff": "^3.5.0", "lolex": "^3.1.0", "nise": "^1.4.10", diff --git a/package.json b/package.json index cfe1af02..56733f85 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.3", "mocha": "6.0.2", "nyc": "13.3.0", - "sinon": "7.3.0" + "sinon": "7.3.1" } } From 76b2d499072056d5ce87d0a0116bff2636ff64a6 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 30 Mar 2019 04:44:50 +0000 Subject: [PATCH 051/110] chore(deps): update dependency eslint to v5.16.0 --- package-lock.json | 30 ++++++++++++++++++++---------- package.json | 2 +- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index de9cb1a1..c52ee2f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -818,9 +818,9 @@ "dev": true }, "eslint": { - "version": "5.15.3", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.15.3.tgz", - "integrity": "sha512-vMGi0PjCHSokZxE0NLp2VneGw5sio7SSiDNgIUn2tC0XkWJRNOIoHIg3CliLVfXnJsiHxGAYrkw0PieAu8+KYQ==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -843,7 +843,7 @@ "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "inquirer": "^6.2.2", - "js-yaml": "^3.12.0", + "js-yaml": "^3.13.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", "lodash": "^4.17.11", @@ -870,6 +870,16 @@ "ms": "^2.1.1" } }, + "js-yaml": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", + "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", @@ -877,9 +887,9 @@ "dev": true }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "dev": true } } @@ -3426,9 +3436,9 @@ "dev": true }, "parent-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz", - "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" diff --git a/package.json b/package.json index 56733f85..108c7af1 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.3", - "eslint": "5.15.3", + "eslint": "5.16.0", "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "6.0.2", From 00f5031593213fa04616e6d20b23a4d5888eedce Mon Sep 17 00:00:00 2001 From: Ash Searle Date: Fri, 1 Mar 2019 23:15:08 +0000 Subject: [PATCH 052/110] Fix: stroke-width interpreted as width --- lib/types/svg.js | 6 +++--- specs/images/valid/svg/ignore-stroke-width.svg | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 specs/images/valid/svg/ignore-stroke-width.svg diff --git a/lib/types/svg.js b/lib/types/svg.js index 0aa1c8b9..83217366 100644 --- a/lib/types/svg.js +++ b/lib/types/svg.js @@ -7,9 +7,9 @@ function isSVG (buffer) { var extractorRegExps = { 'root': svgReg, - 'width': /\bwidth=(['"])([^%]+?)\1/, - 'height': /\bheight=(['"])([^%]+?)\1/, - 'viewbox': /\bviewBox=(['"])(.+?)\1/ + 'width': /\swidth=(['"])([^%]+?)\1/, + 'height': /\sheight=(['"])([^%]+?)\1/, + 'viewbox': /\sviewBox=(['"])(.+?)\1/ }; var units = { diff --git a/specs/images/valid/svg/ignore-stroke-width.svg b/specs/images/valid/svg/ignore-stroke-width.svg new file mode 100644 index 00000000..2cb11e88 --- /dev/null +++ b/specs/images/valid/svg/ignore-stroke-width.svg @@ -0,0 +1,5 @@ + + + + From 22ed5a423e940541ae20875368606722017000e1 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 2 Apr 2019 13:49:17 +0200 Subject: [PATCH 053/110] npm audit fix --- package-lock.json | 148 ++++++++++++++++++++++------------------------ 1 file changed, 71 insertions(+), 77 deletions(-) diff --git a/package-lock.json b/package-lock.json index c52ee2f8..63a0471b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,14 +14,14 @@ } }, "@babel/generator": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.2.tgz", - "integrity": "sha512-f3QCuPppXxtZOEm5GWPra/uYUjmNQlu9pbAD8D/9jze4pTY83rTtB1igTBSwvkeNlC5gR24zFFkz+2WHLFQhqQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", + "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", "dev": true, "requires": { - "@babel/types": "^7.3.2", + "@babel/types": "^7.4.0", "jsesc": "^2.5.1", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "source-map": "^0.5.0", "trim-right": "^1.0.1" } @@ -47,12 +47,12 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", - "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", + "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.4.0" } }, "@babel/highlight": { @@ -75,37 +75,37 @@ } }, "@babel/parser": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.2.tgz", - "integrity": "sha512-QzNUC2RO1gadg+fs21fi0Uu0OuGNzRKEmgCxoLNzbCdoprLwjfmZwzUrpUNfJPaVRwBpDY47A17yYEGWyRelnQ==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.2.tgz", + "integrity": "sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==", "dev": true }, "@babel/template": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", - "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", + "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0" } }, "@babel/traverse": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.2.3.tgz", - "integrity": "sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.0.tgz", + "integrity": "sha512-/DtIHKfyg2bBKnIN+BItaIlEg5pjAnzHOIQe5w+rHAw/rg9g0V7T4rqPX8BJPfW11kt3koyjAnTNwCzb28Y1PA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.2.2", + "@babel/generator": "^7.4.0", "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.2.3", - "@babel/types": "^7.2.2", + "@babel/helper-split-export-declaration": "^7.4.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0", "debug": "^4.1.0", "globals": "^11.1.0", - "lodash": "^4.17.10" + "lodash": "^4.17.11" }, "dependencies": { "debug": { @@ -116,23 +116,17 @@ "requires": { "ms": "^2.1.1" } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true } } }, "@babel/types": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.2.tgz", - "integrity": "sha512-3Y6H8xlUlpbGR+XvawiH0UXehqydTmNmEpozWcXymqwcrwYAl5KMvKtQ+TF6f6E08V6Jur7v/ykdDSF+WDEIXQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", "dev": true, "requires": { "esutils": "^2.0.2", - "lodash": "^4.17.10", + "lodash": "^4.17.11", "to-fast-properties": "^2.0.0" } }, @@ -234,7 +228,7 @@ "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", "dev": true, "requires": { "sprintf-js": "~1.0.2" @@ -273,7 +267,7 @@ "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", "dev": true, "requires": { "safer-buffer": "~2.1.0" @@ -318,7 +312,7 @@ "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8=", "dev": true }, "balanced-match": { @@ -433,7 +427,7 @@ "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", "dev": true }, "cache-base": { @@ -474,7 +468,7 @@ "chalk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -485,7 +479,7 @@ "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -749,7 +743,7 @@ "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", "dev": true }, "doctrine": { @@ -913,7 +907,7 @@ "eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "integrity": "sha1-PzGA+y4pEBdxastMnW1bXDSmqB0=", "dev": true }, "espree": { @@ -936,7 +930,7 @@ "esquery": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "integrity": "sha1-QGxRZYsfWZGl+bYrHcJbAOPlxwg=", "dev": true, "requires": { "estraverse": "^4.0.0" @@ -945,7 +939,7 @@ "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", "dev": true, "requires": { "estraverse": "^4.1.0" @@ -1046,7 +1040,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=", "dev": true }, "extend-shallow": { @@ -1349,7 +1343,7 @@ "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1393,7 +1387,7 @@ "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", "dev": true }, "har-schema": { @@ -1494,7 +1488,7 @@ "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" @@ -1805,15 +1799,15 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==", "dev": true }, "istanbul-lib-instrument": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz", - "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.1.tgz", + "integrity": "sha512-nK0CAimDTrOcHGwyIr6P+iezATI0DhU8BD6wIrWWooXN+vvsPFVca0jtdX3hjnls3aMuWAvWy794NY47/Ql3gg==", "dev": true, "requires": { "@babel/generator": "^7.0.0", @@ -1821,14 +1815,14 @@ "@babel/template": "^7.0.0", "@babel/traverse": "^7.0.0", "@babel/types": "^7.0.0", - "istanbul-lib-coverage": "^2.0.3", + "istanbul-lib-coverage": "^2.0.4", "semver": "^5.5.0" } }, "js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", + "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -1931,15 +1925,15 @@ } }, "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, "log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", + "integrity": "sha1-Y7lQIfBwL+36LJuwok53l9cYcdg=", "dev": true }, "log-symbols": { @@ -2031,13 +2025,13 @@ "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -3264,7 +3258,7 @@ "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=", "dev": true }, "object-copy": { @@ -3538,7 +3532,7 @@ "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=", "dev": true }, "regex-not": { @@ -3572,7 +3566,7 @@ "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -3677,7 +3671,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", "dev": true }, "safe-regex": { @@ -3692,7 +3686,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", "dev": true }, "semver": { @@ -3980,7 +3974,7 @@ "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -4078,7 +4072,7 @@ "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", "dev": true, "requires": { "os-tmpdir": "~1.0.2" @@ -4135,7 +4129,7 @@ "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=", "dev": true, "requires": { "psl": "^1.1.24", @@ -4181,7 +4175,7 @@ "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "integrity": "sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw=", "dev": true }, "union-value": { @@ -4268,7 +4262,7 @@ "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", "dev": true, "requires": { "punycode": "^2.1.0" @@ -4297,7 +4291,7 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=", "dev": true }, "verror": { @@ -4314,7 +4308,7 @@ "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", "dev": true, "requires": { "isexe": "^2.0.0" From 9b9b9cf7c02fd0ad7b637194f70cf214b6dd249f Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 2 Apr 2019 13:49:48 +0200 Subject: [PATCH 054/110] 0.7.3 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 63a0471b..2ec3d17c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.7.2", + "version": "0.7.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 108c7af1..a3051fe3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.7.2", + "version": "0.7.3", "description": "get dimensions of any image file", "main": "lib/index.js", "files": [ From c53fab62fd060ca9747ca5d4208e31d551699577 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 8 Apr 2019 18:43:23 +0000 Subject: [PATCH 055/110] chore(deps): update dependency mocha to v6.1.2 --- package-lock.json | 1354 +++++---------------------------------------- package.json | 2 +- 2 files changed, 125 insertions(+), 1231 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2ec3d17c..46a790fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -234,36 +234,12 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, "array-from": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", "dev": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -279,12 +255,6 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -297,12 +267,6 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -321,61 +285,6 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -395,58 +304,12 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, "callsites": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", @@ -454,9 +317,9 @@ "dev": true }, "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "caseless": { @@ -502,29 +365,6 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -557,16 +397,6 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", @@ -591,24 +421,12 @@ "delayed-stream": "~1.0.0" } }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -666,12 +484,6 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -687,59 +499,12 @@ "object-keys": "^1.0.12" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -972,65 +737,6 @@ "strip-eof": "^1.0.0" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "expect.js": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz", @@ -1043,27 +749,6 @@ "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=", "dev": true }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "external-editor": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", @@ -1075,71 +760,6 @@ "tmp": "^0.0.33" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -1182,29 +802,6 @@ "flat-cache": "^2.0.1" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -1214,18 +811,6 @@ "locate-path": "^3.0.0" } }, - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, "flat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", @@ -1233,14 +818,6 @@ "dev": true, "requires": { "is-buffer": "~2.0.3" - }, - "dependencies": { - "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", - "dev": true - } } }, "flat-cache": { @@ -1260,12 +837,6 @@ "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", "dev": true }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -1283,15 +854,6 @@ "mime-types": "^2.1.12" } }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1311,9 +873,9 @@ "dev": true }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-stream": { @@ -1325,12 +887,6 @@ "pump": "^3.0.0" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -1354,30 +910,6 @@ "path-is-absolute": "^1.0.0" } }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, "globals": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", @@ -1427,53 +959,12 @@ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -1532,12 +1023,6 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, "inquirer": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", @@ -1599,30 +1084,10 @@ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", + "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", "dev": true }, "is-callable": { @@ -1631,107 +1096,18 @@ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", "dev": true }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", @@ -1768,12 +1144,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -1786,12 +1156,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -1883,12 +1247,6 @@ "integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==", "dev": true }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", @@ -1960,51 +1318,23 @@ "p-defer": "^1.0.0" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", + "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } } }, "mime-db": { @@ -2043,27 +1373,6 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, - "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -2082,9 +1391,9 @@ } }, "mocha": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.0.2.tgz", - "integrity": "sha512-RtTJsmmToGyeTznSOMoM6TPEk1A84FQaHIciKrRqARZx+B5ccJ5tXlmJzEKGBxZdqk9UjpRsesZTUkZmR5YnuQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.2.tgz", + "integrity": "sha512-BgD2/RozoSC3uQK5R0isDcxjqaWw2n5HWdk8njYUyZf2NC79ErO5FtYVX52+rfqGoEgMfJf4fuG0IWh2TMzFoA==", "dev": true, "requires": { "ansi-colors": "3.2.3", @@ -2092,11 +1401,11 @@ "debug": "3.2.6", "diff": "3.5.0", "escape-string-regexp": "1.0.5", - "findup-sync": "2.0.0", + "find-up": "3.0.0", "glob": "7.1.3", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.12.0", + "js-yaml": "3.13.0", "log-symbols": "2.2.0", "minimatch": "3.0.4", "mkdirp": "0.5.1", @@ -2107,21 +1416,11 @@ "supports-color": "6.0.0", "which": "1.3.1", "wide-align": "1.1.3", - "yargs": "12.0.5", - "yargs-parser": "11.1.1", + "yargs": "13.2.2", + "yargs-parser": "13.0.0", "yargs-unparser": "1.5.0" }, "dependencies": { - "js-yaml": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", - "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "supports-color": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", @@ -2145,25 +1444,6 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -3261,52 +2541,12 @@ "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=", "dev": true }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "object-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", - "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", @@ -3329,15 +2569,6 @@ "es-abstract": "^1.5.1" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3400,15 +2631,15 @@ "dev": true }, "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -3424,9 +2655,9 @@ } }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "parent-module": { @@ -3438,18 +2669,6 @@ "callsites": "^3.0.0" } }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -3489,12 +2708,6 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -3535,34 +2748,12 @@ "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=", "dev": true }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", @@ -3598,33 +2789,17 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -3635,12 +2810,6 @@ "signal-exit": "^3.0.2" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -3674,15 +2843,6 @@ "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", "dev": true }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -3701,29 +2861,6 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, - "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -3771,162 +2908,12 @@ "is-fullwidth-code-point": "^2.0.0" } }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -3950,27 +2937,6 @@ "tweetnacl": "~0.14.0" } }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -4084,48 +3050,6 @@ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -4178,87 +3102,6 @@ "integrity": "sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw=", "dev": true }, - "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } - } - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - } - } - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -4276,18 +3119,6 @@ } } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -4404,29 +3235,56 @@ "dev": true }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", + "integrity": "sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==", "dev": true, "requires": { "cliui": "^4.0.0", - "decamelize": "^1.2.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^13.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.0.0.tgz", + "integrity": "sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -4444,11 +3302,47 @@ "yargs": "^12.0.5" }, "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } } diff --git a/package.json b/package.json index a3051fe3..107a0ef7 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "eslint": "5.16.0", "expect.js": "0.3.1", "glob": "7.1.3", - "mocha": "6.0.2", + "mocha": "6.1.2", "nyc": "13.3.0", "sinon": "7.3.1" } From d6ed0c04f069ccfc4c8692a916aec621ac2482d3 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 12 Apr 2019 00:15:16 +0000 Subject: [PATCH 056/110] chore(deps): update dependency mocha to v6.1.3 --- package-lock.json | 25 +++++++++++++++++-------- package.json | 2 +- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 46a790fc..0d5de824 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1391,9 +1391,9 @@ } }, "mocha": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.2.tgz", - "integrity": "sha512-BgD2/RozoSC3uQK5R0isDcxjqaWw2n5HWdk8njYUyZf2NC79ErO5FtYVX52+rfqGoEgMfJf4fuG0IWh2TMzFoA==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.3.tgz", + "integrity": "sha512-QdE/w//EPHrqgT5PNRUjRVHy6IJAzAf1R8n2O8W8K2RZ+NbPfOD5cBDp+PGa2Gptep37C/TdBiaNwakppEzEbg==", "dev": true, "requires": { "ansi-colors": "3.2.3", @@ -1410,7 +1410,7 @@ "minimatch": "3.0.4", "mkdirp": "0.5.1", "ms": "2.1.1", - "node-environment-flags": "1.0.4", + "node-environment-flags": "1.0.5", "object.assign": "4.1.0", "strip-json-comments": "2.0.1", "supports-color": "6.0.0", @@ -1478,12 +1478,21 @@ } }, "node-environment-flags": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.4.tgz", - "integrity": "sha512-M9rwCnWVLW7PX+NUWe3ejEdiLYinRpsEre9hMkU/6NS4h+EEulYaDH1gCEZ2gyXsmw+RXYDaV2JkkTNcsPDJ0Q==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", + "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", "dev": true, "requires": { - "object.getownpropertydescriptors": "^2.0.3" + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } } }, "npm-run-path": { diff --git a/package.json b/package.json index 107a0ef7..eb4edea0 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "eslint": "5.16.0", "expect.js": "0.3.1", "glob": "7.1.3", - "mocha": "6.1.2", + "mocha": "6.1.3", "nyc": "13.3.0", "sinon": "7.3.1" } From 49b01c622f4175ee0e40f9adc00451a48cb5bee3 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 17 Apr 2019 16:20:41 +0000 Subject: [PATCH 057/110] chore(deps): update dependency sinon to v7.3.2 --- package-lock.json | 24 ++++++++---------------- package.json | 2 +- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0d5de824..d16def81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -158,14 +158,6 @@ "@sinonjs/commons": "^1.0.2", "array-from": "^2.1.1", "lodash": "^4.17.11" - }, - "dependencies": { - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true - } } }, "@sinonjs/text-encoding": { @@ -1304,9 +1296,9 @@ } }, "lolex": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-3.1.0.tgz", - "integrity": "sha512-zFo5MgCJ0rZ7gQg69S4pqBsLURbFw11X68C18OcJjJQbqaXm2NoTrGl1IMM3TIz0/BnN1tIs2tzmmqvCsOMMjw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.0.1.tgz", + "integrity": "sha512-UHuOBZ5jjsKuzbB/gRNNW8Vg8f00Emgskdq2kvZxgBJCS0aqquAuXai/SkWORlKeZEiNQWZjFZOqIUcH9LqKCw==", "dev": true }, "map-age-cleaner": { @@ -2892,16 +2884,16 @@ "dev": true }, "sinon": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.3.1.tgz", - "integrity": "sha512-eQKMaeWovtOtYe2xThEvaHmmxf870Di+bim10c3ZPrL5bZhLGtu8cz+rOBTFz0CwBV4Q/7dYwZiqZbGVLZ+vjQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.3.2.tgz", + "integrity": "sha512-thErC1z64BeyGiPvF8aoSg0LEnptSaWE7YhdWWbWXgelOyThent7uKOnnEh9zBxDbKixtr5dEko+ws1sZMuFMA==", "dev": true, "requires": { "@sinonjs/commons": "^1.4.0", "@sinonjs/formatio": "^3.2.1", "@sinonjs/samsam": "^3.3.1", "diff": "^3.5.0", - "lolex": "^3.1.0", + "lolex": "^4.0.1", "nise": "^1.4.10", "supports-color": "^5.5.0" } @@ -3108,7 +3100,7 @@ "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw=", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, "uri-js": { diff --git a/package.json b/package.json index eb4edea0..7ff02c21 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.3", "mocha": "6.1.3", "nyc": "13.3.0", - "sinon": "7.3.1" + "sinon": "7.3.2" } } From cc857264dd64fde2b3871d880f714d16f951a71b Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 18 Apr 2019 10:30:36 +0000 Subject: [PATCH 058/110] chore(deps): update dependency nyc to v14 --- package-lock.json | 1739 +++++++++++++++++---------------------------- package.json | 2 +- 2 files changed, 665 insertions(+), 1076 deletions(-) diff --git a/package-lock.json b/package-lock.json index d16def81..efa253b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -75,9 +75,9 @@ } }, "@babel/parser": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.2.tgz", - "integrity": "sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", + "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", "dev": true }, "@babel/template": { @@ -92,16 +92,16 @@ } }, "@babel/traverse": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.0.tgz", - "integrity": "sha512-/DtIHKfyg2bBKnIN+BItaIlEg5pjAnzHOIQe5w+rHAw/rg9g0V7T4rqPX8BJPfW11kt3koyjAnTNwCzb28Y1PA==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", + "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/generator": "^7.4.0", "@babel/helper-function-name": "^7.1.0", "@babel/helper-split-export-declaration": "^7.4.0", - "@babel/parser": "^7.4.0", + "@babel/parser": "^7.4.3", "@babel/types": "^7.4.0", "debug": "^4.1.0", "globals": "^11.1.0", @@ -217,6 +217,21 @@ "color-convert": "^1.9.0" } }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -302,6 +317,18 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, + "caching-transform": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", + "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", + "dev": true, + "requires": { + "hasha": "^3.0.0", + "make-dir": "^2.0.0", + "package-hash": "^3.0.0", + "write-file-atomic": "^2.4.2" + } + }, "callsites": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", @@ -413,12 +440,34 @@ "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true, + "optional": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -439,6 +488,19 @@ "request": "^2.86.0" } }, + "cp-file": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", + "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "make-dir": "^2.0.0", + "nested-error-stacks": "^2.0.0", + "pify": "^4.0.1", + "safe-buffer": "^5.0.1" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -482,6 +544,15 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + } + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -537,6 +608,15 @@ "once": "^1.4.0" } }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, "es-abstract": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", @@ -562,6 +642,12 @@ "is-symbol": "^1.0.2" } }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -794,6 +880,17 @@ "flat-cache": "^2.0.1" } }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -829,6 +926,28 @@ "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", "dev": true }, + "foreground-child": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "dev": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.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" + } + } + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -908,12 +1027,38 @@ "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", "dev": true }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", "dev": true }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -951,12 +1096,27 @@ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, + "hasha": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", + "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", + "dev": true, + "requires": { + "is-stream": "^1.0.1" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -1076,6 +1236,12 @@ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, "is-buffer": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", @@ -1160,10 +1326,19 @@ "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==", "dev": true }, + "istanbul-lib-hook": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.6.tgz", + "integrity": "sha512-829DKONApZ7UCiPXcOYWSgkFXa4+vNYoNOt3F+4uDJLKL1OotAoVwvThoEj1i8jmOj7odbYcR3rnaHu+QroaXg==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, "istanbul-lib-instrument": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.1.tgz", - "integrity": "sha512-nK0CAimDTrOcHGwyIr6P+iezATI0DhU8BD6wIrWWooXN+vvsPFVca0jtdX3hjnls3aMuWAvWy794NY47/Ql3gg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.2.0.tgz", + "integrity": "sha512-06IM3xShbNW4NgZv5AP4QH0oHqf1/ivFo8eFys0ZjPXHGldHJQWb3riYOKXqmOqfxXBfxu4B+g/iuhOPZH0RJg==", "dev": true, "requires": { "@babel/generator": "^7.0.0", @@ -1172,7 +1347,76 @@ "@babel/traverse": "^7.0.0", "@babel/types": "^7.0.0", "istanbul-lib-coverage": "^2.0.4", - "semver": "^5.5.0" + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.7.tgz", + "integrity": "sha512-wLH6beJBFbRBLiTlMOBxmb85cnVM1Vyl36N48e4e/aTKSM3WbOx7zbVIH1SQ537fhhsPbX0/C5JB4qsmyRXXyA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.4", + "make-dir": "^2.1.0", + "supports-color": "^6.0.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.5.tgz", + "integrity": "sha512-eDhZ7r6r1d1zQPVZehLc3D0K14vRba/eBYkz3rw16DLOrrTzve9RmnkcwrrkWVgO1FL3EK5knujVe5S8QHE9xw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.4", + "make-dir": "^2.1.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.3.tgz", + "integrity": "sha512-T6EbPuc8Cb620LWAYyZ4D8SSn06dY9i1+IgUX2lTH8gbwflMc9Obd33zHTyNX653ybjpamAHS9toKS3E6cGhTw==", + "dev": true, + "requires": { + "handlebars": "^4.1.0" } }, "js-yaml": { @@ -1197,6 +1441,12 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -1264,6 +1514,26 @@ "type-check": "~0.3.2" } }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -1280,6 +1550,12 @@ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "dev": true + }, "log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", @@ -1301,6 +1577,34 @@ "integrity": "sha512-UHuOBZ5jjsKuzbB/gRNNW8Vg8f00Emgskdq2kvZxgBJCS0aqquAuXai/SkWORlKeZEiNQWZjFZOqIUcH9LqKCw==", "dev": true }, + "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" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -1329,6 +1633,23 @@ } } }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "mime-db": { "version": "1.38.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", @@ -1442,6 +1763,18 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, + "nested-error-stacks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", + "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", + "dev": true + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -1487,6 +1820,18 @@ } } }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -1503,1091 +1848,113 @@ "dev": true }, "nyc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.3.0.tgz", - "integrity": "sha512-P+FwIuro2aFG6B0Esd9ZDWUd51uZrAEoGutqZxzrVmYl3qSfkLgcQpBPBjtDFsUQLFY1dvTQJPOyeqr8S9GF8w==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.0.0.tgz", + "integrity": "sha512-R1zC6UZak6pzn5BZQorkSH5GdOGafrwyeja+eimS5Tu+KJ/hCgBc8qA1QWSzxQmT2FDl2lbpqPw7tBDbSvhAHg==", "dev": true, "requires": { "archy": "^1.0.0", - "arrify": "^1.0.1", - "caching-transform": "^3.0.1", + "caching-transform": "^3.0.2", "convert-source-map": "^1.6.0", - "find-cache-dir": "^2.0.0", + "cp-file": "^6.2.0", + "find-cache-dir": "^2.1.0", "find-up": "^3.0.0", "foreground-child": "^1.5.6", "glob": "^7.1.3", - "istanbul-lib-coverage": "^2.0.3", - "istanbul-lib-hook": "^2.0.3", - "istanbul-lib-instrument": "^3.1.0", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.2", - "istanbul-reports": "^2.1.1", - "make-dir": "^1.3.0", + "istanbul-lib-coverage": "^2.0.4", + "istanbul-lib-hook": "^2.0.6", + "istanbul-lib-instrument": "^3.2.0", + "istanbul-lib-report": "^2.0.7", + "istanbul-lib-source-maps": "^3.0.5", + "istanbul-reports": "^2.2.2", + "make-dir": "^2.1.0", "merge-source-map": "^1.1.0", "resolve-from": "^4.0.0", "rimraf": "^2.6.3", "signal-exit": "^3.0.2", "spawn-wrap": "^1.4.2", - "test-exclude": "^5.1.0", + "test-exclude": "^5.2.2", "uuid": "^3.3.2", - "yargs": "^12.0.5", - "yargs-parser": "^11.1.1" + "yargs": "^13.2.2", + "yargs-parser": "^13.0.0" + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "append-transform": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "default-require-extensions": "^2.0.0" - } - }, - "archy": { - "version": "1.0.0", - "bundled": true, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", "dev": true }, - "arrify": { - "version": "1.0.1", - "bundled": true, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true - }, - "async": { - "version": "2.6.2", - "bundled": true, - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "caching-transform": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "hasha": "^3.0.0", - "make-dir": "^1.3.0", - "package-hash": "^3.0.0", - "write-file-atomic": "^2.3.0" - } - }, - "camelcase": { - "version": "5.0.0", - "bundled": true, - "dev": true - }, - "cliui": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "commander": { - "version": "2.17.1", - "bundled": true, - "dev": true, - "optional": true - }, - "commondir": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "convert-source-map": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cross-spawn": { - "version": "4.0.2", - "bundled": true, - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "decamelize": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "default-require-extensions": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "strip-bom": "^3.0.0" - } - }, - "end-of-stream": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "bundled": true, - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es6-error": { - "version": "4.1.1", - "bundled": true, - "dev": true - }, - "execa": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "bundled": true, - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } - } - }, - "find-cache-dir": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^3.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "foreground-child": { - "version": "1.5.6", - "bundled": true, - "dev": true, - "requires": { - "cross-spawn": "^4", - "signal-exit": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "get-caller-file": { - "version": "1.0.3", - "bundled": true, - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.15", - "bundled": true, - "dev": true - }, - "handlebars": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "async": "^2.5.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true - } - } - }, - "has-flag": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "hasha": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "is-stream": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "bundled": true, - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "bundled": true, - "dev": true - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "invert-kv": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "isexe": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "istanbul-lib-coverage": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "istanbul-lib-hook": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "requires": { - "append-transform": "^1.0.0" - } - }, - "istanbul-lib-report": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "requires": { - "istanbul-lib-coverage": "^2.0.3", - "make-dir": "^1.3.0", - "supports-color": "^6.0.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "bundled": true, - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.3", - "make-dir": "^1.3.0", - "rimraf": "^2.6.2", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true - } - } - }, - "istanbul-reports": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "handlebars": "^4.1.0" - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "lcid": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "load-json-file": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "bundled": true, - "dev": true - }, - "lodash.flattendeep": { - "version": "4.4.0", - "bundled": true, - "dev": true - }, - "lru-cache": { - "version": "4.1.5", - "bundled": true, - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "1.3.0", - "bundled": true, - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "map-age-cleaner": { - "version": "0.1.3", - "bundled": true, - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "mem": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" - } - }, - "merge-source-map": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true - } - } - }, - "mimic-fn": { - "version": "1.2.0", - "bundled": true, - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.10", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - } - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "bundled": true, - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "bundled": true, - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "npm-run-path": { - "version": "2.0.2", - "bundled": true, - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-defer": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "p-is-promise": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "p-limit": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "package-hash": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^3.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-exists": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "path-key": { - "version": "2.0.1", - "bundled": true, - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "bundled": true, - "dev": true - }, - "path-type": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "pkg-dir": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "pseudomap": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "pump": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "read-pkg": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" - } - }, - "release-zalgo": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, - "require-directory": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "resolve": { - "version": "1.10.0", - "bundled": true, - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true - }, - "semver": { - "version": "5.6.0", - "bundled": true, - "dev": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true - }, - "spawn-wrap": { - "version": "1.4.2", - "bundled": true, - "dev": true, - "requires": { - "foreground-child": "^1.5.6", - "mkdirp": "^0.5.0", - "os-homedir": "^1.0.1", - "rimraf": "^2.6.2", - "signal-exit": "^3.0.2", - "which": "^1.3.0" - } - }, - "spdx-correct": { - "version": "3.1.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "bundled": true, - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "bundled": true, - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.3", - "bundled": true, - "dev": true - }, - "string-width": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "bundled": true, - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "test-exclude": { - "version": "5.1.0", - "bundled": true, - "dev": true, - "requires": { - "arrify": "^1.0.1", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^1.0.1" - } - }, - "uglify-js": { - "version": "3.4.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "commander": "~2.17.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "uuid": { - "version": "3.3.2", - "bundled": true, - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "bundled": true, - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "bundled": true, - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "bundled": true, - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "bundled": true, - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "write-file-atomic": { - "version": "2.4.2", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "y18n": { - "version": "4.0.0", - "bundled": true, - "dev": true - }, - "yallist": { - "version": "2.1.2", - "bundled": true, - "dev": true - }, - "yargs": { - "version": "12.0.5", - "bundled": true, - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "bundled": true, - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -2602,6 +1969,12 @@ "wordwrap": "~1.0.0" } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", @@ -2661,6 +2034,18 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "package-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", + "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^3.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -2670,6 +2055,16 @@ "callsites": "^3.0.0" } }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -2694,6 +2089,12 @@ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, "path-to-regexp": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", @@ -2703,12 +2104,44 @@ "isarray": "0.0.1" } }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -2721,6 +2154,12 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", @@ -2749,12 +2188,42 @@ "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=", "dev": true }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, + "release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", @@ -2795,6 +2264,15 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2915,6 +2393,52 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, + "spawn-wrap": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "dev": true, + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + } + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", + "dev": true + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -2957,6 +2481,12 @@ "ansi-regex": "^3.0.0" } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", @@ -3024,6 +2554,18 @@ } } }, + "test-exclude": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.2.tgz", + "integrity": "sha512-N2pvaLpT8guUpb5Fe1GJlmvmzH3x+DAKmmyEQmFP792QcLYoGE1syxztSvPD1V8yPe6VrcCt6YGQVjSRjCASsA==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3103,6 +2645,26 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, + "uglify-js": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.4.tgz", + "integrity": "sha512-GpKo28q/7Bm5BcX9vOu4S46FwisbPbAmkkqPnGIpKvKTM96I85N6XHQV+k4I6FA2wxgLhcsSyHoNhzucwCflvA==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -3126,6 +2688,16 @@ "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=", "dev": true }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -3229,12 +2801,29 @@ "mkdirp": "^0.5.1" } }, + "write-file-atomic": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", + "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", "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.2.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.2.tgz", diff --git a/package.json b/package.json index 7ff02c21..ba54e9ec 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "6.1.3", - "nyc": "13.3.0", + "nyc": "14.0.0", "sinon": "7.3.2" } } From a7646be8842027874da4bc845f4ccd6f559917a7 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 18 Apr 2019 18:35:27 +0000 Subject: [PATCH 059/110] chore(deps): update dependency mocha to v6.1.4 --- package-lock.json | 18 ++++++++++++++---- package.json | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index efa253b1..2182b0d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1704,9 +1704,9 @@ } }, "mocha": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.3.tgz", - "integrity": "sha512-QdE/w//EPHrqgT5PNRUjRVHy6IJAzAf1R8n2O8W8K2RZ+NbPfOD5cBDp+PGa2Gptep37C/TdBiaNwakppEzEbg==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz", + "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==", "dev": true, "requires": { "ansi-colors": "3.2.3", @@ -1718,7 +1718,7 @@ "glob": "7.1.3", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.13.0", + "js-yaml": "3.13.1", "log-symbols": "2.2.0", "minimatch": "3.0.4", "mkdirp": "0.5.1", @@ -1734,6 +1734,16 @@ "yargs-unparser": "1.5.0" }, "dependencies": { + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "supports-color": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", diff --git a/package.json b/package.json index ba54e9ec..fa3f48e1 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "eslint": "5.16.0", "expect.js": "0.3.1", "glob": "7.1.3", - "mocha": "6.1.3", + "mocha": "6.1.4", "nyc": "14.0.0", "sinon": "7.3.2" } From 5f26f64398aca31c6dcb9c8e97886f4ababdb209 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 23 Apr 2019 14:07:24 +0200 Subject: [PATCH 060/110] jpeg: ignore empty EXIF blocks fix the regression from #150 --- lib/types/jpg.js | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/lib/types/jpg.js b/lib/types/jpg.js index 92b70034..9196cdfc 100644 --- a/lib/types/jpg.js +++ b/lib/types/jpg.js @@ -28,19 +28,29 @@ var APP1_DATA_SIZE_BYTES = 2; var EXIF_HEADER_BYTES = 6; var TIFF_BYTE_ALIGN_BYTES = 2; var BIG_ENDIAN_BYTE_ALIGN = '4d4d'; +var LITTLE_ENDIAN_BYTE_ALIGN = '4949'; // Each entry is exactly 12 bytes var IDF_ENTRY_BYTES = 12; var NUM_DIRECTORY_ENTRIES_BYTES = 2; -function extractOrientation (buffer, i) { +function validateExifBlock (buffer, i) { // Skip APP1 Data Size var exifBlock = buffer.slice(APP1_DATA_SIZE_BYTES, i); // Consider byte alignment var byteAlign = exifBlock.toString('hex', EXIF_HEADER_BYTES, EXIF_HEADER_BYTES + TIFF_BYTE_ALIGN_BYTES); - var bigEndian = byteAlign === BIG_ENDIAN_BYTE_ALIGN; + // Ignore Empty EXIF. Validate byte alignment + var isBigEndian = byteAlign === BIG_ENDIAN_BYTE_ALIGN; + var isLittleEndian = byteAlign === LITTLE_ENDIAN_BYTE_ALIGN; + + if (isBigEndian || isLittleEndian) { + return extractOrientation(exifBlock, isBigEndian); + } +} + +function extractOrientation (exifBlock, isBigEndian) { // TODO: assert that this contains 0x002A // var STATIC_MOTOROLA_TIFF_HEADER_BYTES = 2; // var TIFF_IMAGE_FILE_DIRECTORY_BYTES = 4; @@ -52,7 +62,7 @@ function extractOrientation (buffer, i) { // (so the offset includes the tiff byte align) var offset = EXIF_HEADER_BYTES + idfOffset; - var idfDirectoryEntries = readUInt(exifBlock, 16, offset, bigEndian); + var idfDirectoryEntries = readUInt(exifBlock, 16, offset, isBigEndian); var start; var end; @@ -61,25 +71,23 @@ function extractOrientation (buffer, i) { end = start + IDF_ENTRY_BYTES; var block = exifBlock.slice(start, end); - var tagNumber = readUInt(block, 16, 0, bigEndian); + var tagNumber = readUInt(block, 16, 0, isBigEndian); // 0x0112 (decimal: 274) is the `orientation` tag ID if (tagNumber === 274) { - var dataFormat = readUInt(block, 16, 2, bigEndian); + var dataFormat = readUInt(block, 16, 2, isBigEndian); if (dataFormat !== 3) { return; } // unsinged int has 2 bytes per component // if there would more than 4 bytes in total it's a pointer - var numberOfComponents = readUInt(block, 32, 4, bigEndian); + var numberOfComponents = readUInt(block, 32, 4, isBigEndian); if (numberOfComponents !== 1) { return; } - var orientation = readUInt(block, 16, 8, bigEndian); - - return orientation; + return readUInt(block, 16, 8, isBigEndian); } } } @@ -106,9 +114,8 @@ function calculate (buffer) { // read length of the next block i = buffer.readUInt16BE(0); - if (isEXIF(buffer)) { - orientation = extractOrientation(buffer, i); + orientation = validateExifBlock(buffer, i); } // ensure correct format From b2dd91a7a13777c3cb0777bb62d4f9af7c90f65c Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 23 Apr 2019 14:21:25 +0200 Subject: [PATCH 061/110] 0.7.4 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2182b0d8..5c707346 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.7.3", + "version": "0.7.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index fa3f48e1..0cc6a4fd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.7.3", + "version": "0.7.4", "description": "get dimensions of any image file", "main": "lib/index.js", "files": [ From 0eb6e83ae022b0bd65f70ac1b9244575ccc2f172 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 2 May 2019 13:00:38 +0000 Subject: [PATCH 062/110] chore(deps): update dependency nyc to v14.1.0 --- package-lock.json | 161 +++++++++++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 88 insertions(+), 75 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5c707346..b253ff63 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,12 +14,12 @@ } }, "@babel/generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", - "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", + "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", "dev": true, "requires": { - "@babel/types": "^7.4.0", + "@babel/types": "^7.4.4", "jsesc": "^2.5.1", "lodash": "^4.17.11", "source-map": "^0.5.0", @@ -47,12 +47,12 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", - "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", "dev": true, "requires": { - "@babel/types": "^7.4.0" + "@babel/types": "^7.4.4" } }, "@babel/highlight": { @@ -75,34 +75,34 @@ } }, "@babel/parser": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", - "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz", + "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==", "dev": true }, "@babel/template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", - "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.0", - "@babel/types": "^7.4.0" + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/traverse": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", - "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz", + "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", + "@babel/generator": "^7.4.4", "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/types": "^7.4.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.11" @@ -120,9 +120,9 @@ } }, "@babel/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", - "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", + "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -1321,32 +1321,32 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true }, "istanbul-lib-hook": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.6.tgz", - "integrity": "sha512-829DKONApZ7UCiPXcOYWSgkFXa4+vNYoNOt3F+4uDJLKL1OotAoVwvThoEj1i8jmOj7odbYcR3rnaHu+QroaXg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", + "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", "dev": true, "requires": { "append-transform": "^1.0.0" } }, "istanbul-lib-instrument": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.2.0.tgz", - "integrity": "sha512-06IM3xShbNW4NgZv5AP4QH0oHqf1/ivFo8eFys0ZjPXHGldHJQWb3riYOKXqmOqfxXBfxu4B+g/iuhOPZH0RJg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "istanbul-lib-coverage": "^2.0.4", + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", "semver": "^6.0.0" }, "dependencies": { @@ -1359,14 +1359,14 @@ } }, "istanbul-lib-report": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.7.tgz", - "integrity": "sha512-wLH6beJBFbRBLiTlMOBxmb85cnVM1Vyl36N48e4e/aTKSM3WbOx7zbVIH1SQ537fhhsPbX0/C5JB4qsmyRXXyA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.4", + "istanbul-lib-coverage": "^2.0.5", "make-dir": "^2.1.0", - "supports-color": "^6.0.0" + "supports-color": "^6.1.0" }, "dependencies": { "supports-color": { @@ -1381,15 +1381,15 @@ } }, "istanbul-lib-source-maps": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.5.tgz", - "integrity": "sha512-eDhZ7r6r1d1zQPVZehLc3D0K14vRba/eBYkz3rw16DLOrrTzve9RmnkcwrrkWVgO1FL3EK5knujVe5S8QHE9xw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "requires": { "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.4", + "istanbul-lib-coverage": "^2.0.5", "make-dir": "^2.1.0", - "rimraf": "^2.6.2", + "rimraf": "^2.6.3", "source-map": "^0.6.1" }, "dependencies": { @@ -1411,12 +1411,12 @@ } }, "istanbul-reports": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.3.tgz", - "integrity": "sha512-T6EbPuc8Cb620LWAYyZ4D8SSn06dY9i1+IgUX2lTH8gbwflMc9Obd33zHTyNX653ybjpamAHS9toKS3E6cGhTw==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.5.tgz", + "integrity": "sha512-ilCSjE6f7elNIRxnSnIhnOpXdf3ryUT7Zkl+TaADItM638SWXjfNW40cujZCIjex4g4DTkzIy9kzwkaLruB50Q==", "dev": true, "requires": { - "handlebars": "^4.1.0" + "handlebars": "^4.1.2" } }, "js-yaml": { @@ -1858,9 +1858,9 @@ "dev": true }, "nyc": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.0.0.tgz", - "integrity": "sha512-R1zC6UZak6pzn5BZQorkSH5GdOGafrwyeja+eimS5Tu+KJ/hCgBc8qA1QWSzxQmT2FDl2lbpqPw7tBDbSvhAHg==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.0.tgz", + "integrity": "sha512-iy9fEV8Emevz3z/AanIZsoGa8F4U2p0JKevZ/F0sk+/B2r9E6Qn+EPs0bpxEhnAt6UPlTL8mQZIaSJy8sK0ZFw==", "dev": true, "requires": { "archy": "^1.0.0", @@ -1871,22 +1871,35 @@ "find-up": "^3.0.0", "foreground-child": "^1.5.6", "glob": "^7.1.3", - "istanbul-lib-coverage": "^2.0.4", - "istanbul-lib-hook": "^2.0.6", - "istanbul-lib-instrument": "^3.2.0", - "istanbul-lib-report": "^2.0.7", - "istanbul-lib-source-maps": "^3.0.5", - "istanbul-reports": "^2.2.2", + "istanbul-lib-coverage": "^2.0.5", + "istanbul-lib-hook": "^2.0.7", + "istanbul-lib-instrument": "^3.3.0", + "istanbul-lib-report": "^2.0.8", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^2.2.4", + "js-yaml": "^3.13.1", "make-dir": "^2.1.0", "merge-source-map": "^1.1.0", "resolve-from": "^4.0.0", "rimraf": "^2.6.3", "signal-exit": "^3.0.2", "spawn-wrap": "^1.4.2", - "test-exclude": "^5.2.2", + "test-exclude": "^5.2.3", "uuid": "^3.3.2", "yargs": "^13.2.2", "yargs-parser": "^13.0.0" + }, + "dependencies": { + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } } }, "oauth-sign": { @@ -2275,9 +2288,9 @@ "dev": true }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", + "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -2565,9 +2578,9 @@ } }, "test-exclude": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.2.tgz", - "integrity": "sha512-N2pvaLpT8guUpb5Fe1GJlmvmzH3x+DAKmmyEQmFP792QcLYoGE1syxztSvPD1V8yPe6VrcCt6YGQVjSRjCASsA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", "dev": true, "requires": { "glob": "^7.1.3", @@ -2656,9 +2669,9 @@ "dev": true }, "uglify-js": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.4.tgz", - "integrity": "sha512-GpKo28q/7Bm5BcX9vOu4S46FwisbPbAmkkqPnGIpKvKTM96I85N6XHQV+k4I6FA2wxgLhcsSyHoNhzucwCflvA==", + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.10.tgz", + "integrity": "sha512-/GTF0nosyPLbdJBd+AwYiZ+Hu5z8KXWnO0WCGt1BQ/u9Iamhejykqmz5o1OHJ53+VAk6xVxychonnApDjuqGsw==", "dev": true, "optional": true, "requires": { diff --git a/package.json b/package.json index 0cc6a4fd..780c9f57 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "expect.js": "0.3.1", "glob": "7.1.3", "mocha": "6.1.4", - "nyc": "14.0.0", + "nyc": "14.1.0", "sinon": "7.3.2" } } From 40c84b81ed83a08c4f6f3290a2dfbf4af335415e Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 8 May 2019 00:49:56 +0000 Subject: [PATCH 063/110] chore(deps): update dependency glob to v7.1.4 --- package-lock.json | 20 +++++++++++++++++--- package.json | 2 +- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index b253ff63..7cf4f22e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1008,9 +1008,9 @@ } }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1734,6 +1734,20 @@ "yargs-unparser": "1.5.0" }, "dependencies": { + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "js-yaml": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", diff --git a/package.json b/package.json index 780c9f57..2b00cf9b 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "coveralls": "3.0.3", "eslint": "5.16.0", "expect.js": "0.3.1", - "glob": "7.1.3", + "glob": "7.1.4", "mocha": "6.1.4", "nyc": "14.1.0", "sinon": "7.3.2" From bc467186c7624b9827b5b11ddac3bb148da0632b Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 10 May 2019 02:28:01 +0000 Subject: [PATCH 064/110] chore(deps): update dependency nyc to v14.1.1 --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7cf4f22e..b6283c26 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1411,9 +1411,9 @@ } }, "istanbul-reports": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.5.tgz", - "integrity": "sha512-ilCSjE6f7elNIRxnSnIhnOpXdf3ryUT7Zkl+TaADItM638SWXjfNW40cujZCIjex4g4DTkzIy9kzwkaLruB50Q==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.4.tgz", + "integrity": "sha512-QCHGyZEK0bfi9GR215QSm+NJwFKEShbtc7tfbUdLAEzn3kKhLDDZqvljn8rPZM9v8CEOhzL1nlYoO4r1ryl67w==", "dev": true, "requires": { "handlebars": "^4.1.2" @@ -1872,9 +1872,9 @@ "dev": true }, "nyc": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.0.tgz", - "integrity": "sha512-iy9fEV8Emevz3z/AanIZsoGa8F4U2p0JKevZ/F0sk+/B2r9E6Qn+EPs0bpxEhnAt6UPlTL8mQZIaSJy8sK0ZFw==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz", + "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==", "dev": true, "requires": { "archy": "^1.0.0", @@ -2683,9 +2683,9 @@ "dev": true }, "uglify-js": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.10.tgz", - "integrity": "sha512-/GTF0nosyPLbdJBd+AwYiZ+Hu5z8KXWnO0WCGt1BQ/u9Iamhejykqmz5o1OHJ53+VAk6xVxychonnApDjuqGsw==", + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.11.tgz", + "integrity": "sha512-izPJg8RsSyqxbdnqX36ExpbH3K7tDBsAU/VfNv89VkMFy3z39zFjunQGsSHOlGlyIfGLGprGeosgQno3bo2/Kg==", "dev": true, "optional": true, "requires": { diff --git a/package.json b/package.json index 2b00cf9b..47b8331a 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "expect.js": "0.3.1", "glob": "7.1.4", "mocha": "6.1.4", - "nyc": "14.1.0", + "nyc": "14.1.1", "sinon": "7.3.2" } } From 5a1015831c8671a04edb6f5d3a736fdfe0afc096 Mon Sep 17 00:00:00 2001 From: Jorrit Schippers Date: Sat, 18 May 2019 21:00:54 +0200 Subject: [PATCH 065/110] Mark callback parameter as optional in JSDoc --- lib/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/index.js b/lib/index.js index 22dc8c2c..90d4a11b 100644 --- a/lib/index.js +++ b/lib/index.js @@ -87,7 +87,7 @@ function syncFileToBuffer (filepath) { /** * @param {Buffer|string} input - buffer or relative/absolute path of the image file - * @param {Function} callback - optional function for async detection + * @param {Function=} callback - optional function for async detection */ module.exports = function (input, callback) { From ac443304bec7bec8aa4238db98dfa2237792b647 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 5 Jun 2019 23:50:23 +0000 Subject: [PATCH 066/110] chore(deps): update dependency coveralls to v3.0.4 --- package-lock.json | 54 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index b6283c26..02c4c4a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -250,7 +250,7 @@ "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { "safer-buffer": "~2.1.0" @@ -283,7 +283,7 @@ "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8=", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, "balanced-match": { @@ -432,9 +432,9 @@ "dev": true }, "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -475,9 +475,9 @@ "dev": true }, "coveralls": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.3.tgz", - "integrity": "sha512-viNfeGlda2zJr8Gj1zqXpDMRjw9uM54p7wzZdvLRyOgnAfCe974Dq4veZkjJdxQXbmdppu6flEajFYseHYaUhg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.4.tgz", + "integrity": "sha512-eyqUWA/7RT0JagiL0tThVhjbIjoiEUyWCjtUJoOPcWoeofP5WK/jb2OJYoBFrR6DvplR+AxOyuBqk4JHkk5ykA==", "dev": true, "requires": { "growl": "~> 1.10.0", @@ -824,7 +824,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, "external-editor": { @@ -1420,9 +1420,9 @@ } }, "js-yaml": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", - "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -1559,7 +1559,7 @@ "log-driver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha1-Y7lQIfBwL+36LJuwok53l9cYcdg=", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", "dev": true }, "log-symbols": { @@ -1651,18 +1651,18 @@ } }, "mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", "dev": true }, "mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", "dev": true, "requires": { - "mime-db": "~1.38.0" + "mime-db": "1.40.0" } }, "mimic-fn": { @@ -1919,7 +1919,7 @@ "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, "object-keys": { @@ -2198,9 +2198,9 @@ "dev": true }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "version": "1.1.32", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz", + "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==", "dev": true }, "pump": { @@ -2222,7 +2222,7 @@ "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, "read-pkg": { @@ -2264,7 +2264,7 @@ "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -2633,7 +2633,7 @@ "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "dev": true, "requires": { "psl": "^1.1.24", diff --git a/package.json b/package.json index 47b8331a..bb56a0cf 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "author": "netroy (http://netroy.in/)", "license": "MIT", "devDependencies": { - "coveralls": "3.0.3", + "coveralls": "3.0.4", "eslint": "5.16.0", "expect.js": "0.3.1", "glob": "7.1.4", From 6a63b99752fd0cd41e96d06ad41d3e7dbde40101 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 12 Jul 2019 02:28:52 +0000 Subject: [PATCH 067/110] chore(deps): update dependency coveralls to v3.0.5 --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 02c4c4a6..80735589 100644 --- a/package-lock.json +++ b/package-lock.json @@ -475,13 +475,13 @@ "dev": true }, "coveralls": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.4.tgz", - "integrity": "sha512-eyqUWA/7RT0JagiL0tThVhjbIjoiEUyWCjtUJoOPcWoeofP5WK/jb2OJYoBFrR6DvplR+AxOyuBqk4JHkk5ykA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.5.tgz", + "integrity": "sha512-/KD7PGfZv/tjKB6LoW97jzIgFqem0Tu9tZL9/iwBnBd8zkIZp7vT1ZSHNvnr0GSQMV/LTMxUstWg8WcDDUVQKg==", "dev": true, "requires": { "growl": "~> 1.10.0", - "js-yaml": "^3.11.0", + "js-yaml": "^3.13.1", "lcov-parse": "^0.0.10", "log-driver": "^1.2.7", "minimist": "^1.2.0", @@ -2198,9 +2198,9 @@ "dev": true }, "psl": { - "version": "1.1.32", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz", - "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", + "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==", "dev": true }, "pump": { diff --git a/package.json b/package.json index bb56a0cf..9d18ef5a 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "author": "netroy (http://netroy.in/)", "license": "MIT", "devDependencies": { - "coveralls": "3.0.4", + "coveralls": "3.0.5", "eslint": "5.16.0", "expect.js": "0.3.1", "glob": "7.1.4", From bd69a7c7086820357809c38f3a2d88c0945d3316 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 18 Jul 2019 21:39:29 +0000 Subject: [PATCH 068/110] chore(deps): update dependency mocha to v6.2.0 --- package-lock.json | 16 +++------------- package.json | 2 +- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 80735589..b1c111df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1704,9 +1704,9 @@ } }, "mocha": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz", - "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.0.tgz", + "integrity": "sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ==", "dev": true, "requires": { "ansi-colors": "3.2.3", @@ -1748,16 +1748,6 @@ "path-is-absolute": "^1.0.0" } }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "supports-color": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", diff --git a/package.json b/package.json index 9d18ef5a..96b0a387 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "eslint": "5.16.0", "expect.js": "0.3.1", "glob": "7.1.4", - "mocha": "6.1.4", + "mocha": "6.2.0", "nyc": "14.1.1", "sinon": "7.3.2" } From 6b60091b72ca38ff541bed266168bb508cbe52ea Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 4 Aug 2019 12:19:00 +0000 Subject: [PATCH 069/110] chore(deps): update dependency sinon to v7.4.0 --- package-lock.json | 42 +++++++++++++++++------------------------- package.json | 2 +- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/package-lock.json b/package-lock.json index b1c111df..00b91e46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -150,9 +150,9 @@ } }, "@sinonjs/samsam": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.1.tgz", - "integrity": "sha512-wRSfmyd81swH0hA1bxJZJ57xr22kC07a1N4zuIL47yTS04bDk6AoCkczcqHEjcRPmJ+FruGJ9WBQiJwMtIElFw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.2.tgz", + "integrity": "sha512-ILO/rR8LfAb60Y1Yfp9vxfYAASK43NFC2mLzpvLUbCQY/Qu8YwReboseu8aheCEkyElZF2L2T9mHcR2bgdvZyA==", "dev": true, "requires": { "@sinonjs/commons": "^1.0.2", @@ -1572,9 +1572,9 @@ } }, "lolex": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.0.1.tgz", - "integrity": "sha512-UHuOBZ5jjsKuzbB/gRNNW8Vg8f00Emgskdq2kvZxgBJCS0aqquAuXai/SkWORlKeZEiNQWZjFZOqIUcH9LqKCw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", + "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", "dev": true }, "lru-cache": { @@ -1796,24 +1796,16 @@ "dev": true }, "nise": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.4.10.tgz", - "integrity": "sha512-sa0RRbj53dovjc7wombHmVli9ZihXbXCQ2uH3TNm03DyvOSIQbxg+pbqDKrk2oxMK1rtLGVlKxcB9rrc6X5YjA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.1.tgz", + "integrity": "sha512-edFWm0fsFG2n318rfEnKlTZTkjlbVOFF9XIA+fj+Ed+Qz1laYW2lobwavWoMzGrYDHH1EpiNJgDfvGnkZztR/g==", "dev": true, "requires": { - "@sinonjs/formatio": "^3.1.0", + "@sinonjs/formatio": "^3.2.1", "@sinonjs/text-encoding": "^0.7.1", "just-extend": "^4.0.2", - "lolex": "^2.3.2", + "lolex": "^4.1.0", "path-to-regexp": "^1.7.0" - }, - "dependencies": { - "lolex": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", - "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", - "dev": true - } } }, "node-environment-flags": { @@ -2389,17 +2381,17 @@ "dev": true }, "sinon": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.3.2.tgz", - "integrity": "sha512-thErC1z64BeyGiPvF8aoSg0LEnptSaWE7YhdWWbWXgelOyThent7uKOnnEh9zBxDbKixtr5dEko+ws1sZMuFMA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.4.0.tgz", + "integrity": "sha512-Els0KRgijhuHz9qEyzUFmZtpS1kuj6CMwyKdyWyPW1dnYGOcwqdqFp95u7fcLJbuga/SrVYGxaqCY3JPWMOJAQ==", "dev": true, "requires": { "@sinonjs/commons": "^1.4.0", "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.1", + "@sinonjs/samsam": "^3.3.2", "diff": "^3.5.0", - "lolex": "^4.0.1", - "nise": "^1.4.10", + "lolex": "^4.2.0", + "nise": "^1.5.1", "supports-color": "^5.5.0" } }, diff --git a/package.json b/package.json index 96b0a387..3348fcb0 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.4", "mocha": "6.2.0", "nyc": "14.1.1", - "sinon": "7.3.2" + "sinon": "7.4.0" } } From 87c11d86d2e31859abcfb4b0b4236d3d1d0f60aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E0=A4=95=E0=A4=B0=E0=A4=A4=E0=A5=8B=E0=A4=AB=E0=A5=8D?= =?UTF-8?q?=E0=A4=AB=E0=A5=87=E0=A4=B2=E0=A4=B8=E0=A5=8D=E0=A4=95=E0=A5=8D?= =?UTF-8?q?=E0=A4=B0=E0=A4=BF=E0=A4=AA=E0=A5=8D=E0=A4=9F=E2=84=A2?= Date: Sun, 4 Aug 2019 16:05:31 +0200 Subject: [PATCH 070/110] nodejs 6.x & 11.x are "end of life" --- .circleci/config.yml | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 245b3472..1ff3d1f3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -17,11 +17,6 @@ commands: - "~/.npm/" jobs: - node-6: - docker: - - image: node:6 - steps: - - build node-8: docker: - image: node:8 @@ -32,17 +27,15 @@ jobs: - image: node:10 steps: - build - node-11: + node-12: docker: - - image: node:11 + - image: node:12 steps: - build - workflows: version: 2 node-multi-build: jobs: - - node-6 - node-8 - node-10 - - node-11 + - node-12 From d07737fd9fe4166f68bff040cb64b481d366afc0 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 4 Aug 2019 14:07:59 +0000 Subject: [PATCH 071/110] chore(deps): update dependency eslint to v6 --- package-lock.json | 243 +++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 154 insertions(+), 91 deletions(-) diff --git a/package-lock.json b/package-lock.json index 00b91e46..763b23db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -167,9 +167,9 @@ "dev": true }, "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz", + "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==", "dev": true }, "acorn-jsx": { @@ -330,9 +330,9 @@ } }, "callsites": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", - "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { @@ -655,49 +655,68 @@ "dev": true }, "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.1.0.tgz", + "integrity": "sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", + "ajv": "^6.10.0", "chalk": "^2.1.0", "cross-spawn": "^6.0.5", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", + "eslint-scope": "^5.0.0", "eslint-utils": "^1.3.1", "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", + "espree": "^6.0.0", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", + "glob-parent": "^5.0.0", "globals": "^11.7.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", + "inquirer": "^6.4.1", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.11", + "lodash": "^4.17.14", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", "progress": "^2.0.0", "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", "table": "^5.2.3", - "text-table": "^0.2.0" + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -707,34 +726,39 @@ "ms": "^2.1.1" } }, - "js-yaml": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz", - "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", "dev": true } } }, "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -742,21 +766,24 @@ } }, "eslint-utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.3.1.tgz", - "integrity": "sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q==", - "dev": true + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.0.tgz", + "integrity": "sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.0.0" + } }, "eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha1-PzGA+y4pEBdxastMnW1bXDSmqB0=", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", "dev": true }, "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.0.0.tgz", + "integrity": "sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==", "dev": true, "requires": { "acorn": "^6.0.7", @@ -773,7 +800,7 @@ "esquery": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha1-QGxRZYsfWZGl+bYrHcJbAOPlxwg=", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", "dev": true, "requires": { "estraverse": "^4.0.0" @@ -782,7 +809,7 @@ "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "dev": true, "requires": { "estraverse": "^4.1.0" @@ -828,9 +855,9 @@ "dev": true }, "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { "chardet": "^0.7.0", @@ -921,9 +948,9 @@ } }, "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, "foreground-child": { @@ -1021,6 +1048,15 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", + "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "globals": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", @@ -1131,7 +1167,7 @@ "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" @@ -1144,9 +1180,9 @@ "dev": true }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -1176,9 +1212,9 @@ "dev": true }, "inquirer": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", - "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", + "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -1187,12 +1223,12 @@ "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.12", "mute-stream": "0.0.7", "run-async": "^2.2.0", "rxjs": "^6.4.0", "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", + "strip-ansi": "^5.1.0", "through": "^2.3.6" }, "dependencies": { @@ -1214,9 +1250,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "strip-ansi": { @@ -1260,12 +1296,27 @@ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", @@ -1668,7 +1719,7 @@ "mimic-fn": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "minimatch": { @@ -2096,12 +2147,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -2327,9 +2372,9 @@ } }, "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -2528,17 +2573,29 @@ } }, "table": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", - "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.5.tgz", + "integrity": "sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA==", "dev": true, "requires": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", + "ajv": "^6.10.2", + "lodash": "^4.17.14", "slice-ansi": "^2.1.0", "string-width": "^3.0.0" }, "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", @@ -2546,9 +2603,9 @@ "dev": true }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "string-width": { @@ -2600,7 +2657,7 @@ "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { "os-tmpdir": "~1.0.2" @@ -2629,9 +2686,9 @@ "dev": true }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", "dev": true }, "tunnel-agent": { @@ -2707,6 +2764,12 @@ "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=", "dev": true }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "dev": true + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", diff --git a/package.json b/package.json index 3348fcb0..840a37a3 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.5", - "eslint": "5.16.0", + "eslint": "6.1.0", "expect.js": "0.3.1", "glob": "7.1.4", "mocha": "6.2.0", From dd8f014710c91dd31839958ffd754acbfe44411c Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 5 Aug 2019 12:47:01 +0000 Subject: [PATCH 072/110] chore(deps): roll back dependency sinon to 7.3.2 --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 763b23db..9fc33311 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2426,17 +2426,17 @@ "dev": true }, "sinon": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.4.0.tgz", - "integrity": "sha512-Els0KRgijhuHz9qEyzUFmZtpS1kuj6CMwyKdyWyPW1dnYGOcwqdqFp95u7fcLJbuga/SrVYGxaqCY3JPWMOJAQ==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.3.2.tgz", + "integrity": "sha512-thErC1z64BeyGiPvF8aoSg0LEnptSaWE7YhdWWbWXgelOyThent7uKOnnEh9zBxDbKixtr5dEko+ws1sZMuFMA==", "dev": true, "requires": { "@sinonjs/commons": "^1.4.0", "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.2", + "@sinonjs/samsam": "^3.3.1", "diff": "^3.5.0", - "lolex": "^4.2.0", - "nise": "^1.5.1", + "lolex": "^4.0.1", + "nise": "^1.4.10", "supports-color": "^5.5.0" } }, diff --git a/package.json b/package.json index 840a37a3..d195076b 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.4", "mocha": "6.2.0", "nyc": "14.1.1", - "sinon": "7.4.0" + "sinon": "7.3.2" } } From 0bd2fafc9f8c21336976f94caea835b03d56fb09 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 6 Aug 2019 09:43:34 +0000 Subject: [PATCH 073/110] chore(deps): update dependency sinon to v7.4.1 --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9fc33311..40c06e36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2426,17 +2426,17 @@ "dev": true }, "sinon": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.3.2.tgz", - "integrity": "sha512-thErC1z64BeyGiPvF8aoSg0LEnptSaWE7YhdWWbWXgelOyThent7uKOnnEh9zBxDbKixtr5dEko+ws1sZMuFMA==", + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.4.1.tgz", + "integrity": "sha512-7s9buHGHN/jqoy/v4bJgmt0m1XEkCEd/tqdHXumpBp0JSujaT4Ng84JU5wDdK4E85ZMq78NuDe0I3NAqXY8TFg==", "dev": true, "requires": { "@sinonjs/commons": "^1.4.0", "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.1", + "@sinonjs/samsam": "^3.3.2", "diff": "^3.5.0", - "lolex": "^4.0.1", - "nise": "^1.4.10", + "lolex": "^4.2.0", + "nise": "^1.5.1", "supports-color": "^5.5.0" } }, diff --git a/package.json b/package.json index d195076b..cfba3bfb 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.4", "mocha": "6.2.0", "nyc": "14.1.1", - "sinon": "7.3.2" + "sinon": "7.4.1" } } From bc81cfc79739ad24e49065e800d8f7872dd857a1 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 6 Aug 2019 21:35:16 +0000 Subject: [PATCH 074/110] chore(deps): update dependency coveralls to v3.0.6 --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 40c06e36..43095ee4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -179,9 +179,9 @@ "dev": true }, "ajv": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", - "integrity": "sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", @@ -475,9 +475,9 @@ "dev": true }, "coveralls": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.5.tgz", - "integrity": "sha512-/KD7PGfZv/tjKB6LoW97jzIgFqem0Tu9tZL9/iwBnBd8zkIZp7vT1ZSHNvnr0GSQMV/LTMxUstWg8WcDDUVQKg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.6.tgz", + "integrity": "sha512-Pgh4v3gCI4T/9VijVrm8Ym5v0OgjvGLKj3zTUwkvsCiwqae/p6VLzpsFNjQS2i6ewV7ef+DjFJ5TSKxYt/mCrA==", "dev": true, "requires": { "growl": "~> 1.10.0", @@ -2225,9 +2225,9 @@ "dev": true }, "psl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", - "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", + "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==", "dev": true }, "pump": { diff --git a/package.json b/package.json index cfba3bfb..2c289ea6 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "author": "netroy (http://netroy.in/)", "license": "MIT", "devDependencies": { - "coveralls": "3.0.5", + "coveralls": "3.0.6", "eslint": "6.1.0", "expect.js": "0.3.1", "glob": "7.1.4", From 56b85cbd9645454c99f5031bfa318c3d028d5887 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 20 Aug 2019 11:47:21 +0000 Subject: [PATCH 075/110] chore(deps): update dependency eslint to v6.2.1 --- package-lock.json | 182 ++++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 96 insertions(+), 88 deletions(-) diff --git a/package-lock.json b/package-lock.json index 43095ee4..d0688485 100644 --- a/package-lock.json +++ b/package-lock.json @@ -167,9 +167,9 @@ "dev": true }, "acorn": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz", - "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", + "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", "dev": true }, "acorn-jsx": { @@ -197,10 +197,13 @@ "dev": true }, "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", + "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", + "dev": true, + "requires": { + "type-fest": "^0.5.2" + } }, "ansi-regex": { "version": "3.0.0", @@ -385,12 +388,12 @@ "dev": true }, "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "^3.1.0" } }, "cli-width": { @@ -655,9 +658,9 @@ "dev": true }, "eslint": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.1.0.tgz", - "integrity": "sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.2.1.tgz", + "integrity": "sha512-ES7BzEzr0Q6m5TK9i+/iTpKjclXitOdDK4vT07OqbkBT2/VcN/gO9EL1C4HlK3TAOXYv2ItcmbVR9jO1MR0fJg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -667,9 +670,9 @@ "debug": "^4.0.1", "doctrine": "^3.0.0", "eslint-scope": "^5.0.0", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^6.0.0", + "eslint-utils": "^1.4.2", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.0", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", @@ -699,18 +702,6 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", @@ -766,29 +757,29 @@ } }, "eslint-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.0.tgz", - "integrity": "sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", + "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", "dev": true, "requires": { "eslint-visitor-keys": "^1.0.0" } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", "dev": true }, "espree": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.0.0.tgz", - "integrity": "sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.0.tgz", + "integrity": "sha512-boA7CHRLlVWUSg3iL5Kmlt/xT3Q+sXnKoRYYzj1YeM10A76TEJBbotV5pKbnK42hEUIr121zTv+QLRM5LsCPXQ==", "dev": true, "requires": { - "acorn": "^6.0.7", + "acorn": "^7.0.0", "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" } }, "esprima": { @@ -816,9 +807,9 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { @@ -890,9 +881,9 @@ "dev": true }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.0.0.tgz", + "integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -1212,22 +1203,22 @@ "dev": true }, "inquirer": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", - "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.1.tgz", + "integrity": "sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw==", "dev": true, "requires": { - "ansi-escapes": "^3.2.0", + "ansi-escapes": "^4.2.1", "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", + "cli-cursor": "^3.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", "run-async": "^2.2.0", "rxjs": "^6.4.0", - "string-width": "^2.1.0", + "string-width": "^4.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" }, @@ -1249,12 +1240,35 @@ "supports-color": "^5.3.0" } }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, + "string-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", + "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^5.2.0" + } + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -1717,9 +1731,9 @@ } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "minimatch": { @@ -1817,9 +1831,9 @@ "dev": true }, "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, "natural-compare": { @@ -1993,12 +2007,12 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "^2.1.0" } }, "optimist": { @@ -2344,12 +2358,12 @@ "dev": true }, "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "onetime": "^2.0.0", + "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, @@ -2573,9 +2587,9 @@ } }, "table": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.5.tgz", - "integrity": "sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { "ajv": "^6.10.2", @@ -2584,18 +2598,6 @@ "string-width": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", @@ -2721,6 +2723,12 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, + "type-fest": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", + "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", + "dev": true + }, "uglify-js": { "version": "3.5.11", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.11.tgz", @@ -2765,9 +2773,9 @@ "dev": true }, "v8-compile-cache": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", - "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", "dev": true }, "validate-npm-package-license": { diff --git a/package.json b/package.json index 2c289ea6..3ad1d981 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.6", - "eslint": "6.1.0", + "eslint": "6.2.1", "expect.js": "0.3.1", "glob": "7.1.4", "mocha": "6.2.0", From 9e3bf305a52c5bb464ef1351fc540c0ef6b84b21 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 24 Aug 2019 03:00:52 +0000 Subject: [PATCH 076/110] chore(deps): update dependency eslint to v6.2.2 --- package-lock.json | 122 +++++++++++++++++----------------------------- package.json | 2 +- 2 files changed, 46 insertions(+), 78 deletions(-) diff --git a/package-lock.json b/package-lock.json index d0688485..656e009b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -173,9 +173,9 @@ "dev": true }, "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", + "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", "dev": true }, "ajv": { @@ -197,13 +197,10 @@ "dev": true }, "ansi-escapes": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", - "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", - "dev": true, - "requires": { - "type-fest": "^0.5.2" - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true }, "ansi-regex": { "version": "3.0.0", @@ -388,12 +385,12 @@ "dev": true }, "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^2.0.0" } }, "cli-width": { @@ -658,9 +655,9 @@ "dev": true }, "eslint": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.2.1.tgz", - "integrity": "sha512-ES7BzEzr0Q6m5TK9i+/iTpKjclXitOdDK4vT07OqbkBT2/VcN/gO9EL1C4HlK3TAOXYv2ItcmbVR9jO1MR0fJg==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.2.2.tgz", + "integrity": "sha512-mf0elOkxHbdyGX1IJEUsNBzCDdyoUgljF3rRlgfyYh0pwGnreLc0jjD6ZuleOibjmnUWZLY2eXwSooeOgGJ2jw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -672,7 +669,7 @@ "eslint-scope": "^5.0.0", "eslint-utils": "^1.4.2", "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.0", + "espree": "^6.1.1", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", @@ -772,13 +769,13 @@ "dev": true }, "espree": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.0.tgz", - "integrity": "sha512-boA7CHRLlVWUSg3iL5Kmlt/xT3Q+sXnKoRYYzj1YeM10A76TEJBbotV5pKbnK42hEUIr121zTv+QLRM5LsCPXQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz", + "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==", "dev": true, "requires": { "acorn": "^7.0.0", - "acorn-jsx": "^5.0.0", + "acorn-jsx": "^5.0.2", "eslint-visitor-keys": "^1.1.0" } }, @@ -881,9 +878,9 @@ "dev": true }, "figures": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.0.0.tgz", - "integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -1203,22 +1200,22 @@ "dev": true }, "inquirer": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.1.tgz", - "integrity": "sha512-uxNHBeQhRXIoHWTSNYUFhQVrHYFThIt6IVo2fFmSe8aBwdR3/w6b58hJpiL/fMukFkvGzjg+hSxFtwvVmKZmXw==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, "requires": { - "ansi-escapes": "^4.2.1", + "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", - "cli-cursor": "^3.1.0", + "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.15", - "mute-stream": "0.0.8", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", "run-async": "^2.2.0", "rxjs": "^6.4.0", - "string-width": "^4.1.0", + "string-width": "^2.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" }, @@ -1240,35 +1237,12 @@ "supports-color": "^5.3.0" } }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, - "string-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", - "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^5.2.0" - } - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -1731,9 +1705,9 @@ } }, "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, "minimatch": { @@ -1831,9 +1805,9 @@ "dev": true }, "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, "natural-compare": { @@ -2007,12 +1981,12 @@ } }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, "requires": { - "mimic-fn": "^2.1.0" + "mimic-fn": "^1.0.0" } }, "optimist": { @@ -2358,12 +2332,12 @@ "dev": true }, "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "requires": { - "onetime": "^5.1.0", + "onetime": "^2.0.0", "signal-exit": "^3.0.2" } }, @@ -2723,12 +2697,6 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, - "type-fest": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", - "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", - "dev": true - }, "uglify-js": { "version": "3.5.11", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.11.tgz", diff --git a/package.json b/package.json index 3ad1d981..acb35643 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.6", - "eslint": "6.2.1", + "eslint": "6.2.2", "expect.js": "0.3.1", "glob": "7.1.4", "mocha": "6.2.0", From f65f168c112ce655e99d2f7fcc778928dc8a48de Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 30 Aug 2019 20:12:58 +0000 Subject: [PATCH 077/110] chore(deps): update dependency eslint to v6.3.0 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 656e009b..73e57135 100644 --- a/package-lock.json +++ b/package-lock.json @@ -655,9 +655,9 @@ "dev": true }, "eslint": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.2.2.tgz", - "integrity": "sha512-mf0elOkxHbdyGX1IJEUsNBzCDdyoUgljF3rRlgfyYh0pwGnreLc0jjD6ZuleOibjmnUWZLY2eXwSooeOgGJ2jw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.3.0.tgz", + "integrity": "sha512-ZvZTKaqDue+N8Y9g0kp6UPZtS4FSY3qARxBs7p4f0H0iof381XHduqVerFWtK8DPtKmemqbqCFENWSQgPR/Gow==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", diff --git a/package.json b/package.json index acb35643..65ffdbb4 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.6", - "eslint": "6.2.2", + "eslint": "6.3.0", "expect.js": "0.3.1", "glob": "7.1.4", "mocha": "6.2.0", From 0e4fdba5d934a197ff0143f83fadb35051fcbcff Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 2 Sep 2019 11:51:52 +0000 Subject: [PATCH 078/110] chore(deps): update dependency sinon to v7.4.2 --- package-lock.json | 40 ++++++++++++++++++++++++---------------- package.json | 2 +- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 73e57135..efc0807b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -131,9 +131,9 @@ } }, "@sinonjs/commons": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.4.0.tgz", - "integrity": "sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.6.0.tgz", + "integrity": "sha512-w4/WHG7C4WWFyE5geCieFJF6MZkbW4VAriol5KlmQXpAQdxvV0p26sqNZOW6Qyw6Y0l9K4g+cHvvczR2sEEpqg==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -150,14 +150,22 @@ } }, "@sinonjs/samsam": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.2.tgz", - "integrity": "sha512-ILO/rR8LfAb60Y1Yfp9vxfYAASK43NFC2mLzpvLUbCQY/Qu8YwReboseu8aheCEkyElZF2L2T9mHcR2bgdvZyA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", + "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", "dev": true, "requires": { - "@sinonjs/commons": "^1.0.2", + "@sinonjs/commons": "^1.3.0", "array-from": "^2.1.1", - "lodash": "^4.17.11" + "lodash": "^4.17.15" + }, + "dependencies": { + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + } } }, "@sinonjs/text-encoding": { @@ -1835,9 +1843,9 @@ "dev": true }, "nise": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.1.tgz", - "integrity": "sha512-edFWm0fsFG2n318rfEnKlTZTkjlbVOFF9XIA+fj+Ed+Qz1laYW2lobwavWoMzGrYDHH1EpiNJgDfvGnkZztR/g==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.2.tgz", + "integrity": "sha512-/6RhOUlicRCbE9s+94qCUsyE+pKlVJ5AhIv+jEE7ESKwnbXqulKZ1FYU+XAtHHWE9TinYvAxDUJAb912PwPoWA==", "dev": true, "requires": { "@sinonjs/formatio": "^3.2.1", @@ -2414,17 +2422,17 @@ "dev": true }, "sinon": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.4.1.tgz", - "integrity": "sha512-7s9buHGHN/jqoy/v4bJgmt0m1XEkCEd/tqdHXumpBp0JSujaT4Ng84JU5wDdK4E85ZMq78NuDe0I3NAqXY8TFg==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.4.2.tgz", + "integrity": "sha512-pY5RY99DKelU3pjNxcWo6XqeB1S118GBcVIIdDi6V+h6hevn1izcg2xv1hTHW/sViRXU7sUOxt4wTUJ3gsW2CQ==", "dev": true, "requires": { "@sinonjs/commons": "^1.4.0", "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.2", + "@sinonjs/samsam": "^3.3.3", "diff": "^3.5.0", "lolex": "^4.2.0", - "nise": "^1.5.1", + "nise": "^1.5.2", "supports-color": "^5.5.0" } }, diff --git a/package.json b/package.json index 65ffdbb4..c0d37699 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,6 @@ "glob": "7.1.4", "mocha": "6.2.0", "nyc": "14.1.1", - "sinon": "7.4.1" + "sinon": "7.4.2" } } From c666afa63256d13460e5142eb0bb310ecec76d36 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 14 Sep 2019 01:53:49 +0000 Subject: [PATCH 079/110] chore(deps): update dependency eslint to v6.4.0 --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index efc0807b..4ac13c5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -663,9 +663,9 @@ "dev": true }, "eslint": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.3.0.tgz", - "integrity": "sha512-ZvZTKaqDue+N8Y9g0kp6UPZtS4FSY3qARxBs7p4f0H0iof381XHduqVerFWtK8DPtKmemqbqCFENWSQgPR/Gow==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.4.0.tgz", + "integrity": "sha512-WTVEzK3lSFoXUovDHEbkJqCVPEPwbhCq4trDktNI6ygs7aO41d4cDT0JFAT5MivzZeVLWlg7vHL+bgrQv/t3vA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -2368,9 +2368,9 @@ } }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", "dev": true, "requires": { "tslib": "^1.9.0" diff --git a/package.json b/package.json index c0d37699..f02d7420 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "license": "MIT", "devDependencies": { "coveralls": "3.0.6", - "eslint": "6.3.0", + "eslint": "6.4.0", "expect.js": "0.3.1", "glob": "7.1.4", "mocha": "6.2.0", From 912a100a35dfdba9f9c2f7b6faffe189f57ef5f9 Mon Sep 17 00:00:00 2001 From: Aditya Date: Sun, 15 Sep 2019 01:45:37 +0200 Subject: [PATCH 080/110] Handle jpegs with corrupt EXIF blocks --- lib/types/jpg.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/types/jpg.js b/lib/types/jpg.js index 9196cdfc..904e0199 100644 --- a/lib/types/jpg.js +++ b/lib/types/jpg.js @@ -70,6 +70,11 @@ function extractOrientation (exifBlock, isBigEndian) { start = offset + NUM_DIRECTORY_ENTRIES_BYTES + (directoryEntryNumber * IDF_ENTRY_BYTES); end = start + IDF_ENTRY_BYTES; + // Skip on corrupt EXIF blocks + if (start > exifBlock.length) { + return; + } + var block = exifBlock.slice(start, end); var tagNumber = readUInt(block, 16, 0, isBigEndian); From 02f1f3563ae46ab8277ff784ec4fa9c2e03d058f Mon Sep 17 00:00:00 2001 From: Aditya Date: Sun, 15 Sep 2019 01:48:28 +0200 Subject: [PATCH 081/110] 0.7.5 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4ac13c5a..04ceb831 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.7.4", + "version": "0.7.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index f02d7420..0dceb8c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.7.4", + "version": "0.7.5", "description": "get dimensions of any image file", "main": "lib/index.js", "files": [ From 01fdd78ad5974438c476e3d0f8491c2e0f599389 Mon Sep 17 00:00:00 2001 From: Aditya Date: Mon, 16 Sep 2019 13:04:14 +0200 Subject: [PATCH 082/110] Migrate lib/ to Typescript --- .gitignore | 1 + bin/image-size.js | 25 ++++--- lib/detector.js | 13 ---- lib/detector.ts | 8 +++ lib/index.js | 126 --------------------------------- lib/index.ts | 135 +++++++++++++++++++++++++++++++++++ lib/readUInt.js | 11 --- lib/readUInt.ts | 11 +++ lib/types.js | 19 ----- lib/types.ts | 29 ++++++++ lib/types/bmp.js | 17 ----- lib/types/bmp.ts | 14 ++++ lib/types/cur.js | 17 ----- lib/types/cur.ts | 16 +++++ lib/types/dds.js | 18 ----- lib/types/dds.ts | 14 ++++ lib/types/gif.js | 19 ----- lib/types/gif.ts | 16 +++++ lib/types/icns.js | 122 -------------------------------- lib/types/icns.ts | 115 ++++++++++++++++++++++++++++++ lib/types/ico.js | 81 --------------------- lib/types/ico.ts | 75 ++++++++++++++++++++ lib/types/interface.ts | 16 +++++ lib/types/jpg.js | 157 ----------------------------------------- lib/types/jpg.ts | 151 +++++++++++++++++++++++++++++++++++++++ lib/types/png.js | 38 ---------- lib/types/png.ts | 36 ++++++++++ lib/types/psd.js | 17 ----- lib/types/psd.ts | 14 ++++ lib/types/svg.js | 96 ------------------------- lib/types/svg.ts | 106 ++++++++++++++++++++++++++++ lib/types/tiff.js | 120 ------------------------------- lib/types/tiff.ts | 114 ++++++++++++++++++++++++++++++ lib/types/webp.js | 71 ------------------- lib/types/webp.ts | 65 +++++++++++++++++ package-lock.json | 65 +++++++++++++++-- package.json | 19 +++-- specs/fs-close.spec.js | 2 +- specs/invalid.spec.js | 6 +- specs/others.spec.js | 5 +- specs/valid.spec.js | 4 +- tsconfig.json | 17 +++++ tslint.json | 15 ++++ 43 files changed, 1062 insertions(+), 974 deletions(-) delete mode 100644 lib/detector.js create mode 100644 lib/detector.ts delete mode 100644 lib/index.js create mode 100644 lib/index.ts delete mode 100644 lib/readUInt.js create mode 100644 lib/readUInt.ts delete mode 100644 lib/types.js create mode 100644 lib/types.ts delete mode 100644 lib/types/bmp.js create mode 100644 lib/types/bmp.ts delete mode 100644 lib/types/cur.js create mode 100644 lib/types/cur.ts delete mode 100644 lib/types/dds.js create mode 100644 lib/types/dds.ts delete mode 100644 lib/types/gif.js create mode 100644 lib/types/gif.ts delete mode 100644 lib/types/icns.js create mode 100644 lib/types/icns.ts delete mode 100644 lib/types/ico.js create mode 100644 lib/types/ico.ts create mode 100644 lib/types/interface.ts delete mode 100644 lib/types/jpg.js create mode 100644 lib/types/jpg.ts delete mode 100644 lib/types/png.js create mode 100644 lib/types/png.ts delete mode 100644 lib/types/psd.js create mode 100644 lib/types/psd.ts delete mode 100644 lib/types/svg.js create mode 100644 lib/types/svg.ts delete mode 100644 lib/types/tiff.js create mode 100644 lib/types/tiff.ts delete mode 100644 lib/types/webp.js create mode 100644 lib/types/webp.ts create mode 100644 tsconfig.json create mode 100644 tslint.json diff --git a/.gitignore b/.gitignore index 8bccfc3f..bcc4450c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ coverage/ node_modules npm-debug.log .nyc_output +dist/ diff --git a/bin/image-size.js b/bin/image-size.js index 21d91f78..66c26bac 100755 --- a/bin/image-size.js +++ b/bin/image-size.js @@ -1,22 +1,21 @@ #!/usr/bin/env node 'use strict'; -var fs = require('fs'); -var path = require('path'); +const fs = require('fs'); +const path = require('path'); +const { imageSize } = require('..'); -var imageSize = require('..'); - -var files = process.argv.slice(2); +const files = process.argv.slice(2); if (!files.length) { console.error('Usage: image-size image1 [image2] [image3] ...'); process.exit(-1); } -var red = ['\x1B[31m', '\x1B[39m']; -// var bold = ['\x1B[1m', '\x1B[22m']; -var grey = ['\x1B[90m', '\x1B[39m']; -var green = ['\x1B[32m', '\x1B[39m']; +const red = ['\x1B[31m', '\x1B[39m']; +// const bold = ['\x1B[1m', '\x1B[22m']; +const grey = ['\x1B[90m', '\x1B[39m']; +const green = ['\x1B[32m', '\x1B[39m']; function colorize(text, color) { return color[0] + text + color[1] @@ -25,11 +24,11 @@ function colorize(text, color) { files.forEach(function (image) { try { if (fs.existsSync(path.resolve(image))) { - var size = imageSize(image); - var greyX = colorize('x', grey); - var greyImage = colorize(image, grey); + let size = imageSize(image); + let greyX = colorize('x', grey); + let greyImage = colorize(image, grey); (size.images || [size]).forEach(function (size) { - var greyType = ''; + let greyType = ''; if (size.type) { greyType = colorize(' (' + size.type + ')', grey); } diff --git a/lib/detector.js b/lib/detector.js deleted file mode 100644 index 5dd36b42..00000000 --- a/lib/detector.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -var typeHandlers = require('./types'); - -module.exports = function (buffer, filepath) { - var type, result; - for (type in typeHandlers) { - result = typeHandlers[type].detect(buffer, filepath); - if (result) { - return type; - } - } -}; diff --git a/lib/detector.ts b/lib/detector.ts new file mode 100644 index 00000000..b2401dff --- /dev/null +++ b/lib/detector.ts @@ -0,0 +1,8 @@ +import { typeHandlers } from './types' + +const keys = Object.keys(typeHandlers) + +export function detector(buffer: Buffer): string | undefined { + const finder = (key: string) => typeHandlers[key].validate(buffer) + return keys.find(finder) +} diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 90d4a11b..00000000 --- a/lib/index.js +++ /dev/null @@ -1,126 +0,0 @@ -'use strict'; - -var fs = require('fs'); -var path = require('path'); - -var typeHandlers = require('./types'); -var detector = require('./detector'); - -// Maximum buffer size, with a default of 512 kilobytes. -// TO-DO: make this adaptive based on the initial signature of the image -var MaxBufferSize = 512*1024; - -/** - * Return size information based on a buffer - * - * @param {Buffer} buffer - * @param {String} filepath - * @returns {Object} - */ -function lookup (buffer, filepath) { - // detect the file type.. don't rely on the extension - var type = detector(buffer, filepath); - - // find an appropriate handler for this file type - if (type in typeHandlers) { - var size = typeHandlers[type].calculate(buffer, filepath); - if (size !== false) { - size.type = type; - return size; - } - } - - // throw up, if we don't understand the file - throw new TypeError('unsupported file type: ' + type + ' (file: ' + filepath + ')'); -} - -/** - * Reads a file into a buffer. - * - * The callback will be called after the process has completed. The - * callback's first argument will be an error (or null). The second argument - * will be the Buffer, if the operation was successful. - * - * @param {String} filepath - * @param {Function} callback - */ -function asyncFileToBuffer (filepath, callback) { - // open the file in read only mode - fs.open(filepath, 'r', function (err, descriptor) { - if (err) { return callback(err); } - fs.fstat(descriptor, function (err, stats) { - if (err) { return callback(err); } - var size = stats.size; - if (size <= 0) { - return callback(new Error('File size is not greater than 0 —— ' + filepath)); - } - var bufferSize = Math.min(size, MaxBufferSize); - var buffer = Buffer.alloc(bufferSize); - // read first buffer block from the file, asynchronously - fs.read(descriptor, buffer, 0, bufferSize, 0, function (err) { - if (err) { return callback(err); } - // close the file, we are done - fs.close(descriptor, function (err) { - callback(err, buffer); - }); - }); - }); - }); -} - -/** - * Synchronously reads a file into a buffer, blocking the nodejs process. - * - * @param {String} filepath - * @returns {Buffer} - */ -function syncFileToBuffer (filepath) { - // read from the file, synchronously - var descriptor = fs.openSync(filepath, 'r'); - var size = fs.fstatSync(descriptor).size; - var bufferSize = Math.min(size, MaxBufferSize); - var buffer = Buffer.alloc(bufferSize); - fs.readSync(descriptor, buffer, 0, bufferSize, 0); - fs.closeSync(descriptor); - return buffer; -} - -/** - * @param {Buffer|string} input - buffer or relative/absolute path of the image file - * @param {Function=} callback - optional function for async detection - */ -module.exports = function (input, callback) { - - // Handle buffer input - if (Buffer.isBuffer(input)) { - return lookup(input); - } - - // input should be a string at this point - if (typeof input !== 'string') { - throw new TypeError('invalid invocation'); - } - - // resolve the file path - var filepath = path.resolve(input); - - if (typeof callback === 'function') { - asyncFileToBuffer(filepath, function (err, buffer) { - if (err) { return callback(err); } - - // return the dimensions - var dimensions; - try { - dimensions = lookup(buffer, filepath); - } catch (e) { - err = e; - } - callback(err, dimensions); - }); - } else { - var buffer = syncFileToBuffer(filepath); - return lookup(buffer, filepath); - } -}; - -module.exports.types = Object.keys(typeHandlers); diff --git a/lib/index.ts b/lib/index.ts new file mode 100644 index 00000000..885776ff --- /dev/null +++ b/lib/index.ts @@ -0,0 +1,135 @@ +import * as fs from 'fs' +import * as path from 'path' +import { typeHandlers } from './types' +import { detector } from './detector' +import { ISizes, ISize } from './types/interface' + +type CallbackFn = (e: Error | null, b?: Buffer) => void +type Dimensions = ISize | ISizes | null | undefined + +// Maximum buffer size, with a default of 512 kilobytes. +// TO-DO: make this adaptive based on the initial signature of the image +const MaxBufferSize = 512 * 1024 + +/** + * Return size information based on a buffer + * + * @param {Buffer} buffer + * @param {String} filepath + * @returns {Object} + */ +function lookup(buffer: Buffer, filepath?: string) { + // detect the file type.. don't rely on the extension + const type = detector(buffer) + if (!type) { return null } + + // find an appropriate handler for this file type + if (type in typeHandlers) { + const size = typeHandlers[type].calculate(buffer, filepath) + if (size !== undefined) { + size.type = type + return size + } + } + + // throw up, if we don't understand the file + throw new TypeError('unsupported file type: ' + type + ' (file: ' + filepath + ')') +} + +/** + * Reads a file into a buffer. + * + * The callback will be called after the process has completed. The + * callback's first argument will be an error (or null). The second argument + * will be the Buffer, if the operation was successful. + * + * @param {String} filepath + * @param {Function} callback + */ +function asyncFileToBuffer(filepath: string, callback: CallbackFn): void { + // open the file in read only mode + fs.open(filepath, 'r', (err1, descriptor) => { + if (err1) { + return callback(err1) + } + fs.fstat(descriptor, (err2, stats) => { + if (err2) { + return callback(err2) + } + const size = stats.size + if (size <= 0) { + return callback(new Error('File size is not greater than 0 —— ' + filepath)) + } + const bufferSize = Math.min(size, MaxBufferSize) + const buffer = Buffer.alloc(bufferSize) + // read first buffer block from the file, asynchronously + fs.read(descriptor, buffer, 0, bufferSize, 0, (err3) => { + if (err3) { + return callback(err3) + } + // close the file, we are done + fs.close(descriptor, (err4) => { + callback(err4, buffer) + }) + }) + }) + }) +} + +/** + * Synchronously reads a file into a buffer, blocking the nodejs process. + * + * @param {String} filepath + * @returns {Buffer} + */ +function syncFileToBuffer(filepath: string): Buffer { + // read from the file, synchronously + const descriptor = fs.openSync(filepath, 'r') + const size = fs.fstatSync(descriptor).size + const bufferSize = Math.min(size, MaxBufferSize) + const buffer = Buffer.alloc(bufferSize) + fs.readSync(descriptor, buffer, 0, bufferSize, 0) + fs.closeSync(descriptor) + return buffer +} + +/** + * @param {Buffer|string} input - buffer or relative/absolute path of the image file + * @param {Function=} callback - optional function for async detection + */ +export function imageSize(input: Buffer): Dimensions +export function imageSize(input: string, callback: CallbackFn): void +export function imageSize(input: any, callback?: any): any { + // Handle buffer input + if (Buffer.isBuffer(input)) { + return lookup(input) + } + + // input should be a string at this point + if (typeof input !== 'string') { + throw new TypeError('invalid invocation') + } + + // resolve the file path + const filepath = path.resolve(input) + + if (typeof callback === 'function') { + asyncFileToBuffer(filepath, (err, buffer) => { + if (err || !buffer) { + return callback(err) + } + let dimensions: Dimensions = null + try { + dimensions = lookup(buffer, filepath) + } catch (e) { + err = e + } + callback(err, dimensions) + }) + } else { + const buffer = syncFileToBuffer(filepath) + return lookup(buffer, filepath) + } +} + +export const types = Object.keys(typeHandlers) diff --git a/lib/readUInt.js b/lib/readUInt.js deleted file mode 100644 index 9bceff49..00000000 --- a/lib/readUInt.js +++ /dev/null @@ -1,11 +0,0 @@ -'use strict'; - -// Abstract reading multi-byte unsigned integers -function readUInt (buffer, bits, offset, isBigEndian) { - offset = offset || 0; - var endian = isBigEndian ? 'BE' : 'LE'; - var method = buffer['readUInt' + bits + endian]; - return method.call(buffer, offset); -} - -module.exports = readUInt; diff --git a/lib/readUInt.ts b/lib/readUInt.ts new file mode 100644 index 00000000..a6e283ad --- /dev/null +++ b/lib/readUInt.ts @@ -0,0 +1,11 @@ +type Bits = 16 | 32 +type MethodName = 'readUInt16BE' | 'readUInt16LE' | 'readUInt32BE' | 'readUInt32LE' + +// Abstract reading multi-byte unsigned integers +export function readUInt(buffer: Buffer, bits: Bits, offset: number, isBigEndian: boolean): number { + offset = offset || 0 + const endian = isBigEndian ? 'BE' : 'LE' + const methodName: MethodName = ('readUInt' + bits + endian) as MethodName + const method: any = buffer[methodName] + return method.call(buffer, offset) +} diff --git a/lib/types.js b/lib/types.js deleted file mode 100644 index b27da763..00000000 --- a/lib/types.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -// load all available handlers for browserify support -var typeHandlers = { - bmp: require('./types/bmp'), - cur: require('./types/cur'), - dds: require('./types/dds'), - gif: require('./types/gif'), - icns: require('./types/icns'), - ico: require('./types/ico'), - jpg: require('./types/jpg'), - png: require('./types/png'), - psd: require('./types/psd'), - svg: require('./types/svg'), - tiff: require('./types/tiff'), - webp: require('./types/webp'), -}; - -module.exports = typeHandlers; diff --git a/lib/types.ts b/lib/types.ts new file mode 100644 index 00000000..42ee9a72 --- /dev/null +++ b/lib/types.ts @@ -0,0 +1,29 @@ +// load all available handlers explicitely for browserify support +import { IImage } from './types/interface' +import { BMP } from './types/bmp' +import { CUR } from './types/cur' +import { DDS } from './types/dds' +import { GIF } from './types/gif' +import { ICNS } from './types/icns' +import { ICO } from './types/ico' +import { JPG } from './types/jpg' +import { PNG } from './types/png' +import { PSD } from './types/psd' +import { SVG } from './types/svg' +import { TIFF } from './types/tiff' +import { WEBP } from './types/webp' + +export const typeHandlers: {[key: string]: IImage} = { + bmp: BMP, + cur: CUR, + dds: DDS, + gif: GIF, + icns: ICNS, + ico: ICO, + jpg: JPG, + png: PNG, + psd: PSD, + svg: SVG, + tiff: TIFF, + webp: WEBP, +} diff --git a/lib/types/bmp.js b/lib/types/bmp.js deleted file mode 100644 index ada01414..00000000 --- a/lib/types/bmp.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -function isBMP (buffer) { - return ('BM' === buffer.toString('ascii', 0, 2)); -} - -function calculate (buffer) { - return { - 'width': buffer.readUInt32LE(18), - 'height': Math.abs(buffer.readInt32LE(22)) - }; -} - -module.exports = { - 'detect': isBMP, - 'calculate': calculate -}; diff --git a/lib/types/bmp.ts b/lib/types/bmp.ts new file mode 100644 index 00000000..1c9e18d2 --- /dev/null +++ b/lib/types/bmp.ts @@ -0,0 +1,14 @@ +import { IImage } from './interface' + +export const BMP: IImage = { + validate(buffer) { + return ('BM' === buffer.toString('ascii', 0, 2)) + }, + + calculate(buffer) { + return { + height: Math.abs(buffer.readInt32LE(22)), + width: buffer.readUInt32LE(18) + } + } +} diff --git a/lib/types/cur.js b/lib/types/cur.js deleted file mode 100644 index c4449b92..00000000 --- a/lib/types/cur.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -var TYPE_CURSOR = 2; - -function isCUR (buffer) { - var type; - if (buffer.readUInt16LE(0) !== 0) { - return false; - } - type = buffer.readUInt16LE(2); - return type === TYPE_CURSOR; -} - -module.exports = { - 'detect': isCUR, - 'calculate': require('./ico').calculate -}; diff --git a/lib/types/cur.ts b/lib/types/cur.ts new file mode 100644 index 00000000..f4da6704 --- /dev/null +++ b/lib/types/cur.ts @@ -0,0 +1,16 @@ +import { IImage } from './interface' +import { ICO } from './ico' + +const TYPE_CURSOR = 2 +export const CUR: IImage = { + validate(buffer) { + if (buffer.readUInt16LE(0) !== 0) { + return false + } + return buffer.readUInt16LE(2) === TYPE_CURSOR + }, + + calculate(buffer) { + return ICO.calculate(buffer) + } +} diff --git a/lib/types/dds.js b/lib/types/dds.js deleted file mode 100644 index ae46447f..00000000 --- a/lib/types/dds.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -function isDDS(buffer){ - return buffer.readUInt32LE(0) === 0x20534444; -} - -function calculate(buffer){ - // read file resolution metadata - return { - 'height': buffer.readUInt32LE(12), - 'width': buffer.readUInt32LE(16) - }; -} - -module.exports = { - 'detect': isDDS, - 'calculate': calculate -}; diff --git a/lib/types/dds.ts b/lib/types/dds.ts new file mode 100644 index 00000000..4b92e91d --- /dev/null +++ b/lib/types/dds.ts @@ -0,0 +1,14 @@ +import { IImage } from './interface' + +export const DDS: IImage = { + validate(buffer) { + return buffer.readUInt32LE(0) === 0x20534444 + }, + + calculate(buffer) { + return { + height: buffer.readUInt32LE(12), + width: buffer.readUInt32LE(16) + } + } +} diff --git a/lib/types/gif.js b/lib/types/gif.js deleted file mode 100644 index b4970792..00000000 --- a/lib/types/gif.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -var gifRegexp = /^GIF8[79]a/; -function isGIF (buffer) { - var signature = buffer.toString('ascii', 0, 6); - return (gifRegexp.test(signature)); -} - -function calculate(buffer) { - return { - 'width': buffer.readUInt16LE(6), - 'height': buffer.readUInt16LE(8) - }; -} - -module.exports = { - 'detect': isGIF, - 'calculate': calculate -}; diff --git a/lib/types/gif.ts b/lib/types/gif.ts new file mode 100644 index 00000000..c365b266 --- /dev/null +++ b/lib/types/gif.ts @@ -0,0 +1,16 @@ +import { IImage } from './interface' + +const gifRegexp = /^GIF8[79]a/ +export const GIF: IImage = { + validate(buffer) { + const signature = buffer.toString('ascii', 0, 6) + return (gifRegexp.test(signature)) + }, + + calculate(buffer) { + return { + height: buffer.readUInt16LE(8), + width: buffer.readUInt16LE(6) + } + } +} diff --git a/lib/types/icns.js b/lib/types/icns.js deleted file mode 100644 index 199b0e65..00000000 --- a/lib/types/icns.js +++ /dev/null @@ -1,122 +0,0 @@ -'use strict'; - -/** - * ICNS Header - * - * | Offset | Size | Purpose | - * | 0 | 4 | Magic literal, must be "icns" (0x69, 0x63, 0x6e, 0x73) | - * | 4 | 4 | Length of file, in bytes, msb first. | - * - **/ -var SIZE_HEADER = 4 + 4; // 8 -var FILE_LENGTH_OFFSET = 4; // MSB => BIG ENDIAN - -/** - * Image Entry - * - * | Offset | Size | Purpose | - * | 0 | 4 | Icon type, see OSType below. | - * | 4 | 4 | Length of data, in bytes (including type and length), msb first. | - * | 8 | n | Icon data | - * - **/ -var ENTRY_LENGTH_OFFSET = 4; // MSB => BIG ENDIAN - -function isICNS (buffer) { - return ('icns' === buffer.toString('ascii', 0, 4)); -} - -var ICON_TYPE_SIZE = { - ICON: 32, - 'ICN#': 32, - // m => 16 x 16 - 'icm#': 16, - icm4: 16, - icm8: 16, - // s => 16 x 16 - 'ics#': 16, - ics4: 16, - ics8: 16, - is32: 16, - s8mk: 16, - icp4: 16, - // l => 32 x 32 - icl4: 32, - icl8: 32, - il32: 32, - l8mk: 32, - icp5: 32, - ic11: 32, - // h => 48 x 48 - ich4: 48, - ich8: 48, - ih32: 48, - h8mk: 48, - // . => 64 x 64 - icp6: 64, - ic12: 32, - // t => 128 x 128 - it32: 128, - t8mk: 128, - ic07: 128, - // . => 256 x 256 - ic08: 256, - ic13: 256, - // . => 512 x 512 - ic09: 512, - ic14: 512, - // . => 1024 x 1024 - ic10: 1024, -}; - -function readImageHeader(buffer, imageOffset) { - var imageLengthOffset = imageOffset + ENTRY_LENGTH_OFFSET; - // returns [type, length] - return [ - buffer.toString('ascii', imageOffset, imageLengthOffset), - buffer.readUInt32BE(imageLengthOffset) - ]; -} - -function getImageSize(type) { - var size = ICON_TYPE_SIZE[type]; - return { width: size, height: size, type: type }; -} - -function calculate (buffer) { - var - bufferLength = buffer.length, - imageOffset = SIZE_HEADER, - fileLength = buffer.readUInt32BE(FILE_LENGTH_OFFSET), - imageHeader, - imageSize, - result; - - imageHeader = readImageHeader(buffer, imageOffset); - imageSize = getImageSize(imageHeader[0]); - imageOffset += imageHeader[1]; - - if (imageOffset === fileLength) { - return imageSize; - } - - result = { - width: imageSize.width, - height: imageSize.height, - images: [imageSize] - }; - - while (imageOffset < fileLength && imageOffset < bufferLength) { - imageHeader = readImageHeader(buffer, imageOffset); - imageSize = getImageSize(imageHeader[0]); - imageOffset += imageHeader[1]; - result.images.push(imageSize); - } - - return result; -} - -module.exports = { - 'detect': isICNS, - 'calculate': calculate -}; diff --git a/lib/types/icns.ts b/lib/types/icns.ts new file mode 100644 index 00000000..31f71dbb --- /dev/null +++ b/lib/types/icns.ts @@ -0,0 +1,115 @@ +import { IImage, ISize } from './interface' + +/** + * ICNS Header + * + * | Offset | Size | Purpose | + * | 0 | 4 | Magic literal, must be "icns" (0x69, 0x63, 0x6e, 0x73) | + * | 4 | 4 | Length of file, in bytes, msb first. | + * + */ +const SIZE_HEADER = 4 + 4 // 8 +const FILE_LENGTH_OFFSET = 4 // MSB => BIG ENDIAN + +/** + * Image Entry + * + * | Offset | Size | Purpose | + * | 0 | 4 | Icon type, see OSType below. | + * | 4 | 4 | Length of data, in bytes (including type and length), msb first. | + * | 8 | n | Icon data | + */ +const ENTRY_LENGTH_OFFSET = 4 // MSB => BIG ENDIAN + +/* tslint:disable:object-literal-sort-keys */ +const ICON_TYPE_SIZE: {[key: string]: number} = { + ICON: 32, + 'ICN#': 32, + // m => 16 x 16 + 'icm#': 16, + icm4: 16, + icm8: 16, + // s => 16 x 16 + 'ics#': 16, + ics4: 16, + ics8: 16, + is32: 16, + s8mk: 16, + icp4: 16, + // l => 32 x 32 + icl4: 32, + icl8: 32, + il32: 32, + l8mk: 32, + icp5: 32, + ic11: 32, + // h => 48 x 48 + ich4: 48, + ich8: 48, + ih32: 48, + h8mk: 48, + // . => 64 x 64 + icp6: 64, + ic12: 32, + // t => 128 x 128 + it32: 128, + t8mk: 128, + ic07: 128, + // . => 256 x 256 + ic08: 256, + ic13: 256, + // . => 512 x 512 + ic09: 512, + ic14: 512, + // . => 1024 x 1024 + ic10: 1024, +} +/* tslint:enable:object-literal-sort-keys */ + +function readImageHeader(buffer: Buffer, imageOffset: number): [string, number] { + const imageLengthOffset = imageOffset + ENTRY_LENGTH_OFFSET + return [ + buffer.toString('ascii', imageOffset, imageLengthOffset), + buffer.readUInt32BE(imageLengthOffset) + ] +} + +function getImageSize(type: string): ISize { + const size = ICON_TYPE_SIZE[type] + return { width: size, height: size, type } +} + +export const ICNS: IImage = { + validate(buffer) { + return ('icns' === buffer.toString('ascii', 0, 4)) + }, + + calculate(buffer) { + const bufferLength = buffer.length + const fileLength = buffer.readUInt32BE(FILE_LENGTH_OFFSET) + let imageOffset = SIZE_HEADER + + let imageHeader = readImageHeader(buffer, imageOffset) + let imageSize = getImageSize(imageHeader[0]) + imageOffset += imageHeader[1] + + if (imageOffset === fileLength) { + return imageSize + } + + const result = { + height: imageSize.height, + images: [imageSize], + width: imageSize.width + } + + while (imageOffset < fileLength && imageOffset < bufferLength) { + imageHeader = readImageHeader(buffer, imageOffset) + imageSize = getImageSize(imageHeader[0]) + imageOffset += imageHeader[1] + result.images.push(imageSize) + } + + return result + } +} diff --git a/lib/types/ico.js b/lib/types/ico.js deleted file mode 100644 index 5a87cc78..00000000 --- a/lib/types/ico.js +++ /dev/null @@ -1,81 +0,0 @@ -'use strict'; - -var TYPE_ICON = 1; - -/** - * ICON Header - * - * | Offset | Size | Purpose | - * | 0 | 2 | Reserved. Must always be 0. | - * | 2 | 2 | Image type: 1 for icon (.ICO) image, 2 for cursor (.CUR) image. Other values are invalid. | - * | 4 | 2 | Number of images in the file. | - * - **/ -var SIZE_HEADER = 2 + 2 + 2; // 6 - -/** - * Image Entry - * - * | Offset | Size | Purpose | - * | 0 | 1 | Image width in pixels. Can be any number between 0 and 255. Value 0 means width is 256 pixels. | - * | 1 | 1 | Image height in pixels. Can be any number between 0 and 255. Value 0 means height is 256 pixels. | - * | 2 | 1 | Number of colors in the color palette. Should be 0 if the image does not use a color palette. | - * | 3 | 1 | Reserved. Should be 0. | - * | 4 | 2 | ICO format: Color planes. Should be 0 or 1. | - * | | | CUR format: The horizontal coordinates of the hotspot in number of pixels from the left. | - * | 6 | 2 | ICO format: Bits per pixel. | - * | | | CUR format: The vertical coordinates of the hotspot in number of pixels from the top. | - * | 8 | 4 | The size of the image's data in bytes | - * | 12 | 4 | The offset of BMP or PNG data from the beginning of the ICO/CUR file | - * - **/ -var SIZE_IMAGE_ENTRY = 1 + 1 + 1 + 1 + 2 + 2 + 4 + 4; // 16 - -function isICO (buffer) { - var type; - if (buffer.readUInt16LE(0) !== 0) { - return false; - } - type = buffer.readUInt16LE(2); - return type === TYPE_ICON; -} - -function getSizeFromOffset(buffer, offset) { - var value = buffer.readUInt8(offset); - return value === 0 ? 256 : value; -} - -function getImageSize(buffer, imageIndex) { - var offset = SIZE_HEADER + (imageIndex * SIZE_IMAGE_ENTRY); - return { - 'width': getSizeFromOffset(buffer, offset), - 'height': getSizeFromOffset(buffer, offset + 1) - }; -} - -function calculate (buffer) { - var - nbImages = buffer.readUInt16LE(4), - result = getImageSize(buffer, 0), - imageIndex; - - if (nbImages === 1) { - return result; - } - - result.images = [{ - width: result.width, - height: result.height - }]; - - for (imageIndex = 1; imageIndex < nbImages; imageIndex += 1) { - result.images.push(getImageSize(buffer, imageIndex)); - } - - return result; -} - -module.exports = { - 'detect': isICO, - 'calculate': calculate -}; diff --git a/lib/types/ico.ts b/lib/types/ico.ts new file mode 100644 index 00000000..a6e4071b --- /dev/null +++ b/lib/types/ico.ts @@ -0,0 +1,75 @@ +import { IImage, ISize } from './interface' + +const TYPE_ICON = 1 + +/** + * ICON Header + * + * | Offset | Size | Purpose | + * | 0 | 2 | Reserved. Must always be 0. | + * | 2 | 2 | Image type: 1 for icon (.ICO) image, 2 for cursor (.CUR) image. Other values are invalid. | + * | 4 | 2 | Number of images in the file. | + * + */ +const SIZE_HEADER = 2 + 2 + 2 // 6 + +/** + * Image Entry + * + * | Offset | Size | Purpose | + * | 0 | 1 | Image width in pixels. Can be any number between 0 and 255. Value 0 means width is 256 pixels. | + * | 1 | 1 | Image height in pixels. Can be any number between 0 and 255. Value 0 means height is 256 pixels. | + * | 2 | 1 | Number of colors in the color palette. Should be 0 if the image does not use a color palette. | + * | 3 | 1 | Reserved. Should be 0. | + * | 4 | 2 | ICO format: Color planes. Should be 0 or 1. | + * | | | CUR format: The horizontal coordinates of the hotspot in number of pixels from the left. | + * | 6 | 2 | ICO format: Bits per pixel. | + * | | | CUR format: The vertical coordinates of the hotspot in number of pixels from the top. | + * | 8 | 4 | The size of the image's data in bytes | + * | 12 | 4 | The offset of BMP or PNG data from the beginning of the ICO/CUR file | + * + */ +const SIZE_IMAGE_ENTRY = 1 + 1 + 1 + 1 + 2 + 2 + 4 + 4 // 16 + +function getSizeFromOffset(buffer: Buffer, offset: number) { + const value = buffer.readUInt8(offset) + return value === 0 ? 256 : value +} + +function getImageSize(buffer: Buffer, imageIndex: number): ISize { + const offset = SIZE_HEADER + (imageIndex * SIZE_IMAGE_ENTRY) + return { + height: getSizeFromOffset(buffer, offset + 1), + width: getSizeFromOffset(buffer, offset) + } +} + +export const ICO: IImage = { + validate(buffer) { + if (buffer.readUInt16LE(0) !== 0) { + return false + } + return buffer.readUInt16LE(2) === TYPE_ICON + }, + + calculate(buffer) { + const nbImages = buffer.readUInt16LE(4) + const imageSize = getImageSize(buffer, 0) + + if (nbImages === 1) { + return imageSize + } + + const result = { + height: imageSize.height, + images: [imageSize], + width: imageSize.width + } + + for (let imageIndex = 1; imageIndex < nbImages; imageIndex += 1) { + result.images.push(getImageSize(buffer, imageIndex)) + } + + return result + } +} diff --git a/lib/types/interface.ts b/lib/types/interface.ts new file mode 100644 index 00000000..8517b049 --- /dev/null +++ b/lib/types/interface.ts @@ -0,0 +1,16 @@ +export interface ISize { + width: number | undefined + height: number | undefined + orientation?: number | undefined + type?: string +} + +export interface ISizes { + result: ISize[] + type?: string +} + +export interface IImage { + validate: (buffer: Buffer) => boolean + calculate: (buffer: Buffer, filepath?: string) => ISize | ISizes | undefined +} diff --git a/lib/types/jpg.js b/lib/types/jpg.js deleted file mode 100644 index 904e0199..00000000 --- a/lib/types/jpg.js +++ /dev/null @@ -1,157 +0,0 @@ -'use strict'; - -var readUInt = require('../readUInt'); - -// NOTE: we only support baseline and progressive JPGs here -// due to the structure of the loader class, we only get a buffer -// with a maximum size of 4096 bytes. so if the SOF marker is outside -// if this range we can't detect the file size correctly. - -function isJPG (buffer) { //, filepath - var SOIMarker = buffer.toString('hex', 0, 2); - return ('ffd8' === SOIMarker); -} - -function isEXIF (buffer) { //, filepath - var exifMarker = buffer.toString('hex', 2, 6); - return (exifMarker === '45786966'); // 'Exif' -} - -function extractSize (buffer, i) { - return { - 'height' : buffer.readUInt16BE(i), - 'width' : buffer.readUInt16BE(i + 2) - }; -} - -var APP1_DATA_SIZE_BYTES = 2; -var EXIF_HEADER_BYTES = 6; -var TIFF_BYTE_ALIGN_BYTES = 2; -var BIG_ENDIAN_BYTE_ALIGN = '4d4d'; -var LITTLE_ENDIAN_BYTE_ALIGN = '4949'; - -// Each entry is exactly 12 bytes -var IDF_ENTRY_BYTES = 12; -var NUM_DIRECTORY_ENTRIES_BYTES = 2; - -function validateExifBlock (buffer, i) { - // Skip APP1 Data Size - var exifBlock = buffer.slice(APP1_DATA_SIZE_BYTES, i); - - // Consider byte alignment - var byteAlign = exifBlock.toString('hex', EXIF_HEADER_BYTES, EXIF_HEADER_BYTES + TIFF_BYTE_ALIGN_BYTES); - - // Ignore Empty EXIF. Validate byte alignment - var isBigEndian = byteAlign === BIG_ENDIAN_BYTE_ALIGN; - var isLittleEndian = byteAlign === LITTLE_ENDIAN_BYTE_ALIGN; - - if (isBigEndian || isLittleEndian) { - return extractOrientation(exifBlock, isBigEndian); - } -} - -function extractOrientation (exifBlock, isBigEndian) { - // TODO: assert that this contains 0x002A - // var STATIC_MOTOROLA_TIFF_HEADER_BYTES = 2; - // var TIFF_IMAGE_FILE_DIRECTORY_BYTES = 4; - - // TODO: derive from TIFF_IMAGE_FILE_DIRECTORY_BYTES - var idfOffset = 8; - - // IDF osset works from right after the header bytes - // (so the offset includes the tiff byte align) - var offset = EXIF_HEADER_BYTES + idfOffset; - - var idfDirectoryEntries = readUInt(exifBlock, 16, offset, isBigEndian); - - var start; - var end; - for (var directoryEntryNumber = 0; directoryEntryNumber < idfDirectoryEntries; directoryEntryNumber++) { - start = offset + NUM_DIRECTORY_ENTRIES_BYTES + (directoryEntryNumber * IDF_ENTRY_BYTES); - end = start + IDF_ENTRY_BYTES; - - // Skip on corrupt EXIF blocks - if (start > exifBlock.length) { - return; - } - - var block = exifBlock.slice(start, end); - var tagNumber = readUInt(block, 16, 0, isBigEndian); - - // 0x0112 (decimal: 274) is the `orientation` tag ID - if (tagNumber === 274) { - var dataFormat = readUInt(block, 16, 2, isBigEndian); - if (dataFormat !== 3) { - return; - } - - // unsinged int has 2 bytes per component - // if there would more than 4 bytes in total it's a pointer - var numberOfComponents = readUInt(block, 32, 4, isBigEndian); - if (numberOfComponents !== 1) { - return; - } - - return readUInt(block, 16, 8, isBigEndian); - } - } -} - -function validateBuffer (buffer, i) { - // index should be within buffer limits - if (i > buffer.length) { - throw new TypeError('Corrupt JPG, exceeded buffer limits'); - } - // Every JPEG block must begin with a 0xFF - if (buffer[i] !== 0xFF) { - throw new TypeError('Invalid JPG, marker table corrupted'); - } -} - -function calculate (buffer) { - // Skip 4 chars, they are for signature - buffer = buffer.slice(4); - - var orientation; - - var i, next; - while (buffer.length) { - // read length of the next block - i = buffer.readUInt16BE(0); - - if (isEXIF(buffer)) { - orientation = validateExifBlock(buffer, i); - } - - // ensure correct format - validateBuffer(buffer, i); - - // 0xFFC0 is baseline standard(SOF) - // 0xFFC1 is baseline optimized(SOF) - // 0xFFC2 is progressive(SOF2) - next = buffer[i + 1]; - if (next === 0xC0 || next === 0xC1 || next === 0xC2) { - var size = extractSize(buffer, i + 5); - - if (!orientation) { - return size; - } - - return { - width: size.width, - height: size.height, - orientation: orientation - }; - } - - // move to the next block - buffer = buffer.slice(i + 2); - } - - throw new TypeError('Invalid JPG, no size found'); -} - -module.exports = { - 'detect': isJPG, - 'calculate': calculate -}; diff --git a/lib/types/jpg.ts b/lib/types/jpg.ts new file mode 100644 index 00000000..763cceea --- /dev/null +++ b/lib/types/jpg.ts @@ -0,0 +1,151 @@ +// NOTE: we only support baseline and progressive JPGs here +// due to the structure of the loader class, we only get a buffer +// with a maximum size of 4096 bytes. so if the SOF marker is outside +// if this range we can't detect the file size correctly. + +import { IImage, ISize } from './interface' +import { readUInt } from '../readUInt' + +const EXIF_MARKER = '45786966' +const APP1_DATA_SIZE_BYTES = 2 +const EXIF_HEADER_BYTES = 6 +const TIFF_BYTE_ALIGN_BYTES = 2 +const BIG_ENDIAN_BYTE_ALIGN = '4d4d' +const LITTLE_ENDIAN_BYTE_ALIGN = '4949' + +// Each entry is exactly 12 bytes +const IDF_ENTRY_BYTES = 12 +const NUM_DIRECTORY_ENTRIES_BYTES = 2 + +function isEXIF(buffer: Buffer): boolean { + return (buffer.toString('hex', 2, 6) === EXIF_MARKER) +} + +function extractSize(buffer: Buffer, index: number): ISize { + return { + height : buffer.readUInt16BE(index), + width : buffer.readUInt16BE(index + 2) + } +} + +function validateExifBlock(buffer: Buffer, index: number) { + // Skip APP1 Data Size + const exifBlock = buffer.slice(APP1_DATA_SIZE_BYTES, index) + + // Consider byte alignment + const byteAlign = exifBlock.toString('hex', EXIF_HEADER_BYTES, EXIF_HEADER_BYTES + TIFF_BYTE_ALIGN_BYTES) + + // Ignore Empty EXIF. Validate byte alignment + const isBigEndian = byteAlign === BIG_ENDIAN_BYTE_ALIGN + const isLittleEndian = byteAlign === LITTLE_ENDIAN_BYTE_ALIGN + + if (isBigEndian || isLittleEndian) { + return extractOrientation(exifBlock, isBigEndian) + } +} + +function extractOrientation(exifBlock: Buffer, isBigEndian: boolean) { + // TODO: assert that this contains 0x002A + // let STATIC_MOTOROLA_TIFF_HEADER_BYTES = 2 + // let TIFF_IMAGE_FILE_DIRECTORY_BYTES = 4 + + // TODO: derive from TIFF_IMAGE_FILE_DIRECTORY_BYTES + const idfOffset = 8 + + // IDF osset works from right after the header bytes + // (so the offset includes the tiff byte align) + const offset = EXIF_HEADER_BYTES + idfOffset + + const idfDirectoryEntries = readUInt(exifBlock, 16, offset, isBigEndian) + + for (let directoryEntryNumber = 0; directoryEntryNumber < idfDirectoryEntries; directoryEntryNumber++) { + const start = offset + NUM_DIRECTORY_ENTRIES_BYTES + (directoryEntryNumber * IDF_ENTRY_BYTES) + const end = start + IDF_ENTRY_BYTES + + // Skip on corrupt EXIF blocks + if (start > exifBlock.length) { + return + } + + const block = exifBlock.slice(start, end) + const tagNumber = readUInt(block, 16, 0, isBigEndian) + + // 0x0112 (decimal: 274) is the `orientation` tag ID + if (tagNumber === 274) { + const dataFormat = readUInt(block, 16, 2, isBigEndian) + if (dataFormat !== 3) { + return + } + + // unsinged int has 2 bytes per component + // if there would more than 4 bytes in total it's a pointer + const numberOfComponents = readUInt(block, 32, 4, isBigEndian) + if (numberOfComponents !== 1) { + return + } + + return readUInt(block, 16, 8, isBigEndian) + } + } +} + +function validateBuffer(buffer: Buffer, index: number): void { + // index should be within buffer limits + if (index > buffer.length) { + throw new TypeError('Corrupt JPG, exceeded buffer limits') + } + // Every JPEG block must begin with a 0xFF + if (buffer[index] !== 0xFF) { + throw new TypeError('Invalid JPG, marker table corrupted') + } +} + +export const JPG: IImage = { + validate(buffer) { + const SOIMarker = buffer.toString('hex', 0, 2) + return ('ffd8' === SOIMarker) + }, + + calculate(buffer) { + // Skip 4 chars, they are for signature + buffer = buffer.slice(4) + + let orientation: number | undefined + let next: number + while (buffer.length) { + // read length of the next block + const i = buffer.readUInt16BE(0) + + if (isEXIF(buffer)) { + orientation = validateExifBlock(buffer, i) + } + + // ensure correct format + validateBuffer(buffer, i) + + // 0xFFC0 is baseline standard(SOF) + // 0xFFC1 is baseline optimized(SOF) + // 0xFFC2 is progressive(SOF2) + next = buffer[i + 1] + if (next === 0xC0 || next === 0xC1 || next === 0xC2) { + const size = extractSize(buffer, i + 5) + + // TODO: is orientation=0 a valid answer here? + if (!orientation) { + return size + } + + return { + height: size.height, + orientation, + width: size.width + } + } + + // move to the next block + buffer = buffer.slice(i + 2) + } + + throw new TypeError('Invalid JPG, no size found') + } +} diff --git a/lib/types/png.js b/lib/types/png.js deleted file mode 100644 index 78b95359..00000000 --- a/lib/types/png.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -var pngSignature = 'PNG\r\n\x1a\n'; -var pngImageHeaderChunkName = 'IHDR'; - -// Used to detect "fried" png's: http://www.jongware.com/pngdefry.html -var pngFriedChunkName = 'CgBI'; - -function isPNG (buffer) { - if (pngSignature === buffer.toString('ascii', 1, 8)) { - var chunkName = buffer.toString('ascii', 12, 16); - if (chunkName === pngFriedChunkName) { - chunkName = buffer.toString('ascii', 28, 32); - } - if (chunkName !== pngImageHeaderChunkName) { - throw new TypeError('invalid png'); - } - return true; - } -} - -function calculate (buffer) { - if (buffer.toString('ascii', 12, 16) === pngFriedChunkName) { - return { - 'width': buffer.readUInt32BE(32), - 'height': buffer.readUInt32BE(36) - }; - } - return { - 'width': buffer.readUInt32BE(16), - 'height': buffer.readUInt32BE(20) - }; -} - -module.exports = { - 'detect': isPNG, - 'calculate': calculate -}; diff --git a/lib/types/png.ts b/lib/types/png.ts new file mode 100644 index 00000000..459060c8 --- /dev/null +++ b/lib/types/png.ts @@ -0,0 +1,36 @@ +import { IImage } from './interface' + +const pngSignature = 'PNG\r\n\x1a\n' +const pngImageHeaderChunkName = 'IHDR' + +// Used to detect "fried" png's: http://www.jongware.com/pngdefry.html +const pngFriedChunkName = 'CgBI' + +export const PNG: IImage = { + validate(buffer) { + if (pngSignature === buffer.toString('ascii', 1, 8)) { + let chunkName = buffer.toString('ascii', 12, 16) + if (chunkName === pngFriedChunkName) { + chunkName = buffer.toString('ascii', 28, 32) + } + if (chunkName !== pngImageHeaderChunkName) { + throw new TypeError('Invalid PNG') + } + return true + } + return false + }, + + calculate(buffer) { + if (buffer.toString('ascii', 12, 16) === pngFriedChunkName) { + return { + height: buffer.readUInt32BE(36), + width: buffer.readUInt32BE(32) + } + } + return { + height: buffer.readUInt32BE(20), + width: buffer.readUInt32BE(16) + } + } +} diff --git a/lib/types/psd.js b/lib/types/psd.js deleted file mode 100644 index dec43047..00000000 --- a/lib/types/psd.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -function isPSD (buffer) { - return ('8BPS' === buffer.toString('ascii', 0, 4)); -} - -function calculate (buffer) { - return { - 'width': buffer.readUInt32BE(18), - 'height': buffer.readUInt32BE(14) - }; -} - -module.exports = { - 'detect': isPSD, - 'calculate': calculate -}; diff --git a/lib/types/psd.ts b/lib/types/psd.ts new file mode 100644 index 00000000..f32e01be --- /dev/null +++ b/lib/types/psd.ts @@ -0,0 +1,14 @@ +import { IImage } from './interface' + +export const PSD: IImage = { + validate(buffer) { + return ('8BPS' === buffer.toString('ascii', 0, 4)) + }, + + calculate(buffer) { + return { + height: buffer.readUInt32BE(14), + width: buffer.readUInt32BE(18) + } + } +} diff --git a/lib/types/svg.js b/lib/types/svg.js deleted file mode 100644 index 83217366..00000000 --- a/lib/types/svg.js +++ /dev/null @@ -1,96 +0,0 @@ -'use strict'; - -var svgReg = /"']|"[^"]*"|'[^']*')*>/; -function isSVG (buffer) { - return svgReg.test(buffer); -} - -var extractorRegExps = { - 'root': svgReg, - 'width': /\swidth=(['"])([^%]+?)\1/, - 'height': /\sheight=(['"])([^%]+?)\1/, - 'viewbox': /\sviewBox=(['"])(.+?)\1/ -}; - -var units = { - 'cm': 96/2.54, - 'mm': 96/2.54/10, - 'm': 96/2.54*100, - 'pt': 96/72, - 'pc': 96/72/12, - 'em': 16, - 'ex': 8, -}; - -function parseLength (len) { - var m = /([0-9.]+)([a-z]*)/.exec(len); - if (!m) { - return undefined; - } - return Math.round(parseFloat(m[1]) * (units[m[2]] || 1)); -} - -function parseViewbox (viewbox) { - var bounds = viewbox.split(' '); - return { - 'width': parseLength(bounds[2]), - 'height': parseLength(bounds[3]) - }; -} - -function parseAttributes (root) { - var width = root.match(extractorRegExps.width); - var height = root.match(extractorRegExps.height); - var viewbox = root.match(extractorRegExps.viewbox); - return { - 'width': width && parseLength(width[2]), - 'height': height && parseLength(height[2]), - 'viewbox': viewbox && parseViewbox(viewbox[2]) - }; -} - -function calculateByDimensions (attrs) { - return { - 'width': attrs.width, - 'height': attrs.height - }; -} - -function calculateByViewbox (attrs) { - var ratio = attrs.viewbox.width / attrs.viewbox.height; - if (attrs.width) { - return { - 'width': attrs.width, - 'height': Math.floor(attrs.width / ratio) - }; - } - if (attrs.height) { - return { - 'width': Math.floor(attrs.height * ratio), - 'height': attrs.height - }; - } - return { - 'width': attrs.viewbox.width, - 'height': attrs.viewbox.height - }; -} - -function calculate (buffer) { - var root = buffer.toString('utf8').match(extractorRegExps.root); - if (root) { - var attrs = parseAttributes(root[0]); - if (attrs.width && attrs.height) { - return calculateByDimensions(attrs); - } - if (attrs.viewbox) { - return calculateByViewbox(attrs); - } - } - throw new TypeError('invalid svg'); -} - -module.exports = { - 'detect': isSVG, - 'calculate': calculate -}; diff --git a/lib/types/svg.ts b/lib/types/svg.ts new file mode 100644 index 00000000..a3daa140 --- /dev/null +++ b/lib/types/svg.ts @@ -0,0 +1,106 @@ +import { IImage, ISize } from './interface' + +interface IAttributes { + width: number | null + height: number | null + viewbox?: IAttributes | null +} + +const svgReg = /"']|"[^"]*"|'[^']*')*>/ + +const extractorRegExps = { + height: /\sheight=(['"])([^%]+?)\1/, + root: svgReg, + viewbox: /\sviewBox=(['"])(.+?)\1/, + width: /\swidth=(['"])([^%]+?)\1/, +} + +const INCH_CM = 2.54 +const units: { [unit: string]: number } = { + cm: 96 / INCH_CM, + em: 16, + ex: 8, + m: 96 / INCH_CM * 100, + mm: 96 / INCH_CM / 10, + pc: 96 / 72 / 12, + pt: 96 / 72, +} + +function parseLength(len: string) { + const m = /([0-9.]+)([a-z]*)/.exec(len) + if (!m) { + return undefined + } + return Math.round(parseFloat(m[1]) * (units[m[2]] || 1)) +} + +function parseViewbox(viewbox: string): IAttributes { + const bounds = viewbox.split(' ') + return { + height: parseLength(bounds[3]) as number, + width: parseLength(bounds[2]) as number + } +} + +function parseAttributes(root: string): IAttributes { + const width = root.match(extractorRegExps.width) + const height = root.match(extractorRegExps.height) + const viewbox = root.match(extractorRegExps.viewbox) + return { + height: height && parseLength(height[2]) as number, + viewbox: viewbox && parseViewbox(viewbox[2]) as IAttributes, + width: width && parseLength(width[2]) as number, + } +} + +function calculateByDimensions(attrs: IAttributes): ISize { + return { + height: attrs.height as number, + width: attrs.width as number, + } +} + +function calculateByViewbox(attrs: IAttributes): ISize | undefined { + const viewbox = attrs && attrs.viewbox + if (!viewbox) { + return + } + const ratio = (viewbox.width as number) / (viewbox.height as number) + if (attrs.width) { + return { + height: Math.floor(attrs.width / ratio), + width: attrs.width, + } + } + if (attrs.height) { + return { + height: attrs.height, + width: Math.floor(attrs.height * ratio), + } + } + return { + height: viewbox.height as number, + width: viewbox.width as number, + } +} + +export const SVG: IImage = { + validate(buffer) { + const str = String(buffer) + return svgReg.test(str) + }, + + calculate(buffer) { + const root = buffer.toString('utf8').match(extractorRegExps.root) + if (root) { + const attrs = parseAttributes(root[0]) + if (attrs.width && attrs.height) { + return calculateByDimensions(attrs) + } + if (attrs.viewbox) { + return calculateByViewbox(attrs) + } + } + throw new TypeError('Invalid SVG') + } +} diff --git a/lib/types/tiff.js b/lib/types/tiff.js deleted file mode 100644 index 6f50c61b..00000000 --- a/lib/types/tiff.js +++ /dev/null @@ -1,120 +0,0 @@ -'use strict'; - -// based on http://www.compix.com/fileformattif.htm -// TO-DO: support big-endian as well - -var fs = require('fs'); -var readUInt = require('../readUInt'); - -function isTIFF (buffer) { - var hex4 = buffer.toString('hex', 0, 4); - return ('49492a00' === hex4 || '4d4d002a' === hex4); -} - -// Read IFD (image-file-directory) into a buffer -function readIFD (buffer, filepath, isBigEndian) { - - var ifdOffset = readUInt(buffer, 32, 4, isBigEndian); - - // read only till the end of the file - var bufferSize = 1024; - var fileSize = fs.statSync(filepath).size; - if (ifdOffset + bufferSize > fileSize) { - bufferSize = fileSize - ifdOffset - 10; - } - - // populate the buffer - var endBuffer = Buffer.alloc(bufferSize); - var descriptor = fs.openSync(filepath, 'r'); - fs.readSync(descriptor, endBuffer, 0, bufferSize, ifdOffset); - - // var ifdLength = readUInt(endBuffer, 16, 0, isBigEndian); - var ifdBuffer = endBuffer.slice(2); //, 2 + 12 * ifdLength); - return ifdBuffer; -} - -// TIFF values seem to be messed up on Big-Endian, this helps -function readValue (buffer, isBigEndian) { - var low = readUInt(buffer, 16, 8, isBigEndian); - var high = readUInt(buffer, 16, 10, isBigEndian); - return (high << 16) + low; -} - -// move to the next tag -function nextTag (buffer) { - if (buffer.length > 24) { - return buffer.slice(12); - } -} - -// Extract IFD tags from TIFF metadata -/* eslint-disable complexity */ -function extractTags (buffer, isBigEndian) { - var tags = {}; - var code, type, length; - - while (buffer && buffer.length) { - code = readUInt(buffer, 16, 0, isBigEndian); - type = readUInt(buffer, 16, 2, isBigEndian); - length = readUInt(buffer, 32, 4, isBigEndian); - - // 0 means end of IFD - if (code === 0) { - break; - } else { - // 256 is width, 257 is height - // if (code === 256 || code === 257) { - if (length === 1 && (type === 3 || type === 4)) { - tags[code] = readValue(buffer, isBigEndian); - } - - // move to the next tag - buffer = nextTag(buffer); - } - } - return tags; -} -/* eslint-enable complexity */ - -// Test if the TIFF is Big Endian or Little Endian -function determineEndianness (buffer) { - var signature = buffer.toString('ascii', 0, 2); - if ('II' === signature) { - return 'LE'; - } else if ('MM' === signature) { - return 'BE'; - } -} - -function calculate (buffer, filepath) { - - if (!filepath) { - throw new TypeError('Tiff doesn\'t support buffer'); - } - - // Determine BE/LE - var isBigEndian = determineEndianness(buffer) === 'BE'; - - // read the IFD - var ifdBuffer = readIFD(buffer, filepath, isBigEndian); - - // extract the tags from the IFD - var tags = extractTags(ifdBuffer, isBigEndian); - - var width = tags[256]; - var height = tags[257]; - - if (!width || !height) { - throw new TypeError('Invalid Tiff, missing tags'); - } - - return { - 'width': width, - 'height': height - }; -} - -module.exports = { - 'detect': isTIFF, - 'calculate': calculate -}; diff --git a/lib/types/tiff.ts b/lib/types/tiff.ts new file mode 100644 index 00000000..65f2c013 --- /dev/null +++ b/lib/types/tiff.ts @@ -0,0 +1,114 @@ +// based on http://www.compix.com/fileformattif.htm +// TO-DO: support big-endian as well +import * as fs from 'fs' +import { IImage } from './interface' +import { readUInt } from '../readUInt' + +// Read IFD (image-file-directory) into a buffer +function readIFD(buffer: Buffer, filepath: string, isBigEndian: boolean) { + + const ifdOffset = readUInt(buffer, 32, 4, isBigEndian) + + // read only till the end of the file + let bufferSize = 1024 + const fileSize = fs.statSync(filepath).size + if (ifdOffset + bufferSize > fileSize) { + bufferSize = fileSize - ifdOffset - 10 + } + + // populate the buffer + const endBuffer = Buffer.alloc(bufferSize) + const descriptor = fs.openSync(filepath, 'r') + fs.readSync(descriptor, endBuffer, 0, bufferSize, ifdOffset) + + return endBuffer.slice(2) +} + +// TIFF values seem to be messed up on Big-Endian, this helps +function readValue(buffer: Buffer, isBigEndian: boolean): number { + const low = readUInt(buffer, 16, 8, isBigEndian) + const high = readUInt(buffer, 16, 10, isBigEndian) + return (high << 16) + low +} + +// move to the next tag +function nextTag(buffer: Buffer) { + if (buffer.length > 24) { + return buffer.slice(12) + } +} + +// Extract IFD tags from TIFF metadata +function extractTags(buffer: Buffer, isBigEndian: boolean) { + const tags: {[key: number]: number} = {} + + let temp: Buffer | undefined = buffer + while (temp && temp.length) { + const code = readUInt(temp, 16, 0, isBigEndian) + const type = readUInt(temp, 16, 2, isBigEndian) + const length = readUInt(temp, 32, 4, isBigEndian) + + // 0 means end of IFD + if (code === 0) { + break + } else { + // 256 is width, 257 is height + // if (code === 256 || code === 257) { + if (length === 1 && (type === 3 || type === 4)) { + tags[code] = readValue(temp, isBigEndian) + } + + // move to the next tag + temp = nextTag(temp) + } + } + + return tags +} + +// Test if the TIFF is Big Endian or Little Endian +function determineEndianness(buffer: Buffer) { + const signature = buffer.toString('ascii', 0, 2) + if ('II' === signature) { + return 'LE' + } else if ('MM' === signature) { + return 'BE' + } +} + +const signatures = [ + // '492049', // currently not supported + '49492a00', // Little endian + '4d4d002a', // Big Endian + // '4d4d002a', // BigTIFF > 4GB. currently not supported +] + +export const TIFF: IImage = { + validate(buffer) { + return signatures.includes(buffer.toString('hex', 0, 4)) + }, + + calculate(buffer, filepath) { + if (!filepath) { + throw new TypeError('Tiff doesn\'t support buffer') + } + + // Determine BE/LE + const isBigEndian = determineEndianness(buffer) === 'BE' + + // read the IFD + const ifdBuffer = readIFD(buffer, filepath, isBigEndian) + + // extract the tags from the IFD + const tags = extractTags(ifdBuffer, isBigEndian) + + const width = tags[256] + const height = tags[257] + + if (!width || !height) { + throw new TypeError('Invalid Tiff. Missing tags') + } + + return { height, width } + } +} diff --git a/lib/types/webp.js b/lib/types/webp.js deleted file mode 100644 index 9f35c69f..00000000 --- a/lib/types/webp.js +++ /dev/null @@ -1,71 +0,0 @@ -'use strict'; - -// based on https://developers.google.com/speed/webp/docs/riff_container - -function isWebP (buffer) { - var riffHeader = 'RIFF' === buffer.toString('ascii', 0, 4); - var webpHeader = 'WEBP' === buffer.toString('ascii', 8, 12); - var vp8Header = 'VP8' === buffer.toString('ascii', 12, 15); - return (riffHeader && webpHeader && vp8Header); -} - -/* eslint-disable complexity */ -function calculate (buffer) { - var chunkHeader = buffer.toString('ascii', 12, 16); - buffer = buffer.slice(20, 30); - - // Extended webp stream signature - if (chunkHeader === 'VP8X') { - var extendedHeader = buffer[0]; - var validStart = (extendedHeader & 0xc0) === 0; - var validEnd = (extendedHeader & 0x01) === 0; - if (validStart && validEnd) { - return calculateExtended(buffer); - } else { - return false; - } - } - - // Lossless webp stream signature - if (chunkHeader === 'VP8 ' && buffer[0] !== 0x2f) { - return calculateLossy(buffer); - } - - // Lossy webp stream signature - var signature = buffer.toString('hex', 3, 6); - if (chunkHeader === 'VP8L' && signature !== '9d012a') { - return calculateLossless(buffer); - } - - return false; -} -/* eslint-enable complexity */ - -function calculateExtended (buffer) { - return { - 'width': 1 + buffer.readUIntLE(4, 3), - 'height': 1 + buffer.readUIntLE(7, 3) - }; -} - -function calculateLossless (buffer) { - return { - 'width': 1 + (((buffer[2] & 0x3F) << 8) | buffer[1]), - 'height': 1 + (((buffer[4] & 0xF) << 10) | (buffer[3] << 2) | - ((buffer[2] & 0xC0) >> 6)) - }; -} - -function calculateLossy (buffer) { - // `& 0x3fff` returns the last 14 bits - // TO-DO: include webp scaling in the calculations - return { - 'width': buffer.readInt16LE(6) & 0x3fff, - 'height': buffer.readInt16LE(8) & 0x3fff - }; -} - -module.exports = { - 'detect': isWebP, - 'calculate': calculate -}; diff --git a/lib/types/webp.ts b/lib/types/webp.ts new file mode 100644 index 00000000..2a09e1cf --- /dev/null +++ b/lib/types/webp.ts @@ -0,0 +1,65 @@ +// based on https://developers.google.com/speed/webp/docs/riff_container +import { IImage, ISize } from './interface' + +function calculateExtended(buffer: Buffer): ISize { + return { + height: 1 + buffer.readUIntLE(7, 3), + width: 1 + buffer.readUIntLE(4, 3) + } +} + +function calculateLossless(buffer: Buffer): ISize { + return { + height: 1 + (((buffer[4] & 0xF) << 10) | (buffer[3] << 2) | ((buffer[2] & 0xC0) >> 6)), + width: 1 + (((buffer[2] & 0x3F) << 8) | buffer[1]) + } +} + +function calculateLossy(buffer: Buffer): ISize { + // `& 0x3fff` returns the last 14 bits + // TO-DO: include webp scaling in the calculations + return { + height: buffer.readInt16LE(8) & 0x3fff, + width: buffer.readInt16LE(6) & 0x3fff + } +} + +export const WEBP: IImage = { + validate(buffer) { + const riffHeader = 'RIFF' === buffer.toString('ascii', 0, 4) + const webpHeader = 'WEBP' === buffer.toString('ascii', 8, 12) + const vp8Header = 'VP8' === buffer.toString('ascii', 12, 15) + return (riffHeader && webpHeader && vp8Header) + }, + + calculate(buffer) { + const chunkHeader = buffer.toString('ascii', 12, 16) + buffer = buffer.slice(20, 30) + + // Extended webp stream signature + if (chunkHeader === 'VP8X') { + const extendedHeader = buffer[0] + const validStart = (extendedHeader & 0xc0) === 0 + const validEnd = (extendedHeader & 0x01) === 0 + if (validStart && validEnd) { + return calculateExtended(buffer) + } else { + // TODO: breaking change + throw new TypeError('Invalid WebP') + } + } + + // Lossless webp stream signature + if (chunkHeader === 'VP8 ' && buffer[0] !== 0x2f) { + return calculateLossy(buffer) + } + + // Lossy webp stream signature + const signature = buffer.toString('hex', 3, 6) + if (chunkHeader === 'VP8L' && signature !== '9d012a') { + return calculateLossless(buffer) + } + + throw new TypeError('Invalid WebP') + } +} diff --git a/package-lock.json b/package-lock.json index 04ceb831..dd943dc4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -174,6 +174,12 @@ "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, + "@types/node": { + "version": "12.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.5.tgz", + "integrity": "sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w==", + "dev": true + }, "acorn": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", @@ -325,6 +331,12 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, "caching-transform": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", @@ -452,8 +464,7 @@ "version": "2.20.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true, - "optional": true + "dev": true }, "commondir": { "version": "1.0.1", @@ -1592,9 +1603,9 @@ } }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "lodash.flattendeep": { @@ -2675,6 +2686,44 @@ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", "dev": true }, + "tslint": { + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.0.tgz", + "integrity": "sha512-2vqIvkMHbnx8acMogAERQ/IuINOq6DFqgF8/VDvhEkBqQh/x6SP0Y+OHnKth9/ZcHQSroOZwUQSN18v8KKF0/g==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "diff": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", + "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -2705,6 +2754,12 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, + "typescript": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.3.tgz", + "integrity": "sha512-N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==", + "dev": true + }, "uglify-js": { "version": "3.5.11", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.11.tgz", diff --git a/package.json b/package.json index 0dceb8c4..d98cf4bd 100644 --- a/package.json +++ b/package.json @@ -2,10 +2,11 @@ "name": "image-size", "version": "0.7.5", "description": "get dimensions of any image file", - "main": "lib/index.js", + "main": "dist/index.js", + "types": "dist/index.d.ts", "files": [ - "bin", - "lib" + "dist", + "bin/image-size.js" ], "engines": { "node": ">=6.9.0" @@ -14,9 +15,12 @@ "image-size": "bin/image-size.js" }, "scripts": { - "pretest": "eslint lib specs", + "pretest": "tslint -p . && tsc && eslint specs", "test": "nyc mocha specs", - "coverage": "nyc report --reporter=text-lcov | coveralls" + "coverage": "nyc report --reporter=text-lcov | coveralls", + "clean": "rm -rf dist", + "build": "tsc", + "prepack": "npm run clean && npm run build" }, "repository": "image-size/image-size", "keywords": [ @@ -41,12 +45,15 @@ "author": "netroy (http://netroy.in/)", "license": "MIT", "devDependencies": { + "@types/node": "12.7.5", "coveralls": "3.0.6", "eslint": "6.4.0", "expect.js": "0.3.1", "glob": "7.1.4", "mocha": "6.2.0", "nyc": "14.1.1", - "sinon": "7.4.2" + "sinon": "7.4.2", + "tslint": "5.20.0", + "typescript": "3.6.3" } } diff --git a/specs/fs-close.spec.js b/specs/fs-close.spec.js index 42c25e4f..1762ff2f 100644 --- a/specs/fs-close.spec.js +++ b/specs/fs-close.spec.js @@ -4,7 +4,7 @@ var expect = require('expect.js'); var sinon = require('sinon'); var fs = require('fs'); -var imageSize = require('..'); +var imageSize = require('..').imageSize; describe('after done reading from files', function () { function readFromClosed (descriptor) { diff --git a/specs/invalid.spec.js b/specs/invalid.spec.js index eb386f68..06b7a1c6 100644 --- a/specs/invalid.spec.js +++ b/specs/invalid.spec.js @@ -3,7 +3,7 @@ var expect = require('expect.js'); var glob = require('glob'); -var imageSize = require('..'); +var imageSize = require('..').imageSize; // Test all invalid files describe('Invalid Images', function () { @@ -18,14 +18,14 @@ describe('Invalid Images', function () { it('should throw when called synchronously', function() { expect(calculate).to.throwException(function (e) { expect(e).to.be.a(TypeError); - expect(e.message).to.match(/^invalid \w+$/); + expect(e.message).to.match(/^Invalid \w+$/); }); }); it('should callback with error when called asynchronously', function(done) { calculate(function (e) { expect(e).to.be.a(TypeError); - expect(e.message).to.match(/^invalid \w+$/); + expect(e.message).to.match(/^Invalid \w+$/); done(); }); }); diff --git a/specs/others.spec.js b/specs/others.spec.js index 52729c19..61be7747 100644 --- a/specs/others.spec.js +++ b/specs/others.spec.js @@ -4,7 +4,8 @@ var expect = require('expect.js'); var path = require('path'); var fs = require('fs'); -var imageSize = require('..'); +var imageSize = require('..').imageSize; +var types = require('..').types; // If something other than a buffer or filepath is passed describe('Invalid invocation', function () { @@ -71,6 +72,6 @@ describe('Callback function', function () { describe('.types property', function () { it('should expose supported file types', function() { - expect(imageSize.types).to.eql(['bmp', 'cur', 'dds', 'gif', 'icns', 'ico', 'jpg', 'png', 'psd', 'svg', 'tiff', 'webp']); + expect(types).to.eql(['bmp', 'cur', 'dds', 'gif', 'icns', 'ico', 'jpg', 'png', 'psd', 'svg', 'tiff', 'webp']); }); }); diff --git a/specs/valid.spec.js b/specs/valid.spec.js index 2da5fe11..cecb065c 100644 --- a/specs/valid.spec.js +++ b/specs/valid.spec.js @@ -5,8 +5,8 @@ var expect = require('expect.js'); var glob = require('glob'); var path = require('path'); -var imageSize = require('..'); -var detector = require('../lib/detector'); +var imageSize = require('..').imageSize; +var detector = require('../dist/detector').detector; var sizes = { 'default': { diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..f48eb037 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "ES2015", + "module": "commonjs", + "allowJs": false, + "declaration": true, + "outDir": "./dist", + "rootDir": "./lib", + "removeComments": true, + "strict": true, + "alwaysStrict": true, + "moduleResolution": "node" + }, + "include": [ + "lib/**/*" + ] +} diff --git a/tslint.json b/tslint.json new file mode 100644 index 00000000..683c638b --- /dev/null +++ b/tslint.json @@ -0,0 +1,15 @@ +{ + "defaultSeverity": "error", + "extends": [ + "tslint:recommended" + ], + "rules": { + "no-bitwise": false, + "no-trailing-whitespace": true, + "object-literal-key-quotes": [true, "as-needed"], + "ordered-imports": false, + "quotemark": [true, "single"], + "semicolon": [true, "never"], + "trailing-comma": false + } +} \ No newline at end of file From 7f9bff23bab9d1d7cc0d7655182e57f1e0a5e307 Mon Sep 17 00:00:00 2001 From: Aditya Date: Mon, 16 Sep 2019 18:00:08 +0200 Subject: [PATCH 083/110] updated readme --- Readme.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Readme.md b/Readme.md index 31da8a5e..9a2becd4 100644 --- a/Readme.md +++ b/Readme.md @@ -29,7 +29,7 @@ A [Node](https://nodejs.org/en/) module to get dimensions of any image file ## Programmatic Usage -``` +```shell npm install image-size --save ``` @@ -49,9 +49,11 @@ sizeOf('images/funny-cats.png', function (err, dimensions) { console.log(dimensions.width, dimensions.height); }); ``` + NOTE: The asynchronous version doesn't work if the input is a Buffer. Use synchronous version instead. ### Using promises (node 8.x) + ```javascript var { promisify } = require('util'); var sizeOf = promisify(require('image-size')); @@ -61,15 +63,18 @@ sizeOf('images/funny-cats.png') ``` ### Async/Await (Typescript & ES7) + ```javascript var { promisify } = require('util'); var sizeOf = promisify(require('image-size')); -try { - const dimensions = await sizeOf('images/funny-cats.png'); - console.log(dimensions.width, dimensions.height); -} catch (err) { - console.error(err); -} +(async () => { + try { + const dimensions = await sizeOf('images/funny-cats.png'); + console.log(dimensions.width, dimensions.height); + } catch (err) { + console.error(err); + } +})().then(c => console.log(c)); ``` ### Multi-size @@ -113,7 +118,7 @@ You can optionally check the buffer lengths & stop downloading the image after a ## Command-Line Usage (CLI) -``` +```shell npm install image-size --global image-size image1 [image2] [image3] ... ``` From 2952ca5fee9700f494fab2900116a4ddc425cb5b Mon Sep 17 00:00:00 2001 From: Aditya Date: Mon, 16 Sep 2019 18:18:12 +0200 Subject: [PATCH 084/110] fix jsdocs --- lib/index.ts | 6 +++--- tsconfig.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index 885776ff..e80cb25f 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -93,12 +93,12 @@ function syncFileToBuffer(filepath: string): Buffer { return buffer } +export function imageSize(input: Buffer): Dimensions +export function imageSize(input: string, callback: CallbackFn): void /** * @param {Buffer|string} input - buffer or relative/absolute path of the image file - * @param {Function=} callback - optional function for async detection + * @param {Function=} [callback] - optional function for async detection */ -export function imageSize(input: Buffer): Dimensions -export function imageSize(input: string, callback: CallbackFn): void export function imageSize(input: any, callback?: any): any { // Handle buffer input if (Buffer.isBuffer(input)) { diff --git a/tsconfig.json b/tsconfig.json index f48eb037..543a1c7b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "declaration": true, "outDir": "./dist", "rootDir": "./lib", - "removeComments": true, + "removeComments": false, "strict": true, "alwaysStrict": true, "moduleResolution": "node" From 145aaf3fc12bebbdde6e23db3cc5d3647d7da741 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 17 Sep 2019 12:56:25 +0200 Subject: [PATCH 085/110] Fix the default export to be backward compatible. don't break the API --- lib/index.ts | 4 +++- specs/fs-close.spec.js | 2 +- specs/invalid.spec.js | 2 +- specs/others.spec.js | 2 +- specs/valid.spec.js | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index e80cb25f..5970f986 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -18,7 +18,7 @@ const MaxBufferSize = 512 * 1024 * @param {String} filepath * @returns {Object} */ -function lookup(buffer: Buffer, filepath?: string) { +function lookup(buffer: Buffer, filepath?: string): Dimensions { // detect the file type.. don't rely on the extension const type = detector(buffer) if (!type) { return null } @@ -93,6 +93,8 @@ function syncFileToBuffer(filepath: string): Buffer { return buffer } +module.exports = exports = imageSize // backwards compatibility + export function imageSize(input: Buffer): Dimensions export function imageSize(input: string, callback: CallbackFn): void /** diff --git a/specs/fs-close.spec.js b/specs/fs-close.spec.js index 1762ff2f..42c25e4f 100644 --- a/specs/fs-close.spec.js +++ b/specs/fs-close.spec.js @@ -4,7 +4,7 @@ var expect = require('expect.js'); var sinon = require('sinon'); var fs = require('fs'); -var imageSize = require('..').imageSize; +var imageSize = require('..'); describe('after done reading from files', function () { function readFromClosed (descriptor) { diff --git a/specs/invalid.spec.js b/specs/invalid.spec.js index 06b7a1c6..b6da30dd 100644 --- a/specs/invalid.spec.js +++ b/specs/invalid.spec.js @@ -3,7 +3,7 @@ var expect = require('expect.js'); var glob = require('glob'); -var imageSize = require('..').imageSize; +var imageSize = require('..'); // Test all invalid files describe('Invalid Images', function () { diff --git a/specs/others.spec.js b/specs/others.spec.js index 61be7747..8f209861 100644 --- a/specs/others.spec.js +++ b/specs/others.spec.js @@ -4,7 +4,7 @@ var expect = require('expect.js'); var path = require('path'); var fs = require('fs'); -var imageSize = require('..').imageSize; +var imageSize = require('..'); var types = require('..').types; // If something other than a buffer or filepath is passed diff --git a/specs/valid.spec.js b/specs/valid.spec.js index cecb065c..f6c1e54e 100644 --- a/specs/valid.spec.js +++ b/specs/valid.spec.js @@ -5,7 +5,7 @@ var expect = require('expect.js'); var glob = require('glob'); var path = require('path'); -var imageSize = require('..').imageSize; +var imageSize = require('..'); var detector = require('../dist/detector').detector; var sizes = { From 1b72e8d908211491114b346e3c0173ffefb5e60b Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 17 Sep 2019 12:58:56 +0200 Subject: [PATCH 086/110] Added a queue for async operations. This will prevent the module from exhausting the OS's file descriptors. --- lib/index.ts | 32 +++++++++++++++++++++----------- package-lock.json | 11 +++++++++-- package.json | 3 +++ 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index 5970f986..7e60e84c 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,5 +1,6 @@ import * as fs from 'fs' import * as path from 'path' +import Queue from 'queue' import { typeHandlers } from './types' import { detector } from './detector' import { ISizes, ISize } from './types/interface' @@ -11,6 +12,9 @@ type Dimensions = ISize | ISizes | null | undefined // TO-DO: make this adaptive based on the initial signature of the image const MaxBufferSize = 512 * 1024 +// This queue is for async `fs` operations, to avoid reaching file-descriptor limits +const queue = new Queue({ concurrency: 100, autostart: true }) + /** * Return size information based on a buffer * @@ -116,17 +120,22 @@ export function imageSize(input: any, callback?: any): any { const filepath = path.resolve(input) if (typeof callback === 'function') { - asyncFileToBuffer(filepath, (err, buffer) => { - if (err || !buffer) { - return callback(err) - } - let dimensions: Dimensions = null - try { - dimensions = lookup(buffer, filepath) - } catch (e) { - err = e - } - callback(err, dimensions) + queue.push((done) => { + asyncFileToBuffer(filepath, (err, buffer) => { + if (err || !buffer) { + return callback(err) + } + let dimensions: Dimensions = null + try { + dimensions = lookup(buffer, filepath) + } catch (e) { + err = e + } + callback(err, dimensions) + if (typeof done === 'function') { + done(undefined, {}) + } + }) }) } else { const buffer = syncFileToBuffer(filepath) @@ -134,4 +143,5 @@ export function imageSize(input: any, callback?: any): any { } } +export const setConcurrency = (c: number) => { queue.concurrency = c } export const types = Object.keys(typeHandlers) diff --git a/package-lock.json b/package-lock.json index dd943dc4..26a8c43d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1215,8 +1215,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "inquirer": { "version": "6.5.2", @@ -2259,6 +2258,14 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, + "queue": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.1.tgz", + "integrity": "sha512-AJBQabRCCNr9ANq8v77RJEv73DPbn55cdTb+Giq4X0AVnNVZvMHlYp7XlQiN+1npCZj1DuSmaA2hYVUUDgxFDg==", + "requires": { + "inherits": "~2.0.3" + } + }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", diff --git a/package.json b/package.json index d98cf4bd..0a5e6cb9 100644 --- a/package.json +++ b/package.json @@ -55,5 +55,8 @@ "sinon": "7.4.2", "tslint": "5.20.0", "typescript": "3.6.3" + }, + "dependencies": { + "queue": "6.0.1" } } From 01841b52494adfbb10e0feae2152718494fdc55e Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 17 Sep 2019 13:33:59 +0200 Subject: [PATCH 087/110] Add a note about concurrency in the readme --- Readme.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Readme.md b/Readme.md index 9a2becd4..feb19fc2 100644 --- a/Readme.md +++ b/Readme.md @@ -52,6 +52,14 @@ sizeOf('images/funny-cats.png', function (err, dimensions) { NOTE: The asynchronous version doesn't work if the input is a Buffer. Use synchronous version instead. +Also, the asynchronous functions have a default concurreny limit of **100** +To change this limit, you can call the `setConcurrency` function like this: + +```javascript +var sizeOf = require('image-size'); +sizeOf.setConcurrency(123456) +``` + ### Using promises (node 8.x) ```javascript From 17c84ae6ca62c611ef425063ec3f815fec337d0c Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 17 Sep 2019 13:39:22 +0200 Subject: [PATCH 088/110] 0.8.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 26a8c43d..6e4267b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.7.5", + "version": "0.8.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 0a5e6cb9..8016d08c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.7.5", + "version": "0.8.0", "description": "get dimensions of any image file", "main": "dist/index.js", "types": "dist/index.d.ts", From 7a833b719ec161d7e7de6e68dea99dd7acb603f8 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 17 Sep 2019 13:59:56 +0200 Subject: [PATCH 089/110] fix backward compatibility stop breaking things --- lib/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index 7e60e84c..ea460156 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -25,10 +25,9 @@ const queue = new Queue({ concurrency: 100, autostart: true }) function lookup(buffer: Buffer, filepath?: string): Dimensions { // detect the file type.. don't rely on the extension const type = detector(buffer) - if (!type) { return null } // find an appropriate handler for this file type - if (type in typeHandlers) { + if (type && type in typeHandlers) { const size = typeHandlers[type].calculate(buffer, filepath) if (size !== undefined) { size.type = type From 684e2f3fcc14796205459243aa9f7aa87506f123 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 17 Sep 2019 16:40:30 +0200 Subject: [PATCH 090/110] avoid validating for every single image type this should improve the performance, & reduce the memory usage --- lib/detector.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lib/detector.ts b/lib/detector.ts index b2401dff..059c16fd 100644 --- a/lib/detector.ts +++ b/lib/detector.ts @@ -2,7 +2,29 @@ import { typeHandlers } from './types' const keys = Object.keys(typeHandlers) +// This map helps avoid validating for every single image type +const firstBytes: { [byte: number]: string } = { + 0x38: 'psd', + 0x42: 'bmp', + 0x44: 'dds', + 0x47: 'gif', + 0x49: 'tiff', + 0x4d: 'tiff', + 0x52: 'webp', + 0x69: 'icns', + 0x89: 'png', + 0xff: 'jpg' +} + export function detector(buffer: Buffer): string | undefined { + const byte = buffer[0] + if (byte in firstBytes) { + const type = firstBytes[byte] + if (typeHandlers[type].validate(buffer)) { + return type + } + } + const finder = (key: string) => typeHandlers[key].validate(buffer) return keys.find(finder) } From 54de8487a88d7eef1ae6fd4b569634c5f4b21f6c Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 17 Sep 2019 16:49:04 +0200 Subject: [PATCH 091/110] 0.8.1 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6e4267b3..43fbb90a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.8.0", + "version": "0.8.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8016d08c..ba7aed0a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.8.0", + "version": "0.8.1", "description": "get dimensions of any image file", "main": "dist/index.js", "types": "dist/index.d.ts", From 067eb40bf99e698ba36727791b1dca23f90aae2a Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 17 Sep 2019 19:12:20 +0200 Subject: [PATCH 092/110] simplify code by switching to fs.promises --- lib/index.ts | 69 ++++++++++-------------------------------- specs/fs-close.spec.js | 34 ++++++++++----------- 2 files changed, 33 insertions(+), 70 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index ea460156..5fcc52e9 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -41,42 +41,20 @@ function lookup(buffer: Buffer, filepath?: string): Dimensions { /** * Reads a file into a buffer. - * - * The callback will be called after the process has completed. The - * callback's first argument will be an error (or null). The second argument - * will be the Buffer, if the operation was successful. - * * @param {String} filepath - * @param {Function} callback + * @returns {Promise} */ -function asyncFileToBuffer(filepath: string, callback: CallbackFn): void { - // open the file in read only mode - fs.open(filepath, 'r', (err1, descriptor) => { - if (err1) { - return callback(err1) - } - fs.fstat(descriptor, (err2, stats) => { - if (err2) { - return callback(err2) - } - const size = stats.size - if (size <= 0) { - return callback(new Error('File size is not greater than 0 —— ' + filepath)) - } - const bufferSize = Math.min(size, MaxBufferSize) - const buffer = Buffer.alloc(bufferSize) - // read first buffer block from the file, asynchronously - fs.read(descriptor, buffer, 0, bufferSize, 0, (err3) => { - if (err3) { - return callback(err3) - } - // close the file, we are done - fs.close(descriptor, (err4) => { - callback(err4, buffer) - }) - }) - }) - }) +async function asyncFileToBuffer(filepath: string) { + const handle = await fs.promises.open(filepath, 'r') + const { size } = await handle.stat() + if (size <= 0) { + throw new Error('Empty file') + } + const bufferSize = Math.min(size, MaxBufferSize) + const buffer = Buffer.alloc(bufferSize) + await handle.read(buffer, 0, bufferSize, 0) + await handle.close() + return buffer } /** @@ -85,7 +63,7 @@ function asyncFileToBuffer(filepath: string, callback: CallbackFn): void { * @param {String} filepath * @returns {Buffer} */ -function syncFileToBuffer(filepath: string): Buffer { +function syncFileToBuffer(filepath: string) { // read from the file, synchronously const descriptor = fs.openSync(filepath, 'r') const size = fs.fstatSync(descriptor).size @@ -117,25 +95,10 @@ export function imageSize(input: any, callback?: any): any { // resolve the file path const filepath = path.resolve(input) - if (typeof callback === 'function') { - queue.push((done) => { - asyncFileToBuffer(filepath, (err, buffer) => { - if (err || !buffer) { - return callback(err) - } - let dimensions: Dimensions = null - try { - dimensions = lookup(buffer, filepath) - } catch (e) { - err = e - } - callback(err, dimensions) - if (typeof done === 'function') { - done(undefined, {}) - } - }) - }) + queue.push(() => asyncFileToBuffer(filepath) + .then((buffer) => process.nextTick(callback, null, lookup(buffer, filepath))) + .catch(callback)) } else { const buffer = syncFileToBuffer(filepath) return lookup(buffer, filepath) diff --git a/specs/fs-close.spec.js b/specs/fs-close.spec.js index 42c25e4f..d0e1f612 100644 --- a/specs/fs-close.spec.js +++ b/specs/fs-close.spec.js @@ -12,28 +12,28 @@ describe('after done reading from files', function () { } describe('should close the file descriptor', function () { + var spy; - it('async', function (done) { + beforeEach(function () { + spy = sinon.spy(fs.promises, 'open'); + }); - var descriptor; - var oldOpen = fs.open; - fs.open = sinon.spy(function (path, mode, callback) { - oldOpen.call(fs, path, mode, function (err, d) { - descriptor = d; - callback(err, d); - }); - }); + afterEach(function () { + sinon.restore(); + }); + it('async', function (done) { imageSize('specs/images/valid/jpg/large.jpg', function () { - - expect(readFromClosed.bind(null, descriptor)).to.throwException(function (e) { - expect(e.code).to.equal('EBADF'); - expect(e).to.be.an(Error); - expect(e.message).to.match(/bad file descriptor/); + expect(spy.calledOnce).to.be.ok(); + var fsPromise = spy.returnValues[0]; + fsPromise.then(function (handle) { + expect(readFromClosed.bind(null, handle.fd)).to.throwException(function (e) { + expect(e.code).to.equal('EBADF'); + expect(e).to.be.an(Error); + expect(e.message).to.match(/bad file descriptor/); + }); + done(); }); - - fs.open = oldOpen; - done(); }); }); From 9a790b48cc4bdca96504d358109ec80cce82e8ba Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 17 Sep 2019 19:15:32 +0200 Subject: [PATCH 093/110] minimal fs.promises shim for nodejs 8.x --- lib/fs.promises.ts | 48 ++++++++++++++++++++++++++++++++++++++++++++++ lib/index.ts | 1 + 2 files changed, 49 insertions(+) create mode 100644 lib/fs.promises.ts diff --git a/lib/fs.promises.ts b/lib/fs.promises.ts new file mode 100644 index 00000000..450ebc24 --- /dev/null +++ b/lib/fs.promises.ts @@ -0,0 +1,48 @@ +import * as fs from 'fs' + +// fs.promises polyfill for node 8.x +if (!('promises' in fs)) { + + class FileHandle { + private fd: number + + constructor(fd: number) { + this.fd = fd + } + + public stat() { + return new Promise((resolve, reject) => { + fs.fstat(this.fd, (err, stats) => { + if (err) { reject(err) } else { resolve(stats) } + }) + }) + } + + public read(buffer: Buffer, offset: number, length: number, position: number) { + return new Promise((resolve, reject) => { + fs.read(this.fd, buffer, offset, length, position, (err) => { + if (err) { reject(err) } else { resolve() } + }) + }) + } + + public close() { + return new Promise((resolve, reject) => { + fs.close(this.fd, (err) => { + if (err) { reject(err) } else { resolve() } + }) + }) + } + } + + Object.defineProperty(fs, 'promises', { + value: { + open: (filepath: string, flags: string): Promise => (new Promise((resolve, reject) => { + fs.open(filepath, flags, (err, fd) => { + if (err) { reject(err) } else { resolve(new FileHandle(fd)) } + }) + })), + }, + writable: false + }) +} diff --git a/lib/index.ts b/lib/index.ts index 5fcc52e9..d0336001 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -4,6 +4,7 @@ import Queue from 'queue' import { typeHandlers } from './types' import { detector } from './detector' import { ISizes, ISize } from './types/interface' +import './fs.promises' type CallbackFn = (e: Error | null, b?: Buffer) => void type Dimensions = ISize | ISizes | null | undefined From 72e2c5e48fec6ca1d5db03f33d1c2d65f031c79b Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 17 Sep 2019 19:33:57 +0200 Subject: [PATCH 094/110] migrate assertions from expect.js to chai --- package-lock.json | 53 +++++++++++++++++++++++++++++++++++++----- package.json | 2 +- specs/fs-close.spec.js | 16 ++++--------- specs/invalid.spec.js | 14 ++++------- specs/others.spec.js | 19 ++++----------- specs/valid.spec.js | 22 +++++++++--------- 6 files changed, 72 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index 43fbb90a..bb966532 100644 --- a/package-lock.json +++ b/package-lock.json @@ -276,6 +276,12 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -367,6 +373,20 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, "chalk": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", @@ -404,6 +424,12 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -557,6 +583,15 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -849,12 +884,6 @@ "strip-eof": "^1.0.0" } }, - "expect.js": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/expect.js/-/expect.js-0.3.1.tgz", - "integrity": "sha1-sKWaDS7/VDdUTr8M6qYBWEHQm1s=", - "dev": true - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -1023,6 +1052,12 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -2191,6 +2226,12 @@ } } }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", diff --git a/package.json b/package.json index ba7aed0a..e2f12ccd 100644 --- a/package.json +++ b/package.json @@ -46,9 +46,9 @@ "license": "MIT", "devDependencies": { "@types/node": "12.7.5", + "chai": "4.2.0", "coveralls": "3.0.6", "eslint": "6.4.0", - "expect.js": "0.3.1", "glob": "7.1.4", "mocha": "6.2.0", "nyc": "14.1.1", diff --git a/specs/fs-close.spec.js b/specs/fs-close.spec.js index d0e1f612..a87b87df 100644 --- a/specs/fs-close.spec.js +++ b/specs/fs-close.spec.js @@ -1,6 +1,6 @@ 'use strict'; -var expect = require('expect.js'); +var expect = require('chai').expect; var sinon = require('sinon'); var fs = require('fs'); @@ -24,14 +24,10 @@ describe('after done reading from files', function () { it('async', function (done) { imageSize('specs/images/valid/jpg/large.jpg', function () { - expect(spy.calledOnce).to.be.ok(); + expect(spy.calledOnce).to.be.true; var fsPromise = spy.returnValues[0]; fsPromise.then(function (handle) { - expect(readFromClosed.bind(null, handle.fd)).to.throwException(function (e) { - expect(e.code).to.equal('EBADF'); - expect(e).to.be.an(Error); - expect(e.message).to.match(/bad file descriptor/); - }); + expect(readFromClosed.bind(null, handle.fd)).to.throw(Error, 'bad file descriptor').with.property('code', 'EBADF'); done(); }); }); @@ -47,11 +43,7 @@ describe('after done reading from files', function () { imageSize('specs/images/valid/jpg/large.jpg'); - expect(readFromClosed.bind(null, descriptor)).to.throwException(function (e) { - expect(e.code).to.equal('EBADF'); - expect(e).to.be.an(Error); - expect(e.message).to.match(/bad file descriptor/); - }); + expect(readFromClosed.bind(null, descriptor)).to.throw(Error, 'bad file descriptor').with.property('code', 'EBADF'); fs.openSync = oldOpen; }); diff --git a/specs/invalid.spec.js b/specs/invalid.spec.js index b6da30dd..1c27e392 100644 --- a/specs/invalid.spec.js +++ b/specs/invalid.spec.js @@ -1,6 +1,6 @@ 'use strict'; -var expect = require('expect.js'); +var expect = require('chai').expect; var glob = require('glob'); var imageSize = require('..'); @@ -16,15 +16,12 @@ describe('Invalid Images', function () { var calculate = imageSize.bind(null, file); it('should throw when called synchronously', function() { - expect(calculate).to.throwException(function (e) { - expect(e).to.be.a(TypeError); - expect(e.message).to.match(/^Invalid \w+$/); - }); + expect(calculate).to.throw(TypeError, 'Invalid'); }); it('should callback with error when called asynchronously', function(done) { calculate(function (e) { - expect(e).to.be.a(TypeError); + expect(e).to.be.instanceOf(TypeError); expect(e.message).to.match(/^Invalid \w+$/); done(); }); @@ -37,10 +34,7 @@ describe('Invalid Images', function () { var calculate = imageSize.bind(null, 'fakefile.jpg'); it('should throw when called synchronously', function() { - expect(calculate).to.throwException(function (e) { - expect(e).to.be.a(Error); - expect(e.message).to.match(/^ENOENT.*$/); - }); + expect(calculate).to.throw(Error, 'ENOENT'); }); it('should callback with error when called asynchronously', function(done) { diff --git a/specs/others.spec.js b/specs/others.spec.js index 8f209861..b91bff1b 100644 --- a/specs/others.spec.js +++ b/specs/others.spec.js @@ -1,6 +1,6 @@ 'use strict'; -var expect = require('expect.js'); +var expect = require('chai').expect; var path = require('path'); var fs = require('fs'); @@ -12,19 +12,13 @@ describe('Invalid invocation', function () { describe('invalid type', function () { it('should throw', function() { - expect(imageSize.bind(null, {})).to.throwException(function (e) { - expect(e).to.be.a(TypeError); - expect(e.message).to.be('invalid invocation'); - }); + expect(imageSize.bind(null, {})).to.throw(TypeError, 'invalid invocation'); }); }); describe('non existant file', function () { it('should throw', function() { - expect(imageSize.bind(null, '/monkey/man/yo')).to.throwException(function (e) { - // expect(e.errno).to.be(34); - expect(e.code).to.be('ENOENT'); - }); + expect(imageSize.bind(null, '/monkey/man/yo')).to.throw(Error).with.property('code', 'ENOENT'); }); }); @@ -42,10 +36,7 @@ describe('Invalid invocation', function () { }); it('should throw', function () { - expect(imageSize.bind(null, buffer)).to.throwException(function (e) { - expect(e).to.be.a(TypeError); - expect(e.message).to.contain('doesn\'t support buffer'); - }); + expect(imageSize.bind(null, buffer)).to.throw(TypeError, 'Tiff doesn\'t support buffer'); }); }); @@ -58,7 +49,7 @@ describe('Callback function', function () { var origException = process.listeners('uncaughtException').pop(); process.removeListener('uncaughtException', origException); process.once('uncaughtException', function (err) { - expect(err).to.be(tmpError); + expect(err).to.equal(tmpError); }); imageSize('specs/images/valid/jpg/sample.jpg', function() { diff --git a/specs/valid.spec.js b/specs/valid.spec.js index f6c1e54e..2b188caa 100644 --- a/specs/valid.spec.js +++ b/specs/valid.spec.js @@ -1,7 +1,7 @@ 'use strict'; var fs = require('fs'); -var expect = require('expect.js'); +var expect = require('chai').expect; var glob = require('glob'); var path = require('path'); @@ -134,31 +134,31 @@ describe('Valid images', function () { it('should return correct size for ' + file, function() { var expected = sizes[file] || sizes.default; - expect(asyncDimensions.width).to.be(expected.width); - expect(asyncDimensions.height).to.be(expected.height); + expect(asyncDimensions.width).to.equal(expected.width); + expect(asyncDimensions.height).to.equal(expected.height); if (asyncDimensions.images) { asyncDimensions.images.forEach(function (item, index) { var expectedItem = expected.images[index]; - expect(item.width).to.be(expectedItem.width); - expect(item.height).to.be(expectedItem.height); + expect(item.width).to.equal(expectedItem.width); + expect(item.height).to.equal(expectedItem.height); if (expectedItem.type) { - expect(item.type).to.be(expectedItem.type); + expect(item.type).to.equal(expectedItem.type); } }); } if (expected.orientation) { - expect(asyncDimensions.orientation).to.be(expected.orientation); + expect(asyncDimensions.orientation).to.equal(expected.orientation); } if (type !== 'tiff') { - expect(bufferDimensions.width).to.be(expected.width); - expect(bufferDimensions.height).to.be(expected.height); + expect(bufferDimensions.width).to.equal(expected.width); + expect(bufferDimensions.height).to.equal(expected.height); if (bufferDimensions.images) { bufferDimensions.images.forEach(function (item, index) { var expectedItem = expected.images[index]; - expect(item.width).to.be(expectedItem.width); - expect(item.height).to.be(expectedItem.height); + expect(item.width).to.equal(expectedItem.width); + expect(item.height).to.equal(expectedItem.height); }); } } From 0192f77a9e167fc81dae5861575f87080f1036bc Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 17 Sep 2019 20:19:45 +0200 Subject: [PATCH 095/110] Add support for KTX & PNM formats --- lib/types.ts | 4 + lib/types/ktx.ts | 16 + lib/types/pnm.ts | 80 + specs/images/valid/ktx/sample.ktx | Bin 0 -> 298180 bytes specs/images/valid/pnm/sample-ascii.pbm | 805 + specs/images/valid/pnm/sample-ascii.pgm | 56092 +++++++ specs/images/valid/pnm/sample-ascii.ppm | 168268 +++++++++++++++++++++ specs/images/valid/pnm/sample.pam | 8 + specs/images/valid/pnm/sample.pbm | Bin 0 -> 7353 bytes specs/images/valid/pnm/sample.pfm | Bin 0 -> 673072 bytes specs/images/valid/pnm/sample.pgm | 5 + specs/images/valid/pnm/sample.ppm | 5 + specs/others.spec.js | 2 +- 13 files changed, 225284 insertions(+), 1 deletion(-) create mode 100644 lib/types/ktx.ts create mode 100644 lib/types/pnm.ts create mode 100644 specs/images/valid/ktx/sample.ktx create mode 100644 specs/images/valid/pnm/sample-ascii.pbm create mode 100644 specs/images/valid/pnm/sample-ascii.pgm create mode 100644 specs/images/valid/pnm/sample-ascii.ppm create mode 100644 specs/images/valid/pnm/sample.pam create mode 100644 specs/images/valid/pnm/sample.pbm create mode 100644 specs/images/valid/pnm/sample.pfm create mode 100644 specs/images/valid/pnm/sample.pgm create mode 100644 specs/images/valid/pnm/sample.ppm diff --git a/lib/types.ts b/lib/types.ts index 42ee9a72..107ae0fb 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -7,7 +7,9 @@ import { GIF } from './types/gif' import { ICNS } from './types/icns' import { ICO } from './types/ico' import { JPG } from './types/jpg' +import { KTX } from './types/ktx' import { PNG } from './types/png' +import { PNM } from './types/pnm' import { PSD } from './types/psd' import { SVG } from './types/svg' import { TIFF } from './types/tiff' @@ -21,7 +23,9 @@ export const typeHandlers: {[key: string]: IImage} = { icns: ICNS, ico: ICO, jpg: JPG, + ktx: KTX, png: PNG, + pnm: PNM, psd: PSD, svg: SVG, tiff: TIFF, diff --git a/lib/types/ktx.ts b/lib/types/ktx.ts new file mode 100644 index 00000000..32bce911 --- /dev/null +++ b/lib/types/ktx.ts @@ -0,0 +1,16 @@ +import { IImage } from './interface' + +const SIGNATURE = 'KTX 11' + +export const KTX: IImage = { + validate(buffer) { + return SIGNATURE === buffer.toString('ascii', 1, 7) + }, + + calculate(buffer) { + return { + height: buffer.readUInt32LE(40), + width: buffer.readUInt32LE(36), + } + } +} diff --git a/lib/types/pnm.ts b/lib/types/pnm.ts new file mode 100644 index 00000000..559e6beb --- /dev/null +++ b/lib/types/pnm.ts @@ -0,0 +1,80 @@ +import { IImage, ISize } from './interface' + +const PNMTypes: { [signature: string]: string } = { + P1: 'pbm/ascii', + P2: 'pgm/ascii', + P3: 'ppm/ascii', + P4: 'pbm', + P5: 'pgm', + P6: 'ppm', + P7: 'pam', + PF: 'pfm' +} + +const Signatures = Object.keys(PNMTypes) + +type Handler = (type: string[]) => ISize +const handlers: { [type: string]: Handler} = { + default: (lines) => { + let dimensions: string[] = [] + + while (lines.length > 0) { + const line = lines.shift() as string + if (line[0] === '#') { + continue + } + dimensions = line.split(' ') + break + } + + if (dimensions.length === 2) { + return { + height: parseInt(dimensions[1], 10), + width: parseInt(dimensions[0], 10), + } + } else { + throw new TypeError('Invalid PNM') + } + }, + pam: (lines) => { + const size: { [key: string]: number } = {} + while (lines.length > 0) { + const line = lines.shift() as string + if (line.length > 16 || line.charCodeAt(0) > 128) { + continue + } + const [key, value] = line.split(' ') + if (key && value) { + size[key.toLowerCase()] = parseInt(value, 10) + } + if (size.height && size.width) { + break + } + } + + if (size.height && size.width) { + return { + height: size.height, + width: size.width + } + } else { + throw new TypeError('Invalid PAM') + } + } +} + +export const PNM: IImage = { + validate(buffer) { + const signature = buffer.toString('ascii', 0, 2) + return Signatures.includes(signature) + }, + + calculate(buffer) { + const signature = buffer.toString('ascii', 0, 2) + const type = PNMTypes[signature] + // TODO: this probably generates garbage. move to a stream based parser + const lines = buffer.toString('ascii', 3).split(/[\r\n]+/) + const handler = handlers[type] || handlers.default + return handler(lines) + } +} diff --git a/specs/images/valid/ktx/sample.ktx b/specs/images/valid/ktx/sample.ktx new file mode 100644 index 0000000000000000000000000000000000000000..fcf7725557749cc3c01830ad7b915232deea9ef9 GIT binary patch literal 298180 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
  • UX8r%5U(Mmyz=SjWuM49_Pa1lT3qOZ( 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 uO#T^;50VV$rhSqJb%T-sT2 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 literal 0 HcmV?d00001 diff --git a/specs/images/valid/pnm/sample.pgm b/specs/images/valid/pnm/sample.pgm new file mode 100644 index 00000000..5f1d1856 --- /dev/null +++ b/specs/images/valid/pnm/sample.pgm @@ -0,0 +1,5 @@ +P5 +# Created by GIMP version 2.10.12 PNM plug-in +123 456 +255 +pr~wqt}~}j|~vtp{o~{~}u~u|{yzm~{rqvysv}x{o~zt|y|t}r~|lwxzpxzv}t~v|y{}{v~wyx}|~wu}z}|~~s}ty{{tu~n|yw~}~|{j~|~mwpz|t{}z}|t{~z|vzh}zmxp{w}|zz~{|z|{vxy|sz~||x{x}r~x~~u~v~{}qy{~~}{|lnz}voq~}y}x{þ÷ù¼q~~~|xxƷùzs~yuqw|w}wý~u~|xw||~pv~t}vƽy{x|~uļxzux|xsм{t{ŷ|z~ѹ{}~{vɷ||~Ʒ{p}z}Ϳ}xz|x~xr|uɻqr~y|u{m|}~yq~}|zwqx}Ǽ|~{xpq}|Ȳ{|w{s[yz}zwy}tzx}{q{ɼ|ytxwz}~qpwzxxn~ɿ|vvw~m}w|Ơ{{~h~u|ͽsuzwyx~̸wv}~vos~}vտ||xjs{~y|y{ʻu|||~|zҿ||zs}}ɼ{vt~}{}{v~usy~˲~~~~s{zйo~o~{|zԽyzx~^i{¯pr|}ɼ~}|wxͺuy{py}Ǯ|}nͺ~wz|{|{ķyt|nr|{x{¬{~ru{~־y~z~t~{wv}{~|ι|xsuwYgk|}}qwvι|qoft{ʶrwpxpiw{t}ǯwt~{ukZ}ovzǩx}}xxkn~wy~{ϻ~u}fx|z~{yn|}z|~ɶ{}jq{sy~{|{~pooz}ļxu~vs}z|yyxpzv}Ͻí~nyoȵ||swz}{~||~~Ѻ{~y{}rl}}}ͷ~t~w{wv}{Ʊy{o{|}tur{ʱ}{vvtzzw~~}p϶|z}{{xrŹp{py}y}̽vy~{Ͼtprx{v}ƶz~}~q{οy|rxz~Ÿ|~{~tʼ{s|~|xr{°|z||{s{py|jwqrvxǵ{||vlns{q~{|ǭ|uu~qo}wz}ȼ~{}y~}m}}w|y|~ǩ{~}sw}|zü{xv}usg~~Ӽv}}wz|zҿ~wyewyr|°ruz~rtu}òztowv|z|nx{vs|rzz~wu}|~{~~wvyϻq{ty|wvåz}~o{v{~»x}|~{}ywzİ|~ow̶||}n~}{~fx~ѽ}z{qsɺ~}}z}öygz~Ĺ|{uydz{tqrxxȺ|s~}ʾ{v~~տtyzvszɸz~xtvp~ǻxwzռ~w}{|z~~v}z~{zͽ{Ǿyy~~{~|ų~jy¯}~yyȷ}}}z{ƴ{qyνkwrǶ~q~̳}}z{Ĺsкu~Ųyдv̳}̻~y͹yu̽~z{{Ҿ{x}~ūwwtk~}ϸu~|sl|Ҵ|ry~}y{zrιw||^s}y}}zu~xvxx~}xԺ}mu|uu}u|stw~Ѿryun|{y{{}ls}t|~Ժ|{tҶy|y{p|yxǪuu~xvw}ɻ{|x|w{}}xƻ~~}~~~}Ƹys}z~|rz|ȴw{{y}zw|vvnv}z|zzvs{}{uqxѻ~yz~~|{}w}yx~ζ~~s|{tvzyy}ɳ~z{zy{}}r}Ż|wxy~uz{~t}zӺv|to|~rvzǵx|~}~y~lsz¶{znw{}|;z~t~uuɼvww~u}o}ֽqt}|u}~rʶ{{{~~z}~ļ|s||}|uwdzzvn}y}θ}{~ɳq|oxztĩ|}uz|u̳}}vw~z~~|~v|˹{~zxy}}t|yz}~z{ɾr}w|{ryzɳyvp|p}ʴzx{{yypqν~~|v{Ⱦy|y~u|xzyo~Ŭ{}~t~x~|o˺x{~}|u|h~{~ìy}z|t{{v~xz̿|}}|yt~}|xyw~sDZz{y~|vuyxy~yu˶xy}ruv}~}~{~~}~vt}~sŶw~xzvfo}wyuwx{ozlz{w|u|z}xz{zxv̶y}|~pmyyz~r~~y~|sws}n~sz}־vs}x|mz{z~δ|}ux}~~gvyvpzw|wxyxzy}ɾ{}~y|vyr~|}z{wz|}|wý~y}yܻs}~~~~nz{zyz{syzt{x}¼̹|}{v~~~|{wzx~uz}Ͷ}|dz||yz}qwlwǶx}t|w|}zy|~xrzxĵswrky}xwzwuս~}v~|{uzĸx}tv~}y~¶}rv||xr|y|Ѻ}~{s~n|ȷvs~m}~zx}ɺ}zz}}x|~}lpwzżt}u~nzt{rwsqw~Ź~~yvuvktunv~yͼtt`{xzzsv||}ٿ|xws{{{vw{rz~ǹ}z{uov|u}İtyr}|{{|{mû}{~um~~nƿy~~}yɽyzwxĿɸ}uzyĻ|yz{}ҹ~x{xŶ}t|ѹ|{n̸|rѸ~~}z~ĭzzi{Ӿz}ͽxv~lz{uĬsho~νvbϽy̺}|x̼~{v|˹{zƻ}Ƶ{z˾}tλǰ||˹~wxϼ{sz~z|~μlp}ʴutZuh~~ɴv~yjw|ѿ~vºy}q|Ƭv}|sĭ}s{Ŷx}}|~xƣt}{ȱ}ü̻u|}Ļʶ~Ȼй~yyź~ů~ɸ}yǶvǶ{z~|ƹ|Ƽy}mɽyr~ï~yrzι~{׼z|x|˾~ѽrɽwμ~}x~xvɹ~{ðk~s˻xŰ|xy}zt{}̿Ծ~z}ȵr}ѿɯy}~zɼջz|¨ë{~}v̺ijtu|{ru}ɸzx{{}vzɾİ~z}~}ùër~ż}|~ķǺyo~|}κy~~r}ҿվw{~~rz}w{wĹ´vuvur|~}}xƱµz{u|~y~ɾϹyw|yy}tϿvs|kɳǰww||ȳϾ~}{~źĴ~v}yϾǼoxγϿıвy{}zl{мο}~xs|̾ѽt|w{vʷDzx~{ȶȴv}{˱˻~|||z{~ҿ~}~}νƮ}{s}{|żͶxxmkr·ɲ{{wǼʺ}|}xʺñ}~xs~Ǯysrpsuʿͺ}ryv{Ƚpv|Ŵvyu|ÿʼ|qzǻòʴzl}~ʿŻֿy}}x|÷ɸùмyz{~y÷z|{x{ȼ}~н{}xyzĴysvʸsо}|ŷíxĵ~qx¨}vyyz~ȵ||mj~˿~y}suy|}ͽrpw|tzyvtϾwoqpr~pwzy~Ϲt{}xvql|~x~}}ñ}xvuxɽ|qy~ɴölyz|ʼy{ǿpmzŮz~~ŵ~~ƨ~syij~}yw}IJ~}}~}zp}{DZ~x~}ɺ{{wз|w~wyx|Ų}sv{yðmxz{|ʫz|tyy{~Ƿv}|~~t}~yҰ{tvq~~{μv~~x~gt}u{~ʺ~}|vvwoyzͼ}|~tpͺu|{Ľ̻y{uu{ñʷp~}~~zȺʭx}xw{êɰ~}m}zztǹy~pjstu}~ʹض}x~{z~px~·ð~yovv{y~Ҽwöwjr~}o}yĸȺssw}β°o{|uħ}ǻʹ~~{Ǯҽnu}k~}Ӽ|οyx~ʼz˹{{}|ɲ~ywÿw|yƶϺzy}Ƕu{ʹ}}zxƮwŴsryȿѳ}{ʹ{ǷxtwƱòo|~oõzivʶ}q|Ƿt}{˷z}|uѼ{}}~Ÿ|Ӿн~tzʷİx{}Կȼrz{v{tǝxŸn~}år}ò~z|uξyn}wì~prȲ}zyþ~sѾu||{~v¶xzy~IJw}w|swĵw{}¸{~Ź~~õ~|}}ɿxÿ~uɶ~~||~{}}kxw~}vxxxv|u{}xxr}~{|~~~~u~|rvx~~xtszw}z~{|~wx{~|oit|zt}tr}z~m~{oys~|y{txn{}~~|}u~v~z}|z|}}q}z{irzzxuv~nt}}xp}|~w}y~vxnw{~yz~z~u}xz}}{}wp~x~}y|zuz|}xzxt}zv{svriz~|}x~y}v~s}t{}}u~t{u~~w{}}|~{~~sxxvyvz{v|}u{}o{oytw}z{jxnz~sx{~}u~w~}|z~{}{~}|rz|xyv|t|{{rx|~|x~w}s{|~|lzqz}~}zz~w|z}~|~u~|{{}~|||t{~~xt{~{~}}yu~yy{y}{~||wy}}}}}r{s~~uvx~xzux|~}vv}}~xyxxw{x}xwyo|~x{vur|}{~zzzw{t||{~}uww~~~|w~yq}~nh{|}w{zyx}|{yx}z~mu}w~{}z{t|{zq|~~}~w|xlx}|}xt{z~{sz~s}l{|u}{yu|t}~yx{x~}x~|{yqw{v|ux}v{qtr|{q~tv|q}}}szr~}|{}xzy{y~zq{{~yztz~}u}|~yyzurn~{{vzx~s|zrx~{yw}uuzs~wvx}xws~tz}~yy{w|zv}w}|qz{y~sw~x{~}yvwy}~~~su~v}zvsy~{}{s}}{}|~xx|~xsx~y{{vzyv{yrxtrs|uuxsz|u~q|mz||yx}t}|~u~~xv|txwt~{yl}~y|yqz{w|{}|t~w~zxy|v||twyy}s}}y{x||z{z~~|yz~hu}~xt~oqxw|wrrv}~q|wxzrz{tjwux~uz \ No newline at end of file diff --git a/specs/images/valid/pnm/sample.ppm b/specs/images/valid/pnm/sample.ppm new file mode 100644 index 00000000..08510601 --- /dev/null +++ b/specs/images/valid/pnm/sample.ppm @@ -0,0 +1,5 @@ +P6 +# Created by GIMP version 2.10.12 PNM plug-in +123 456 +255 +jsxpk{s}tpsruu{y}npmsj|{rssv~wyzv|vflyw}ssc}oogiuwir{~v]eRin~}w~~|rwqt~ykz|ytwy~~~w~|||wwrwvulvznyisy}umvnfq~rlf}xxvz|vktrhsry}ryt~}}|vvt}|om{~zs{qls}n|mxvt}{vry|p}~|}{xlsvq~}|z{y{}}|q}wxti|y{|~|uzy|vv}}s}{yw|~{{qv|}rru||x}}y|w{gc{qyy}~|wuy|{}{}z~}~ywiskl{w|t}y|zp~~xs}vso|u|x~zrvz}~|x~wyvjso|qw|tzyu~sx~~|{~xu{yxsr|so~w|~|t|zzymwzwqzv{y|ru|{nx}o|~zwqvuxz}||}xz~wyzx~|q}vwyvrv|~sy{~y~u~}{~}nsxkjv|{zwwxyu~{kzuppvuwzrl}||~p}o~yvw{k|~v}}{r~~sx}{|~||~}~|{yy}qi[q{tz~sy|u~vy{tmlr}ypzkq}uon{z}}}{|us}w|xyyzzzyzrwuy}x|ssvwylkzwxwyxyxu}{}w~rutcsyt}x{yz~~qzih{xdy~{oo||svx{toy|y|~z}u{z|~y{||~}}~~~s~qswpz~fwz}x}y{s~x~pv}zw~zx}~|xuz~nw}muou|||{z|~||}{~vuy}yzm}ry|ysxzz}~lztt{~wntpusy||{pwq}~q|{xt}}~}x~|~|}xny|wx{w{{{{{z{z|t}yu~~gnn|y~z|~z}zw{~z{zsmlvs|{~{~vrwr|qnt¯ztn|y~}|}zn}q~}uyyp|tvuxw{½ɸ½ƹžƵƵȺsqpy~|~z}{|rr{~wy}ysyy~ty|ǹĸ½óɾƻw{~os~}}|ysyttyjexryȾ»~s~~{|r~{ryp}}zxtslr}¼żźĴyq{~~~~rznpzuws~}}}pvm{|~{|~|~|qpq}ynxvmzyvww{ivzxz}rv{w}ÿ~{|ywzwsx{{{~zxvy{{|}z|ztv~|vz{pzx{vtq|zqxys|}}~szxxz|~vxvoqͻx|{nwm}~uxzu{~w{{z~~|}Ķv~|~}y{j}kvv~}~~{~϶}{u}s~u}{swv}qwuȯxy}|sus}zz~u{ɱuy}{~mpxqv{ovzt;}}{~xytxt{~p|m{yysp|~˾~uo}vt{z~zmzyyz{}yqwo~~voyz~nlwwvr|yq~wtzz|}wtwxvp|x}yƽƾmmnw~xytvty}xuispr|r~~{wzvvxok|wrxsyx{yyǼ{tz~|xyz~y||z{tyvmyqqq~|~y~yoxzʰ}|~{v|zh{}qzqy{~w{~tq~_Xf|yts}sr~w|u~ts~Ӿ­tt{~sxts}w}~}u|~ssr}x{v}x{z{}~mfxzs~|ʼ{xx}zrz~nu{xx}xuzxx}yÿ~q|~z~~}}~znpoptuwy{u||}tx}|z}~|{szsvzn|pkohxw~~|}s~|sv~zx{|xxqruwepzlw~|hnr|~{~{w}vl||u||¡p~u|m}~|ysn|n~ywy]knv~pvuozxrz~r|~}}rr{uvly|m{r}sxxs{|szx}x}~y~ȹyv}}tr~z}||s{k{o~vl}~~nxvx~jpm{}stm~rzhuwsy}yt¾{{~x{t|{~}m}wt~~zgkby}zuutfmr~n|~r{zw}~i~ur}ȼzsuwx|}{yw|{}}t~zvv{|z}vx|to|¾vyyu~vv~~{~}}yozztr|w~|ttzĺ{yu~|y{|yuzuk{|~xsx}}z¸~~z{y|t}}vsshueuuwly{qw~ys~vrpuwwnx~þɷ{{oxxtz|{zvboup~rqxzlj||}sлrxgqt}u|wx|ny}~lo~s{z}|}zv~yn~{qտ|z|{zj~vz|vw\\zaivzz~}}|y|ouzIJsnuzyw~xy|~|itzxrv}zyz}}w{{zv{zvwxm|s}μzzszu}}zxndv}n}k~}wxǮ}yz{~xy{}r{vyy|{syzzjqηy}{}|~|z|~ϼ¾sw|t|qs~zyxzz~y{~qôw{t{wws{rux}ml{upxoz{xszp~{yyp{|vʺźyv|{~zzvnswzq}{}x}t{v~{|t|ӹwxxu|||stpy~w{uw{s~}z{y{x~~{{|{|z}yyt̵t~yszz}my~yvvkpys}WYbgfxjj|~v~~~z~w|}qqt|ty~myvkyt~̲x|z|z}jsq{xz|jqp{agmvr~}}{{~||~}z|wuͱ{tqpzuww{w{kqnqy}npwghuz}u~~zyvsx~z~u~ƪryystx~nv}utx}pvuvmjteUi{r|kopv{}|yzħ|vswk}x}o{uv}ux{piptkz|~ozsvp{}y}yvo{~θ}}}nsz~~jyqz~~dfrxxyv|ys|{{ytwr}wwnnozzvw{y|~r{~k{Ƕquzw~x~vs{cyz~{vv{qo|zx}rs{wur|}{pzt{uzq{plhz{pm}kexoz|}~y|{Ľv|xwxyxsytm{svxtqog{xwzxwtzoxzm~vw{ztppq~yuwvv{оò|zywyzv}ux}x}{z~~x|xkrv{}utmpgvv~v~uɹ}p|}st{|||vzpz{tw{w~~~xy~wmwp~oq|}~{{~Һyv}z~~~~}xyxp~{|}~~suolkwz}z~xzzwwz|yyж}w|{roy~wxvnlsjyy{}xv}~vzutm|zxm|{yþˮu{r{{{|yle{{{z}qxz|{}pyrul~wvz|x|uԾ˩z~{~zxzez{~~{t|pqxnp{z}w{yytvwyyԾȭ{~~~z}~{}~uowidnĿϲ|||~~z{v}uzzyz{}uzyku{~zpr~ɷ}}|jx~fz|yz®x||~zz~v{mp}||w|x{i}zw}x}z~ξ}pvyw|}q~}o}~}{||lxѼivjp}mqvx}u~zx~{prxt~y}|wz{|vw}ųv||}}{s|s~s}y|oqq}~~{t}w~|˽y|{xu|ux|~mtn~~|z}|l|k~~~uw{~}w¶ķ~{s~ntxq~rv|~}}rx~~iwpzɼ|}vq~~}gvsn}pz}y~}}}}}z}zzzym{{rshs~x|}u}u¶˰|zx{|w|un~w|rw{}}|sn|o~zyyt~trz~Ǭ{z|rt~~wzz~nq}uby_np}cs{q{v}ngsbvkqsj~xrwsx~syxг{tpj|{uwn~zpm}zyvo~enfcpwcvxlu~rosc|~|~~{f{wtk~y|v~Ѯ|~vr|{ytozfyrhoselpgzwu~~qx|v{ry||z˼rxx{o|v}wyxzxxwn|~|zyo}||x~inv}}x|~ozwqy}pyx~}yw}}ÿɦs~n|tzs{~psx{w||rx|yv}}|xv~|t{u}m}~ֻù{{ww{xxxr|z}v{|yvt}ypfgdzyx{~Է~|zvn~vv~x~|}~y{zsx{|yzz{uzѾ}~}}v{~yztv|~}|vw{wyibznxpm{|rrt|||}y{Ҿ~ufw_sxz{zr~rum|tvspts}}wtyy~lDzӿ«x|wz|zyr|yusz}~ohpz}~qxvu~z|zz}xxfp¿{~~z~n}y~}{txwrx|w{zvv|~x|x{{qpѺº~v~{y~wmr|y~xs}ovq|{xw~w{vxss~ro|u~|r}~~t}vwyw}{~x}nu}||}||vmsp~wy˻}{qtqjyxvndyny}|yvxsvv{q~{{yuv}sĻızxrz{~ttu{||}~~jpr{t|tvvt}w|~|~{¿½{~wut}{}}}}{uyrx{{~{}m}zzu}~~zy~¿~zx{zvluqx}~z{z}}}οɲ|yvzo{z}qmp}{}z|zotpbixtw|vѽ|}|zy|zunyqtx}{¹ɸx}~z{}~}|t||}~r}~ȴvy|}af}vv~zr}t{̷¬w}xsztt}mux{{w϶ux{~pu}utqmxqhuw}t{ɺ}u}w|tsrx||~ʸxzry|}~~~}w{z}{Ժ~yyusu}x{{{~yxwvs~poy~~{oq|ss}}yy{ȸw{yx|zz~xxusuouxus{lonv~{}ȼu||zzwwrsw|o{ĿּIJ}|zty||vtz}us}u~zz}jp|}~|}ı}}y|s||}trv{xz}}}|}վĹzvtn|o}z~ѽ}wy~}ɿ||qɿ¯xyyѾï}twz¿ͿĶz}{zz|}|Ҿo~zx||y~zz|Ʒ~~{z~eljn|~rz¸|w~~}yyzzttuzy~yx~ȹ~{zzzz}}}zx}w~¿z~{y~}pzzzz|tx||yuxƵw}~x~zt~uqqk}w}{p{}}}̻wftq{uxy~kxqqȴ}}vox}x~}}xy|~~¿έ~orzvw}z}x|}vzھīz~~}~ݿǷyz~~wpӺ³{{}{}{xsyɿǵw|vy~}u~~xu|Ҹxvt}|p|z{͵|wpq{l~}}wy¿˹munv~x{jy|{͹{s|gy}z}r~˿v~z~}x}~~¿z~txu}{t{~u}}{|}¾yt{xxw}}qvr~~zzþƬ}tqwww|qw}anjmp~|}~ǵɾӺuuv~z{}{rntzilwt{|մ~tly}uz{}|{vfw{iyt}uzxpt{й}x~q{|u}\^g|msz}|x~{nv~}̹Ɵ~y{zyzjxwvunz~v|tsvyuu}{{}y~tn|{r~Է~{gorixtr~v~rt~~}}zvuwywx~|{wnyttξv~{u~ruwozqqtnz~wr}|{wuq{uкrqwy|pvzzhqe{ouywoy~s}p{{}z{~p}{оz}ńgmlqttnuwyzxfxn{|||~y|~|~}|sww~ջu~|~Į~z~}|{zq~}yt|z{jww~}z~}Զ~wxl}tzxko||w||~{xjo}x|wx|y|wyszq~ѩxs~tu{w~}zvzm}owzy{ui~}~r|pzruyqu}̺{{|z|tyytxjz~}y~~y|~}wruzr|wxzry~~˸~}}y||{qx}}}vzr|Ƕ}~wyvrq~}~v|w}xz{|{}}|~wkryzn}||muDZyu~uw~{tyxzz|~xn}{uz|}|}|~tzuut~x}z{~{~zqqulmxt|||{}~w|qz{~spzt|zwyy~Կwwlyuptky}yz}z}}r||pvu{~yx{~issky}~{һ|wzt{s}{{|tv{||}yot}tytyy|y~}~y~ryy|}||yzmzrx{|}жuvwz}tvz~~pq}wp~y|z{z{ourw}vvs{}r}~lv{wzxy{γ~vo||znz}~x}zz|x~s{}x}xt~~yy|ztkrv}~}ʹ|s~~|{t~|xs}}||}}{|vqzw~{ֿİ|w~{rzwxu|xup}~t~w{~zwuvrs~||~}w}~պ}wrxiyvxtxyykwkkou|t~|~t}}~~{oqqwwszDzxwy~m|ytuzs~|vr{}z|uqz}{~hksr|zx{|r}|~~|xwz|ztkpi~zuw|zjvs||}|qzz|z~{ͽ~~xjs~~}zwy~~tsl|svt}||ytyȻ{yry`|{{nzq{yu~ux||~~nww|zwzwnv|zqnyzս|tznjvr}z{~|}~x}wzsryt}}vtż¿w||{n|x~txzwzʶzu}t~tw~z}zu{}y{wt|op{{uytƼs~sxrs|y|x{}v}qvsrs|yyɱ|qw{{}yvuqk~z~v}{|v|}|}y|ru|йyxor}uv~|}|~y~{t|~|~t{̴rqpu}ar{tu}x|zsgtywyw|{~~~{||}yy}p{ɭ{wx{p}zgxrlzzs|q~~r}py{{||~y}yzruzzϵxxmt}~r^}gnlf|qvy|{y|~ys}}~uvwz|rx~˼{}|y~}n^rwhy~syx~}t}}v|}}}|iw}vƾzxr~zl}my{yz}{|y~|yzwzx|~}yq|orww~qyv}}w}}x~|~zznrzv}w{~~r|ɶyy~ow{x~r}ylz}}u~wlss{s˻ysrz{z~xtt{|~~xtr}xnxuwzoxaufunqt}»xx}~x}~uvyt}~}y|~||~|}vw~yw{ȿm|}|{u~}{{tys|sk{{}~}wn}vxr}yzjlqh}|~Ű|yv~}y~{{{suq{wzt|s}z~z|}uuyvnpiʸ}wyu|~y~}qx{z|y}y}{|yvqyjf{{}~{ty|{vuþÿ|x{~}~wivhzzwr~ovuxxr|wt{~|q~~sx}zssxüȾ|v~}{~}~~~||t|}gwo}rm{{z~{}}||vys|vvuz|~zyvmusǶy~uvwxxs{ru}}trvwg|sqwy}vwwy~{v~|{~x}vlyj~˸~}}wltp}}}wpouuqtqwu~z~|~{{k}~}yyq}~}z~q|q~}ttrsy|zqtyŹumz{~{w}~yz}syrbfytzlpj|{~trzpy{||xud{{wmm}~vx}´mpqzygmwwy|ty~s~jwu~t|txzpy~|u~}uk|ym{z{~w|uk|s|з|xwwx|}~{lz|rm`~xq|orswzuzt}wvw{s|~}yot~~ĿƱz~~y{yq~x}ssntsrx{muvvtume}z~ww|uvzql|zx~|~v|¼¸{um}xxrs}}}|~|yxxxx~z{~\sautwv|{}}w~hzzwxѶ~y~{{|om|wv~{|}{}wdhmv~~qxuuy}pw~~}~~{lqx{|{~w{}uxxo{{~~Ѿ¹}{q|uwq|{w|}wxwo}sz~{p~tv{z~{ͼz~{u}py|w~{u{}t~~~vy~x|~~}~~t{ypxkzyyttŶyxw~guu~xz|s~}{~zxz~w|rxv{z||z}uzt}xuyk|ƽõë{uf}~yvw{yyuzyr{~xrw}r~yv{}|~޼~}~}~rrx~}z|vn}xy}{|zwxtzxĿå~|omywzzvy|zu{{y|}|{xr}zrs~i~u{ľøyzyzqpzw}v|yptqxzv}zuwso|{u}vn|rt~|sɸм}||zz~z|{tugzx}w}{q}~yvv|}w~}yyt}~|sxƿƱt||~{tuxu{{xz{qv}syyox{~qm|v}}}|xy~vt}wzz~x{|~y|~η~z|h||{uy{y}zxxVhdu~~xs{wrv~zx~qnt{}z{ym{v|w|w~tpmsxr~{gmlww}Ʒu~}~wyv{pt~lwry{oopzq~s~u~t{u}~|~uv|}}vv|{lrs{zw{~zw}ijtuspx{txv|{xqsjhknm|}{~~~y~{t}|uoxuzyywh{}~uvuj|ÿθv{zw{vy{~xzuxrxhy{{|~{x}m|hyyr}x|{ſ||y{xz}rrz{xs~z~{}~{xtkpym{y~|~}}}yysuxξĺ~}~}|nssiswp{}q}yzsr~qrz{||q|oll~~κ~yz~{}{~vzqqsz}~iooz~vzüy{}x|z~~xzpv~on~}hooy~}y{{~ryo}xv{y|}|}vx{vw|{tx{|xmxrt}w~zzy||~{p{w~vtx{|־¾x~w~~w}xwgs|~opo~|}pyv{v|zzz}׿ǿ{yysttrxu}mw|{ztkx{zot|w{~qr||nxpnqtyozhwl}mrxi{uyy|}~y}}}~~zy{so}rxvvy~uf|pzrpms}}{}}v~u{un}~y~|{{|uw}vrxtsz˼ypuw}qn}rWsx~uyz||}y~w{~zwrmxvm}{y{y~|{~z|{ٿ~z|{vsxjuxzwut~rw}pzw}toywv~{r{~~~s{wp~{y}ǹ~wyz{zy~{{wrwh}xwrumq}swvu|y}~~v~ywy}uroï|p~zxrqr}yyt}~|t~}{mqwujnt}{vvdn}vƿz~z|yvujxxjdgs|stj{kpg}~{}|}~ÿ|yoz}{~~x|yyt~~z{ľɼ}~v{y{vq|qx}»ýŽŸ}~~s~vuuyw{tyuyuöx}w~{yxyx~~η~~y|~wuywz|xvyrÿIJ~y~{}|y|}ouzt~~v~|ӵ}}~y~{u~}yr{ipkƽɷ{q}h~wxovθ~~~|v|r}s|mrt|ĻŽ~~y}yv{y~zo}{wczz{~wz}vzqt}wzv~|˿ww~tv|wwhuv~xzzsspmt~dgz{hqs{}˾xuubal~~}~̽y|vy~zyy˽||{||u{zx{ttyxĿɾxzzzȽyy{~żźy{}~}y}~wv|nx|{qμ~vu}Ư|{yvu}}|}ʹwy~l{s~ryz~λ~zwyx}~~osyvz}ss~q}yyw~~x|ͻ}{fo_ise|yy|v}z˯yov~~vswT\Oqwi^k^||}}˳x|}zuwk~u~~~~zԺɴ~zyz{zhel`vxs~{}ѵĥz{i{czy~~ؿȵ}y|}yzss}cvtx{ppzy}ȩ{rltpqq}gvq|Įxvv{|w}y~y~}uqyzźo|x}vu~|{yiszu~x|{sw}Ʀ~~}tw{yru{y}|zs}uo~İp{y~~l{ý¿ʻwtwz}r}y~{|~þƾȶ|z~}z{~~z~ȹͷzy~yx|{}rszwl{}ο¶Ŷ{}s{zzz}|~~̿ıɭ{{}zr~wp~̿İx}zɴy~~uzx{yDzvwux`~yŴ|xt}vu{}{ruķ{vz{yԼ~|}w}yz~|zxzŷvyyynlu}{ȼz}}|{~׻tytp|vs|~}վī~ny|p|pӸĥxitwx|zw}xtuu|͵yy}vw|׹ìo}x|ilyyw}|||ʹ|}|~w}~ҷ~tqz}vo}jni|{~ļ{|tpjvѼ÷{yrx|~vvxy}smtwxxwzpqm\|}{{xvzuɫjwh|{~|xq{|]ojv~}id^ɻv{}yy~mǰv|{hw~s||wxwv~h~vo}~~{}z}{{e~rfunxxz׾ijx~~xu{~~ypwƵq~վǧtzotzu}xp|ʬt{t{v|||~}w|Ⱥ}ڹ~zxy}||{}zƨy||m{{}}swm~}|Ⱥ~Ƴsuq~rm{vzy|{mtktuszvz}}Ƿ|ھ¯{}|zysyxyq~xt}ysxsuuwttt}l}tɽı{|yqz}{zz{t}o}w}yqwpyyŵ~ð}~{w}~qs`|yw~}th{u|տ˷ö}{zx|t|yxw{ypxvgοƵƸ~{k}vz{ylf}sszt||ti{g}}{ҿ¿Ϻ~~{yuyro|qqtqo~w{www{~Ѿּs|~xx~~~{pmtn{yuywvuty~}xyws|}x|tu¸Ĵzt{ys|y}{qtxmpwjxxltiu~u}zr~z}qzwuyĴ|yk|tvxqxtw||lyj{u~zop{yx}y½»x{fm~pqru}ve~r{~jw{ip}p{~w{zixg||v{¿°þuwr}{pt}yxstjy}z|cngkp{jw~~ʷƴywwrz}v~wxp{vwv~}tv}w|ʸϿy|zx|}z}mvx{ļı|}v~orz|w{~|vɼ©{|~wlvsͳԿȲ{}{}~|ŰԱxpz{zzx{xztyt{~|klw{yyz¾ͶżƵx{}}xw|||{}|kswptyy˺ĺŷmwl}u~vry{tz}zz}uzu~qxsɳʾxz~{wyu}zy}}~yuzrxǴʹ~x}}}}sx}}yqyzy˯μx|}x{z~}|{}w|wt}|{|wz{w~ӻºþ«{{{xyo}}}|yкȳz~|xzwssxx~u{yzv}}ǺϺu}uvvjqr}jkqqr|{~{~z|y{µɳ~y}zr}zvwx~ǻͺzwyy~yx}{~y{vʸ¯|zz{yt|vrsz|~|}~yzǫ|~~wn|zfujsyqnusstur~ü͹x~z}u~rpwnvxpuu}zɾϿ¯vyqn}d{pxfzrzv½ºƲwtxtlxk}zov~u}~Žʽ|}zths{zr{y¾˶{{rzfmzy|s|{v}|¾Ľú|uztpzj|÷ʼ~|w~տx~x}}yx~utyuy~Ǻ}zowyzypvw~~v}˿~}vty}{~}ҿt|xx|vwwy|yyywx}k~u{˹z|xuz~wuq|r}}tm~͹u|sr~~zпz}|}~wy{xy~||¿ɸt~uwxýǯ~lzxuvwɴz{uou{}vus}p}â|qyyxy{ww~{knyyu~vοɱs~|{{bosgix|}~~|squ{ry̼yyuzuku}lwn|{|zr||tovzn|ζzpsqdtkuw{|{murzzw{yo}{}_|wiv{Ѹ§rxwnorjsvqozor{{lomx{vzyzx}|o|{vwzĿϰquqv}|y~}uxsw|krrmh{t}|wyxy~~~y}y}Ҿƭy~}vx}vtvutztywyr~{˻Ǯyq~}xzqrgx|xry|yʴw~|ȸu{~dm}t|{yw|}z{t}{~ùƳ}y{x~z{|þķ|}~|nns{}jmts|yƩzwrs}s||z{{}~|ƽųz{~w~q{}|z~{Ŧ~~}|yp|{yx~{ì{y~{}}{|}~k{|xt{r{ī~~z}o{~wwx{|x{r{zmsph~}vzyyx{ư~}{~|u~xy}vq|xys}{{{ɷyx}|zy|u}}~~ww}~~}~жxzi~wuxp~v|ypyzlq{||v{||vx}}nsxnw{ys{}~ûjlsyxz~q}{rqs|w{ȫwo~su~ynvnp|szevp~xw||ŷ~~oyq|}|z|ow~mu|oxvy|w|tty{|}|wҴ~}}~{onvokyuzftmuss}{οyvm{y{vypzuv{ttahunutmwqz{{|}~˾}x|vy}zh{nnxutxzipu|wyyv{}uz{}r|~z~ttvppr~~yt{Ϲ~~lwvy~~vrszm~}»ϻuz|z{|suzqv~s|{|̾Ʊзno}}~x~|wv|vs|}xzqȺʭ|txy|{v{uzyyyw~w~êȯ|}}}{olv{mt}r|vzmvzrź}»v{qzmwpnjjpxq|yq}wsxsvzumm{{~}}ɹӯ{r~sy~~~yyw{tz~~}vhryry}·}{|q{}mppvuvtw{xxyy}{u{u}ҽxu³t{ufixo}tt}|qm{}||rzĹʻ}ewyptyqy|}l~xvyϳôfpzu|||}ru|~w|Ӿǭ½~qr|z{~}|ʹŸx{y|{{|~y{ʪϼml~oz~dmo||}{z|ռ±uz||;|zx{wwyx{y|~̺wwǺt~uy}}zxpˮ~|o||vxvs{||{vwȷ~пr|zwm~~uq}}y˶kwz{tʺ||ut{xvesƯmzvʵ~{{fv{kunw{cf~n}||Ҳxz|~yxdgn|ɿxɵ|s{kswU~t|{vxqƴ{{տð|~|tn`|W{{|{z~moz~¾ö|wvf[w~pvжw}}~~}pto}}|Ʒzyxsi|pv~u}}zз{}z|t{zx|{}|z~z~rwq{ҵ{v}{z{{u|}~yt}uƲ}}y|wz{|}ѿ~zк}p}quwxoyzz}ʹ¢z{wzwsqyz~þĺ{~z~}}s}x|~}y}׾®~zt|n~{ź|~rsjy{z|}zvwu{{yznvs~̝yyevys{|ľ|qy|kph~{}{{qzwrȽū}rrl~z}{r~zw}|~~p|~kriyvwzwtv{joo||z~ytu~ÿĴwws~jrp{}l|{msx·two~tr|s~{ý|}~~yrkur|Ҿjyroszv~xy|u|yzvo;~v}~u{{||r{|zv}ijzt~w~i{tr~zzjvlqznuwz{{t|nzǹv{}y~}}v|uuzƽ}|x{zzwķyy}y{}{u~rzſ}qw{vvxz}|Ӿ½z~|ysvv{~}|}ķ~oyzzy}~ĽĽ~~~|y~u{{|w{~}{u~v½Ÿyw{|~|||{}gks~}{{wwv|yñ|tu|uz~|wuvxqyryuw|yz~ơ|q||{zssz|{xyy}xxx{y}ryvx~|{ptf~{}}{|~yx}~u~uxw|}y{z}~|}~{z}~m|stvp|r{||~o~z~{w~}x}zrrr{uuxxw}{~|w}xxxpool|p~}t{t}sqmyzyywu{|{~|u~}}upx|~~}z{l{~yzzxxyv}wvy}zy}|x~t|~ookclbpvqw~qv{v~ouy~~y{|wzzr|x~}|xx~{~ls~{xy~{x{klxww~}lz|lpiq|q|u~}}cwq}{~~|zwxv~}nvt~uvxplnyzz{|w|tx}pzx{yk}}z~yxx~v}{}mxd~~x~swp~~y}x|os|y~~}~ttnz{wu}tw~swu||lrr{}}vx|nx{w|{x~~{|yw~~}~zfjkqrpx}|zuxw{uy}|sy|sr{{~wvnrq|~z~yzwpnnus~{ynqp{|tzszwzkqo}}}|~yiyxr~sx}z}q}|||}zvw}}{{}~|tv|xlkpi~tw}xw}}q}~yx{q|wwp}wx~{~yk}{lw}|~|yxvx{vx}lus}}}~znz{y{pwxp~zxwjqu|~w}v}|}~|w|y~~xyv{{wk~xst~vp|n~p|x}||z~xtuzeq|wxy~qp~x~uzjxxnuk~r{youvogbt}ytpz{{s|~ptw|w{}~wx}|twv~qyewnyfuxz~y}t|ssupzu}z~|{qu~u}nvwx||ryz|zrz{|~}~|lh}}sk||yrzj{|z{|}~y}~}{~~}{~z|||ty}nz|{|~y|zjvqzzvyoxxr~~~ky}w~|w~~xtlx~|}yvu~v}|z~|t{rwl}}ss|xwu~hwmixnpo}{~zwozslqyv{~xxzz}z~nicvvsr|r|~ywrw|wvlod}}|~vuzzurvup}s~y}~}y~x~uzuur{{xv{v}qw~~z|yyuq{wz||yx}w|y|zx~v~j|y}|z~|u~~v~htvu|{xr~|ztv|}xxvzryxtz~}~vmzstwz{pt~{|z~~{~|xvrrvypzt~r|~}q~zw~uy|xxvyz{~zv~{{p~|~t|z~yyk|n~u~t|sjf~|zxyqnrsx{}y}q|~y}~~xxy}osswq|m{vmx~|yvzvz}umz|||}|xzwvi~yzj~mrx}p}v|~yzt|{~|||z}z{|zzx~w}ou}y|x}}{}|vuuv~uxtZ|{z}g{y}v}z|{uzu~}z{w~~~~~|xx{pvvu~~}~ysz{xozv|~~}z~}v|xr{zm}{{~z}}z|~x}~q~t~}y|t{}}yoy}vv~~xzl}q{|}z}y}{~x~s{pr{wxprts}ys{rtd~wlzxzztzvut|uy|kxyvy{{~~}zyyz{tzyk|{zs~xz|skwxw~{wy~}n{yz~|{~m~~{|~ny{nw~ztw}xy{~sn|z|y~yv~pyztv|vy}|}xx~~wyzyt~vq}w|nxwzyrzwqxzxu}}{w~to|ztoz~}y}}}}wty~sxtx~{l}wpu{~fqsy}}}sw|y}}vwi}l~~~~||}y~}qkxmnsu}{}tyx~~z~z{vyy{}u|w{~}y~~z}{{v~umzxyyv|~}prz{ukv||xyw~~~t{|~~xvz~qvuww{}u{|y}}|twsow|~hszxynrrs}vu{{{jooehq}ur|{y}|o~|{ztjxyyt~w{~x|x~xyzsy|}|~yuzy{xytzxvxx~x~}zs|s}|~wh}p|sx|zww|}{~uxv|}{{w|ihp{{wr~}|~|||szz{qorl~~y}p|}|{v}}}}z|t}t|z~|{x}{||{{}yxzpkmg~uxyi~rx~|z{|vx~|rutq~zurw||{uv|{l~uzu|}o}{~~vz}|vsgo}|~wyz~vwiixp{~~}{uu}uy}t|~rs{xszzy}{xz~ru|z|~{wu~{|}yxstp~}{ow~}{zqyzu{tovz{y}}wu{vqyn|nzyx}z|y~|uu}rorgu|||tz|z|~~|}t~txxvu~~|t{{styy}sxqo{qstu~|w~{xwtqgpw^rt`y|x{{}nro{}~z~puvvzwwg{twtztm~wz}{|uno{pty{v~}{vy}rwqs}|}}~}~ss~}~|~~z~x}y~x|}{utzgv|wvz|yvzzyv{l{y{|v|zt|}}~u}|s{v~|~{~{|wx~|yo~~ttwzy~}~|}~y}w|z}s~z~{}suu~{~{x||~}~~}z}~~}vlzzx~xruprrwlbxuzzwr~yx{~}~|so|tymurzs}~vrpr}}pyw|w{}|}oqu{~w|yz|}~vz|svws}p|suop~{w{t|y~yntsj}~vxtwzqv}{qywg{}pzzryurtpi~s{}y|{q{{yv}||~|~||zw~xv{|su|rqszovzuynyz|}}ew}tz}|~zoyif}~|}~t}|}|||yrp|~wu}~t{l~{yz|tv|ptw}~~vk{zpo|g|z{x}{xoy|zqn}}}yyy~~qusnykwwo|kvw}}w~{~}~xp|~}|t~tuw}xwzyz{z~~}z{nyux~~{~wp}zzzxvru{qtmyyy|}}~|{s~p{~vx||~l{~|z{yvyv~wlzp{o{nxwz}xw|}}~}{}~}~x}xxxsssxx|}~{wx|xuv}}}swwww{}rwq|}~vpiyyzypsq~yy~|}~uovtrqy}mtytjyxxx{y~|kvvs~}{u~}ynyqqxy||}nwpny~nrl|}lvjlvu}r~||}~~|w|ymuzv}t|qrzz|wyxw{}y~~{s}{st~}|}~vyxxux~rxm~zxsi}yxxswvszyv}z{tvp{z{{zwvzt|~boh~ur~~~~pv{x~uz}}~{yy{}qqnuvr}p|t~sryno{}p}zz}|y}z|~stywvxmzvr{}~xw{xqu}tzx~ytrnmvjtvbwybrv{mwxs|i}y}}|yxqs}}|}}uzx{z}tvvz||{zwu~y}~~z~wpw|iw~lyijens}~}~{|{xz~x}}igotu|~~~}~}{|yyyluuz}|rd|{v~t{ulv}Ġtoxxryxh|k~w^rlTV]nvHuV{d}f{o{ohtsoryxwxyxtqy{y}x{}~n~wdw|t|qt~Ĕpr|uu{~pvyx~{}zwnttzxvïҸ \ No newline at end of file diff --git a/specs/others.spec.js b/specs/others.spec.js index b91bff1b..5539289d 100644 --- a/specs/others.spec.js +++ b/specs/others.spec.js @@ -63,6 +63,6 @@ describe('Callback function', function () { describe('.types property', function () { it('should expose supported file types', function() { - expect(types).to.eql(['bmp', 'cur', 'dds', 'gif', 'icns', 'ico', 'jpg', 'png', 'psd', 'svg', 'tiff', 'webp']); + expect(types).to.eql(['bmp', 'cur', 'dds', 'gif', 'icns', 'ico', 'jpg', 'ktx', 'png', 'pnm', 'psd', 'svg', 'tiff', 'webp']); }); }); From ba09d7b14e338411e3a340b74b34e6453cae680f Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 17 Sep 2019 20:22:04 +0200 Subject: [PATCH 096/110] Updated readme with supported formats --- Readme.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Readme.md b/Readme.md index feb19fc2..fd6319e0 100644 --- a/Readme.md +++ b/Readme.md @@ -12,20 +12,18 @@ A [Node](https://nodejs.org/en/) module to get dimensions of any image file * BMP * CUR +* DDS * GIF * ICNS * ICO * JPEG +* KTX * PNG +* PNM (PAM, PBM, PFM, PGM, PPM) * PSD +* SVG * TIFF * WebP -* SVG -* DDS - -### Upcoming - -* SWF ## Programmatic Usage From b23fab45c3865db3a0f15df80c76cf1b0b7d4d59 Mon Sep 17 00:00:00 2001 From: Andrew Leedham Date: Mon, 23 Sep 2019 12:29:09 +0100 Subject: [PATCH 097/110] Fix imageSize typings --- lib/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index d0336001..c0053242 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -77,13 +77,13 @@ function syncFileToBuffer(filepath: string) { module.exports = exports = imageSize // backwards compatibility -export function imageSize(input: Buffer): Dimensions +export function imageSize(input: Buffer | string): Dimensions export function imageSize(input: string, callback: CallbackFn): void /** * @param {Buffer|string} input - buffer or relative/absolute path of the image file * @param {Function=} [callback] - optional function for async detection */ -export function imageSize(input: any, callback?: any): any { +export function imageSize(input: Buffer | string, callback?: CallbackFn): any { // Handle buffer input if (Buffer.isBuffer(input)) { return lookup(input) From 04e461ee474b5cab464b7abf138425cbb0ad3a87 Mon Sep 17 00:00:00 2001 From: Aditya Date: Mon, 23 Sep 2019 17:16:35 +0200 Subject: [PATCH 098/110] 0.8.2 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index bb966532..2ca7949b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.8.1", + "version": "0.8.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e2f12ccd..8cf93bb2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.8.1", + "version": "0.8.2", "description": "get dimensions of any image file", "main": "dist/index.js", "types": "dist/index.d.ts", From ccdc5adbc274b217a6806c1ddc838825f9498dcb Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 23 Sep 2019 15:25:50 +0000 Subject: [PATCH 099/110] Update dependency sinon to v7.5.0 --- package-lock.json | 14 +++----------- package.json | 2 +- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2ca7949b..f5fd8e67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -158,14 +158,6 @@ "@sinonjs/commons": "^1.3.0", "array-from": "^2.1.1", "lodash": "^4.17.15" - }, - "dependencies": { - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - } } }, "@sinonjs/text-encoding": { @@ -2481,9 +2473,9 @@ "dev": true }, "sinon": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.4.2.tgz", - "integrity": "sha512-pY5RY99DKelU3pjNxcWo6XqeB1S118GBcVIIdDi6V+h6hevn1izcg2xv1hTHW/sViRXU7sUOxt4wTUJ3gsW2CQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", + "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", "dev": true, "requires": { "@sinonjs/commons": "^1.4.0", diff --git a/package.json b/package.json index 8cf93bb2..8843f7dc 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "glob": "7.1.4", "mocha": "6.2.0", "nyc": "14.1.1", - "sinon": "7.4.2", + "sinon": "7.5.0", "tslint": "5.20.0", "typescript": "3.6.3" }, From 0a45dee180723a784d2274a0380e8277fb63ada4 Mon Sep 17 00:00:00 2001 From: Aditya Date: Tue, 24 Sep 2019 17:56:16 +0200 Subject: [PATCH 100/110] Added JPEG2000 support first cut. needs improvements --- lib/types.ts | 4 ++ lib/types/j2c.ts | 15 +++++++ lib/types/jp2.ts | 64 ++++++++++++++++++++++++++++++ specs/images/valid/jp2/sample.jp2 | Bin 0 -> 88874 bytes specs/others.spec.js | 2 +- 5 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 lib/types/j2c.ts create mode 100644 lib/types/jp2.ts create mode 100644 specs/images/valid/jp2/sample.jp2 diff --git a/lib/types.ts b/lib/types.ts index 107ae0fb..d831e78a 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -6,6 +6,8 @@ import { DDS } from './types/dds' import { GIF } from './types/gif' import { ICNS } from './types/icns' import { ICO } from './types/ico' +import { J2C } from './types/j2c' +import { JP2 } from './types/jp2' import { JPG } from './types/jpg' import { KTX } from './types/ktx' import { PNG } from './types/png' @@ -22,6 +24,8 @@ export const typeHandlers: {[key: string]: IImage} = { gif: GIF, icns: ICNS, ico: ICO, + j2c: J2C, + jp2: JP2, jpg: JPG, ktx: KTX, png: PNG, diff --git a/lib/types/j2c.ts b/lib/types/j2c.ts new file mode 100644 index 00000000..c2e323ad --- /dev/null +++ b/lib/types/j2c.ts @@ -0,0 +1,15 @@ +import { IImage } from './interface' + +export const J2C: IImage = { + validate(buffer) { + // TODO: this doesn't seem right. SIZ marker doesnt have to be right after the SOC + return buffer.toString('hex', 0, 4) === 'ff4fff51' + }, + + calculate(buffer) { + return { + height: buffer.readUInt32BE(12), + width: buffer.readUInt32BE(8), + } + } +} diff --git a/lib/types/jp2.ts b/lib/types/jp2.ts new file mode 100644 index 00000000..1510bef3 --- /dev/null +++ b/lib/types/jp2.ts @@ -0,0 +1,64 @@ +import { IImage } from './interface' + +const BoxTypes = { + ftyp: '66747970', + ihdr: '69686472', + jp2h: '6a703268', + jp__: '6a502020', + rreq: '72726571', + xml_: '786d6c20', +} + +const calculateRREQLength = (box: Buffer) => { + const unit = box.readUInt8(0) + let offset = 1 + (2 * unit) + const numStdFlags = box.readUInt16BE(offset) + const flagsLength = numStdFlags * (2 + unit) + offset = offset + 2 + flagsLength + const numVendorFeatures = box.readUInt16BE(offset) + const featuresLength = numVendorFeatures * (16 + unit) + return offset + 2 + featuresLength +} + +const parseIHDR = (box: Buffer) => { + return { + height: box.readUInt32BE(4), + width: box.readUInt32BE(8), + } +} + +export const JP2: IImage = { + validate(buffer) { + const signature = buffer.toString('hex', 4, 8) + const signatureLength = buffer.readUInt32BE(0) + if (signature !== BoxTypes.jp__ || signatureLength < 1) { + return false + } + + const ftypeBoxStart = signatureLength + 4 + const ftypBoxLength = buffer.readUInt32BE(signatureLength) + const ftypBox = buffer.slice(ftypeBoxStart, ftypeBoxStart + ftypBoxLength) + return ftypBox.toString('hex', 0, 4) === BoxTypes.ftyp + }, + + calculate(buffer) { + const signatureLength = buffer.readUInt32BE(0) + const ftypBoxLength = buffer.readUInt16BE(signatureLength + 2) + let offset = signatureLength + 4 + ftypBoxLength + const nextBoxType = buffer.toString('hex', offset, offset + 4) + switch (nextBoxType) { + case BoxTypes.rreq: + // WHAT ARE THESE 4 BYTES????? + const MAGIC = 4 + offset = offset + 4 + MAGIC + calculateRREQLength(buffer.slice(offset + 4)) + return parseIHDR(buffer.slice(offset + 8, offset + 24)) + break + case BoxTypes.jp2h : + return parseIHDR(buffer.slice(offset + 8, offset + 24)) + case BoxTypes.xml_: + throw new TypeError('JP2 images with xml headers aren\'t supported yet') + default: + throw new TypeError('Invalid header found: ' + nextBoxType) + } + } +} diff --git a/specs/images/valid/jp2/sample.jp2 b/specs/images/valid/jp2/sample.jp2 new file mode 100644 index 0000000000000000000000000000000000000000..3c9169164125b023132fa375e6c8f120d6bbb9f9 GIT binary patch literal 88874 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

    gF)D(yes#vxH8d) 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 literal 0 HcmV?d00001 diff --git a/specs/others.spec.js b/specs/others.spec.js index 5539289d..a3690754 100644 --- a/specs/others.spec.js +++ b/specs/others.spec.js @@ -63,6 +63,6 @@ describe('Callback function', function () { describe('.types property', function () { it('should expose supported file types', function() { - expect(types).to.eql(['bmp', 'cur', 'dds', 'gif', 'icns', 'ico', 'jpg', 'ktx', 'png', 'pnm', 'psd', 'svg', 'tiff', 'webp']); + expect(types).to.eql(['bmp', 'cur', 'dds', 'gif', 'icns', 'ico', 'j2c', 'jp2', 'jpg', 'ktx', 'png', 'pnm', 'psd', 'svg', 'tiff', 'webp']); }); }); From 9e02d340e391c4726d609adc0e73d363701c6320 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 24 Sep 2019 16:21:17 +0000 Subject: [PATCH 101/110] Update dependency @types/node to v12.7.6 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index f5fd8e67..f175f59e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -167,9 +167,9 @@ "dev": true }, "@types/node": { - "version": "12.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.5.tgz", - "integrity": "sha512-9fq4jZVhPNW8r+UYKnxF1e2HkDWOWKM5bC2/7c9wPV835I0aOrVbS/Hw/pWPk2uKrNXQqg9Z959Kz+IYDd5p3w==", + "version": "12.7.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.6.tgz", + "integrity": "sha512-+lUz75GKlq6JKTigPUKd3Op8AZrnaoCut5S0jkjMZAw+i6eRTaM6vtytl/wfSxXyx+GPRTG2NUcbQWgiinnKng==", "dev": true }, "acorn": { diff --git a/package.json b/package.json index 8843f7dc..20c64f91 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "author": "netroy (http://netroy.in/)", "license": "MIT", "devDependencies": { - "@types/node": "12.7.5", + "@types/node": "12.7.6", "chai": "4.2.0", "coveralls": "3.0.6", "eslint": "6.4.0", From 0f0afaeafe957527ee1280cce4184949c2a6afc7 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Tue, 24 Sep 2019 17:28:01 +0000 Subject: [PATCH 102/110] Update dependency @types/node to v12.7.7 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index f175f59e..e8c61559 100644 --- a/package-lock.json +++ b/package-lock.json @@ -167,9 +167,9 @@ "dev": true }, "@types/node": { - "version": "12.7.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.6.tgz", - "integrity": "sha512-+lUz75GKlq6JKTigPUKd3Op8AZrnaoCut5S0jkjMZAw+i6eRTaM6vtytl/wfSxXyx+GPRTG2NUcbQWgiinnKng==", + "version": "12.7.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.7.tgz", + "integrity": "sha512-4jUncNe2tj1nmrO/34PsRpZqYVnRV1svbU78cKhuQKkMntKB/AmdLyGgswcZKjFHEHGpiY8pVD8CuVI55nP54w==", "dev": true }, "acorn": { diff --git a/package.json b/package.json index 20c64f91..0d7e5a43 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "author": "netroy (http://netroy.in/)", "license": "MIT", "devDependencies": { - "@types/node": "12.7.6", + "@types/node": "12.7.7", "chai": "4.2.0", "coveralls": "3.0.6", "eslint": "6.4.0", From c1ba22dcba41ea9f21edbcfe3a5ee20b8bd67577 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 25 Sep 2019 23:16:38 +0000 Subject: [PATCH 103/110] Update dependency @types/node to v12.7.8 --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index e8c61559..f321148f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -167,9 +167,9 @@ "dev": true }, "@types/node": { - "version": "12.7.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.7.tgz", - "integrity": "sha512-4jUncNe2tj1nmrO/34PsRpZqYVnRV1svbU78cKhuQKkMntKB/AmdLyGgswcZKjFHEHGpiY8pVD8CuVI55nP54w==", + "version": "12.7.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.8.tgz", + "integrity": "sha512-FMdVn84tJJdV+xe+53sYiZS4R5yn1mAIxfj+DVoNiQjTYz1+OYmjwEZr1ev9nU0axXwda0QDbYl06QHanRVH3A==", "dev": true }, "acorn": { diff --git a/package.json b/package.json index 0d7e5a43..45d114b7 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "author": "netroy (http://netroy.in/)", "license": "MIT", "devDependencies": { - "@types/node": "12.7.7", + "@types/node": "12.7.8", "chai": "4.2.0", "coveralls": "3.0.6", "eslint": "6.4.0", From d92f3ce6018de344d9bf222004f0116ddb3f1724 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 29 Sep 2019 05:47:08 +0000 Subject: [PATCH 104/110] Update dependency eslint to v6.5.0 --- package-lock.json | 36 +++++++++--------------------------- package.json | 2 +- 2 files changed, 10 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index f321148f..fc31625f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -173,9 +173,9 @@ "dev": true }, "acorn": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", - "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", "dev": true }, "acorn-jsx": { @@ -701,9 +701,9 @@ "dev": true }, "eslint": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.4.0.tgz", - "integrity": "sha512-WTVEzK3lSFoXUovDHEbkJqCVPEPwbhCq4trDktNI6ygs7aO41d4cDT0JFAT5MivzZeVLWlg7vHL+bgrQv/t3vA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.5.0.tgz", + "integrity": "sha512-IIbSW+vKOqMatPmS9ayyku4tvWxHY2iricSRtOz6+ZA5IPRlgXzEL0u/j6dr4eha0ugmhMwDTqxtmNu3kj9O4w==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -760,12 +760,6 @@ "ms": "^2.1.1" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -1083,9 +1077,9 @@ } }, "glob-parent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", - "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -1282,12 +1276,6 @@ "supports-color": "^5.3.0" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -2637,12 +2625,6 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", diff --git a/package.json b/package.json index 45d114b7..fbf589d4 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@types/node": "12.7.8", "chai": "4.2.0", "coveralls": "3.0.6", - "eslint": "6.4.0", + "eslint": "6.5.0", "glob": "7.1.4", "mocha": "6.2.0", "nyc": "14.1.1", From 031ae0f2d5c3cf6f6b35a858815e5824aa8eeb3f Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sun, 29 Sep 2019 13:44:02 +0000 Subject: [PATCH 105/110] Update dependency mocha to v6.2.1 --- package-lock.json | 222 +++++++++++++++++++++++++++++++++++++--------- package.json | 2 +- 2 files changed, 182 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index fc31625f..6e6a1836 100644 --- a/package-lock.json +++ b/package-lock.json @@ -664,17 +664,21 @@ } }, "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz", + "integrity": "sha512-DgoQmbpFNOofkjJtKwr87Ma5EW4Dc8fWhD0R+ndq7Oc456ivUfGOOP6oAZTTKl5/CcNMP+EN+e3/iUzgE0veZg==", "dev": true, "requires": { "es-to-primitive": "^1.2.0", "function-bind": "^1.1.1", "has": "^1.0.3", + "has-symbols": "^1.0.0", "is-callable": "^1.1.4", "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.0.0", + "string.prototype.trimright": "^2.0.0" } }, "es-to-primitive": { @@ -1776,9 +1780,9 @@ } }, "mocha": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.0.tgz", - "integrity": "sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.1.tgz", + "integrity": "sha512-VCcWkLHwk79NYQc8cxhkmI8IigTIhsCwZ6RTxQsqK6go4UvEhzJkYuHm8B2YtlSxcYq2fY+ucr4JBwoD6ci80A==", "dev": true, "requires": { "ansi-colors": "3.2.3", @@ -1801,11 +1805,28 @@ "supports-color": "6.0.0", "which": "1.3.1", "wide-align": "1.1.3", - "yargs": "13.2.2", - "yargs-parser": "13.0.0", - "yargs-unparser": "1.5.0" + "yargs": "13.3.0", + "yargs-parser": "13.1.1", + "yargs-unparser": "1.6.0" }, "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", @@ -1820,6 +1841,26 @@ "path-is-absolute": "^1.0.0" } }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, "supports-color": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", @@ -1828,6 +1869,45 @@ "requires": { "has-flag": "^3.0.0" } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -1891,9 +1971,9 @@ }, "dependencies": { "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -1976,6 +2056,12 @@ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, + "object-inspect": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz", + "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==", + "dev": true + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -2571,6 +2657,26 @@ "strip-ansi": "^4.0.0" } }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -3025,52 +3131,86 @@ } }, "yargs-unparser": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz", - "integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", "dev": true, "requires": { "flat": "^4.1.0", - "lodash": "^4.17.11", - "yargs": "^12.0.5" + "lodash": "^4.17.15", + "yargs": "^13.3.0" }, "dependencies": { - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", + "cliui": "^5.0.0", "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/package.json b/package.json index fbf589d4..60132434 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "coveralls": "3.0.6", "eslint": "6.5.0", "glob": "7.1.4", - "mocha": "6.2.0", + "mocha": "6.2.1", "nyc": "14.1.1", "sinon": "7.5.0", "tslint": "5.20.0", From a628bfece6d8fd1673a8489cbeee7a537eeddbcc Mon Sep 17 00:00:00 2001 From: Devaaja1 Date: Wed, 25 Sep 2019 09:50:11 +0300 Subject: [PATCH 106/110] Fix types + some minor stuff. --- lib/index.ts | 11 +++++------ lib/types/icns.ts | 17 +++++++++-------- lib/types/ico.ts | 17 +++++++++-------- lib/types/interface.ts | 9 ++++----- lib/types/jp2.ts | 9 ++++----- lib/types/svg.ts | 8 ++------ 6 files changed, 33 insertions(+), 38 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index c0053242..a8e0c2e7 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -3,11 +3,10 @@ import * as path from 'path' import Queue from 'queue' import { typeHandlers } from './types' import { detector } from './detector' -import { ISizes, ISize } from './types/interface' +import { ISizeCalculationResult } from './types/interface' import './fs.promises' -type CallbackFn = (e: Error | null, b?: Buffer) => void -type Dimensions = ISize | ISizes | null | undefined +type CallbackFn = (e: Error | null, r?: ISizeCalculationResult) => void // Maximum buffer size, with a default of 512 kilobytes. // TO-DO: make this adaptive based on the initial signature of the image @@ -23,7 +22,7 @@ const queue = new Queue({ concurrency: 100, autostart: true }) * @param {String} filepath * @returns {Object} */ -function lookup(buffer: Buffer, filepath?: string): Dimensions { +function lookup(buffer: Buffer, filepath?: string): ISizeCalculationResult { // detect the file type.. don't rely on the extension const type = detector(buffer) @@ -77,13 +76,13 @@ function syncFileToBuffer(filepath: string) { module.exports = exports = imageSize // backwards compatibility -export function imageSize(input: Buffer | string): Dimensions +export function imageSize(input: Buffer | string): ISizeCalculationResult export function imageSize(input: string, callback: CallbackFn): void /** * @param {Buffer|string} input - buffer or relative/absolute path of the image file * @param {Function=} [callback] - optional function for async detection */ -export function imageSize(input: Buffer | string, callback?: CallbackFn): any { +export function imageSize(input: Buffer | string, callback?: CallbackFn): ISizeCalculationResult | void { // Handle buffer input if (Buffer.isBuffer(input)) { return lookup(input) diff --git a/lib/types/icns.ts b/lib/types/icns.ts index 31f71dbb..82b0da9a 100644 --- a/lib/types/icns.ts +++ b/lib/types/icns.ts @@ -1,4 +1,4 @@ -import { IImage, ISize } from './interface' +import { IImage, ISize, ISizeCalculationResult } from './interface' /** * ICNS Header @@ -97,17 +97,18 @@ export const ICNS: IImage = { return imageSize } - const result = { - height: imageSize.height, - images: [imageSize], - width: imageSize.width - } - + const imgs: ISize[] = [imageSize] while (imageOffset < fileLength && imageOffset < bufferLength) { imageHeader = readImageHeader(buffer, imageOffset) imageSize = getImageSize(imageHeader[0]) imageOffset += imageHeader[1] - result.images.push(imageSize) + imgs.push(imageSize) + } + + const result: ISizeCalculationResult = { + height: imageSize.height, + images: imgs, + width: imageSize.width } return result diff --git a/lib/types/ico.ts b/lib/types/ico.ts index a6e4071b..431fffda 100644 --- a/lib/types/ico.ts +++ b/lib/types/ico.ts @@ -1,4 +1,4 @@ -import { IImage, ISize } from './interface' +import { IImage, ISize, ISizeCalculationResult } from './interface' const TYPE_ICON = 1 @@ -31,7 +31,7 @@ const SIZE_HEADER = 2 + 2 + 2 // 6 */ const SIZE_IMAGE_ENTRY = 1 + 1 + 1 + 1 + 2 + 2 + 4 + 4 // 16 -function getSizeFromOffset(buffer: Buffer, offset: number) { +function getSizeFromOffset(buffer: Buffer, offset: number): number { const value = buffer.readUInt8(offset) return value === 0 ? 256 : value } @@ -60,14 +60,15 @@ export const ICO: IImage = { return imageSize } - const result = { - height: imageSize.height, - images: [imageSize], - width: imageSize.width + const imgs: ISize[] = [imageSize] + for (let imageIndex = 1; imageIndex < nbImages; imageIndex += 1) { + imgs.push(getImageSize(buffer, imageIndex)) } - for (let imageIndex = 1; imageIndex < nbImages; imageIndex += 1) { - result.images.push(getImageSize(buffer, imageIndex)) + const result: ISizeCalculationResult = { + height: imageSize.height, + images: imgs, + width: imageSize.width } return result diff --git a/lib/types/interface.ts b/lib/types/interface.ts index 8517b049..9886b357 100644 --- a/lib/types/interface.ts +++ b/lib/types/interface.ts @@ -1,16 +1,15 @@ export interface ISize { width: number | undefined height: number | undefined - orientation?: number | undefined + orientation?: number type?: string } -export interface ISizes { - result: ISize[] - type?: string +export interface ISizeCalculationResult extends ISize { + images?: ISize[] } export interface IImage { validate: (buffer: Buffer) => boolean - calculate: (buffer: Buffer, filepath?: string) => ISize | ISizes | undefined + calculate: (buffer: Buffer, filepath?: string) => ISizeCalculationResult } diff --git a/lib/types/jp2.ts b/lib/types/jp2.ts index 1510bef3..0326aa0f 100644 --- a/lib/types/jp2.ts +++ b/lib/types/jp2.ts @@ -1,4 +1,4 @@ -import { IImage } from './interface' +import { IImage, ISize } from './interface' const BoxTypes = { ftyp: '66747970', @@ -6,10 +6,10 @@ const BoxTypes = { jp2h: '6a703268', jp__: '6a502020', rreq: '72726571', - xml_: '786d6c20', + xml_: '786d6c20' } -const calculateRREQLength = (box: Buffer) => { +const calculateRREQLength = (box: Buffer): number => { const unit = box.readUInt8(0) let offset = 1 + (2 * unit) const numStdFlags = box.readUInt16BE(offset) @@ -20,7 +20,7 @@ const calculateRREQLength = (box: Buffer) => { return offset + 2 + featuresLength } -const parseIHDR = (box: Buffer) => { +const parseIHDR = (box: Buffer): ISize => { return { height: box.readUInt32BE(4), width: box.readUInt32BE(8), @@ -52,7 +52,6 @@ export const JP2: IImage = { const MAGIC = 4 offset = offset + 4 + MAGIC + calculateRREQLength(buffer.slice(offset + 4)) return parseIHDR(buffer.slice(offset + 8, offset + 24)) - break case BoxTypes.jp2h : return parseIHDR(buffer.slice(offset + 8, offset + 24)) case BoxTypes.xml_: diff --git a/lib/types/svg.ts b/lib/types/svg.ts index a3daa140..6051b68c 100644 --- a/lib/types/svg.ts +++ b/lib/types/svg.ts @@ -60,11 +60,7 @@ function calculateByDimensions(attrs: IAttributes): ISize { } } -function calculateByViewbox(attrs: IAttributes): ISize | undefined { - const viewbox = attrs && attrs.viewbox - if (!viewbox) { - return - } +function calculateByViewbox(attrs: IAttributes, viewbox: IAttributes): ISize { const ratio = (viewbox.width as number) / (viewbox.height as number) if (attrs.width) { return { @@ -98,7 +94,7 @@ export const SVG: IImage = { return calculateByDimensions(attrs) } if (attrs.viewbox) { - return calculateByViewbox(attrs) + return calculateByViewbox(attrs, attrs.viewbox) } } throw new TypeError('Invalid SVG') From 175bca5d57ceb024ecd307f7a1d70e03fafec205 Mon Sep 17 00:00:00 2001 From: Devaaja1 Date: Wed, 25 Sep 2019 09:56:59 +0300 Subject: [PATCH 107/110] Fix a bug introduced while working on types. --- lib/types/icns.ts | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/types/icns.ts b/lib/types/icns.ts index 82b0da9a..a757f7ca 100644 --- a/lib/types/icns.ts +++ b/lib/types/icns.ts @@ -97,18 +97,17 @@ export const ICNS: IImage = { return imageSize } - const imgs: ISize[] = [imageSize] + const result = { + height: imageSize.height, + images: [imageSize], + width: imageSize.width + } + while (imageOffset < fileLength && imageOffset < bufferLength) { imageHeader = readImageHeader(buffer, imageOffset) imageSize = getImageSize(imageHeader[0]) imageOffset += imageHeader[1] - imgs.push(imageSize) - } - - const result: ISizeCalculationResult = { - height: imageSize.height, - images: imgs, - width: imageSize.width + result.images.push(imageSize) } return result From 93f4ae726665b59bece4e7fed7e6bf125e344ba3 Mon Sep 17 00:00:00 2001 From: Aditya Date: Mon, 30 Sep 2019 12:48:25 +0200 Subject: [PATCH 108/110] Update jp2.ts --- lib/types/jp2.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/types/jp2.ts b/lib/types/jp2.ts index 0326aa0f..bbc25d8f 100644 --- a/lib/types/jp2.ts +++ b/lib/types/jp2.ts @@ -54,10 +54,8 @@ export const JP2: IImage = { return parseIHDR(buffer.slice(offset + 8, offset + 24)) case BoxTypes.jp2h : return parseIHDR(buffer.slice(offset + 8, offset + 24)) - case BoxTypes.xml_: - throw new TypeError('JP2 images with xml headers aren\'t supported yet') default: - throw new TypeError('Invalid header found: ' + nextBoxType) + throw new TypeError('Unsupported header found: ' + buffer.toString('ascii', offset, offset + 4)) } } } From ddc083256be53ee355826937a6bce6ff00ed4d42 Mon Sep 17 00:00:00 2001 From: Aditya Date: Mon, 30 Sep 2019 12:48:55 +0200 Subject: [PATCH 109/110] npm audit fix --- package-lock.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6e6a1836..b81a1a15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1108,9 +1108,9 @@ "dev": true }, "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.0.tgz", + "integrity": "sha512-xkRtOt3/3DzTKMOt3xahj2M/EqNhY988T+imYSlMgs5fVhLN2fmKVVj0LtEGmb+3UUYV5Qmm1052Mm3dIQxOvw==", "dev": true, "requires": { "neo-async": "^2.6.0", @@ -1930,9 +1930,9 @@ "dev": true }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, "nested-error-stacks": { @@ -2889,9 +2889,9 @@ "dev": true }, "uglify-js": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.11.tgz", - "integrity": "sha512-izPJg8RsSyqxbdnqX36ExpbH3K7tDBsAU/VfNv89VkMFy3z39zFjunQGsSHOlGlyIfGLGprGeosgQno3bo2/Kg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", + "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", "dev": true, "optional": true, "requires": { From f7668a6b8db3da735c860f35a490ed593526b88e Mon Sep 17 00:00:00 2001 From: Aditya Date: Mon, 30 Sep 2019 12:49:06 +0200 Subject: [PATCH 110/110] 0.8.3 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b81a1a15..062bffc3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.8.2", + "version": "0.8.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 60132434..ed499aa0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "image-size", - "version": "0.8.2", + "version": "0.8.3", "description": "get dimensions of any image file", "main": "dist/index.js", "types": "dist/index.d.ts", pFad - Phonifier reborn

    Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

    Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy