From db11d9e07b4dfc40927c36c5217cd63da3aa5bc5 Mon Sep 17 00:00:00 2001 From: Dan Mosedale Date: Mon, 27 Jun 2022 19:13:29 -0700 Subject: [PATCH] Add mode to throw on invalid property access, fixes #25 --- lib/Jexl.js | 10 +- lib/evaluator/Evaluator.js | 9 +- lib/evaluator/handlers.js | 37 +- package.json | 3 +- .../Evaluator-throw-on-missing-prop-mode.js | 206 ++++++ test/evaluator/Evaluator.js | 2 +- vendor/mozjexl.jsm | 56 +- yarn.lock | 639 ++++++------------ 8 files changed, 511 insertions(+), 451 deletions(-) create mode 100644 test/evaluator/Evaluator-throw-on-missing-prop-mode.js diff --git a/lib/Jexl.js b/lib/Jexl.js index 14fc6ce0..19cfbf34 100644 --- a/lib/Jexl.js +++ b/lib/Jexl.js @@ -14,10 +14,11 @@ var Evaluator = require("./evaluator/Evaluator"), * xpath-like drilldown into native Javascript objects. * @constructor */ -function Jexl() { +function Jexl(throwOnMissingProp) { this._customGrammar = null; this._lexer = null; this._transforms = {}; + this._throwOnMissingProp = throwOnMissingProp || true; } /** @@ -174,7 +175,12 @@ Jexl.prototype._eval = function(exp, context) { var self = this, grammar = this._getGrammar(), parser = new Parser(grammar), - evaluator = new Evaluator(grammar, this._transforms, context); + evaluator = new Evaluator( + grammar, + this._transforms, + context, + this._throwOnMissingProp + ); return Promise.resolve().then(function() { parser.addTokens(self._getLexer().tokenize(exp)); return evaluator.eval(parser.complete()); diff --git a/lib/evaluator/Evaluator.js b/lib/evaluator/Evaluator.js index 2eae6af7..71b635c0 100644 --- a/lib/evaluator/Evaluator.js +++ b/lib/evaluator/Evaluator.js @@ -35,11 +35,18 @@ var handlers = require("./handlers"); * to resolve the value of a relative identifier. * @constructor */ -var Evaluator = function(grammar, transforms, context, relativeContext) { +var Evaluator = function( + grammar, + transforms, + context, + relativeContext, + throwOnMissingProp +) { this._grammar = grammar; this._transforms = transforms || {}; this._context = context || {}; this._relContext = relativeContext || this._context; + this._throwOnMissingProp = throwOnMissingProp || false; }; /** diff --git a/lib/evaluator/handlers.js b/lib/evaluator/handlers.js index 5ffe32bb..3798da3e 100644 --- a/lib/evaluator/handlers.js +++ b/lib/evaluator/handlers.js @@ -81,16 +81,45 @@ exports.FilterExpression = function(ast) { * @private */ exports.Identifier = function(ast) { + function contextHasProp(context, prop) { + // If this is primitive object (eg "string") we can't check + // this, which is why we have to be careful not to look in things + // that aren't objects. + if (typeof context == "object" && !(prop in context)) { + return false; + } + + return true; + } + + let that = this; if (ast.from) { return this.eval(ast.from).then(function(context) { if (Array.isArray(context)) context = context[0]; - if (context === undefined) return undefined; + if (context === undefined) return undefined; // XXX deleteme? testme? + if (that._throwOnMissingProp && !contextHasProp(context, ast.value)) { + throw new Error( + `stemmed context does not have an identifier named ${ast.value}` + ); + } + return context[ast.value]; }); } else { - return ast.relative - ? this._relContext[ast.value] - : this._context[ast.value]; + const contextToCheck = ast.relative ? this._relContext : this._context; + + console.log("b4"); + + if ( + that._throwOnMissingProp && + !contextHasProp(contextToCheck, ast.value) + ) { + throw new Error( + `default context does not have an identifier named ${ast.value}` + ); + } + + return contextToCheck[ast.value]; } }; diff --git a/package.json b/package.json index 3917f50f..bdb687dd 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "eslint-plugin-prettier": "^2.6.0", "license-webpack-plugin": "0.5.1", "prettier": "^1.10.2", - "webpack": "3.1.0" + "webpack": "3.1.0", + "webpack-cli": "^4.10.0" } } diff --git a/test/evaluator/Evaluator-throw-on-missing-prop-mode.js b/test/evaluator/Evaluator-throw-on-missing-prop-mode.js new file mode 100644 index 00000000..ad15aace --- /dev/null +++ b/test/evaluator/Evaluator-throw-on-missing-prop-mode.js @@ -0,0 +1,206 @@ +/* + * Jexl + * Copyright (c) 2015 TechnologyAdvice + */ + +var chai = require("chai"), + chaiAsPromised = require("chai-as-promised"), + Lexer = require("../../lib/Lexer"), + Parser = require("../../lib/parser/Parser"), + Evaluator = require("../../lib/evaluator/Evaluator"), + grammar = require("../../lib/grammar").elements; + +chai.should(); +chai.use(chaiAsPromised); + +var lexer = new Lexer(grammar); + +function toTree(exp) { + var p = new Parser(grammar); + p.addTokens(lexer.tokenize(exp)); + return p.complete(); +} + +describe("Evaluator in throwOnMissingProp mode", function() { + it("should evaluate an arithmetic expression", function() { + const e = new Evaluator(grammar, null, null, null, true); + return e.eval(toTree("(2 + 3) * 4")).should.become(20); + }); + it("should evaluate a string concat", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e + .eval(toTree('"Hello" + (4+4) + "Wo\\"rld"')) + .should.become('Hello8Wo"rld'); + }); + it("should evaluate a true comparison expression", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e.eval(toTree("2 > 1")).should.become(true); + }); + it("should evaluate a false comparison expression", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e.eval(toTree("2 <= 1")).should.become(false); + }); + it("should evaluate a complex expression", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e + .eval(toTree('"foo" && 6 >= 6 && 0 + 1 && true')) + .should.become(true); + }); + it("should evaluate an identifier chain", function() { + var context = { foo: { baz: { bar: "tek" } } }, + e = new Evaluator(grammar, null, context, null, true); + return e.eval(toTree("foo.baz.bar")).should.become(context.foo.baz.bar); + }); + it("should apply transforms", function() { + var context = { foo: 10 }, + half = function(val) { + return val / 2; + }, + e = new Evaluator(grammar, { half: half }, context, null, true); + return e.eval(toTree("foo|half + 3")).should.become(8); + }); + it("should filter arrays", function() { + var context = { + foo: { + bar: [{ tek: "hello" }, { tek: "baz" }, { tok: "baz" }] + } + }, + e = new Evaluator(grammar, null, context, null, true); + return e + .eval(toTree('foo.bar[.tek == "baz"]')) + .should.eventually.deep.equal([{ tek: "baz" }]); + }); + it("should assume array index 0 when traversing", function() { + var context = { + foo: { + bar: [{ tek: { hello: "world" } }, { tek: { hello: "universe" } }] + } + }, + e = new Evaluator(grammar, null, context, null, true); + return e.eval(toTree("foo.bar.tek.hello")).should.become("world"); + }); + it("should make array elements addressable by index", function() { + var context = { + foo: { + bar: [{ tek: "tok" }, { tek: "baz" }, { tek: "foz" }] + } + }, + e = new Evaluator(grammar, null, context, null, true); + return e.eval(toTree("foo.bar[1].tek")).should.become("baz"); + }); + it("should allow filters to select object properties", function() { + var context = { foo: { baz: { bar: "tek" } } }, + e = new Evaluator(grammar, null, context, null, true); + return e + .eval(toTree('foo["ba" + "z"].bar')) + .should.become(context.foo.baz.bar); + }); + it("should reject simple filters on undefined objects", function() { + var context = { foo: {} }, + e = new Evaluator(grammar, null, context, null, true); + return e.eval(toTree('foo.bar["baz"].tok')).should.be.rejected; + }); + it("should reject complex filters on undefined objects", function() { + var context = { foo: {} }, + e = new Evaluator(grammar, null, context, null, true); + return e.eval(toTree("foo.bar[.size > 1].baz")).should.be.rejected; + }); + it("should throw when transform does not exist", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e.eval(toTree('"hello"|world')).should.be.rejected; + }); + it("should throw when top-level identifier doesn't exist", function() { + var context = { foo: { baz: { bar: "dog" } } }, + e = new Evaluator(grammar, null, context, null, true); + + return e.eval(toTree("monkey")).should.be.rejected; + }); + it("should throw when child identifier doesn't exist", function() { + var context = { foo: { baz: { bar: "cat" } } }, + e = new Evaluator(grammar, null, context, null, true); + + return e.eval(toTree("foo.baz.monkey")).should.be.rejected; + }); + it("should apply the DivFloor operator", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e.eval(toTree("7 // 2")).should.become(3); + }); + it("should evaluate an object literal", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e + .eval(toTree('{foo: {bar: "tek"}}')) + .should.eventually.deep.equal({ foo: { bar: "tek" } }); + }); + it("should evaluate an empty object literal", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e.eval(toTree("{}")).should.eventually.deep.equal({}); + }); + it("should evaluate a transform with multiple args", function() { + var e = new Evaluator( + grammar, + { + concat: function(val, a1, a2, a3) { + return val + ": " + a1 + a2 + a3; + } + }, + null, + null, + true + ); + return e + .eval(toTree('"foo"|concat("baz", "bar", "tek")')) + .should.become("foo: bazbartek"); + }); + it("should evaluate dot notation for object literals", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e.eval(toTree('{foo: "bar"}.foo')).should.become("bar"); + }); + it("should allow access to literal properties", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e.eval(toTree('"foo".length')).should.become(3); + }); + it("should evaluate array literals", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e + .eval(toTree('["foo", 1+2]')) + .should.eventually.deep.equal(["foo", 3]); + }); + it("should allow properties on empty arrays", function() { + var context = { foo: {} }, + e = new Evaluator(grammar, null, context, null, true); + return e.eval(toTree("[].baz")).should.become(undefined); + }); + it('should apply the "in" operator to strings', function() { + var e = new Evaluator(grammar, null, null, null, true); + return Promise.all([ + e.eval(toTree('"bar" in "foobartek"')).should.become(true), + e.eval(toTree('"baz" in "foobartek"')).should.become(false) + ]); + }); + it('should apply the "in" operator to arrays', function() { + var e = new Evaluator(grammar, null, null, null, true); + return Promise.all([ + e.eval(toTree('"bar" in ["foo","bar","tek"]')).should.become(true), + e.eval(toTree('"baz" in ["foo","bar","tek"]')).should.become(false) + ]); + }); + it("should evaluate a conditional expression", function() { + var e = new Evaluator(grammar, null, null, null, true); + return Promise.all([ + e.eval(toTree('"foo" ? 1 : 2')).should.become(1), + e.eval(toTree('"" ? 1 : 2')).should.become(2) + ]); + }); + it("should allow missing consequent in ternary", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e.eval(toTree('"foo" ?: "bar"')).should.become("foo"); + }); + it("does not treat falsey properties as undefined", function() { + const e = new Evaluator(grammar, null, null, null, true); + return e.eval(toTree('"".length')).should.become(0); + }); + it("should handle an expression with arbitrary whitespace", function() { + var e = new Evaluator(grammar, null, null, null, true); + return e.eval(toTree("(\t2\n+\n3) *\n4\n\r\n")).should.become(20); + }); +}); diff --git a/test/evaluator/Evaluator.js b/test/evaluator/Evaluator.js index 49f5300a..892a079f 100644 --- a/test/evaluator/Evaluator.js +++ b/test/evaluator/Evaluator.js @@ -107,7 +107,7 @@ describe("Evaluator", function() { }); it("should throw when transform does not exist", function() { var e = new Evaluator(grammar); - return e.eval(toTree('"hello"|world')).should.reject; + return e.eval(toTree('"hello"|world')).should.be.rejected; }); it("should apply the DivFloor operator", function() { var e = new Evaluator(grammar); diff --git a/vendor/mozjexl.jsm b/vendor/mozjexl.jsm index 560db728..27f0e013 100644 --- a/vendor/mozjexl.jsm +++ b/vendor/mozjexl.jsm @@ -300,10 +300,11 @@ var Evaluator = __webpack_require__(2), * xpath-like drilldown into native Javascript objects. * @constructor */ -function Jexl() { +function Jexl(throwOnMissingProp) { this._customGrammar = null; this._lexer = null; this._transforms = {}; + this._throwOnMissingProp = throwOnMissingProp || true; } /** @@ -460,7 +461,12 @@ Jexl.prototype._eval = function(exp, context) { var self = this, grammar = this._getGrammar(), parser = new Parser(grammar), - evaluator = new Evaluator(grammar, this._transforms, context); + evaluator = new Evaluator( + grammar, + this._transforms, + context, + this._throwOnMissingProp + ); return Promise.resolve().then(function() { parser.addTokens(self._getLexer().tokenize(exp)); return evaluator.eval(parser.complete()); @@ -552,11 +558,18 @@ var handlers = __webpack_require__(3); * to resolve the value of a relative identifier. * @constructor */ -var Evaluator = function(grammar, transforms, context, relativeContext) { +var Evaluator = function( + grammar, + transforms, + context, + relativeContext, + throwOnMissingProp +) { this._grammar = grammar; this._transforms = transforms || {}; this._context = context || {}; this._relContext = relativeContext || this._context; + this._throwOnMissingProp = throwOnMissingProp || false; }; /** @@ -762,16 +775,45 @@ exports.FilterExpression = function(ast) { * @private */ exports.Identifier = function(ast) { + function contextHasProp(context, prop) { + // If this is primitive object (eg "string") we can't check + // this, which is why we have to be careful not to look in things + // that aren't objects. + if (typeof context == "object" && !(prop in context)) { + return false; + } + + return true; + } + + let that = this; if (ast.from) { return this.eval(ast.from).then(function(context) { if (Array.isArray(context)) context = context[0]; - if (context === undefined) return undefined; + if (context === undefined) return undefined; // XXX deleteme? testme? + if (that._throwOnMissingProp && !contextHasProp(context, ast.value)) { + throw new Error( + `stemmed context does not have an identifier named ${ast.value}` + ); + } + return context[ast.value]; }); } else { - return ast.relative - ? this._relContext[ast.value] - : this._context[ast.value]; + const contextToCheck = ast.relative ? this._relContext : this._context; + + console.log("b4"); + + if ( + that._throwOnMissingProp && + !contextHasProp(contextToCheck, ast.value) + ) { + throw new Error( + `default context does not have an identifier named ${ast.value}` + ); + } + + return contextToCheck[ast.value]; } }; diff --git a/yarn.lock b/yarn.lock index c30911b7..42f1eb32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,28 @@ # yarn lockfile v1 +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@webpack-cli/configtest@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" + integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== + +"@webpack-cli/info@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" + integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== + dependencies: + envinfo "^7.7.3" + +"@webpack-cli/serve@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" + integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== + acorn-dynamic-import@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz" @@ -172,7 +194,7 @@ atob@^2.1.2: resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +babel-code-frame@^6.22.0: version "6.26.0" resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" dependencies: @@ -180,327 +202,6 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.24.1, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - 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-helper-evaluate-path@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.1.0.tgz" - integrity sha512-uYUt1Nt6etJcanj62vbtlKNTtQWTir4UgSYZnm2RKHX2wNChecVdHBsIIlHZzMhFrpH1L8UKMWTdJCKNbbWR6A== - -babel-helper-flip-expressions@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.1.2.tgz" - integrity sha512-n43Vj4t2qos11252JZlgRnI1ow0/eWZ1f+WaFfuTVNwXm0ElK8rKTwZmfRuIywkHSKyiIkn7GeDngQQKKeJKeQ== - -babel-helper-is-nodes-equiv@^0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz" - integrity sha512-ri/nsMFVRqXn7IyT5qW4/hIAGQxuYUFHa3qsxmPtbk6spZQcYlyDogfVpNm2XYOslH/ULS4VEJGUqQX5u7ACQw== - -babel-helper-is-void-0@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.1.1.tgz" - integrity sha512-b2oNq04KPmSNNN0Iyq3/omLItSVdbq4RBysMYirwZ5Wg8esqAzze8rfmZl5U6aT163Bk0wKF15s9YJ1EJ2tj5A== - -babel-helper-mark-eval-scopes@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.1.1.tgz" - integrity sha512-wq2wKu6Q0YyMGOQZ5zy2o8Ut40rvOCWuUkPKnjyMaQV6GVXP8S1B8VzqyJg+RxJe+e4OU80+25ola4jIfZoGSQ== - -babel-helper-remove-or-void@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.1.1.tgz" - integrity sha512-FBOadheNEwMkiyrB7t6p36i22Ou5PY3RfV4CxvuTzyYigUod28ULUBu5Vz+cfyDuB4SA9ojf8Q74ekf8hLi42w== - -babel-helper-to-multiple-sequence-expressions@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.1.1.tgz" - integrity sha512-VhZytJ9X8apSUsWc13TWcxuAkFbn9ljR5O3ajrYm8eDiYy1dG6nzISJQErg9lax5PuDj543WAjZr51+82fOFQg== - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz" - integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz" - integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-minify-builtins@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.1.3.tgz" - integrity sha512-ixrxAI1ba/N045RJzWvx0rN7u8jDm+5zvXh/FQ2SF+6AzOZ8cIgU/W2b5a4yerm5JRy+R/F3YL2k2ijWvkuKRQ== - dependencies: - babel-helper-evaluate-path "^0.1.0" - -babel-plugin-minify-constant-folding@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.1.3.tgz" - integrity sha512-qCd6l/8LOeaXaiPXpsHy1eNyyuvTRtXDF6lT8ET0Xns3R+3oa8n8ofROYh5kT894CJS4AtNzcI3Ll+HDLfje1A== - dependencies: - babel-helper-evaluate-path "^0.1.0" - -babel-plugin-minify-dead-code-elimination@^0.1.7: - version "0.1.7" - resolved "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.1.7.tgz" - integrity sha512-7I+X6fG7D4vs6GzgRUqNXo3t+C62D0+tAVw+e653UjzpepJ0fQR+hkRWTHhmtrejYWL+zIF2jdDy1URqowW4Ug== - dependencies: - babel-helper-mark-eval-scopes "^0.1.1" - babel-helper-remove-or-void "^0.1.1" - lodash.some "^4.6.0" - -babel-plugin-minify-flip-comparisons@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.1.2.tgz" - integrity sha512-IxE1BVm9QOyTIs444lgr6HzdrQH4HRnjRyyK1+HepH5OWkjy2InciaUm9zAd1LPj7v612IOmQbpP05TvToeDbw== - dependencies: - babel-helper-is-void-0 "^0.1.1" - -babel-plugin-minify-guarded-expressions@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.1.2.tgz" - integrity sha512-IqKnn9EXEs/Gbh3xvF1l/taaI/ZJrcPs/DZVO3L/6D4Ao0HI2HBoilq97UuUwKz4+yZDEGeOeHMN9gJi8QYbPg== - dependencies: - babel-helper-flip-expressions "^0.1.2" - -babel-plugin-minify-infinity@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.1.2.tgz" - integrity sha512-4BA0tL1TYsndVpHVBbSE3Y77ZLcEMjfSfv2UhiJOxFxaLHSxAo4DWmXvnZkk3yBt9GPtYeEnJNuztNKa9H8pDw== - -babel-plugin-minify-mangle-names@^0.1.3: - version "0.1.3" - resolved "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.1.3.tgz" - integrity sha512-/us4oWavsDoQwumBs1Bfy9pXs2jK7MVaHFSziQnNhgZSMWA/r7SAjqGN2jKB96Rirk1q1Ac3IPAU5wRSIePlkw== - dependencies: - babel-helper-mark-eval-scopes "^0.1.1" - -babel-plugin-minify-numeric-literals@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.1.1.tgz" - integrity sha512-Nl2Luu5Y0RI66nDbzybThgc/SDOJQD4qnOyqhhEkRB7c+8e+4Sat4CoDSxkMg7MzcYmFUy8LeXCfUTw527Oaxw== - -babel-plugin-minify-replace@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.1.2.tgz" - integrity sha512-kQ4NYNzlsxJF/rC6YC6rnHLUC01gFy4PCdTvc1rV6tQHXSDVBEDFMSLaDl7yTXevaNDINasT7CcPVISSYY4qEg== - -babel-plugin-minify-simplify@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.1.2.tgz" - integrity sha512-gVYVqkXZtNXk8VuWChzWeE2lulwnbmvuNWT+JzZlZJLPixsYBquKwMAtyIrtFHqAPgVt746aryTApE88/beRYw== - dependencies: - babel-helper-flip-expressions "^0.1.2" - babel-helper-is-nodes-equiv "^0.0.1" - babel-helper-to-multiple-sequence-expressions "^0.1.1" - -babel-plugin-minify-type-constructors@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.1.2.tgz" - integrity sha512-PS+pYQuw+yDZjLhWhZy8PBlsxEw607m5T066Twa2DnkOUh0O4Eioq5S21/4RSf11fDZM02FHdBs093QIQCvEZg== - dependencies: - babel-helper-is-void-0 "^0.1.1" - -babel-plugin-transform-inline-consecutive-adds@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.1.2.tgz" - integrity sha512-+pAfdjieyTmsiGzoAyaicdYuk9lApfWaNWFxapfO3JVsrDWl2mtM+uHNZPA0DrZPdqagzjwitqzmzPUMyrRXmg== - -babel-plugin-transform-member-expression-literals@^6.8.4: - version "6.9.4" - resolved "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.4.tgz" - integrity sha512-Xq9/Rarpj+bjOZSl1nBbZYETsNEDDJSrb6Plb1sS3/36FukWFLLRysgecva5KZECjUJTrJoQqjJgtWToaflk5Q== - -babel-plugin-transform-merge-sibling-variables@^6.8.5: - version "6.9.5" - resolved "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.5.tgz" - integrity sha512-xj/KrWi6/uP+DrD844h66Qh2cZN++iugEIgH8QcIxhmZZPNP6VpOE9b4gP2FFW39xDAY43kCmYMM6U0QNKN8fw== - -babel-plugin-transform-minify-booleans@^6.8.2: - version "6.9.4" - resolved "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.4.tgz" - integrity sha512-9pW9ePng6DZpzGPalcrULuhSCcauGAbn8AeU3bE34HcDkGm8Ldt0ysjGkyb64f0K3T5ilV4mriayOVv5fg0ASA== - -babel-plugin-transform-property-literals@^6.8.4: - version "6.9.4" - resolved "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.4.tgz" - integrity sha512-Pf8JHTjTPxecqVyL6KSwD/hxGpoTZjiEgV7nCx0KFQsJYM0nuuoCajbg09KRmZWeZbJ5NGTySABYv8b/hY1eEA== - dependencies: - esutils "^2.0.2" - -babel-plugin-transform-regexp-constructors@^0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.1.1.tgz" - integrity sha512-H9uY55PHqO78HwiKaVp3Z4KgKukfug2cdM5AkNXVna1D/vnhxjMprCtajUfBngSyLt3WfO67XUnSTCV7qu8rug== - -babel-plugin-transform-remove-console@^6.8.4: - version "6.9.4" - resolved "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.4.tgz" - integrity sha512-88blrUrMX3SPiGkT1GnvVY8E/7A+k6oj3MNvUtTIxJflFzXTw1bHkuJ/y039ouhFMp2prRn5cQGzokViYi1dsg== - -babel-plugin-transform-remove-debugger@^6.8.4: - version "6.9.4" - resolved "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.4.tgz" - integrity sha512-Kd+eTBYlXfwoFzisburVwrngsrz4xh9I0ppoJnU/qlLysxVBRgI4Pj+dk3X8F5tDiehp3hhP8oarRMT9v2Z3lw== - -babel-plugin-transform-remove-undefined@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.1.2.tgz" - integrity sha512-MOpvj4WxMuM7NvnE5ZWQoxWddVpadCpuhg+3W3gAcuEcLjuhymIqZzMkkUMeCRNUPt4Y7FWbW8pACyxNCKE1nw== - -babel-plugin-transform-simplify-comparison-operators@^6.8.4: - version "6.9.4" - resolved "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.4.tgz" - integrity sha512-GLInxhGAQWJ9YIdjwF6dAFlmh4U+kN8pL6Big7nkDzHoZcaDQOtBm28atEhQJq6m9GpAovbiGEShKqXv4BSp0A== - -babel-plugin-transform-undefined-to-void@^6.8.2: - version "6.9.4" - resolved "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.4.tgz" - integrity sha512-D2UbwxawEY1xVc9svYAUZQM2xarwSNXue2qDIx6CeV2EuMGaes/0su78zlIDIAgE7BvnMw4UpmSo9fDy+znghg== - -babel-preset-babili@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/babel-preset-babili/-/babel-preset-babili-0.1.4.tgz" - integrity sha512-WHGo9Vdv3t/qwUzk6L2jKaQrTlwnN4ftrOANspsFAA55LvcldF4bzCVMhJ7DaCyZzJb93sA2e/roC7rUzSK93A== - dependencies: - babel-plugin-minify-builtins "^0.1.3" - babel-plugin-minify-constant-folding "^0.1.3" - babel-plugin-minify-dead-code-elimination "^0.1.7" - babel-plugin-minify-flip-comparisons "^0.1.2" - babel-plugin-minify-guarded-expressions "^0.1.2" - babel-plugin-minify-infinity "^0.1.2" - babel-plugin-minify-mangle-names "^0.1.3" - babel-plugin-minify-numeric-literals "^0.1.1" - babel-plugin-minify-replace "^0.1.2" - babel-plugin-minify-simplify "^0.1.2" - babel-plugin-minify-type-constructors "^0.1.2" - babel-plugin-transform-inline-consecutive-adds "^0.1.2" - babel-plugin-transform-member-expression-literals "^6.8.4" - babel-plugin-transform-merge-sibling-variables "^6.8.5" - babel-plugin-transform-minify-booleans "^6.8.2" - babel-plugin-transform-property-literals "^6.8.4" - babel-plugin-transform-regexp-constructors "^0.1.1" - babel-plugin-transform-remove-console "^6.8.4" - babel-plugin-transform-remove-debugger "^6.8.4" - babel-plugin-transform-remove-undefined "^0.1.2" - babel-plugin-transform-simplify-comparison-operators "^6.8.4" - babel-plugin-transform-undefined-to-void "^6.8.2" - lodash.isplainobject "^4.0.6" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz" - integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz" - integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz" - integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== - dependencies: - 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@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz" - integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== - dependencies: - 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@^6.26.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz" - integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babili-webpack-plugin@0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/babili-webpack-plugin/-/babili-webpack-plugin-0.1.2.tgz" - integrity sha512-CPPfzBU2NlaZVxI45ubwfFhzczEBUSwX7+2lvCR6G2VpLUJKxTumtA8GFHwic4kBgrLmzB3jPWSiC557Hlro7A== - dependencies: - babel-core "^6.24.1" - babel-preset-babili "^0.1.4" - webpack-sources "^1.0.1" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" @@ -830,6 +531,15 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + co@^4.6.0: version "4.6.0" resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" @@ -857,6 +567,11 @@ color-name@^1.1.1: version "1.1.3" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" +colorette@^2.0.14: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + commander@0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz" @@ -865,6 +580,11 @@ commander@2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz" +commander@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" @@ -892,23 +612,11 @@ constants-browserify@^1.0.0: resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== -convert-source-map@^1.5.1: - version "1.8.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.12" - resolved "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" @@ -952,6 +660,15 @@ cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" @@ -983,7 +700,7 @@ debug@2.2.0, debug@^2.2.0: dependencies: ms "0.7.1" -debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@^2.3.3: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1058,13 +775,6 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz" - integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== - dependencies: - repeating "^2.0.0" - diff@1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz" @@ -1117,6 +827,11 @@ enhanced-resolve@^3.3.0: object-assign "^4.0.1" tapable "^0.2.7" +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + errno@^0.1.3: version "0.1.8" resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz" @@ -1408,6 +1123,11 @@ fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + figures@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz" @@ -1451,6 +1171,14 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + flat-cache@^1.2.1: version "1.3.0" resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz" @@ -1549,11 +1277,6 @@ globals@^11.0.1: version "11.3.0" resolved "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - globby@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz" @@ -1652,14 +1375,6 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz" - integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" @@ -1683,6 +1398,14 @@ ignore@^3.3.3: version "3.3.7" resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz" +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" @@ -1732,12 +1455,10 @@ interpret@^1.0.0: resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== invert-kv@^1.0.0: version "1.0.0" @@ -1838,11 +1559,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" @@ -1952,7 +1668,7 @@ jest-docblock@^21.0.0: version "21.2.0" resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz" -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^3.0.2: +js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" @@ -1963,11 +1679,6 @@ js-yaml@^3.9.1: argparse "^1.0.7" esprima "^4.0.0" -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz" - integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== - json-loader@^0.5.4: version "0.5.7" resolved "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz" @@ -2068,15 +1779,12 @@ loader-utils@^1.1.0: emojis-list "^3.0.0" json5 "^1.0.1" -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" - integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== - -lodash.some@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz" - integrity sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ== +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" lodash@^4.17.14, lodash@^4.17.4, lodash@^4.3.0: version "4.17.21" @@ -2088,13 +1796,6 @@ longest@^1.0.1: resolved "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" integrity sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg== -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - lru-cache@2: version "2.7.3" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz" @@ -2391,11 +2092,6 @@ os-browserify@^0.3.0: resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - os-locale@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" @@ -2403,10 +2099,29 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + pako@~1.0.5: version "1.0.11" resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" @@ -2452,7 +2167,12 @@ path-exists@^2.0.0: dependencies: pinkie-promise "^2.0.0" -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" @@ -2460,6 +2180,11 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" @@ -2504,6 +2229,13 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + pluralize@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz" @@ -2521,11 +2253,6 @@ prettier@^1.10.2: version "1.10.2" resolved "https://registry.npmjs.org/prettier/-/prettier-1.10.2.tgz" -private@^0.1.8: - version "0.1.8" - resolved "https://registry.npmjs.org/private/-/private-0.1.8.tgz" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz" @@ -2650,10 +2377,12 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== +rechoir@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== + dependencies: + resolve "^1.9.0" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -2678,13 +2407,6 @@ repeat-string@^1.5.2, repeat-string@^1.6.1: resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" - integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== - dependencies: - is-finite "^1.0.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" @@ -2702,16 +2424,28 @@ require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz" +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve@^1.10.0: +resolve@^1.10.0, resolve@^1.9.0: version "1.22.1" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -2822,16 +2556,35 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + sigmund@~1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" @@ -2840,11 +2593,6 @@ signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" - integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== - slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz" @@ -2897,19 +2645,12 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - source-map-url@^0.4.0: version "0.4.1" resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: +source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: version "0.5.7" resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== @@ -3098,11 +2839,6 @@ to-arraybuffer@^1.0.0: resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" - integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== - to-iso-string@0.0.2: version "0.0.2" resolved "https://registry.npmjs.org/to-iso-string/-/to-iso-string-0.0.2.tgz" @@ -3139,11 +2875,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" - integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== - tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" @@ -3287,6 +3018,32 @@ watchpack@^1.3.1: chokidar "^3.4.1" watchpack-chokidar2 "^2.0.1" +webpack-cli@^4.10.0: + version "4.10.0" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" + integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^1.2.0" + "@webpack-cli/info" "^1.5.0" + "@webpack-cli/serve" "^1.7.0" + colorette "^2.0.14" + commander "^7.0.0" + cross-spawn "^7.0.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^2.2.0" + rechoir "^0.7.0" + webpack-merge "^5.7.3" + +webpack-merge@^5.7.3: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + webpack-sources@^1.0.1: version "1.4.3" resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" @@ -3334,6 +3091,18 @@ which@^1.2.9: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + window-size@0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz"