diff --git a/package.json b/package.json index 94dd81d8d..202fd20c3 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "istanbul": "^0.4.5", "jade": "^1.11.0", "jade-loader": "~0.8.0", + "jest": "^22.1.4", "js-beautify": "^1.5.10", "json-loader": "^0.5.7", "less": "^2.5.1", @@ -86,9 +87,9 @@ "schemas/" ], "scripts": { - "test": "mocha test/*.test.js test/*.unittest.js --max-old-space-size=4096 --harmony --trace-deprecation", - "test:integration": "mocha test/*.test.js --max-old-space-size=4096 --harmony --trace-deprecation", - "test:unit": "mocha test/*.unittest.js --max-old-space-size=4096 --harmony --trace-deprecation", + "test": "jest", + "test:integration": "jest --testMatch '/test/*.test.js'", + "test:unit": "jest --testMatch '/test/*.unittest.js'", "travis:integration": "npm run cover:init && npm run cover:integration && npm run cover:report-min", "travis:unit": "npm run cover:init && npm run cover:unit && npm run cover:report-min", "travis:lint": "npm run lint-files", @@ -114,5 +115,8 @@ "cover:report": "istanbul report", "cover:report-min": "istanbul report --report lcovonly", "publish-patch": "npm run lint && npm run beautify-lint && mocha && npm version patch && git push && git push --tags && npm publish" + }, + "jest": { + "testEnvironment": "node" } } diff --git a/test/CachePlugin.unittest.js b/test/CachePlugin.unittest.js index b8ce6e9a9..587c4a27f 100644 --- a/test/CachePlugin.unittest.js +++ b/test/CachePlugin.unittest.js @@ -1,6 +1,5 @@ "use strict"; -require("should"); const CachePlugin = require("../lib/CachePlugin"); describe("CachePlugin", () => { @@ -16,26 +15,28 @@ describe("CachePlugin", () => { }); describe("applyMtime", () => { - beforeEach(() => env.plugin = new CachePlugin()); + beforeEach(() => { + env.plugin = new CachePlugin(); + }); it("sets file system accuracy to 1 for granular modification timestamp", () => { env.plugin.applyMtime(1483819067001); - env.plugin.FS_ACCURENCY.should.be.exactly(1); + expect(env.plugin.FS_ACCURENCY).toBe(1); }); it("sets file system accuracy to 10 for moderately granular modification timestamp", () => { env.plugin.applyMtime(1483819067004); - env.plugin.FS_ACCURENCY.should.be.exactly(10); + expect(env.plugin.FS_ACCURENCY).toBe(10); }); it("sets file system accuracy to 100 for moderately coarse modification timestamp", () => { env.plugin.applyMtime(1483819067040); - env.plugin.FS_ACCURENCY.should.be.exactly(100); + expect(env.plugin.FS_ACCURENCY).toBe(100); }); it("sets file system accuracy to 1000 for coarse modification timestamp", () => { env.plugin.applyMtime(1483819067400); - env.plugin.FS_ACCURENCY.should.be.exactly(1000); + expect(env.plugin.FS_ACCURENCY).toBe(1000); }); }); }); diff --git a/test/CaseSensitiveModulesWarning.unittest.js b/test/CaseSensitiveModulesWarning.unittest.js index ab0690941..bd42c711a 100644 --- a/test/CaseSensitiveModulesWarning.unittest.js +++ b/test/CaseSensitiveModulesWarning.unittest.js @@ -1,9 +1,8 @@ "use strict"; -require("should"); const CaseSensitiveModulesWarning = require("../lib/CaseSensitiveModulesWarning"); -const createModule = function(identifier, numberOfReasons) { +const createModule = (identifier, numberOfReasons) => { const reasons = new Array(numberOfReasons || 0).fill(null).map((value, index) => { return { module: createModule(`${identifier}-reason-${index}`) @@ -29,10 +28,12 @@ describe("CaseSensitiveModulesWarning", () => { myCaseSensitiveModulesWarning = new CaseSensitiveModulesWarning(modules); }); - it("has the a name", () => myCaseSensitiveModulesWarning.name.should.be.exactly("CaseSensitiveModulesWarning")); + it("has the a name", () => { + expect(myCaseSensitiveModulesWarning.name).toBe("CaseSensitiveModulesWarning"); + }); it("has the a message", () => { - myCaseSensitiveModulesWarning.message.should.be.exactly(` + expect(myCaseSensitiveModulesWarning.message).toBe(` There are multiple modules with names that only differ in casing. This can lead to unexpected behavior when compiling on a filesystem with other case-semantic. Use equal casing. Compare these module identifiers: @@ -46,9 +47,11 @@ Use equal casing. Compare these module identifiers: `.trim()); }); - it("has the an origin", () => - myCaseSensitiveModulesWarning.origin.should.be.exactly(modules[0])); + it("has the an origin", () => { + expect(myCaseSensitiveModulesWarning.origin).toBe(modules[0]); + }); - it("has the a module", () => - myCaseSensitiveModulesWarning.module.should.be.exactly(modules[0])); + it("has the a module", () => { + expect(myCaseSensitiveModulesWarning.module).toBe(modules[0]); + }); }); diff --git a/test/Chunk.unittest.js b/test/Chunk.unittest.js index 317ec5973..f61a92653 100644 --- a/test/Chunk.unittest.js +++ b/test/Chunk.unittest.js @@ -1,99 +1,114 @@ /* globals describe, it, beforeEach */ "use strict"; -const should = require("should"); const sinon = require("sinon"); const Chunk = require("../lib/Chunk"); describe("Chunk", () => { let ChunkInstance; - beforeEach(() => ChunkInstance = new Chunk("chunk-test", "module-test", "loc-test")); + beforeEach(() => { + ChunkInstance = new Chunk("chunk-test", "module-test", "loc-test"); + }); - it("should have debugId more than 999", () => should(ChunkInstance.debugId).be.above(999)); + it("should have debugId more than 999", () => { + expect(ChunkInstance.debugId).toBeGreaterThan(999); + }); - it("returns a string with modules information", () => should(ChunkInstance.toString()).be.exactly("Chunk[]")); + it("returns a string with modules information", () => { + expect(ChunkInstance.toString()).toBe("Chunk[]"); + }); - it("should not be the initial instance", () => should(ChunkInstance.canBeInitial()).be.false()); + it("should not be the initial instance", () => { + expect(ChunkInstance.canBeInitial()).toBe(false); + }); describe("entry", () => { - it("returns an error if get entry", () => - should(() => { + it("returns an error if get entry", () => { + expect(() => { ChunkInstance.entry; - }).throw("Chunk.entry was removed. Use hasRuntime()")); + }).toThrow("Chunk.entry was removed. Use hasRuntime()"); + }); - it("returns an error if set an entry", () => - should(() => { + it("returns an error if set an entry", () => { + expect(() => { ChunkInstance.entry = 10; - }).throw("Chunk.entry was removed. Use hasRuntime()")); + }).toThrow("Chunk.entry was removed. Use hasRuntime()"); + }); }); describe("initial", () => { - it("returns an error if get initial", () => - should(() => { + it("returns an error if get initial", () => { + expect(() => { ChunkInstance.initial; - }).throw("Chunk.initial was removed. Use canBeInitial/isOnlyInitial()")); + }).toThrow("Chunk.initial was removed. Use canBeInitial/isOnlyInitial()"); + }); - it("returns an error if set an initial", () => - should(() => { + it("returns an error if set an initial", () => { + expect(() => { ChunkInstance.initial = 10; - }).throw("Chunk.initial was removed. Use canBeInitial/isOnlyInitial()")); + }).toThrow("Chunk.initial was removed. Use canBeInitial/isOnlyInitial()"); + }); }); describe("hasRuntime", () => { - it("returns false", () => should(ChunkInstance.hasRuntime()).be.false()); + it("returns false", () => { + expect(ChunkInstance.hasRuntime()).toBe(false); + }); }); describe("isEmpty", () => { - it("should NOT have any module by default", () => should(ChunkInstance.isEmpty()).be.true()); + it("should NOT have any module by default", () => { + expect(ChunkInstance.isEmpty()).toBe(true); + }); }); describe("size", () => { - it("should NOT have any module by default", () => - should(ChunkInstance.size({ + it("should NOT have any module by default", () => { + expect(ChunkInstance.size({ chunkOverhead: 10, entryChunkMultiplicator: 2 - })).be.exactly(10)); + })).toBe(10); + }); }); - describe("removeModule", function() { + describe("removeModule", () => { let module; let removeChunkSpy; - beforeEach(function() { + beforeEach(() => { removeChunkSpy = sinon.spy(); - module = { removeChunk: removeChunkSpy }; }); - describe("and the chunk does not contain this module", function() { - it("returns false", function() { - ChunkInstance.removeModule(module).should.eql(false); + describe("and the chunk does not contain this module", () => { + it("returns false", () => { + expect(ChunkInstance.removeModule(module)).toBe(false); }); }); - describe("and the chunk does contain this module", function() { - beforeEach(function() { + describe("and the chunk does contain this module", () => { + beforeEach(() => { ChunkInstance._modules = new Set([module]); }); - it("calls module.removeChunk with itself and returns true", function() { - ChunkInstance.removeModule(module).should.eql(true); + it("calls module.removeChunk with itself and returns true", () => { + expect(ChunkInstance.removeModule(module)).toBe(true); - removeChunkSpy.callCount.should.eql(1); - removeChunkSpy.args[0][0].should.eql(ChunkInstance); + expect(removeChunkSpy.callCount).toBe(1); + expect(removeChunkSpy.args[0][0]).toBe(ChunkInstance); }); }); - describe("getNumberOfGroups", function() { - beforeEach(function() { + describe("getNumberOfGroups", () => { + beforeEach(() => { ChunkInstance._groups = new Set(); }); - it("should return the number of chunk groups contained by the chunk", function() { - ChunkInstance.getNumberOfGroups().should.eql(0); + it("should return the number of chunk groups contained by the chunk", () => { + expect(ChunkInstance.getNumberOfGroups()).toBe(0); }); }); }); diff --git a/test/ContextModuleFactory.unittest.js b/test/ContextModuleFactory.unittest.js index 6df1f20dd..64ba8da87 100644 --- a/test/ContextModuleFactory.unittest.js +++ b/test/ContextModuleFactory.unittest.js @@ -1,17 +1,17 @@ /* globals describe, it, beforeEach */ "use strict"; -require("should"); + const MemoryFs = require("memory-fs"); const ContextModuleFactory = require("../lib/ContextModuleFactory"); -describe("ContextModuleFactory", function() { - describe("resolveDependencies", function() { +describe("ContextModuleFactory", () => { + describe("resolveDependencies", () => { let factory, memfs; - beforeEach(function() { + beforeEach(() => { factory = new ContextModuleFactory([]); memfs = new MemoryFs(); }); - it("should not report an error when ENOENT errors happen", function(done) { + it("should not report an error when ENOENT errors happen", (done) => { memfs.readdir = (dir, callback) => { setTimeout(() => callback(null, ["/file"])); }; @@ -25,13 +25,13 @@ describe("ContextModuleFactory", function() { recursive: true, regExp: /.*/ }, (err, res) => { - (!!err).should.be.false(); - res.should.be.an.Array(); - res.length.should.be.exactly(0); + expect(err).toBeFalsy(); + expect(Array.isArray(res)).toBe(true); + expect(res.length).toBe(0); done(); }); }); - it("should report an error when non-ENOENT errors happen", function(done) { + it("should report an error when non-ENOENT errors happen", (done) => { memfs.readdir = (dir, callback) => { setTimeout(() => callback(null, ["/file"])); }; @@ -45,8 +45,8 @@ describe("ContextModuleFactory", function() { recursive: true, regExp: /.*/ }, (err, res) => { - err.should.be.an.Error(); - (!!res).should.be.false(); + expect(err).toBeInstanceOf(Error); + expect(res).toBeFalsy(); done(); }); }); diff --git a/test/DelegatedModule.unittest.js b/test/DelegatedModule.unittest.js index 6b6930a4c..226143785 100644 --- a/test/DelegatedModule.unittest.js +++ b/test/DelegatedModule.unittest.js @@ -1,10 +1,10 @@ /* globals describe, it, beforeEach */ "use strict"; -require("should"); + const DelegatedModule = require("../lib/DelegatedModule"); -describe("DelegatedModule", function() { - describe("#updateHash", function() { +describe("DelegatedModule", () => { + describe("#updateHash", () => { const sourceRequest = "dll-reference dll_e54c0fb67f8152792ad2"; const data = { id: "/xg9" @@ -13,7 +13,7 @@ describe("DelegatedModule", function() { const userRequest = "./library.js"; let hashedText; let hash; - beforeEach(function() { + beforeEach(() => { hashedText = ""; hash = { update: (text) => { @@ -23,11 +23,11 @@ describe("DelegatedModule", function() { const delegatedModule = new DelegatedModule(sourceRequest, data, type, userRequest); delegatedModule.updateHash(hash); }); - it("updates hash with delegated module ID", function() { - hashedText.should.containEql("/xg9"); + it("updates hash with delegated module ID", () => { + expect(hashedText).toMatch("/xg9"); }); - it("updates hash with delegation type", function() { - hashedText.should.containEql("require"); + it("updates hash with delegation type", () => { + expect(hashedText).toMatch("require"); }); }); }); diff --git a/test/DependenciesBlockVariable.unittest.js b/test/DependenciesBlockVariable.unittest.js index 43d19cd1e..06ac0cfc3 100644 --- a/test/DependenciesBlockVariable.unittest.js +++ b/test/DependenciesBlockVariable.unittest.js @@ -1,68 +1,62 @@ "use strict"; -const should = require("should"); const sinon = require("sinon"); const DependenciesBlockVariable = require("../lib/DependenciesBlockVariable"); describe("DependenciesBlockVariable", () => { - let DependenciesBlockVariableInstance, - dependencyMock, - sandbox; + const sandbox = sinon.sandbox.create(); + const dependencyMock = { + constructor: { + name: "DependencyMock" + }, + disconnect: sandbox.spy(), + updateHash: sandbox.spy() + }; + const DependenciesBlockVariableInstance = new DependenciesBlockVariable("dependencies-name", "expression", [dependencyMock]); - before(() => { - sandbox = sinon.sandbox.create(); - dependencyMock = { - constructor: { - name: "DependencyMock" - }, - disconnect: sandbox.spy(), - updateHash: sandbox.spy() - }; - DependenciesBlockVariableInstance = new DependenciesBlockVariable( - "dependencies-name", - "expression", [dependencyMock]); + afterEach(() => { + sandbox.restore(); }); - afterEach(() => sandbox.restore()); + describe("hasDependencies", () => { + it("returns `true` if has dependencies", () => { + expect(DependenciesBlockVariableInstance.hasDependencies()).toBe(true); + }); + }); - describe("hasDependencies", () => - it("returns `true` if has dependencies", () => - should(DependenciesBlockVariableInstance.hasDependencies()).be.true())); - - describe("disconnect", () => + describe("disconnect", () => { it("trigger dependencies disconnection", () => { DependenciesBlockVariableInstance.disconnect(); - should(dependencyMock.disconnect.calledOnce).be.true(); - })); + expect(dependencyMock.disconnect.calledOnce).toBe(true); + }); + }); describe("updateHash", () => { - let hash; - before(() => { - hash = { - update: sandbox.spy() - }; - DependenciesBlockVariableInstance.updateHash(hash); + const hash = { + update: sandbox.spy() + }; + + DependenciesBlockVariableInstance.updateHash(hash); + + it("should update hash dependencies with name", () => { + expect(hash.update.calledWith("dependencies-name")).toBe(true); }); - it("should update hash dependencies with name", () => - should(hash.update.calledWith("dependencies-name")).be.true()); + it("should update hash dependencies with expression", () => { + expect(hash.update.calledWith("expression")).toBe(true); + }); - it("should update hash dependencies with expression", () => - should(hash.update.calledWith("expression")).be.true()); - - it("should update hash inside dependencies", () => - should(dependencyMock.updateHash.calledOnce).be.true()); + it("should update hash inside dependencies", () => { + expect(dependencyMock.updateHash.calledOnce).toBe(true); + }); }); describe("expressionSource", () => { - let dependencyTemplates, - applyMock; - - before(() => applyMock = sandbox.spy()); + const applyMock = sandbox.spy(); it("aplies information inside dependency templates", () => { - dependencyTemplates = { - get: function() { + const dependencyTemplates = { + get() { return { apply: applyMock }; @@ -71,20 +65,20 @@ describe("DependenciesBlockVariable", () => { DependenciesBlockVariableInstance.expressionSource( dependencyTemplates, {}, {} ); - should(applyMock.calledOnce).be.true(); + expect(applyMock.calledOnce).toBe(true); }); it("aplies information inside dependency templates", () => { - dependencyTemplates = { - get: function() { + const dependencyTemplates = { + get() { return false; } }; - should(() => { + expect(() => { DependenciesBlockVariableInstance.expressionSource( dependencyTemplates, {}, {} ); - }).throw("No template for dependency: DependencyMock"); + }).toThrow("No template for dependency: DependencyMock"); }); }); }); diff --git a/test/ExternalModule.unittest.js b/test/ExternalModule.unittest.js index 6b86152b6..a193d9842 100644 --- a/test/ExternalModule.unittest.js +++ b/test/ExternalModule.unittest.js @@ -1,16 +1,16 @@ /* globals describe, it, beforeEach */ "use strict"; -require("should"); + const sinon = require("sinon"); const ExternalModule = require("../lib/ExternalModule"); const OriginalSource = require("webpack-sources").OriginalSource; const RawSource = require("webpack-sources").RawSource; -describe("ExternalModule", function() { +describe("ExternalModule", () => { let externalModule; let request; let type; - beforeEach(function() { + beforeEach(() => { request = "some/request"; type = "some-type"; externalModule = new ExternalModule( @@ -19,34 +19,34 @@ describe("ExternalModule", function() { `${type} ${request}` ); }); - describe("#identifier", function() { - it("returns an identifier for this module", function() { + describe("#identifier", () => { + it("returns an identifier for this module", () => { const expected = `external "${request}"`; - externalModule.identifier().should.eql(expected); + expect(externalModule.identifier()).toBe(expected); }); }); - describe("#readableIdentifier", function() { - it("returns an identifier for this module", function() { + describe("#readableIdentifier", () => { + it("returns an identifier for this module", () => { const expected = `external "${request}"`; - externalModule.identifier().should.eql(expected); + expect(externalModule.identifier()).toBe(expected); }); }); - describe("#needRebuild", function() { - it("always returns false", function() { - externalModule.needRebuild().should.eql(false); + describe("#needRebuild", () => { + it("always returns false", () => { + expect(externalModule.needRebuild()).toBe(false); }); }); - describe("#size", function() { - it("always returns 42", function() { - externalModule.size().should.eql(42); + describe("#size", () => { + it("always returns 42", () => { + expect(externalModule.size()).toBe(42); }); }); - describe("#source", function() { - it("calls getSource with the result of getSourceString", function() { + describe("#source", () => { + it("calls getSource with the result of getSourceString", () => { // set up const expectedString = "something expected stringy"; const expectedSource = "something expected sourcy"; @@ -57,19 +57,19 @@ describe("ExternalModule", function() { const result = externalModule.source(); // check - externalModule.getSource.callCount.should.eql(1); - externalModule.getSourceString.callCount.should.eql(1); - externalModule.getSource.args[0][0].should.eql(expectedString); - result.should.eql(expectedSource); + expect(externalModule.getSource.callCount).toBe(1); + expect(externalModule.getSourceString.callCount).toBe(1); + expect(externalModule.getSource.args[0][0]).toBe(expectedString); + expect(result).toBe(expectedSource); }); }); - describe("#getSource", function() { - describe("given it should use source maps", function() { - beforeEach(function() { + describe("#getSource", () => { + describe("given it should use source maps", () => { + beforeEach(() => { externalModule.useSourceMap = true; }); - it("returns an instance of OriginalSource", function() { + it("returns an instance of OriginalSource", () => { // set up const someSourceString = "some source string"; @@ -77,14 +77,14 @@ describe("ExternalModule", function() { const result = externalModule.getSource(someSourceString); // check - result.should.be.instanceOf(OriginalSource); + expect(result).toBeInstanceOf(OriginalSource); }); }); - describe("given it does not use source maps", function() { - beforeEach(function() { + describe("given it does not use source maps", () => { + beforeEach(() => { externalModule.useSourceMap = false; }); - it("returns an instance of RawSource", function() { + it("returns an instance of RawSource", () => { // set up const someSourceString = "some source string"; @@ -92,14 +92,14 @@ describe("ExternalModule", function() { const result = externalModule.getSource(someSourceString); // check - result.should.be.instanceOf(RawSource); + expect(result).toBeInstanceOf(RawSource); }); }); }); - describe("#getSourceForGlobalVariableExternal", function() { - describe("given an array as variable name in the global namespace", function() { - it("use the array as lookup in the global object", function() { + describe("#getSourceForGlobalVariableExternal", () => { + describe("given an array as variable name in the global namespace", () => { + it("use the array as lookup in the global object", () => { // set up const type = "window"; const varName = ["foo", "bar"]; @@ -109,11 +109,11 @@ describe("ExternalModule", function() { const result = externalModule.getSourceForGlobalVariableExternal(varName, type); // check - result.should.eql(expected); + expect(result).toBe(expected); }); }); - describe("given an single variable name", function() { - it("look it up in the global namespace", function() { + describe("given an single variable name", () => { + it("look it up in the global namespace", () => { // set up const type = "window"; const varName = "foo"; @@ -123,14 +123,14 @@ describe("ExternalModule", function() { const result = externalModule.getSourceForGlobalVariableExternal(varName, type); // check - result.should.eql(expected); + expect(result).toBe(expected); }); }); }); - describe("#getSourceForCommonJsExternal", function() { - describe("given an array as names in the global namespace", function() { - it("use the first to require a module and the rest as lookup on the required module", function() { + describe("#getSourceForCommonJsExternal", () => { + describe("given an array as names in the global namespace", () => { + it("use the first to require a module and the rest as lookup on the required module", () => { // set up const varName = ["module", "look", "up"]; const expected = "module.exports = require(module)[\"look\"][\"up\"];"; @@ -139,11 +139,11 @@ describe("ExternalModule", function() { const result = externalModule.getSourceForCommonJsExternal(varName, type); // check - result.should.eql(expected); + expect(result).toBe(expected); }); }); - describe("given an single variable name", function() { - it("require a module with that name", function() { + describe("given an single variable name", () => { + it("require a module with that name", () => { // set up const type = "window"; const varName = "foo"; @@ -153,13 +153,13 @@ describe("ExternalModule", function() { const result = externalModule.getSourceForCommonJsExternal(varName, type); // check - result.should.eql(expected); + expect(result).toBe(expected); }); }); }); - describe("#checkExternalVariable", function() { - it("creates a check that fails if a variable does not exist", function() { + describe("#checkExternalVariable", () => { + it("creates a check that fails if a variable does not exist", () => { // set up const variableToCheck = "foo"; const request = "bar"; @@ -170,12 +170,12 @@ describe("ExternalModule", function() { const result = externalModule.checkExternalVariable(variableToCheck, request); // check - result.should.eql(expected); + expect(result).toBe(expected); }); }); - describe("#getSourceForAmdOrUmdExternal", function() { - it("looks up a global variable as specified by the id", function() { + describe("#getSourceForAmdOrUmdExternal", () => { + it("looks up a global variable as specified by the id", () => { // set up const id = "someId"; const optional = false; @@ -185,10 +185,10 @@ describe("ExternalModule", function() { const result = externalModule.getSourceForAmdOrUmdExternal(id, optional, request); // check - result.should.eql(expected); + expect(result).toBe(expected); }); - describe("given an optinal check is set", function() { - it("ads a check for the existance of the variable before looking it up", function() { + describe("given an optinal check is set", () => { + it("ads a check for the existance of the variable before looking it up", () => { // set up const id = "someId"; const optional = true; @@ -199,13 +199,13 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_someId__;`; const result = externalModule.getSourceForAmdOrUmdExternal(id, optional, request); // check - result.should.eql(expected); + expect(result).toBe(expected); }); }); }); - describe("#getSourceForDefaultCase", function() { - it("returns the given request as lookup", function() { + describe("#getSourceForDefaultCase", () => { + it("returns the given request as lookup", () => { // set up const optional = false; const expected = "module.exports = some/request;"; @@ -214,10 +214,10 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_someId__;`; const result = externalModule.getSourceForDefaultCase(optional, request); // check - result.should.eql(expected); + expect(result).toBe(expected); }); - describe("given an optinal check is requested", function() { - it("checks for the existance of the request setting it", function() { + describe("given an optinal check is requested", () => { + it("checks for the existance of the request setting it", () => { // set up const optional = true; const expected = `if(typeof some/request === 'undefined') {var e = new Error("Cannot find module \\"some/request\\""); e.code = 'MODULE_NOT_FOUND'; throw e;} @@ -227,15 +227,15 @@ module.exports = some/request;`; const result = externalModule.getSourceForDefaultCase(optional, request); // check - result.should.eql(expected); + expect(result).toBe(expected); }); }); }); - describe("#updateHash", function() { + describe("#updateHash", () => { let hashedText; let hash; - beforeEach(function() { + beforeEach(() => { hashedText = ""; hash = { update: (text) => { @@ -245,21 +245,21 @@ module.exports = some/request;`; externalModule.id = 12345678; externalModule.updateHash(hash); }); - it("updates hash with request", function() { - hashedText.should.containEql("some/request"); + it("updates hash with request", () => { + expect(hashedText).toMatch("some/request"); }); - it("updates hash with type", function() { - hashedText.should.containEql("some-type"); + it("updates hash with type", () => { + expect(hashedText).toMatch("some-type"); }); - it("updates hash with module id", function() { - hashedText.should.containEql("12345678"); + it("updates hash with module id", () => { + expect(hashedText).toMatch("12345678"); }); }); - describe("#updateHash without optional", function() { + describe("#updateHash without optional", () => { let hashedText; let hash; - beforeEach(function() { + beforeEach(() => { hashedText = ""; hash = { update: (text) => { @@ -270,17 +270,17 @@ module.exports = some/request;`; externalModule.id = 12345678; externalModule.updateHash(hash); }); - it("updates hash with request", function() { - hashedText.should.containEql("some/request"); + it("updates hash with request", () => { + expect(hashedText).toMatch("some/request"); }); - it("updates hash with type", function() { - hashedText.should.containEql("some-type"); + it("updates hash with type", () => { + expect(hashedText).toMatch("some-type"); }); - it("updates hash with optional flag", function() { - hashedText.should.containEql("false"); + it("updates hash with optional flag", () => { + expect(hashedText).toMatch("false"); }); - it("updates hash with module id", function() { - hashedText.should.containEql("12345678"); + it("updates hash with module id", () => { + expect(hashedText).toMatch("12345678"); }); }); }); diff --git a/test/HarmonyExportImportedSpecifierDependency.unittest.js b/test/HarmonyExportImportedSpecifierDependency.unittest.js index e9d6e33c9..c74c76751 100644 --- a/test/HarmonyExportImportedSpecifierDependency.unittest.js +++ b/test/HarmonyExportImportedSpecifierDependency.unittest.js @@ -1,15 +1,14 @@ /* globals describe, it, beforeEach */ "use strict"; -const should = require("should"); const HarmonyExportImportedSpecifierDependency = require("../lib/dependencies/HarmonyExportImportedSpecifierDependency"); describe("HarmonyExportImportedSpecifierDependency", () => { describe("getHashValue", () => { it("should return empty string on missing module", () => { // see e.g. PR #4368 var instance = new HarmonyExportImportedSpecifierDependency(); - should(instance.getHashValue(undefined)).be.eql(""); - should(instance.getHashValue(null)).be.eql(""); + expect(instance.getHashValue(undefined)).toBe(""); + expect(instance.getHashValue(null)).toBe(""); }); }); }); diff --git a/test/LocalModulesHelpers.unittest.js b/test/LocalModulesHelpers.unittest.js index cd8a87372..f50e13dc1 100644 --- a/test/LocalModulesHelpers.unittest.js +++ b/test/LocalModulesHelpers.unittest.js @@ -1,24 +1,24 @@ /* globals describe, it */ "use strict"; -const should = require("should"); const LocalModulesHelpers = require("../lib/dependencies/LocalModulesHelpers"); describe("LocalModulesHelpers", () => { - describe("addLocalModule", () => { it("returns a module var without special characters", () => { const state = { module: "module_sample", localModules: ["first", "second"] }; - should(LocalModulesHelpers.addLocalModule(state, "local_module_sample")).be.an.instanceOf(Object).and.have.properties({ + const localModule = LocalModulesHelpers.addLocalModule(state, "local_module_sample"); + expect(localModule).toBeInstanceOf(Object); + expect(localModule).toMatchObject({ module: "module_sample", name: "local_module_sample", idx: 2, used: false }); - should(state.localModules.length).be.eql(3); + expect(state.localModules.length).toBe(3); }); }); @@ -32,7 +32,7 @@ describe("LocalModulesHelpers", () => { name: "second" }] }; - should(LocalModulesHelpers.getLocalModule(state, "local_module_sample")).be.eql(null); + expect(LocalModulesHelpers.getLocalModule(state, "local_module_sample")).toBe(null); }); it("returns local module informtion", () => { @@ -44,7 +44,7 @@ describe("LocalModulesHelpers", () => { name: "second" }] }; - should(LocalModulesHelpers.getLocalModule(state, "first")).be.eql({ + expect(LocalModulesHelpers.getLocalModule(state, "first")).toEqual({ name: "first" }); }); diff --git a/test/ModuleDependencyError.unittest.js b/test/ModuleDependencyError.unittest.js index a485469da..ae4a8e2ea 100644 --- a/test/ModuleDependencyError.unittest.js +++ b/test/ModuleDependencyError.unittest.js @@ -1,15 +1,14 @@ "use strict"; const path = require("path"); -require("should"); const ModuleDependencyError = require("../lib/ModuleDependencyError"); describe("ModuleDependencyError", () => { let env; - beforeEach(() => env = {}); - - it("is a function", () => ModuleDependencyError.should.be.a.Function()); + beforeEach(() => { + env = {}; + }); describe("when new error created", () => { beforeEach(() => { @@ -17,17 +16,28 @@ describe("ModuleDependencyError", () => { env.moduleDependencyError = new ModuleDependencyError("myModule", env.error, "Location"); }); - it("is an error", () => env.moduleDependencyError.should.be.an.Error()); + it("is an error", () => { + expect(env.moduleDependencyError).toBeInstanceOf(Error); + }); - it("has a name property", () => env.moduleDependencyError.name.should.be.exactly("ModuleDependencyError")); + it("has a name property", () => { + expect(env.moduleDependencyError.name).toBe("ModuleDependencyError"); + }); - it("has a message property", () => env.moduleDependencyError.message.should.be.exactly("Location Error Message")); + it("has a message property", () => { + expect(env.moduleDependencyError.message).toBe("Location Error Message"); + }); - it("has a details property", () => env.moduleDependencyError.details.should.containEql(path.join("test", "ModuleDependencyError.unittest.js:"))); + it("has a details property", () => { + expect(env.moduleDependencyError.details).toMatch(path.join("test", "ModuleDependencyError.unittest.js:")); + }); - it("has an origin property", () => env.moduleDependencyError.origin.should.be.exactly("myModule")); - - it("has an error property", () => env.moduleDependencyError.error.should.be.exactly(env.error)); + it("has an origin property", () => { + expect(env.moduleDependencyError.origin).toBe("myModule"); + }); + it("has an error property", () => { + expect(env.moduleDependencyError.error).toBe(env.error); + }); }); }); diff --git a/test/ModuleReason.unittest.js b/test/ModuleReason.unittest.js index 3e80c6ae2..56a6cc25c 100644 --- a/test/ModuleReason.unittest.js +++ b/test/ModuleReason.unittest.js @@ -4,7 +4,6 @@ const Module = require("../lib/Module"); const Chunk = require("../lib/Chunk"); const Dependency = require("../lib/Dependency"); const ModuleReason = require("../lib/ModuleReason"); -const should = require("should"); describe("ModuleReason", () => { let myModule; @@ -23,11 +22,13 @@ describe("ModuleReason", () => { }); describe("hasChunk", () => { - it("returns false when chunk is not present", () => should(myModuleReason.hasChunk(myChunk)).be.false()); + it("returns false when chunk is not present", () => { + expect(myModuleReason.hasChunk(myChunk)).toBe(false); + }); it("returns true when chunk is present", () => { myModuleReason.module.addChunk(myChunk); - should(myModuleReason.hasChunk(myChunk)).be.true(); + expect(myModuleReason.hasChunk(myChunk)).toBe(true); }); }); @@ -36,15 +37,15 @@ describe("ModuleReason", () => { myModuleReason.module.addChunk(myChunk); myModuleReason.rewriteChunks(myChunk, [myChunk2]); - should(myModuleReason.hasChunk(myChunk)).be.false(); - should(myModuleReason.hasChunk(myChunk2)).be.true(); + expect(myModuleReason.hasChunk(myChunk)).toBe(false); + expect(myModuleReason.hasChunk(myChunk2)).toBe(true); }); it("if old chunk is not present, new chunks are not added", () => { myModuleReason.rewriteChunks(myChunk, [myChunk2]); - should(myModuleReason.hasChunk(myChunk)).be.false(); - should(myModuleReason.hasChunk(myChunk2)).be.false(); + expect(myModuleReason.hasChunk(myChunk)).toBe(false); + expect(myModuleReason.hasChunk(myChunk2)).toBe(false); }); it("if already rewritten chunk is present, it is replaced with new chunks", () => { @@ -52,8 +53,8 @@ describe("ModuleReason", () => { myModuleReason.rewriteChunks(myChunk, [myChunk2]); myModuleReason.rewriteChunks(myChunk2, [myChunk]); - should(myModuleReason.hasChunk(myChunk)).be.true(); - should(myModuleReason.hasChunk(myChunk2)).be.false(); + expect(myModuleReason.hasChunk(myChunk)).toBe(true); + expect(myModuleReason.hasChunk(myChunk2)).toBe(false); }); }); }); diff --git a/test/MultiStats.unittest.js b/test/MultiStats.unittest.js index 653330bdc..d802f5f4b 100644 --- a/test/MultiStats.unittest.js +++ b/test/MultiStats.unittest.js @@ -1,6 +1,5 @@ "use strict"; -require("should"); const packageJSON = require("../package.json"); const MultiStats = require("../lib/MultiStats"); @@ -29,7 +28,9 @@ describe("MultiStats", () => { packageJSON.version = "1.2.3"; }); - afterEach(() => packageJSON.version = packageVersion); + afterEach(() => { + packageJSON.version = packageVersion; + }); describe("created", () => { beforeEach(() => { @@ -44,7 +45,9 @@ describe("MultiStats", () => { myMultiStats = new MultiStats(stats); }); - it("creates a hash string", () => myMultiStats.hash.should.be.exactly("abc123xyz890")); + it("creates a hash string", () => { + expect(myMultiStats.hash).toBe("abc123xyz890"); + }); }); describe("hasErrors", () => { @@ -61,7 +64,9 @@ describe("MultiStats", () => { myMultiStats = new MultiStats(stats); }); - it("returns true", () => myMultiStats.hasErrors().should.be.exactly(true)); + it("returns true", () => { + expect(myMultiStats.hasErrors()).toBe(true); + }); }); describe("when one has an error", () => { @@ -75,7 +80,9 @@ describe("MultiStats", () => { myMultiStats = new MultiStats(stats); }); - it("returns true", () => myMultiStats.hasErrors().should.be.exactly(true)); + it("returns true", () => { + expect(myMultiStats.hasErrors()).toBe(true); + }); }); describe("when none have errors", () => { @@ -87,7 +94,9 @@ describe("MultiStats", () => { myMultiStats = new MultiStats(stats); }); - it("returns false", () => myMultiStats.hasErrors().should.be.exactly(false)); + it("returns false", () => { + expect(myMultiStats.hasErrors()).toBe(false); + }); }); }); @@ -105,7 +114,9 @@ describe("MultiStats", () => { myMultiStats = new MultiStats(stats); }); - it("returns true", () => myMultiStats.hasWarnings().should.be.exactly(true)); + it("returns true", () => { + expect(myMultiStats.hasWarnings()).toBe(true); + }); }); describe("when one has a warning", () => { @@ -119,7 +130,9 @@ describe("MultiStats", () => { myMultiStats = new MultiStats(stats); }); - it("returns true", () => myMultiStats.hasWarnings().should.be.exactly(true)); + it("returns true", () => { + expect(myMultiStats.hasWarnings()).toBe(true); + }); }); describe("when none have warnings", () => { @@ -131,7 +144,9 @@ describe("MultiStats", () => { myMultiStats = new MultiStats(stats); }); - it("returns false", () => myMultiStats.hasWarnings().should.be.exactly(false)); + it("returns false", () => { + expect(myMultiStats.hasWarnings()).toBe(false); + }); }); }); @@ -167,7 +182,7 @@ describe("MultiStats", () => { version: false, hash: false }); - result.should.deepEqual({ + expect(result).toEqual({ errors: [ "(abc123-compilation) abc123-error" ], @@ -200,7 +215,7 @@ describe("MultiStats", () => { it("returns plain object representation with json set to true", () => { myMultiStats = new MultiStats(stats); result = myMultiStats.toJson(true); - result.should.deepEqual({ + expect(result).toEqual({ errors: [ "(abc123-compilation) abc123-error" ], @@ -248,7 +263,7 @@ describe("MultiStats", () => { }); it("returns string representation", () => { - result.should.be.exactly( + expect(result).toBe( "Hash: abc123xyz890\n" + "Version: webpack 1.2.3\n" + "Child abc123-compilation:\n" + diff --git a/test/MultiWatching.unittest.js b/test/MultiWatching.unittest.js index 20cbd9d51..2bb008154 100644 --- a/test/MultiWatching.unittest.js +++ b/test/MultiWatching.unittest.js @@ -2,11 +2,10 @@ const Tapable = require("tapable").Tapable; const SyncHook = require("tapable").SyncHook; -require("should"); const sinon = require("sinon"); const MultiWatching = require("../lib/MultiWatching"); -const createWatching = function() { +const createWatching = () => { return { invalidate: sinon.spy(), close: sinon.spy() @@ -33,11 +32,13 @@ describe("MultiWatching", () => { }); describe("invalidate", () => { - beforeEach(() => myMultiWatching.invalidate()); + beforeEach(() => { + myMultiWatching.invalidate(); + }); it("invalidates each watching", () => { - watchings[0].invalidate.callCount.should.be.exactly(1); - watchings[1].invalidate.callCount.should.be.exactly(1); + expect(watchings[0].invalidate.callCount).toBe(1); + expect(watchings[1].invalidate.callCount).toBe(1); }); }); @@ -51,14 +52,14 @@ describe("MultiWatching", () => { }); it("closes each watching", () => { - watchings[0].close.callCount.should.be.exactly(1); - watchings[1].close.callCount.should.be.exactly(1); + expect(watchings[0].close.callCount).toBe(1); + expect(watchings[1].close.callCount).toBe(1); }); it("calls callback after each watching has closed", () => { callClosedFinishedCallback(watchings[0]); callClosedFinishedCallback(watchings[1]); - callback.callCount.should.be.exactly(1); + expect(callback.callCount).toBe(1); }); }); }); diff --git a/test/NodeWatchFileSystem.unittest.js b/test/NodeWatchFileSystem.unittest.js deleted file mode 100644 index f9e43c7bd..000000000 --- a/test/NodeWatchFileSystem.unittest.js +++ /dev/null @@ -1,220 +0,0 @@ -/* globals describe it */ - -var should = require("should"); -var NodeWatchFileSystem = require("../lib/node/NodeWatchFileSystem"); - -describe("NodeWatchFileSystem", function() { - it("should throw if 'files' argument is not an array", function() { - should(function() { - new NodeWatchFileSystem().watch(undefined); - }).throw("Invalid arguments: 'files'"); - }); - - it("should throw if 'dirs' argument is not an array", function() { - should(function() { - new NodeWatchFileSystem().watch([], undefined); - }).throw("Invalid arguments: 'dirs'"); - }); - - it("should throw if 'missing' argument is not an array", function() { - should(function() { - new NodeWatchFileSystem().watch([], [], undefined); - }).throw("Invalid arguments: 'missing'"); - }); - - it("should throw if 'starttime' argument is missing", function() { - should(function() { - new NodeWatchFileSystem().watch([], [], [], "42", {}, function() {}); - }).throw("Invalid arguments: 'startTime'"); - }); - - it("should throw if 'callback' argument is missing", function() { - should(function() { - new NodeWatchFileSystem().watch([], [], [], 42, {}, undefined); - }).throw("Invalid arguments: 'callback'"); - }); - - it("should throw if 'options' argument is invalid", function() { - should(function() { - new NodeWatchFileSystem().watch([], [], [], 42, "options", function() {}); - }).throw("Invalid arguments: 'options'"); - }); - - it("should throw if 'callbackUndelayed' argument is invalid", function() { - should(function() { - new NodeWatchFileSystem().watch([], [], [], 42, {}, function() {}, "undefined"); - }).throw("Invalid arguments: 'callbackUndelayed'"); - }); - - if(process.env.NO_WATCH_TESTS) { - it("long running tests excluded"); - return; - } - - var path = require("path"); - var fs = require("fs"); - var fixtures = path.join(__dirname, "fixtures"); - var fileDirect = path.join(fixtures, "watched-file.txt"); - var fileSubdir = path.join(fixtures, "subdir", "watched-file.txt"); - - this.timeout(10000); - - it("should register a file change (change delayed)", function(done) { - var startTime = new Date().getTime(); - var wfs = new NodeWatchFileSystem(); - var watcher = wfs.watch([fileDirect], [], [], startTime, { - aggregateTimeout: 1000 - }, function(err, filesModified, dirsModified, missingCreated, fileTimestamps) { - if(err) throw err; - filesModified.should.be.eql([fileDirect]); - dirsModified.should.be.eql([]); - (typeof fileTimestamps.get(fileDirect)).should.be.eql("number"); - watcher.close(); - done(); - }); - - setTimeout(function() { - fs.writeFile(fileDirect, "", function() {}); - }, 500); - }); - it("should register a file change (watch delayed)", function(done) { - var startTime = new Date().getTime(); - setTimeout(function() { - var wfs = new NodeWatchFileSystem(); - var watcher = wfs.watch([fileDirect], [], [], startTime, { - aggregateTimeout: 1000 - }, function(err, filesModified, dirsModified, missingCreated, fileTimestamps) { - if(err) throw err; - filesModified.should.be.eql([fileDirect]); - dirsModified.should.be.eql([]); - (typeof fileTimestamps.get(fileDirect)).should.be.eql("number"); - watcher.close(); - done(); - }); - }, 500); - - fs.writeFile(fileDirect, "", function() {}); - }); - it("should register a context change (change delayed)", function(done) { - var startTime = new Date().getTime(); - var wfs = new NodeWatchFileSystem(); - var watcher = wfs.watch([], [fixtures], [], startTime, { - aggregateTimeout: 1000 - }, function(err, filesModified, dirsModified, missingCreated, fileTimestamps, dirTimestamps) { - if(err) throw err; - filesModified.should.be.eql([]); - dirsModified.should.be.eql([fixtures]); - (typeof dirTimestamps.get(fixtures)).should.be.eql("number"); - watcher.close(); - done(); - }); - - setTimeout(function() { - fs.writeFile(fileDirect, "", function() {}); - }, 500); - }); - it("should register a context change (watch delayed)", function(done) { - var startTime = new Date().getTime(); - setTimeout(function() { - var wfs = new NodeWatchFileSystem(); - var watcher = wfs.watch([], [fixtures], [], startTime, { - aggregateTimeout: 1000 - }, function(err, filesModified, dirsModified, missingCreated, fileTimestamps, dirTimestamps) { - if(err) throw err; - filesModified.should.be.eql([]); - dirsModified.should.be.eql([fixtures]); - (typeof dirTimestamps.get(fixtures)).should.be.eql("number"); - watcher.close(); - done(); - }); - }, 500); - - fs.writeFile(fileDirect, "", function() {}); - }); - it("should register a context change (change delayed, subdirectory)", function(done) { - var startTime = new Date().getTime(); - var wfs = new NodeWatchFileSystem(); - var watcher = wfs.watch([], [fixtures], [], startTime, { - aggregateTimeout: 1000 - }, function(err, filesModified, dirsModified, missingCreated, fileTimestamps, dirTimestamps) { - if(err) throw err; - filesModified.should.be.eql([]); - dirsModified.should.be.eql([fixtures]); - (typeof dirTimestamps.get(fixtures)).should.be.eql("number"); - watcher.close(); - done(); - }); - - setTimeout(function() { - fs.writeFile(fileSubdir, "", function() {}); - }, 500); - }); - it("should register a context change (watch delayed, subdirectory)", function(done) { - var startTime = new Date().getTime(); - setTimeout(function() { - var wfs = new NodeWatchFileSystem(); - var watcher = wfs.watch([], [fixtures], [], startTime, { - aggregateTimeout: 1000 - }, function(err, filesModified, dirsModified, missingCreated, fileTimestamps, dirTimestamps) { - if(err) throw err; - filesModified.should.be.eql([]); - dirsModified.should.be.eql([fixtures]); - (typeof dirTimestamps.get(fixtures)).should.be.eql("number"); - watcher.close(); - done(); - }); - }, 500); - - fs.writeFile(fileSubdir, "", function() {}); - }); - it("should allow to combine all", function(done) { - var startTime = new Date().getTime(); - setTimeout(function() { - var wfs = new NodeWatchFileSystem(); - var watcher = wfs.watch([fileDirect, fileSubdir], [fixtures], [], startTime, { - aggregateTimeout: 1000 - }, function(err, filesModified, dirsModified, missingCreated, fileTimestamps, dirTimestamps) { - if(err) throw err; - filesModified.should.be.eql([fileSubdir, fileDirect]); - dirsModified.should.be.eql([fixtures]); - (typeof fileTimestamps.get(fileDirect)).should.be.eql("number"); - (typeof fileTimestamps.get(fileSubdir)).should.be.eql("number"); - (typeof dirTimestamps.get(fixtures)).should.be.eql("number"); - watcher.close(); - done(); - }); - }, 500); - - fs.writeFile(fileDirect, "", function() {}); - fs.writeFile(fileSubdir, "", function() {}); - }); - it("should sum up multiple changes", function(done) { - var startTime = new Date().getTime(); - var wfs = new NodeWatchFileSystem(); - var watcher = wfs.watch([fileDirect, fileSubdir], [fixtures], [], startTime, { - aggregateTimeout: 1000 - }, function(err, filesModified, dirsModified, missingCreated, fileTimestamps, dirTimestamps) { - if(err) throw err; - filesModified.should.be.eql([fileSubdir, fileDirect]); - dirsModified.should.be.eql([fixtures]); - (typeof fileTimestamps.get(fileDirect)).should.be.eql("number"); - (typeof fileTimestamps.get(fileSubdir)).should.be.eql("number"); - (typeof dirTimestamps.get(fixtures)).should.be.eql("number"); - watcher.close(); - done(); - }); - - setTimeout(function() { - fs.writeFile(fileDirect, "", function() {}); - setTimeout(function() { - fs.writeFile(fileDirect, "", function() {}); - setTimeout(function() { - fs.writeFile(fileDirect, "", function() {}); - setTimeout(function() { - fs.writeFile(fileSubdir, "", function() {}); - }, 500); - }, 500); - }, 500); - }, 500); - }); -}); diff --git a/test/NormalModule.unittest.js b/test/NormalModule.unittest.js index 7cf7351e9..8e5396dd1 100644 --- a/test/NormalModule.unittest.js +++ b/test/NormalModule.unittest.js @@ -1,6 +1,6 @@ /* globals describe, it, beforeEach, afterEach */ "use strict"; -require("should"); + const sinon = require("sinon"); const NormalModule = require("../lib/NormalModule"); const NullDependency = require("../lib/dependencies/NullDependency"); @@ -8,7 +8,7 @@ const SourceMapSource = require("webpack-sources").SourceMapSource; const OriginalSource = require("webpack-sources").OriginalSource; const RawSource = require("webpack-sources").RawSource; -describe("NormalModule", function() { +describe("NormalModule", () => { let normalModule; let request; let userRequest; @@ -16,7 +16,7 @@ describe("NormalModule", function() { let loaders; let resource; let parser; - beforeEach(function() { + beforeEach(() => { request = "some/request"; userRequest = "some/userRequest"; rawRequest = "some/rawRequest"; @@ -38,37 +38,37 @@ describe("NormalModule", function() { cacheable: true }; }); - describe("#identifier", function() { - it("returns an identifier for this module", function() { - normalModule.identifier().should.eql(request); + describe("#identifier", () => { + it("returns an identifier for this module", () => { + expect(normalModule.identifier()).toBe(request); }); - it("returns an identifier from toString", function() { + it("returns an identifier from toString", () => { normalModule.debugId = 1000; - normalModule.toString().should.eql("Module[1000]"); + expect(normalModule.toString()).toBe("Module[1000]"); normalModule.id = 1; - normalModule.toString().should.eql("Module[1]"); + expect(normalModule.toString()).toBe("Module[1]"); }); }); - describe("#readableIdentifier", function() { - it("calls the given requestShortener with the user request", function() { + describe("#readableIdentifier", () => { + it("calls the given requestShortener with the user request", () => { const spy = sinon.spy(); normalModule.readableIdentifier({ shorten: spy }); - spy.callCount.should.eql(1); - spy.args[0][0].should.eql(userRequest); + expect(spy.callCount).toBe(1); + expect(spy.args[0][0]).toBe(userRequest); }); }); - describe("#libIdent", function() { - it("contextifies the userRequest of the module", function() { - normalModule.libIdent({ + describe("#libIdent", () => { + it("contextifies the userRequest of the module", () => { + expect(normalModule.libIdent({ context: "some/context" - }).should.eql("../userRequest"); + })).toBe("../userRequest"); }); - describe("given a userRequest containing loaders", function() { - beforeEach(function() { + describe("given a userRequest containing loaders", () => { + beforeEach(() => { userRequest = "some/userRequest!some/other/userRequest!some/thing/is/off/here"; normalModule = new NormalModule( "javascript/auto", @@ -80,14 +80,14 @@ describe("NormalModule", function() { parser ); }); - it("contextifies every path in the userRequest", function() { - normalModule.libIdent({ + it("contextifies every path in the userRequest", () => { + expect(normalModule.libIdent({ context: "some/context" - }).should.eql("../userRequest!../other/userRequest!../thing/is/off/here"); + })).toBe("../userRequest!../other/userRequest!../thing/is/off/here"); }); }); - describe("given a userRequest containing query parameters", function() { - it("ignores paths in query parameters", function() { + describe("given a userRequest containing query parameters", () => { + it("ignores paths in query parameters", () => { userRequest = "some/context/loader?query=foo\\bar&otherPath=testpath/other"; normalModule = new NormalModule( "javascript/auto", @@ -98,20 +98,20 @@ describe("NormalModule", function() { resource, parser ); - normalModule.libIdent({ + expect(normalModule.libIdent({ context: "some/context", - }).should.eql("./loader?query=foo\\bar&otherPath=testpath/other"); + })).toBe("./loader?query=foo\\bar&otherPath=testpath/other"); }); }); }); - describe("#nameForCondition", function() { - it("return the resource", function() { - normalModule.nameForCondition().should.eql(resource); + describe("#nameForCondition", () => { + it("return the resource", () => { + expect(normalModule.nameForCondition()).toBe(resource); }); - describe("given a resource containing a ?-sign", function() { + describe("given a resource containing a ?-sign", () => { const baseResource = "some/resource"; - beforeEach(function() { + beforeEach(() => { resource = baseResource + "?some=query"; normalModule = new NormalModule( "javascript/auto", @@ -123,105 +123,105 @@ describe("NormalModule", function() { parser ); }); - it("return only the part before the ?-sign", function() { - normalModule.nameForCondition().should.eql(baseResource); + it("return only the part before the ?-sign", () => { + expect(normalModule.nameForCondition()).toBe(baseResource); }); }); }); - describe("#createSourceForAsset", function() { + describe("#createSourceForAsset", () => { let name; let content; let sourceMap; - beforeEach(function() { + beforeEach(() => { name = "some name"; content = "some content"; sourceMap = "some sourcemap"; }); - describe("given no sourcemap", function() { - it("returns a RawSource", function() { - normalModule.createSourceForAsset(name, content).should.be.instanceOf(RawSource); + describe("given no sourcemap", () => { + it("returns a RawSource", () => { + expect(normalModule.createSourceForAsset(name, content)).toBeInstanceOf(RawSource); }); }); - describe("given a string as the sourcemap", function() { - it("returns a OriginalSource", function() { - normalModule.createSourceForAsset(name, content, sourceMap).should.be.instanceOf(OriginalSource); + describe("given a string as the sourcemap", () => { + it("returns a OriginalSource", () => { + expect(normalModule.createSourceForAsset(name, content, sourceMap)).toBeInstanceOf(OriginalSource); }); }); - describe("given a some other kind of sourcemap", function() { - beforeEach(function() { + describe("given a some other kind of sourcemap", () => { + beforeEach(() => { sourceMap = () => {}; }); - it("returns a SourceMapSource", function() { - normalModule.createSourceForAsset(name, content, sourceMap).should.be.instanceOf(SourceMapSource); + it("returns a SourceMapSource", () => { + expect(normalModule.createSourceForAsset(name, content, sourceMap)).toBeInstanceOf(SourceMapSource); }); }); }); - describe("#source", function() { - describe("without the module having any source", function() { - beforeEach(function() { + describe("#source", () => { + describe("without the module having any source", () => { + beforeEach(() => { normalModule._source = null; }); - it("returns a Source containing an Error", function() { - normalModule.source().should.be.instanceOf(RawSource); - normalModule.source().source().should.eql("throw new Error('No source available');"); + it("returns a Source containing an Error", () => { + expect(normalModule.source()).toBeInstanceOf(RawSource); + expect(normalModule.source().source()).toBe("throw new Error('No source available');"); }); }); }); - describe("#originalSource", function() { + describe("#originalSource", () => { let expectedSource = "some source"; - beforeEach(function() { + beforeEach(() => { normalModule._source = new RawSource(expectedSource); }); - it("returns an original Source", function() { - normalModule.originalSource().should.eql(normalModule._source); + it("returns an original Source", () => { + expect(normalModule.originalSource()).toBe(normalModule._source); }); }); - describe("#updateHashWithSource", function() { + describe("#updateHashWithSource", () => { let hashSpy; let hash; - beforeEach(function() { + beforeEach(() => { hashSpy = sinon.spy(); hash = { update: hashSpy }; }); - describe("without the module having any source", function() { - beforeEach(function() { + describe("without the module having any source", () => { + beforeEach(() => { normalModule._source = null; }); - it("calls hash function with \"null\"", function() { + it("calls hash function with \"null\"", () => { normalModule.updateHashWithSource(hash); - hashSpy.callCount.should.eql(1); - hashSpy.args[0][0].should.eql("null"); + expect(hashSpy.callCount).toBe(1); + expect(hashSpy.args[0][0]).toBe("null"); }); }); - describe("without the module having source", function() { + describe("without the module having source", () => { let expectedSource = "some source"; - beforeEach(function() { + beforeEach(() => { normalModule._source = new RawSource(expectedSource); }); it("calls hash function with \"source\" and then the actual source of the module", function() { normalModule.updateHashWithSource(hash); - hashSpy.callCount.should.eql(2); - hashSpy.args[0][0].should.eql("source"); - hashSpy.args[1][0].should.eql(expectedSource); + expect(hashSpy.callCount).toBe(2); + expect(hashSpy.args[0][0]).toBe("source"); + expect(hashSpy.args[1][0]).toBe(expectedSource); }); }); }); - describe("#hasDependencies", function() { - it("returns true if has dependencies", function() { + describe("#hasDependencies", () => { + it("returns true if has dependencies", () => { normalModule.addDependency(new NullDependency()); - normalModule.hasDependencies().should.eql(true); + expect(normalModule.hasDependencies()).toBe(true); }); - it("returns false if has dependencies", function() { - normalModule.hasDependencies().should.eql(false); + it("returns false if has dependencies", () => { + expect(normalModule.hasDependencies()).toBe(false); }); }); - describe("#needRebuild", function() { + describe("#needRebuild", () => { let fileTimestamps; let contextTimestamps; let fileDependencies; @@ -229,14 +229,12 @@ describe("NormalModule", function() { let fileA; let fileB; - function setDeps( - fileDependencies, - contextDependencies) { + function setDeps(fileDependencies, contextDependencies) { normalModule.buildInfo.fileDependencies = fileDependencies; normalModule.buildInfo.contextDependencies = contextDependencies; } - beforeEach(function() { + beforeEach(() => { fileA = "fileA"; fileB = "fileB"; fileDependencies = [fileA, fileB]; @@ -252,47 +250,47 @@ describe("NormalModule", function() { normalModule.buildTimestamp = 2; setDeps(fileDependencies, contextDependencies); }); - describe("given all timestamps are older than the buildTimestamp", function() { - it("returns false", function() { - normalModule.needRebuild(fileTimestamps, contextTimestamps).should.eql(false); + describe("given all timestamps are older than the buildTimestamp", () => { + it("returns false", () => { + expect(normalModule.needRebuild(fileTimestamps, contextTimestamps)).toBe(false); }); }); - describe("given a file timestamp is newer than the buildTimestamp", function() { - beforeEach(function() { + describe("given a file timestamp is newer than the buildTimestamp", () => { + beforeEach(() => { fileTimestamps.set(fileA, 3); }); - it("returns true", function() { - normalModule.needRebuild(fileTimestamps, contextTimestamps).should.eql(true); + it("returns true", () => { + expect(normalModule.needRebuild(fileTimestamps, contextTimestamps)).toBe(true); }); }); - describe("given a no file timestamp exists", function() { - beforeEach(function() { + describe("given a no file timestamp exists", () => { + beforeEach(() => { fileTimestamps = new Map(); }); - it("returns true", function() { - normalModule.needRebuild(fileTimestamps, contextTimestamps).should.eql(true); + it("returns true", () => { + expect(normalModule.needRebuild(fileTimestamps, contextTimestamps)).toBe(true); }); }); - describe("given a context timestamp is newer than the buildTimestamp", function() { - beforeEach(function() { + describe("given a context timestamp is newer than the buildTimestamp", () => { + beforeEach(() => { contextTimestamps.set(fileA, 3); }); - it("returns true", function() { - normalModule.needRebuild(fileTimestamps, contextTimestamps).should.eql(true); + it("returns true", () => { + expect(normalModule.needRebuild(fileTimestamps, contextTimestamps)).toBe(true); }); }); - describe("given a no context timestamp exists", function() { - beforeEach(function() { + describe("given a no context timestamp exists", () => { + beforeEach(() => { contextTimestamps = new Map(); }); - it("returns true", function() { - normalModule.needRebuild(fileTimestamps, contextTimestamps).should.eql(true); + it("returns true", () => { + expect(normalModule.needRebuild(fileTimestamps, contextTimestamps)).toBe(true); }); }); }); - describe("#splitVariablesInUniqueNamedChunks", function() { + describe("#splitVariablesInUniqueNamedChunks", () => { let variables; - beforeEach(function() { + beforeEach(() => { variables = [{ name: "foo" }, { @@ -305,147 +303,147 @@ describe("NormalModule", function() { name: "more" }]; }); - describe("given an empty array of vars", function() { - it("returns an empty array", function() { - normalModule.splitVariablesInUniqueNamedChunks([]).should.eql([ + describe("given an empty array of vars", () => { + it("returns an empty array", () => { + expect(normalModule.splitVariablesInUniqueNamedChunks([])).toEqual([ [] ]); }); }); - describe("given an array of distrinct variables", function() { - it("returns an array containing an array containing the variables", function() { - normalModule.splitVariablesInUniqueNamedChunks(variables).should.eql([variables]); + describe("given an array of distrinct variables", () => { + it("returns an array containing an array containing the variables", () => { + expect(normalModule.splitVariablesInUniqueNamedChunks(variables)).toEqual([variables]); }); }); - describe("given an array with duplicate variables", function() { - it("returns several arrays each containing only distinct variable names", function() { - normalModule.splitVariablesInUniqueNamedChunks(variables.concat(variables)).should.eql([variables, variables]); + describe("given an array with duplicate variables", () => { + it("returns several arrays each containing only distinct variable names", () => { + expect(normalModule.splitVariablesInUniqueNamedChunks(variables.concat(variables))).toEqual([variables, variables]); }); - describe("and a duplicate as the last variable", function() { - it("returns correctly split distinct arrays", function() { - normalModule.splitVariablesInUniqueNamedChunks(variables.concat(variables).concat(variables[0])).should.eql([variables, variables, [variables[0]]]); + describe("and a duplicate as the last variable", () => { + it("returns correctly split distinct arrays", () => { + expect(normalModule.splitVariablesInUniqueNamedChunks(variables.concat(variables).concat(variables[0]))).toEqual([variables, variables, [variables[0]]]); }); }); }); }); - describe("#applyNoParseRule", function() { + describe("#applyNoParseRule", () => { let rule; let content; - describe("given a string as rule", function() { - beforeEach(function() { + describe("given a string as rule", () => { + beforeEach(() => { rule = "some-rule"; }); - describe("and the content starting with the string specified in rule", function() { - beforeEach(function() { + describe("and the content starting with the string specified in rule", () => { + beforeEach(() => { content = rule + "some-content"; }); - it("returns true", function() { - normalModule.shouldPreventParsing(rule, content).should.eql(true); + it("returns true", () => { + expect(normalModule.shouldPreventParsing(rule, content)).toBe(true); }); }); - describe("and the content does not start with the string specified in rule", function() { - beforeEach(function() { + describe("and the content does not start with the string specified in rule", () => { + beforeEach(() => { content = "some-content"; }); - it("returns false", function() { - normalModule.shouldPreventParsing(rule, content).should.eql(false); + it("returns false", () => { + expect(normalModule.shouldPreventParsing(rule, content)).toBe(false); }); }); }); - describe("given a regex as rule", function() { - beforeEach(function() { + describe("given a regex as rule", () => { + beforeEach(() => { rule = /some-rule/; }); - describe("and the content matches the rule", function() { - beforeEach(function() { + describe("and the content matches the rule", () => { + beforeEach(() => { content = rule + "some-content"; }); - it("returns true", function() { - normalModule.shouldPreventParsing(rule, content).should.eql(true); + it("returns true", () => { + expect(normalModule.shouldPreventParsing(rule, content)).toBe(true); }); }); - describe("and the content does not match the rule", function() { - beforeEach(function() { + describe("and the content does not match the rule", () => { + beforeEach(() => { content = "some-content"; }); - it("returns false", function() { - normalModule.shouldPreventParsing(rule, content).should.eql(false); + it("returns false", () => { + expect(normalModule.shouldPreventParsing(rule, content)).toBe(false); }); }); }); }); - describe("#shouldPreventParsing", function() { + describe("#shouldPreventParsing", () => { let applyNoParseRuleSpy; - beforeEach(function() { + beforeEach(() => { applyNoParseRuleSpy = sinon.stub(); normalModule.applyNoParseRule = applyNoParseRuleSpy; }); - describe("given no noParseRule", function() { - it("returns false", function() { - normalModule.shouldPreventParsing().should.eql(false); - applyNoParseRuleSpy.callCount.should.eql(0); + describe("given no noParseRule", () => { + it("returns false", () => { + expect(normalModule.shouldPreventParsing()).toBe(false); + expect(applyNoParseRuleSpy.callCount).toBe(0); }); }); - describe("given a noParseRule", function() { + describe("given a noParseRule", () => { let returnValOfSpy; - beforeEach(function() { + beforeEach(() => { returnValOfSpy = true; applyNoParseRuleSpy.returns(returnValOfSpy); }); - describe("that is a string", function() { - it("calls and returns whatever applyNoParseRule returns", function() { - normalModule.shouldPreventParsing("some rule").should.eql(returnValOfSpy); - applyNoParseRuleSpy.callCount.should.eql(1); + describe("that is a string", () => { + it("calls and returns whatever applyNoParseRule returns", () => { + expect(normalModule.shouldPreventParsing("some rule")).toBe(returnValOfSpy); + expect(applyNoParseRuleSpy.callCount).toBe(1); }); }); - describe("that is a regex", function() { - it("calls and returns whatever applyNoParseRule returns", function() { - normalModule.shouldPreventParsing("some rule").should.eql(returnValOfSpy); - applyNoParseRuleSpy.callCount.should.eql(1); + describe("that is a regex", () => { + it("calls and returns whatever applyNoParseRule returns", () => { + expect(normalModule.shouldPreventParsing("some rule")).toBe(returnValOfSpy); + expect(applyNoParseRuleSpy.callCount).toBe(1); }); }); - describe("that is an array", function() { - describe("of strings and or regexs", function() { + describe("that is an array", () => { + describe("of strings and or regexs", () => { let someRules; - beforeEach(function() { + beforeEach(() => { someRules = [ "some rule", /some rule1/, "some rule2", ]; }); - describe("and none of them match", function() { - beforeEach(function() { + describe("and none of them match", () => { + beforeEach(() => { returnValOfSpy = false; applyNoParseRuleSpy.returns(returnValOfSpy); }); - it("returns false", function() { - normalModule.shouldPreventParsing(someRules).should.eql(returnValOfSpy); - applyNoParseRuleSpy.callCount.should.eql(3); + it("returns false", () => { + expect(normalModule.shouldPreventParsing(someRules)).toBe(returnValOfSpy); + expect(applyNoParseRuleSpy.callCount).toBe(3); }); }); - describe("and the first of them matches", function() { - beforeEach(function() { + describe("and the first of them matches", () => { + beforeEach(() => { returnValOfSpy = true; applyNoParseRuleSpy.returns(returnValOfSpy); }); - it("returns true", function() { - normalModule.shouldPreventParsing(someRules).should.eql(returnValOfSpy); - applyNoParseRuleSpy.callCount.should.eql(1); + it("returns true", () => { + expect(normalModule.shouldPreventParsing(someRules)).toBe(returnValOfSpy); + expect(applyNoParseRuleSpy.callCount).toBe(1); }); }); - describe("and the last of them matches", function() { - beforeEach(function() { + describe("and the last of them matches", () => { + beforeEach(() => { returnValOfSpy = true; applyNoParseRuleSpy.onCall(0).returns(false); applyNoParseRuleSpy.onCall(1).returns(false); applyNoParseRuleSpy.onCall(2).returns(true); }); - it("returns true", function() { - normalModule.shouldPreventParsing(someRules).should.eql(returnValOfSpy); - applyNoParseRuleSpy.callCount.should.eql(3); + it("returns true", () => { + expect(normalModule.shouldPreventParsing(someRules)).toBe(returnValOfSpy); + expect(applyNoParseRuleSpy.callCount).toBe(3); }); }); }); diff --git a/test/NullDependency.unittest.js b/test/NullDependency.unittest.js index 5f6f1f5eb..00bec68df 100644 --- a/test/NullDependency.unittest.js +++ b/test/NullDependency.unittest.js @@ -1,39 +1,12 @@ "use strict"; -require("should"); -const sinon = require("sinon"); const NullDependency = require("../lib/dependencies/NullDependency"); describe("NullDependency", () => { - let env; - - beforeEach(() => env = {}); - - it("is a function", () => NullDependency.should.be.a.Function()); - describe("when created", () => { - beforeEach(() => env.nullDependency = new NullDependency()); - - it("has a null type", () => env.nullDependency.type.should.be.exactly("null")); - - it("has update hash function", () => env.nullDependency.updateHash.should.be.Function()); - - it("does not update hash", () => { - const hash = { - update: sinon.stub() - }; - env.nullDependency.updateHash(hash); - hash.update.called.should.be.false(); - }); - }); - - describe("Template", () => { - it("is a function", () => NullDependency.Template.should.be.a.Function()); - - describe("when created", () => { - beforeEach(() => env.nullDependencyTemplate = new NullDependency.Template()); - - it("has apply function", () => env.nullDependencyTemplate.apply.should.be.Function()); + it("has a null type", () => { + const nullDependency = new NullDependency(); + expect(nullDependency.type).toBe("null"); }); }); }); diff --git a/test/Parser.unittest.js b/test/Parser.unittest.js index 34bab80b1..dcf6a6658 100644 --- a/test/Parser.unittest.js +++ b/test/Parser.unittest.js @@ -1,7 +1,5 @@ "use strict"; -const should = require("should"); - const Parser = require("../lib/Parser"); const BasicEvaluatedExpression = require("../lib/BasicEvaluatedExpression"); @@ -281,8 +279,8 @@ describe("Parser", () => { return true; }); const actual = testParser.parse(source); - should.strictEqual(typeof actual, "object"); - actual.should.be.eql(state); + expect(typeof actual).toBe("object"); + expect(actual).toEqual(state); }); }); @@ -304,13 +302,13 @@ describe("Parser", () => { }); const actual = testParser.parse(source); - should.strictEqual(typeof actual, "object"); - should.strictEqual(typeof actual.comments, "object"); + expect(typeof actual).toBe("object"); + expect(typeof actual.comments).toBe("object"); actual.comments.forEach((element, index) => { - should.strictEqual(typeof element.type, "string"); - should.strictEqual(typeof element.value, "string"); - element.type.should.be.eql(state[index].type); - element.value.should.be.eql(state[index].value); + expect(typeof element.type).toBe("string"); + expect(typeof element.value).toBe("string"); + expect(element.type).toBe(state[index].type); + expect(element.value).toBe(state[index].value); }); }); @@ -458,7 +456,7 @@ describe("Parser", () => { it("should eval " + key, () => { const evalExpr = evaluateInParser(key); - evalExprToString(evalExpr).should.be.eql(testCases[key] ? key + " " + testCases[key] : key); + expect(evalExprToString(evalExpr)).toBe(testCases[key] ? key + " " + testCases[key] : key); }); }); }); @@ -475,7 +473,7 @@ describe("Parser", () => { const expr = cases[name]; it(name, () => { const actual = parser.parse(expr); - should.strictEqual(typeof actual, "object"); + expect(typeof actual).toBe("object"); }); }); }); @@ -506,7 +504,7 @@ describe("Parser", () => { Object.keys(cases).forEach((name) => { it(name, () => { const actual = parser.parse(cases[name][0]); - actual.should.be.eql(cases[name][1]); + expect(actual).toEqual(cases[name][1]); }); }); }); diff --git a/test/ProfilingPlugin.unittest.js b/test/ProfilingPlugin.unittest.js index 9d7746957..5d7953fa6 100644 --- a/test/ProfilingPlugin.unittest.js +++ b/test/ProfilingPlugin.unittest.js @@ -1,6 +1,5 @@ "use strict"; -require("should"); const ProfilingPlugin = require("../lib/debug/ProfilingPlugin"); describe("Profiling Plugin", () => { @@ -8,55 +7,36 @@ describe("Profiling Plugin", () => { const plugin = new ProfilingPlugin({ outPath: "invest_in_doge_coin" }); - plugin.outPath.should.equal("invest_in_doge_coin"); + expect(plugin.outPath).toBe("invest_in_doge_coin"); }); it("should handle no options", () => { const plugin = new ProfilingPlugin(); - plugin.outPath.should.equal("events.json"); + expect(plugin.outPath).toBe("events.json"); }); - it("should handle when unable to require the inspector", (done) => { + it("should handle when unable to require the inspector", () => { const profiler = new ProfilingPlugin.Profiler(); - - profiler.startProfiling().then(() => { - done(); - }).catch(e => { - done(e); - }); + return profiler.startProfiling(); }); - it("should handle when unable to start a profiling session", (done) => { + it("should handle when unable to start a profiling session", () => { const profiler = new ProfilingPlugin.Profiler({ Session() { throw new Error("Sean Larkin was here."); } }); - profiler.startProfiling().then(() => { - done(); - }).catch(e => { - done(e); - }); + return profiler.startProfiling(); }); - it("handles sending a profiling message when no session", (done) => { + it("handles sending a profiling message when no session", () => { const profiler = new ProfilingPlugin.Profiler(); - - profiler.sendCommand("randy", "is a puppers").then(() => { - done(); - }).catch(e => { - done(e); - }); + return profiler.sendCommand("randy", "is a puppers"); }); - it("handles destroying when no session", (done) => { + it("handles destroying when no session", () => { const profiler = new ProfilingPlugin.Profiler(); - - profiler.destroy().then(() => { - done(); - }).catch(e => { - done(e); - }); + return profiler.destroy(); }); }); diff --git a/test/RawModule.unittest.js b/test/RawModule.unittest.js index f76a78d0f..d7a900708 100644 --- a/test/RawModule.unittest.js +++ b/test/RawModule.unittest.js @@ -4,29 +4,25 @@ const RawModule = require("../lib/RawModule"); const OriginalSource = require("webpack-sources").OriginalSource; const RawSource = require("webpack-sources").RawSource; const RequestShortener = require("../lib/RequestShortener"); -const should = require("should"); const path = require("path"); const crypto = require("crypto"); describe("RawModule", () => { - let myRawModule; - - before(() => { - const source = "sourceStr attribute"; - const identifier = "identifierStr attribute"; - const readableIdentifier = "readableIdentifierStr attribute"; - myRawModule = new RawModule(source, identifier, readableIdentifier); - }); + const source = "sourceStr attribute"; + const identifier = "identifierStr attribute"; + const readableIdentifier = "readableIdentifierStr attribute"; + const myRawModule = new RawModule(source, identifier, readableIdentifier); describe("identifier", () => { - it("returns value for identifierStr attribute", () => - should(myRawModule.identifier()).be.exactly("identifierStr attribute")); + it("returns value for identifierStr attribute", () => { + expect(myRawModule.identifier()).toBe("identifierStr attribute"); + }); }); describe("size", () => { it("returns value for sourceStr attribute\"s length property", () => { const sourceStrLength = myRawModule.sourceStr.length; - should(myRawModule.size()).be.exactly(sourceStrLength); + expect(myRawModule.size()).toBe(sourceStrLength); }); }); @@ -35,13 +31,15 @@ describe("RawModule", () => { "on readableIdentifierStr attribute", () => { const requestShortener = new RequestShortener(path.resolve()); - should.exist(myRawModule.readableIdentifier(requestShortener)); + expect(myRawModule.readableIdentifier(requestShortener)).toBeDefined(); } ); }); describe("needRebuild", () => { - it("returns false", () => should(myRawModule.needRebuild()).be.false()); + it("returns false", () => { + expect(myRawModule.needRebuild()).toBe(false); + }); }); describe("source", () => { @@ -50,7 +48,7 @@ describe("RawModule", () => { () => { const originalSource = new OriginalSource(myRawModule.sourceStr, myRawModule.identifier()); myRawModule.useSourceMap = true; - myRawModule.source().should.match(originalSource); + expect(myRawModule.source()).toEqual(originalSource); } ); @@ -59,7 +57,7 @@ describe("RawModule", () => { () => { const rawSource = new RawSource(myRawModule.sourceStr); myRawModule.useSourceMap = false; - myRawModule.source().should.match(rawSource); + expect(myRawModule.source()).toEqual(rawSource); } ); }); @@ -74,7 +72,7 @@ describe("RawModule", () => { const hashFoo = hashModule(new RawModule("\"foo\"")); const hashBar = hashModule(new RawModule("\"bar\"")); - hashFoo.should.not.equal(hashBar); + expect(hashFoo).not.toBe(hashBar); }); }); }); diff --git a/test/RuleSet.unittest.js b/test/RuleSet.unittest.js index e456bbaa1..db08afa40 100644 --- a/test/RuleSet.unittest.js +++ b/test/RuleSet.unittest.js @@ -22,18 +22,18 @@ function match(ruleSet, resource) { describe("RuleSet", () => { it("should create RuleSet with a blank array", () => { const loader = new RuleSet([]); - (loader.rules).should.eql([]); + expect(loader.rules).toEqual([]); }); it("should create RuleSet and match with empty array", () => { const loader = new RuleSet([]); - (match(loader, "something")).should.eql([]); + expect(match(loader, "something")).toEqual([]); }); it("should not match with loaders array", () => { const loader = new RuleSet([{ test: /\.css$/, loader: "css" }]); - (match(loader, "something")).should.eql([]); + expect(match(loader, "something")).toEqual([]); }); it("should match with regex", () => { @@ -41,7 +41,7 @@ describe("RuleSet", () => { test: /\.css$/, loader: "css" }]); - (match(loader, "style.css")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); }); it("should match with string", () => { @@ -49,7 +49,7 @@ describe("RuleSet", () => { test: "style.css", loader: "css" }]); - (match(loader, "style.css")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); }); it("should match with function", () => { @@ -59,19 +59,19 @@ describe("RuleSet", () => { }, loader: "css" }]); - (match(loader, "style.css")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); }); it("should throw if invalid test", () => { - should.throws(() => { + expect(() => { const loader = new RuleSet([{ test: { invalid: "test" }, loader: "css" }]); - (match(loader, "style.css")).should.eql(["css"]); - }, /Unexcepted property invalid in condition/); + match(loader, "style.css"); + }).toThrow(/Unexcepted property invalid in condition/); }); it("should accept multiple test array that all match", () => { @@ -82,7 +82,7 @@ describe("RuleSet", () => { ], loader: "css" }]); - (match(loader, "style.css")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); }); it("should accept multiple test array that not all match", () => { @@ -93,7 +93,7 @@ describe("RuleSet", () => { ], loader: "css" }]); - (match(loader, "style.css")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); }); it("should not match if include does not match", () => { @@ -102,7 +102,7 @@ describe("RuleSet", () => { include: /output.css/, loader: "css" }]); - (match(loader, "style.css")).should.eql([]); + expect(match(loader, "style.css")).toEqual([]); }); it("should match if include matches", () => { @@ -111,7 +111,7 @@ describe("RuleSet", () => { include: /style.css/, loader: "css" }]); - (match(loader, "style.css")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); }); it("should not match if exclude matches", () => { @@ -120,7 +120,7 @@ describe("RuleSet", () => { exclude: /style.css/, loader: "css" }]); - (match(loader, "style.css")).should.eql([]); + expect(match(loader, "style.css")).toEqual([]); }); it("should match if exclude does not match", () => { @@ -129,15 +129,15 @@ describe("RuleSet", () => { exclude: /output.css/, loader: "css" }]); - (match(loader, "style.css")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); }); it("should work if a loader is applied to all files", () => { const loader = new RuleSet([{ loader: "css" }]); - (match(loader, "style.css")).should.eql(["css"]); - (match(loader, "scripts.js")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); + expect(match(loader, "scripts.js")).toEqual(["css"]); }); it("should work with using loader as string", () => { @@ -145,7 +145,7 @@ describe("RuleSet", () => { test: /\.css$/, loader: "css" }]); - (match(loader, "style.css")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); }); it("should work with using loader as array", () => { @@ -153,7 +153,7 @@ describe("RuleSet", () => { test: /\.css$/, loader: ["css"] }]); - (match(loader, "style.css")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); }); it("should work with using loaders as string", () => { @@ -161,7 +161,7 @@ describe("RuleSet", () => { test: /\.css$/, loaders: "css" }]); - (match(loader, "style.css")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); }); it("should work with using loaders as array", () => { @@ -169,19 +169,19 @@ describe("RuleSet", () => { test: /\.css$/, loaders: ["css"] }]); - (match(loader, "style.css")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); }); it("should throw if using loaders with non-string or array", () => { - should.throws(function() { + expect(() => { const loader = new RuleSet([{ test: /\.css$/, loaders: { someObj: true } }]); - (match(loader, "style.css")).should.eql(["css"]); - }, /No loader specified/); + match(loader, "style.css"); + }).toThrow(/No loader specified/); }); it("should work with using loader with inline query", () => { @@ -189,7 +189,7 @@ describe("RuleSet", () => { test: /\.css$/, loader: "css?modules=1" }]); - (match(loader, "style.css")).should.eql(["css?modules=1"]); + expect(match(loader, "style.css")).toEqual(["css?modules=1"]); }); it("should work with using loader with string query", () => { @@ -198,7 +198,7 @@ describe("RuleSet", () => { loader: "css", query: "modules=1" }]); - (match(loader, "style.css")).should.eql(["css?modules=1"]); + expect(match(loader, "style.css")).toEqual(["css?modules=1"]); }); it("should work with using loader with object query", () => { @@ -209,7 +209,7 @@ describe("RuleSet", () => { modules: 1 } }]); - (match(loader, "style.css")).should.eql(["css?{\"modules\":1}"]); + expect(match(loader, "style.css")).toEqual(["css?{\"modules\":1}"]); }); it("should work with using array loaders with basic object notation", () => { @@ -219,11 +219,11 @@ describe("RuleSet", () => { loader: "css" }] }]); - (match(loader, "style.css")).should.eql(["css"]); + expect(match(loader, "style.css")).toEqual(["css"]); }); it("should throw if using array loaders with object notation without specifying a loader", () => { - should.throws(() => { + expect(() => { const loader = new RuleSet([{ test: /\.css$/, loaders: [{ @@ -231,7 +231,7 @@ describe("RuleSet", () => { }] }]); match(loader, "style.css"); - }, /No loader specified/); + }).toThrow(/No loader specified/); }); it("should work with using array loaders with object notation", () => { @@ -242,7 +242,7 @@ describe("RuleSet", () => { query: "modules=1" }] }]); - (match(loader, "style.css")).should.eql(["css?modules=1"]); + expect(match(loader, "style.css")).toEqual(["css?modules=1"]); }); it("should work with using multiple array loaders with object notation", () => { @@ -256,7 +256,7 @@ describe("RuleSet", () => { query: "modules=1" }] }]); - (match(loader, "style.css")).should.eql(["style?filesize=1000", "css?modules=1"]); + expect(match(loader, "style.css")).toEqual(["style?filesize=1000", "css?modules=1"]); }); it("should work with using string multiple loaders", () => { @@ -264,18 +264,18 @@ describe("RuleSet", () => { test: /\.css$/, loaders: "style?filesize=1000!css?modules=1" }]); - (match(loader, "style.css")).should.eql(["style?filesize=1000", "css?modules=1"]); + expect(match(loader, "style.css")).toEqual(["style?filesize=1000", "css?modules=1"]); }); it("should throw if using array loaders with a single legacy", () => { - should.throws(() => { + expect(() => { const loader = new RuleSet([{ test: /\.css$/, loaders: ["style-loader", "css-loader"], query: "modules=1" }]); - (match(loader, "style.css")).should.eql(["css"]); - }, /options\/query cannot be used with loaders/); + match(loader, "style.css"); + }).toThrow(/options\/query cannot be used with loaders/); }); it("should work when using array loaders", () => { @@ -283,7 +283,7 @@ describe("RuleSet", () => { test: /\.css$/, loaders: ["style-loader", "css-loader"] }]); - (match(loader, "style.css")).should.eql(["style-loader", "css-loader"]); + expect(match(loader, "style.css")).toEqual(["style-loader", "css-loader"]); }); it("should work when using an array of functions returning a loader", () => { @@ -302,7 +302,7 @@ describe("RuleSet", () => { }, ] }]); - (match(loader, "style.css")).should.eql(["style-loader", "css-loader"]); + expect(match(loader, "style.css")).toEqual(["style-loader", "css-loader"]); }); it("should work when using an array of either functions or strings returning a loader", () => { @@ -317,7 +317,7 @@ describe("RuleSet", () => { }, ] }]); - (match(loader, "style.css")).should.eql(["style-loader", "css-loader"]); + expect(match(loader, "style.css")).toEqual(["style-loader", "css-loader"]); }); it("should work when using an array of functions returning either a loader obejct or loader name string", () => { @@ -334,33 +334,31 @@ describe("RuleSet", () => { }, ] }]); - (match(loader, "style.css")).should.eql(["style-loader", "css-loader"]); + expect(match(loader, "style.css")).toEqual(["style-loader", "css-loader"]); }); it("should throw if using array loaders with invalid type", () => { - should.throws(() => { + expect(() => { const loader = new RuleSet([{ test: /\.css$/, loaders: ["style-loader", "css-loader", 5], }]); - (match(loader, "style.css")).should.eql(["css"]); - }, /No loader specified/); + match(loader, "style.css"); + }).toThrow(/No loader specified/); }); describe("when exclude array holds an undefined item", () => { function errorHasContext(err) { - if(/Expected condition but got falsy value/.test(err) && + return /Expected condition but got falsy value/.test(err) && /test/.test(err) && /include/.test(err) && /exclude/.test(err) && /node_modules/.test(err) && - /undefined/.test(err)) { - return true; - } + /undefined/.test(err); } it("should throw with context", () => { - should.throws(() => { + try { const loader = new RuleSet([{ test: /\.css$/, loader: "css", @@ -372,11 +370,14 @@ describe("RuleSet", () => { undefined, ], }]); - (match(loader, "style.css")).should.eql(["css"]); - }, errorHasContext); + match(loader, "style.css"); + throw new Error("unreachable"); + } catch(e) { + expect(errorHasContext(e.message)).toBe(true); + } }); it("in resource should throw with context", () => { - should.throws(() => { + try { const loader = new RuleSet([{ resource: { test: /\.css$/, @@ -389,12 +390,14 @@ describe("RuleSet", () => { ], }, }]); - (match(loader, "style.css")).should.eql(["css"]); - }, errorHasContext); + match(loader, "style.css"); + throw new Error("unreachable"); + } catch(e) { + expect(errorHasContext(e.message)).toBe(true); + } }); - it("in issuer should throw with context", () => { - should.throws(() => { + try { const loader = new RuleSet([{ issuer: { test: /\.css$/, @@ -407,8 +410,11 @@ describe("RuleSet", () => { ], }, }]); - (match(loader, "style.css")).should.eql(["css"]); - }, errorHasContext); + match(loader, "style.css"); + throw new Error("unreachable"); + } catch(e) { + expect(errorHasContext(e.message)).toBe(true); + } }); }); }); diff --git a/test/SizeFormatHelpers.unittest.js b/test/SizeFormatHelpers.unittest.js index 988a02624..6e4e87fa8 100644 --- a/test/SizeFormatHelpers.unittest.js +++ b/test/SizeFormatHelpers.unittest.js @@ -1,41 +1,40 @@ /* globals describe, it, beforeEach */ "use strict"; -const should = require("should"); const SizeFormatHelpers = require("../lib/SizeFormatHelpers"); describe("SizeFormatHelpers", () => { describe("formatSize", () => { it("should handle zero size", () => { - should(SizeFormatHelpers.formatSize(0)).be.eql("0 bytes"); + expect(SizeFormatHelpers.formatSize(0)).toBe("0 bytes"); }); it("should handle bytes", () => { - should(SizeFormatHelpers.formatSize(1000)).be.eql("1000 bytes"); + expect(SizeFormatHelpers.formatSize(1000)).toBe("1000 bytes"); }); it("should handle integer kibibytes", () => { - should(SizeFormatHelpers.formatSize(2048)).be.eql("2 KiB"); + expect(SizeFormatHelpers.formatSize(2048)).toBe("2 KiB"); }); it("should handle float kibibytes", () => { - should(SizeFormatHelpers.formatSize(2560)).be.eql("2.5 KiB"); + expect(SizeFormatHelpers.formatSize(2560)).toBe("2.5 KiB"); }); it("should handle integer mebibytes", () => { - should(SizeFormatHelpers.formatSize(10 * 1024 * 1024)).be.eql("10 MiB"); + expect(SizeFormatHelpers.formatSize(10 * 1024 * 1024)).toBe("10 MiB"); }); it("should handle float mebibytes", () => { - should(SizeFormatHelpers.formatSize(12.5 * 1024 * 1024)).be.eql("12.5 MiB"); + expect(SizeFormatHelpers.formatSize(12.5 * 1024 * 1024)).toBe("12.5 MiB"); }); it("should handle integer gibibytes", () => { - should(SizeFormatHelpers.formatSize(3 * 1024 * 1024 * 1024)).be.eql("3 GiB"); + expect(SizeFormatHelpers.formatSize(3 * 1024 * 1024 * 1024)).toBe("3 GiB"); }); it("should handle float gibibytes", () => { - should(SizeFormatHelpers.formatSize(1.2 * 1024 * 1024 * 1024)).be.eql("1.2 GiB"); + expect(SizeFormatHelpers.formatSize(1.2 * 1024 * 1024 * 1024)).toBe("1.2 GiB"); }); }); }); diff --git a/test/SortableSet.unittest.js b/test/SortableSet.unittest.js index 7bc73584e..66968c3b3 100644 --- a/test/SortableSet.unittest.js +++ b/test/SortableSet.unittest.js @@ -6,7 +6,7 @@ const SortableSet = require("../lib/util/SortableSet"); describe("util/SortableSet", () => { it("Can be constructed like a normal Set", () => { const sortableSet = new SortableSet([1, 1, 1, 1, 1, 4, 5, 2], () => {}); - Array.from(sortableSet).should.eql([1, 4, 5, 2]); + expect(Array.from(sortableSet)).toEqual([1, 4, 5, 2]); }); it("Can sort its content", () => { @@ -15,7 +15,7 @@ describe("util/SortableSet", () => { (a, b) => a - b ); sortableSet.sort(); - Array.from(sortableSet).should.eql([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); + expect(Array.from(sortableSet)).toEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); }); it("Can sort by a specified function", () => { @@ -24,6 +24,6 @@ describe("util/SortableSet", () => { (a, b) => a - b ); sortableSet.sortWith((a, b) => b - a); - Array.from(sortableSet).should.eql([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]); + expect(Array.from(sortableSet)).toEqual([9, 8, 7, 6, 5, 4, 3, 2, 1, 0]); }); }); diff --git a/test/SourceMapDevToolModuleOptionsPlugin.unittest.js b/test/SourceMapDevToolModuleOptionsPlugin.unittest.js index 0fb476589..c7cb99c69 100644 --- a/test/SourceMapDevToolModuleOptionsPlugin.unittest.js +++ b/test/SourceMapDevToolModuleOptionsPlugin.unittest.js @@ -1,6 +1,5 @@ "use strict"; -require("should"); const SourceMapDevToolModuleOptionsPlugin = require("../lib/SourceMapDevToolModuleOptionsPlugin"); const applyPluginWithOptions = require("./helpers/applyPluginWithOptions"); @@ -8,35 +7,44 @@ describe("SourceMapDevToolModuleOptionsPlugin", () => { describe("when applied", () => { let eventBindings; - beforeEach(() => eventBindings = undefined); + beforeEach(() => { + eventBindings = undefined; + }); describe("with module false and line-to-line false", () => { - beforeEach(() => + beforeEach(() => { eventBindings = applyPluginWithOptions(SourceMapDevToolModuleOptionsPlugin, { module: false, lineToLine: false - })); + }); + }); - it("does not bind any event handlers", () => eventBindings.length.should.be.exactly(0)); + it("does not bind any event handlers", () => { + expect(eventBindings.length).toBe(0); + }); }); describe("with module true", () => { - beforeEach(() => + beforeEach(() => { eventBindings = applyPluginWithOptions(SourceMapDevToolModuleOptionsPlugin, { module: true, lineToLine: false - })); + }); + }); - it("binds one event handler", () => eventBindings.length.should.be.exactly(1)); + it("binds one event handler", () => { + expect(eventBindings.length).toBe(1); + }); describe("event handler", () => { - it("binds to build-module event", () => - eventBindings[0].name.should.be.exactly("build-module")); + it("binds to build-module event", () => { + expect(eventBindings[0].name).toBe("build-module"); + }); it("sets source map flag", () => { const module = {}; eventBindings[0].handler(module); - module.should.deepEqual({ + expect(module).toEqual({ useSourceMap: true }); }); @@ -50,15 +58,19 @@ describe("SourceMapDevToolModuleOptionsPlugin", () => { lineToLine: true })); - it("binds one event handler", () => eventBindings.length.should.be.exactly(1)); + it("binds one event handler", () => { + expect(eventBindings.length).toBe(1); + }); describe("event handler", () => { - it("binds to build-module event", () => eventBindings[0].name.should.be.exactly("build-module")); + it("binds to build-module event", () => { + expect(eventBindings[0].name).toBe("build-module"); + }); it("sets line-to-line flag", () => { const module = {}; eventBindings[0].handler(module); - module.should.deepEqual({ + expect(module).toEqual({ lineToLine: true }); }); @@ -66,22 +78,27 @@ describe("SourceMapDevToolModuleOptionsPlugin", () => { }); describe("with line-to-line object", () => { - beforeEach(() => + beforeEach(() => { eventBindings = applyPluginWithOptions(SourceMapDevToolModuleOptionsPlugin, { module: false, lineToLine: {} - })); + }); + }); - it("binds one event handler", () => eventBindings.length.should.be.exactly(1)); + it("binds one event handler", () => { + expect(eventBindings.length).toBe(1); + }); describe("event handler", () => { - it("binds to build-module event", () => eventBindings[0].name.should.be.exactly("build-module")); + it("binds to build-module event", () => { + expect(eventBindings[0].name).toBe("build-module"); + }); describe("when module has no resource", () => { it("makes no changes", () => { const module = {}; eventBindings[0].handler(module); - module.should.deepEqual({}); + expect(module).toEqual({}); }); }); @@ -91,7 +108,7 @@ describe("SourceMapDevToolModuleOptionsPlugin", () => { resource: "foo" }; eventBindings[0].handler(module); - module.should.deepEqual({ + expect(module).toEqual({ lineToLine: true, resource: "foo" }); @@ -104,7 +121,7 @@ describe("SourceMapDevToolModuleOptionsPlugin", () => { resource: "foo?bar" }; eventBindings[0].handler(module); - module.should.deepEqual({ + expect(module).toEqual({ lineToLine: true, resource: "foo?bar" }); diff --git a/test/Stats.unittest.js b/test/Stats.unittest.js index dcd9e9d19..52c150dd2 100644 --- a/test/Stats.unittest.js +++ b/test/Stats.unittest.js @@ -1,8 +1,6 @@ /*globals describe it */ "use strict"; -require("should"); - const Stats = require("../lib/Stats"); describe("Stats", () => { @@ -17,7 +15,7 @@ describe("Stats", () => { context: "" } }); - mockStats.hasErrors().should.be.ok(); + expect(mockStats.hasErrors()).toBe(true); }); it("hasWarnings", () => { const mockStats = new Stats({ @@ -28,7 +26,7 @@ describe("Stats", () => { context: "" } }); - mockStats.hasWarnings().should.be.ok(); + expect(mockStats.hasWarnings()).toBe(true); }); }); describe("does not have", () => { @@ -41,7 +39,7 @@ describe("Stats", () => { context: "" } }); - mockStats.hasErrors().should.not.be.ok(); + expect(mockStats.hasErrors()).toBe(false); }); it("hasWarnings", () => { const mockStats = new Stats({ @@ -52,7 +50,7 @@ describe("Stats", () => { context: "" } }); - mockStats.hasWarnings().should.not.be.ok(); + expect(mockStats.hasWarnings()).toBe(false); }); }); describe("children have", () => { @@ -67,7 +65,7 @@ describe("Stats", () => { errors: [], hash: "1234" }); - mockStats.hasErrors().should.be.ok(); + expect(mockStats.hasErrors()).toBe(true); }); it("hasWarnings", () => { const mockStats = new Stats({ @@ -80,7 +78,7 @@ describe("Stats", () => { warnings: [], hash: "1234" }); - mockStats.hasWarnings().should.be.ok(); + expect(mockStats.hasWarnings()).toBe(true); }); }); it("formatError handles string errors", () => { @@ -101,35 +99,35 @@ describe("Stats", () => { } }); const obj = mockStats.toJson(); - obj.errors[0].should.be.equal("firstError"); + expect(obj.errors[0]).toEqual("firstError"); }); }); describe("Presets", () => { describe("presetToOptions", () => { it("returns correct object with 'Normal'", () => { - Stats.presetToOptions("Normal").should.eql({}); + expect(Stats.presetToOptions("Normal")).toEqual({}); }); it("truthy values behave as 'normal'", () => { const normalOpts = Stats.presetToOptions("normal"); - Stats.presetToOptions("pizza").should.eql(normalOpts); - Stats.presetToOptions(true).should.eql(normalOpts); - Stats.presetToOptions(1).should.eql(normalOpts); + expect(Stats.presetToOptions("pizza")).toEqual(normalOpts); + expect(Stats.presetToOptions(true)).toEqual(normalOpts); + expect(Stats.presetToOptions(1)).toEqual(normalOpts); - Stats.presetToOptions("verbose").should.not.eql(normalOpts); - Stats.presetToOptions(false).should.not.eql(normalOpts); + expect(Stats.presetToOptions("verbose")).not.toEqual(normalOpts); + expect(Stats.presetToOptions(false)).not.toEqual(normalOpts); }); it("returns correct object with 'none'", () => { - Stats.presetToOptions("none").should.eql({ + expect(Stats.presetToOptions("none")).toEqual({ all: false }); }); it("falsy values behave as 'none'", () => { const noneOpts = Stats.presetToOptions("none"); - Stats.presetToOptions("").should.eql(noneOpts); - Stats.presetToOptions(null).should.eql(noneOpts); - Stats.presetToOptions().should.eql(noneOpts); - Stats.presetToOptions(0).should.eql(noneOpts); - Stats.presetToOptions(false).should.eql(noneOpts); + expect(Stats.presetToOptions("")).toEqual(noneOpts); + expect(Stats.presetToOptions(null)).toEqual(noneOpts); + expect(Stats.presetToOptions()).toEqual(noneOpts); + expect(Stats.presetToOptions(0)).toEqual(noneOpts); + expect(Stats.presetToOptions(false)).toEqual(noneOpts); }); }); }); diff --git a/test/Template.unittest.js b/test/Template.unittest.js index 6a5a7c6a6..20c4b91d5 100644 --- a/test/Template.unittest.js +++ b/test/Template.unittest.js @@ -1,27 +1,22 @@ "use strict"; -require("should"); - const Template = require("../lib/Template"); describe("Template", () => { - it("should generate valid identifiers", () => - Template.toIdentifier("0abc-def9").should.equal("_0abc_def9")); + it("should generate valid identifiers", () => { + expect(Template.toIdentifier("0abc-def9")).toBe("_0abc_def9"); + }); it("should generate valid number identifiers", () => { const items = []; let item; for(let i = 0; i < 80; i += 1) { item = Template.numberToIdentifer(i); - if(item === "") { - throw new Error("empty number identifier"); - } else if(items.indexOf(item) > -1) { - throw new Error("duplicate number identifier"); - } else { - items.push(item); - } + expect(item).not.toBe(""); + expect(items).not.toContain(item); + items.push(item); } }); it("should generate sanitized path identifiers", () => { - Template.toPath("path/to-sdfas/sadfome$$.js").should.equal("path-to-sdfas-sadfome$$-js"); + expect(Template.toPath("path/to-sdfas/sadfome$$.js")).toBe("path-to-sdfas-sadfome$$-js"); }); }); diff --git a/test/WebEnvironmentPlugin.unittest.js b/test/WebEnvironmentPlugin.unittest.js index 1cd44db05..4e1323b19 100644 --- a/test/WebEnvironmentPlugin.unittest.js +++ b/test/WebEnvironmentPlugin.unittest.js @@ -1,23 +1,18 @@ "use strict"; -const should = require("should"); const WebEnvironmentPlugin = require("../lib/web/WebEnvironmentPlugin"); describe("WebEnvironmentPlugin", () => { - let WebEnvironmentPluginInstance; - - before(() => WebEnvironmentPluginInstance = new WebEnvironmentPlugin("inputFileSystem", "outputFileSystem")); - describe("apply", () => { - let compileSpy; - before(() => { - compileSpy = { - outputFileSystem: "otherOutputFileSystem" - }; - WebEnvironmentPluginInstance.apply(compileSpy); - }); + const WebEnvironmentPluginInstance = new WebEnvironmentPlugin("inputFileSystem", "outputFileSystem"); + const compileSpy = { + outputFileSystem: "otherOutputFileSystem" + }; - it("should set compiler.outputFileSystem information with the same as setted in WebEnvironmentPlugin", () => - should(compileSpy.outputFileSystem).be.eql(WebEnvironmentPluginInstance.outputFileSystem)); + WebEnvironmentPluginInstance.apply(compileSpy); + + it("should set compiler.outputFileSystem information with the same as setted in WebEnvironmentPlugin", () => { + expect(compileSpy.outputFileSystem).toBe(WebEnvironmentPluginInstance.outputFileSystem); + }); }); }); diff --git a/test/WebpackError.unittest.js b/test/WebpackError.unittest.js index f52692e4b..cbf90fab4 100644 --- a/test/WebpackError.unittest.js +++ b/test/WebpackError.unittest.js @@ -1,8 +1,8 @@ "use strict"; +const path = require("path"); const util = require("util"); -require("should"); const WebpackError = require("../lib/WebpackError"); describe("WebpackError", () => { @@ -18,12 +18,12 @@ describe("WebpackError", () => { } } - it("Should provide inspect method for use by for util.inspect", function() { + it("Should provide inspect method for use by for util.inspect", () => { const errorStr = util.inspect(new CustomError("Message")); const errorArr = errorStr.split("\n"); - errorArr[0].should.equal("CustomError: CustomMessage"); - errorArr[1].should.containEql("WebpackError.unittest.js"); - errorArr[errorArr.length - 1].should.equal("CustomDetails"); + expect(errorArr[0]).toBe("CustomError: CustomMessage"); + expect(errorArr[1]).toMatch(path.basename(__filename)); + expect(errorArr[errorArr.length - 1]).toBe("CustomDetails"); }); }); diff --git a/test/WebpackMissingModule.unittest.js b/test/WebpackMissingModule.unittest.js index ce82d7771..cf2023836 100644 --- a/test/WebpackMissingModule.unittest.js +++ b/test/WebpackMissingModule.unittest.js @@ -1,28 +1,27 @@ /* globals describe, it */ "use strict"; -const should = require("should"); const WebpackMissingModule = require("../lib/dependencies/WebpackMissingModule"); describe("WebpackMissingModule", () => { describe("#moduleCode", () => { it("returns an error message based on given error message", () => { const errorMessage = WebpackMissingModule.moduleCode("mock message"); - should(errorMessage).be.eql("var e = new Error(\"Cannot find module \\\"mock message\\\"\"); e.code = 'MODULE_NOT_FOUND'; throw e;"); + expect(errorMessage).toBe("var e = new Error(\"Cannot find module \\\"mock message\\\"\"); e.code = 'MODULE_NOT_FOUND'; throw e;"); }); }); describe("#promise", () => { it("returns an error message based on given error message", () => { const errorMessage = WebpackMissingModule.promise("mock message"); - should(errorMessage).be.eql("Promise.reject(function webpackMissingModule() { var e = new Error(\"Cannot find module \\\"mock message\\\"\"); e.code = 'MODULE_NOT_FOUND'; return e; }())"); + expect(errorMessage).toBe("Promise.reject(function webpackMissingModule() { var e = new Error(\"Cannot find module \\\"mock message\\\"\"); e.code = 'MODULE_NOT_FOUND'; return e; }())"); }); }); describe("#module", () => { it("returns an error message based on given error message", () => { const errorMessage = WebpackMissingModule.module("mock message"); - should(errorMessage).be.eql("!(function webpackMissingModule() { var e = new Error(\"Cannot find module \\\"mock message\\\"\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())"); + expect(errorMessage).toBe("!(function webpackMissingModule() { var e = new Error(\"Cannot find module \\\"mock message\\\"\"); e.code = 'MODULE_NOT_FOUND'; throw e; }())"); }); }); }); diff --git a/test/compareLocations.unittest.js b/test/compareLocations.unittest.js index c378182aa..55ddd1728 100644 --- a/test/compareLocations.unittest.js +++ b/test/compareLocations.unittest.js @@ -1,15 +1,14 @@ "use strict"; -const should = require("should"); const compareLocations = require("../lib/compareLocations"); -const createPosition = function(overides) { +const createPosition = (overides) => { return Object.assign({ line: 10, column: 5 }, overides); }; -const createLocation = function(start, end, index) { +const createLocation = (start, end, index) => { return { start: createPosition(start), end: createPosition(end), @@ -19,14 +18,17 @@ const createLocation = function(start, end, index) { describe("compareLocations", () => { describe("string location comparison", () => { - it("returns -1 when the first string comes before the second string", () => - compareLocations("alpha", "beta").should.be.exactly(-1)); + it("returns -1 when the first string comes before the second string", () => { + expect(compareLocations("alpha", "beta")).toBe(-1); + }); - it("returns 1 when the first string comes after the second string", () => - compareLocations("beta", "alpha").should.be.exactly(1)); + it("returns 1 when the first string comes after the second string", () => { + expect(compareLocations("beta", "alpha")).toBe(1); + }); - it("returns 0 when the first string is the same as the second string", () => - compareLocations("charlie", "charlie").should.be.exactly(0)); + it("returns 0 when the first string is the same as the second string", () => { + expect(compareLocations("charlie", "charlie")).toBe(0); + }); }); describe("object location comparison", () => { @@ -43,11 +45,12 @@ describe("compareLocations", () => { }); it("returns -1 when the first location line number comes before the second location line number", () => { - return compareLocations(a, b).should.be.exactly(-1); + expect(compareLocations(a, b)).toBe(-1); }); - it("returns 1 when the first location line number comes after the second location line number", () => - compareLocations(b, a).should.be.exactly(1)); + it("returns 1 when the first location line number comes after the second location line number", () => { + expect(compareLocations(b, a)).toBe(1); + }); }); describe("location column number", () => { @@ -60,11 +63,13 @@ describe("compareLocations", () => { }); }); - it("returns -1 when the first location column number comes before the second location column number", () => - compareLocations(a, b).should.be.exactly(-1)); + it("returns -1 when the first location column number comes before the second location column number", () => { + expect(compareLocations(a, b)).toBe(-1); + }); - it("returns 1 when the first location column number comes after the second location column number", () => - compareLocations(b, a).should.be.exactly(1)); + it("returns 1 when the first location column number comes after the second location column number", () => { + expect(compareLocations(b, a)).toBe(1); + }); }); describe("location index number", () => { @@ -73,11 +78,13 @@ describe("compareLocations", () => { b = createLocation(null, null, 20); }); - it("returns -1 when the first location index number comes before the second location index number", () => - compareLocations(a, b).should.be.exactly(-1)); + it("returns -1 when the first location index number comes before the second location index number", () => { + expect(compareLocations(a, b)).toBe(-1); + }); - it("returns 1 when the first location index number comes after the second location index number", () => - compareLocations(b, a).should.be.exactly(1)); + it("returns 1 when the first location index number comes after the second location index number", () => { + expect(compareLocations(b, a)).toBe(1); + }); }); describe("same location", () => { @@ -87,34 +94,40 @@ describe("compareLocations", () => { }); it("returns 0", () => { - compareLocations(a, b).should.be.exactly(0); + expect(compareLocations(a, b)).toBe(0); }); }); }); describe("string and object location comparison", () => { - it("returns 1 when the first parameter is a string and the second parameter is an object", () => - compareLocations("alpha", createLocation()).should.be.exactly(1)); + it("returns 1 when the first parameter is a string and the second parameter is an object", () => { + expect(compareLocations("alpha", createLocation())).toBe(1); + }); - it("returns -1 when the first parameter is an object and the second parameter is a string", () => - compareLocations(createLocation(), "alpha").should.be.exactly(-1)); + it("returns -1 when the first parameter is an object and the second parameter is a string", () => { + expect(compareLocations(createLocation(), "alpha")).toBe(-1); + }); }); describe("unknown location type comparison", () => { - it("returns 0 when the first parameter is an object and the second parameter is a number", () => - compareLocations(createLocation(), 123).should.be.exactly(0)); + it("returns 0 when the first parameter is an object and the second parameter is a number", () => { + expect(compareLocations(createLocation(), 123)).toBe(0); + }); - it("returns undefined when the first parameter is a number and the second parameter is an object", () => - should(compareLocations(123, createLocation())).be.undefined()); + it("returns undefined when the first parameter is a number and the second parameter is an object", () => { + expect(compareLocations(123, createLocation())).toBe(undefined); + }); - it("returns 0 when the first parameter is a string and the second parameter is a number", () => - compareLocations("alpha", 123).should.be.exactly(0)); + it("returns 0 when the first parameter is a string and the second parameter is a number", () => { + expect(compareLocations("alpha", 123)).toBe(0); + }); - it("returns undefined when the first parameter is a number and the second parameter is a string", () => - should(compareLocations(123, "alpha")).be.undefined()); - - it("returns undefined when both the first parameter and the second parameter is a number", () => - should(compareLocations(123, 456)).be.undefined()); + it("returns undefined when the first parameter is a number and the second parameter is a string", () => { + expect(compareLocations(123, "alpha")).toBe(undefined); + }); + it("returns undefined when both the first parameter and the second parameter is a number", () => { + expect(compareLocations(123, 456)).toBe(undefined); + }); }); }); diff --git a/test/formatLocation.unittest.js b/test/formatLocation.unittest.js index 6fe04edf8..0fc3415fc 100644 --- a/test/formatLocation.unittest.js +++ b/test/formatLocation.unittest.js @@ -1,6 +1,5 @@ "use strict"; -require("should"); const formatLocation = require("../lib/formatLocation"); describe("formatLocation", () => { @@ -90,7 +89,7 @@ describe("formatLocation", () => { }]; testCases.forEach(testCase => { it(`should format location correctly for ${testCase.name}`, () => { - formatLocation(testCase.loc).should.be.eql(testCase.result); + expect(formatLocation(testCase.loc)).toEqual(testCase.result); }); }); }); diff --git a/test/identifier.unittest.js b/test/identifier.unittest.js index 6a2b15c3d..4d155e1dd 100644 --- a/test/identifier.unittest.js +++ b/test/identifier.unittest.js @@ -1,8 +1,6 @@ /* globals describe, beforeEach, it */ "use strict"; -const should = require("should"); - const identifierUtil = require("../lib/util/identifier"); describe("util/identifier", () => { @@ -16,7 +14,7 @@ describe("util/identifier", () => { }); it("computes the correct relative results for the path construct", () => { - should(identifierUtil.makePathsRelative(context, pathConstruct)).be.exactly(expected); + expect(identifierUtil.makePathsRelative(context, pathConstruct)).toBe(expected); }); }); }); diff --git a/test/objectToMap.unittest.js b/test/objectToMap.unittest.js index c0f1aff7b..3b8f70e8b 100644 --- a/test/objectToMap.unittest.js +++ b/test/objectToMap.unittest.js @@ -1,17 +1,15 @@ /* globals describe it */ -require("should"); - var objectToMap = require("../lib/util/objectToMap"); -describe("objectToMap", function() { - it("should convert a plain object into a Map successfully", function() { +describe("objectToMap", () => { + it("should convert a plain object into a Map successfully", () => { const map = objectToMap({ foo: "bar", bar: "baz" }); - map.get("foo").should.eql("bar"); - map.get("bar").should.eql("baz"); + expect(map.get("foo")).toBe("bar"); + expect(map.get("bar")).toBe("baz"); }); }); diff --git a/yarn.lock b/yarn.lock index 555ea00d5..96f4565d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,18 @@ # yarn lockfile v1 +"@babel/code-frame@^7.0.0-beta.35": + version "7.0.0-beta.38" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.38.tgz#c0af5930617e55e050336838e3a3670983b0b2b2" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + +abab@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -29,6 +41,12 @@ acorn-globals@^1.0.3: dependencies: acorn "^2.1.0" +acorn-globals@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538" + dependencies: + acorn "^5.0.0" + acorn-jsx@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" @@ -47,7 +65,7 @@ acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" -acorn@^5.0.0, acorn@^5.2.1: +acorn@^5.0.0, acorn@^5.2.1, acorn@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822" @@ -103,7 +121,7 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0: +ansi-styles@^3.1.0, ansi-styles@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: @@ -116,6 +134,12 @@ anymatch@^1.3.0: micromatch "^2.1.5" normalize-path "^2.0.0" +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -143,6 +167,10 @@ arr-flatten@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -161,7 +189,7 @@ array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" -arrify@^1.0.0: +arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -199,15 +227,23 @@ assert@^1.1.1: dependencies: util "0.10.3" +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" +async-limiter@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + async@1.x, async@^1.4.0, async@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.1.2: +async@^2.1.2, async@^2.1.4: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: @@ -240,7 +276,7 @@ aws4@^1.2.1, aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-code-frame@^6.11.0, babel-code-frame@^6.22.0: +babel-code-frame@^6.11.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -248,6 +284,142 @@ babel-code-frame@^6.11.0, babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.2" +babel-core@^6.0.0, babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + 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.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-generator@^6.18.0, babel-generator@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" + 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.6" + trim-right "^1.0.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-jest@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.1.0.tgz#7fae6f655fffe77e818a8c2868c754a42463fdfd" + dependencies: + babel-plugin-istanbul "^4.1.5" + babel-preset-jest "^22.1.0" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-istanbul@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e" + dependencies: + find-up "^2.1.0" + istanbul-lib-instrument "^1.7.5" + test-exclude "^4.1.1" + +babel-plugin-jest-hoist@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.1.0.tgz#c1281dd7887d77a1711dc760468c3b8285dde9ee" + +babel-plugin-syntax-object-rest-spread@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-preset-jest@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.1.0.tgz#ff4e704102f9642765e2254226050561d8942ec9" + dependencies: + babel-plugin-jest-hoist "^22.1.0" + babel-plugin-syntax-object-rest-spread "^6.13.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + 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.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + 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.18.0, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + 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.18.0, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + balanced-match@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" @@ -345,6 +517,16 @@ brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" +browser-process-hrtime@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" + +browser-resolve@^1.11.2: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" @@ -408,6 +590,12 @@ browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: caniuse-db "^1.0.30000639" electron-to-chromium "^1.2.7" +bser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + dependencies: + node-int64 "^0.4.0" + buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -420,6 +608,10 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -458,10 +650,18 @@ callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + caniuse-api@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" @@ -500,7 +700,7 @@ chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" dependencies: @@ -539,6 +739,10 @@ chrome-trace-event@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-0.1.1.tgz#651f4d115902160b0b33aca136574b17d1519c98" +ci-info@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.2.tgz#03561259db48d0474c8bdc90f5b47b068b6bbfb4" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -581,6 +785,14 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" +cliui@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + clone@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.3.tgz#298d7e2231660f40c003c2ed3140decf3f53085f" @@ -734,10 +946,18 @@ content-disposition@0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b" +content-type-parser@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" + content-type@~1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" +convert-source-map@^1.4.0, convert-source-map@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -761,6 +981,10 @@ core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" +core-js@^2.4.0, core-js@^2.5.0: + version "2.5.3" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -810,7 +1034,7 @@ create-react-class@^15.6.0: loose-envify "^1.3.1" object-assign "^4.1.1" -cross-spawn@^5.1.0: +cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" dependencies: @@ -940,6 +1164,16 @@ csso@~2.3.1: clap "^1.0.9" source-map "^0.5.3" +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" + +"cssstyle@>= 0.2.37 < 0.3.0": + version "0.2.37" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" + dependencies: + cssom "0.3.x" + cuint@latest: version "0.2.2" resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" @@ -964,7 +1198,7 @@ debug@2.6.8: dependencies: ms "2.0.0" -debug@^2.2.0: +debug@^2.2.0, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -982,7 +1216,7 @@ debug@~2.2.0: dependencies: ms "0.7.1" -decamelize@^1.0.0, decamelize@^1.1.2: +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -994,6 +1228,19 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + dependencies: + strip-bom "^2.0.0" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" @@ -1033,10 +1280,20 @@ destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + diff@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" @@ -1045,7 +1302,7 @@ diff@^2.2.1: version "2.2.3" resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" -diff@^3.1.0: +diff@^3.1.0, diff@^3.2.0: version "3.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.4.0.tgz#b1d85507daf3964828de54b37d0d73ba67dda56c" @@ -1067,6 +1324,12 @@ domain-browser@^1.1.1: version "1.1.7" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" +domexception@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + dependencies: + webidl-conversions "^4.0.2" + duplexify@^3.1.2, duplexify@^3.4.2: version "3.5.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.5.1.tgz#4e1516be68838bc90a49994f0b39a6e5960befcd" @@ -1148,6 +1411,30 @@ errno@^0.1.1, errno@^0.1.3, errno@^0.1.4: dependencies: prr "~1.0.1" +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.5.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + es6-promise-polyfill@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz#f38925f23cb3e3e8ce6cda8ff774fcebbb090cde" @@ -1171,6 +1458,17 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" +escodegen@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.5.6" + eslint-plugin-node@^5.1.1: version "5.2.1" resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz#80df3253c4d7901045ec87fa660a284e32bdca29" @@ -1244,6 +1542,10 @@ esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + esprima@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" @@ -1265,7 +1567,7 @@ estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" @@ -1288,6 +1590,28 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +exec-sh@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" + dependencies: + merge "^1.1.3" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.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" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -1300,6 +1624,17 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" +expect@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-22.1.0.tgz#f8f9b019ab275d859cbefed531fbaefe8972431d" + dependencies: + ansi-styles "^3.2.0" + jest-diff "^22.1.0" + jest-get-type "^22.1.0" + jest-matcher-utils "^22.1.0" + jest-message-util "^22.1.0" + jest-regex-util "^22.1.0" + express@~4.13.1: version "4.13.4" resolved "https://registry.yarnpkg.com/express/-/express-4.13.4.tgz#3c0b76f3c77590c8345739061ec0bd3ba067ec24" @@ -1372,6 +1707,12 @@ fastparse@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8" +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + dependencies: + bser "^2.0.0" + fbjs@^0.8.16, fbjs@^0.8.9: version "0.8.16" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" @@ -1408,6 +1749,13 @@ filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" +fileset@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + dependencies: + glob "^7.0.3" + minimatch "^3.0.3" + fill-range@^2.1.0: version "2.2.3" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" @@ -1435,6 +1783,13 @@ find-cache-dir@^1.0.0: make-dir "^1.0.0" pkg-dir "^2.0.0" +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -1471,6 +1826,10 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -1525,7 +1884,7 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.0.0: +fsevents@^1.0.0, fsevents@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" dependencies: @@ -1549,7 +1908,7 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2: +function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -1580,6 +1939,14 @@ generate-object-property@^1.1.0: dependencies: is-property "^1.0.0" +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -1630,7 +1997,7 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -1645,6 +2012,10 @@ globals@^11.0.1: version "11.1.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.1.0.tgz#632644457f5f0e3ae711807183700ebf2e4633e4" +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -1668,7 +2039,11 @@ growl@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" -handlebars@^4.0.1: +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + +handlebars@^4.0.1, handlebars@^4.0.3: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" dependencies: @@ -1791,10 +2166,27 @@ hoek@4.x.x: version "4.2.0" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + html-comment-regex@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + dependencies: + whatwg-encoding "^1.0.1" + http-errors@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.3.1.tgz#197e22cdebd4198585e8694ef6786197b91ed942" @@ -1826,7 +2218,7 @@ i18n-webpack-plugin@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/i18n-webpack-plugin/-/i18n-webpack-plugin-1.0.0.tgz#0ca12296ec937a4f94325cd0264d08f4e0549831" -iconv-lite@^0.4.17, iconv-lite@~0.4.13: +iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -1856,6 +2248,13 @@ image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" +import-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -1906,6 +2305,16 @@ inquirer@^3.0.6: strip-ansi "^4.0.0" through "^2.3.6" +invariant@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + ipaddr.js@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.0.5.tgz#5fa78cf301b825c78abc3042d812723049ea23c7" @@ -1914,6 +2323,10 @@ is-absolute-url@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + is-binary-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" @@ -1924,6 +2337,26 @@ is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-ci@^1.0.10: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.1.0.tgz#247e4162e7860cebbdaf30b774d6b0ac7dcfe7a5" + dependencies: + ci-info "^1.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + is-dotfile@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" @@ -1942,6 +2375,12 @@ is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -1952,6 +2391,10 @@ is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" +is-generator-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" + is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -2019,11 +2462,17 @@ is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + is-resolvable@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.1.tgz#acca1cd36dbe44b974b924321555a70ba03b1cf4" -is-stream@^1.0.1: +is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -2033,10 +2482,18 @@ is-svg@^2.0.0: dependencies: html-comment-regex "^1.1.0" +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -2070,6 +2527,69 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +istanbul-api@^1.1.14: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620" + dependencies: + async "^2.1.4" + fileset "^2.0.2" + istanbul-lib-coverage "^1.1.1" + istanbul-lib-hook "^1.1.0" + istanbul-lib-instrument "^1.9.1" + istanbul-lib-report "^1.1.2" + istanbul-lib-source-maps "^1.2.2" + istanbul-reports "^1.1.3" + js-yaml "^3.7.0" + mkdirp "^0.5.1" + once "^1.4.0" + +istanbul-lib-coverage@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" + +istanbul-lib-hook@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b" + dependencies: + append-transform "^0.4.0" + +istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.8.0, istanbul-lib-instrument@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e" + dependencies: + 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.1.1" + semver "^5.3.0" + +istanbul-lib-report@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425" + dependencies: + istanbul-lib-coverage "^1.1.1" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.2.1, istanbul-lib-source-maps@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c" + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^1.1.1" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10" + dependencies: + handlebars "^4.0.3" + istanbul@^0.4.5: version "0.4.5" resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" @@ -2110,6 +2630,256 @@ jade@^1.11.0: void-elements "~2.0.1" with "~4.0.0" +jest-changed-files@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.1.4.tgz#1f7844bcb739dec07e5899a633c0cb6d5069834e" + dependencies: + throat "^4.0.0" + +jest-cli@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.1.4.tgz#0fe9f3ac881b0cdc00227114c58583a2ebefcc04" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.1.11" + import-local "^1.0.0" + is-ci "^1.0.10" + istanbul-api "^1.1.14" + istanbul-lib-coverage "^1.1.1" + istanbul-lib-instrument "^1.8.0" + istanbul-lib-source-maps "^1.2.1" + jest-changed-files "^22.1.4" + jest-config "^22.1.4" + jest-environment-jsdom "^22.1.4" + jest-get-type "^22.1.0" + jest-haste-map "^22.1.0" + jest-message-util "^22.1.0" + jest-regex-util "^22.1.0" + jest-resolve-dependencies "^22.1.0" + jest-runner "^22.1.4" + jest-runtime "^22.1.4" + jest-snapshot "^22.1.2" + jest-util "^22.1.4" + jest-worker "^22.1.0" + micromatch "^2.3.11" + node-notifier "^5.1.2" + realpath-native "^1.0.0" + rimraf "^2.5.4" + slash "^1.0.0" + string-length "^2.0.0" + strip-ansi "^4.0.0" + which "^1.2.12" + yargs "^10.0.3" + +jest-config@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.1.4.tgz#075ffacce83c3e38cf85b1b9ba0d21bd3ee27ad0" + dependencies: + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^22.1.4" + jest-environment-node "^22.1.4" + jest-get-type "^22.1.0" + jest-jasmine2 "^22.1.4" + jest-regex-util "^22.1.0" + jest-resolve "^22.1.4" + jest-util "^22.1.4" + jest-validate "^22.1.2" + pretty-format "^22.1.0" + +jest-diff@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.1.0.tgz#0fad9d96c87b453896bf939df3dc8aac6919ac38" + dependencies: + chalk "^2.0.1" + diff "^3.2.0" + jest-get-type "^22.1.0" + pretty-format "^22.1.0" + +jest-docblock@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.1.0.tgz#3fe5986d5444cbcb149746eb4b07c57c5a464dfd" + dependencies: + detect-newline "^2.1.0" + +jest-environment-jsdom@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.1.4.tgz#704518ce8375f7ec5de048d1e9c4268b08a03e00" + dependencies: + jest-mock "^22.1.0" + jest-util "^22.1.4" + jsdom "^11.5.1" + +jest-environment-node@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.1.4.tgz#0f2946e8f8686ce6c5d8fa280ce1cd8d58e869eb" + dependencies: + jest-mock "^22.1.0" + jest-util "^22.1.4" + +jest-get-type@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.1.0.tgz#4e90af298ed6181edc85d2da500dbd2753e0d5a9" + +jest-haste-map@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.1.0.tgz#1174c6ff393f9818ebf1163710d8868b5370da2a" + dependencies: + fb-watchman "^2.0.0" + graceful-fs "^4.1.11" + jest-docblock "^22.1.0" + jest-worker "^22.1.0" + micromatch "^2.3.11" + sane "^2.0.0" + +jest-jasmine2@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.1.4.tgz#cada0baf50a220c616a9575728b80d4ddedebe8b" + dependencies: + callsites "^2.0.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^22.1.0" + graceful-fs "^4.1.11" + is-generator-fn "^1.0.0" + jest-diff "^22.1.0" + jest-matcher-utils "^22.1.0" + jest-message-util "^22.1.0" + jest-snapshot "^22.1.2" + source-map-support "^0.5.0" + +jest-leak-detector@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.1.0.tgz#08376644cee07103da069baac19adb0299b772c2" + dependencies: + pretty-format "^22.1.0" + +jest-matcher-utils@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.1.0.tgz#e164665b5d313636ac29f7f6fe9ef0a6ce04febc" + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + pretty-format "^22.1.0" + +jest-message-util@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.1.0.tgz#51ba0794cb6e579bfc4e9adfac452f9f1a0293fc" + dependencies: + "@babel/code-frame" "^7.0.0-beta.35" + chalk "^2.0.1" + micromatch "^2.3.11" + slash "^1.0.0" + stack-utils "^1.0.1" + +jest-mock@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.1.0.tgz#87ec21c0599325671c9a23ad0e05c86fb5879b61" + +jest-regex-util@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.1.0.tgz#5daf2fe270074b6da63e5d85f1c9acc866768f53" + +jest-resolve-dependencies@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.1.0.tgz#340e4139fb13315cd43abc054e6c06136be51e31" + dependencies: + jest-regex-util "^22.1.0" + +jest-resolve@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.1.4.tgz#72b9b371eaac48f84aad4ad732222ffe37692602" + dependencies: + browser-resolve "^1.11.2" + chalk "^2.0.1" + +jest-runner@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.1.4.tgz#e039039110cb1b31febc0f99e349bf7c94304a2f" + dependencies: + exit "^0.1.2" + jest-config "^22.1.4" + jest-docblock "^22.1.0" + jest-haste-map "^22.1.0" + jest-jasmine2 "^22.1.4" + jest-leak-detector "^22.1.0" + jest-message-util "^22.1.0" + jest-runtime "^22.1.4" + jest-util "^22.1.4" + jest-worker "^22.1.0" + throat "^4.0.0" + +jest-runtime@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.1.4.tgz#1474d9f5cda518b702e0b25a17d4ef3fc563a20c" + dependencies: + babel-core "^6.0.0" + babel-jest "^22.1.0" + babel-plugin-istanbul "^4.1.5" + chalk "^2.0.1" + convert-source-map "^1.4.0" + exit "^0.1.2" + graceful-fs "^4.1.11" + jest-config "^22.1.4" + jest-haste-map "^22.1.0" + jest-regex-util "^22.1.0" + jest-resolve "^22.1.4" + jest-util "^22.1.4" + json-stable-stringify "^1.0.1" + micromatch "^2.3.11" + realpath-native "^1.0.0" + slash "^1.0.0" + strip-bom "3.0.0" + write-file-atomic "^2.1.0" + yargs "^10.0.3" + +jest-snapshot@^22.1.2: + version "22.1.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.1.2.tgz#b270cf6e3098f33aceeafda02b13eb0933dc6139" + dependencies: + chalk "^2.0.1" + jest-diff "^22.1.0" + jest-matcher-utils "^22.1.0" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^22.1.0" + +jest-util@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.1.4.tgz#ac8cbd43ee654102f1941f3f0e9d1d789a8b6a9b" + dependencies: + callsites "^2.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.11" + is-ci "^1.0.10" + jest-message-util "^22.1.0" + jest-validate "^22.1.2" + mkdirp "^0.5.1" + +jest-validate@^22.1.2: + version "22.1.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.1.2.tgz#c3b06bcba7bd9a850919fe336b5f2a8c3a239404" + dependencies: + chalk "^2.0.1" + jest-get-type "^22.1.0" + leven "^2.1.0" + pretty-format "^22.1.0" + +jest-worker@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.1.0.tgz#0987832fe58fbdc205357f4c19b992446368cafb" + dependencies: + merge-stream "^1.0.1" + +jest@^22.1.4: + version "22.1.4" + resolved "https://registry.yarnpkg.com/jest/-/jest-22.1.4.tgz#9ec71373a38f40ff92a3e5e96ae85687c181bb72" + dependencies: + jest-cli "^22.1.4" + joi@^6.4.x: version "6.10.1" resolved "https://registry.yarnpkg.com/joi/-/joi-6.10.1.tgz#4d50c318079122000fe5f16af1ff8e1917b77e06" @@ -2143,7 +2913,7 @@ js-yaml@3.6.1: argparse "^1.0.7" esprima "^2.6.0" -js-yaml@3.x, js-yaml@^3.9.1: +js-yaml@3.x, js-yaml@^3.7.0, js-yaml@^3.9.1: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: @@ -2161,6 +2931,41 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" +jsdom@^11.5.1: + version "11.6.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.6.0.tgz#7334781595ee8bdeea9742fc33fab5cdad6d195f" + dependencies: + abab "^1.0.4" + acorn "^5.3.0" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + browser-process-hrtime "^0.1.2" + content-type-parser "^1.0.2" + cssom ">= 0.3.2 < 0.4.0" + cssstyle ">= 0.2.37 < 0.3.0" + domexception "^1.0.0" + escodegen "^1.9.0" + html-encoding-sniffer "^1.0.2" + left-pad "^1.2.0" + nwmatcher "^1.4.3" + parse5 "^4.0.0" + pn "^1.1.0" + request "^2.83.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.3" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-url "^6.4.0" + ws "^4.0.0" + xml-name-validator "^3.0.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -2195,7 +3000,7 @@ json3@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" -json5@^0.5.0: +json5@^0.5.0, json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -2239,10 +3044,20 @@ lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + lcov-parse@0.0.10, lcov-parse@0.x: version "0.0.10" resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" +left-pad@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee" + less-loader@^4.0.3: version "4.0.5" resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-4.0.5.tgz#ae155a7406cac6acd293d785587fcff0f478c4dd" @@ -2264,6 +3079,10 @@ less@^2.5.1: request "2.81.0" source-map "^0.5.3" +leven@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -2271,6 +3090,16 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + loader-runner@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" @@ -2354,6 +3183,10 @@ lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -2362,7 +3195,7 @@ lodash@^3.10.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.14.0, lodash@^4.17.4, lodash@^4.3.0: +lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.3.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -2407,6 +3240,12 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + dependencies: + tmpl "1.0.x" + math-expression-evaluator@^1.2.14: version "1.2.17" resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" @@ -2422,6 +3261,12 @@ media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -2433,11 +3278,21 @@ merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" +merge-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + dependencies: + readable-stream "^2.0.1" + +merge@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" -micromatch@^2.1.5: +micromatch@^2.1.5, micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -2492,7 +3347,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -2502,7 +3357,7 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@1.2.0, minimist@^1.2.0: +minimist@1.2.0, minimist@^1.1.1, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -2602,6 +3457,10 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + node-libs-browser@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" @@ -2630,6 +3489,15 @@ node-libs-browser@^2.0.0: util "^0.10.3" vm-browserify "0.0.4" +node-notifier@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" + dependencies: + growly "^1.3.0" + semver "^5.4.1" + shellwords "^0.1.1" + which "^1.3.0" + node-pre-gyp@^0.6.39: version "0.6.39" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" @@ -2659,6 +3527,15 @@ nopt@^4.0.1: abbrev "1" osenv "^0.1.4" +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^2.0.0, normalize-path@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -2678,6 +3555,12 @@ normalize-url@^1.4.0: query-string "^4.1.0" sort-keys "^1.0.0" +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -2695,6 +3578,10 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" +nwmatcher@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" + oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -2703,6 +3590,17 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -2760,7 +3658,15 @@ os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -2771,6 +3677,10 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + p-limit@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" @@ -2818,6 +3728,16 @@ parse-glob@^3.0.4: is-extglob "^1.0.0" is-glob "^2.0.0" +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse5@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + parseurl@~1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -2826,11 +3746,17 @@ path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@^1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2838,6 +3764,10 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" @@ -2852,6 +3782,14 @@ path-to-regexp@^1.7.0: dependencies: isarray "0.0.1" +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + pbkdf2@^3.0.3: version "3.0.14" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" @@ -2902,6 +3840,10 @@ pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + postcss-calc@^5.2.0: version "5.3.1" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" @@ -3160,6 +4102,17 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +pretty-format@^22.1.0: + version "22.1.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.1.0.tgz#2277605b40ed4529ae4db51ff62f4be817647914" + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + +private@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" @@ -3254,6 +4207,10 @@ punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +punycode@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -3349,6 +4306,21 @@ react@^15.2.1: object-assign "^4.1.0" prop-types "^15.5.10" +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" @@ -3370,6 +4342,12 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" +realpath-native@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.0.tgz#7885721a83b43bd5327609f0ddecb2482305fdf0" + dependencies: + util.promisify "^1.0.0" + reduce-css-calc@^1.2.6: version "1.3.0" resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" @@ -3388,6 +4366,10 @@ regenerate@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" @@ -3424,6 +4406,26 @@ repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request-promise-core@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" + dependencies: + lodash "^4.13.1" + +request-promise-native@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" + dependencies: + request-promise-core "1.1.1" + stealthy-require "^1.1.0" + tough-cookie ">=2.3.3" + request-promise@^0.x: version "0.4.3" resolved "https://registry.yarnpkg.com/request-promise/-/request-promise-0.4.3.tgz#3c8ddc82f06f8908d720aede1d6794258e22121c" @@ -3485,7 +4487,7 @@ request@2.81.0: tunnel-agent "^0.6.0" uuid "^3.0.0" -request@^2.34: +request@^2.34, request@^2.83.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" dependencies: @@ -3512,6 +4514,14 @@ request@^2.34: tunnel-agent "^0.6.0" uuid "^3.1.0" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -3519,11 +4529,21 @@ require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" + resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" -resolve@1.1.x: +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + +resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -3589,7 +4609,21 @@ samsam@1.x, samsam@^1.1.3: version "1.3.0" resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.3.0.tgz#8d1d9350e25622da30de3e44ba692b5221ab7c50" -sax@~1.2.1: +sane@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-2.3.0.tgz#3f3df584abf69e63d4bb74f0f8c42468e4d7d46b" + dependencies: + anymatch "^1.3.0" + exec-sh "^0.2.0" + fb-watchman "^2.0.0" + minimatch "^3.0.2" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.18.0" + optionalDependencies: + fsevents "^1.1.1" + +sax@^1.2.4, sax@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -3612,6 +4646,10 @@ script-loader@~0.7.0: dependencies: raw-loader "~0.5.1" +"semver@2 || 3 || 4 || 5", semver@^5.4.1: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + semver@5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -3666,7 +4704,7 @@ serve-static@~1.10.2: parseurl "~1.3.1" send "0.13.2" -set-blocking@~2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -3695,6 +4733,10 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + should-equal@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-1.0.1.tgz#0b6e9516f2601a9fb0bb2dcc369afa1c7e200af7" @@ -3760,6 +4802,10 @@ sinon@^2.3.2: text-encoding "0.6.4" type-detect "^4.0.0" +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" @@ -3788,17 +4834,29 @@ source-list-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.2.tgz#1a6297fd5b2e762b39688c7fc91233b60984f0a5" + dependencies: + source-map "^0.6.0" + source-map@0.4.x, source-map@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" dependencies: amdefine ">=0.0.4" -source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: +source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -3814,6 +4872,20 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -3838,6 +4910,10 @@ ssri@^5.0.0: dependencies: safe-buffer "^5.1.0" +stack-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" + statuses@1: version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" @@ -3846,6 +4922,10 @@ statuses@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.2.1.tgz#dded45cc18256d51ed40aec142489d5c61026d28" +stealthy-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + stream-browserify@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" @@ -3878,6 +4958,13 @@ strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + string-width@^1.0.1, string-width@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -3886,7 +4973,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.1.0, string-width@^2.1.1: +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: @@ -3915,6 +5002,20 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-bom@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -3936,7 +5037,7 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.0, supports-color@^3.2.3: +supports-color@^3.1.0, supports-color@^3.1.2, supports-color@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" dependencies: @@ -3966,6 +5067,10 @@ svgo@^0.7.0: sax "~1.2.1" whet.extend "~0.9.9" +symbol-tree@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + table@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" @@ -4002,6 +5107,16 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" +test-exclude@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" + dependencies: + arrify "^1.0.1" + micromatch "^2.3.11" + object-assign "^4.1.0" + read-pkg-up "^1.0.1" + require-main-filename "^1.0.1" + text-encoding@0.6.4: version "0.6.4" resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" @@ -4010,6 +5125,10 @@ text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + through2@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" @@ -4037,22 +5156,36 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + topo@1.x.x: version "1.1.0" resolved "https://registry.yarnpkg.com/topo/-/topo-1.1.0.tgz#e9d751615d1bb87dc865db182fa1ca0a5ef536d5" dependencies: hoek "2.x.x" -tough-cookie@~2.3.0, tough-cookie@~2.3.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" dependencies: punycode "^1.4.1" +tr46@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + dependencies: + punycode "^2.1.0" + transformers@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/transformers/-/transformers-2.1.0.tgz#5d23cb35561dd85dc67fb8482309b47d53cce9a7" @@ -4061,6 +5194,10 @@ transformers@2.1.0: promise "~2.0" uglify-js "~2.2.5" +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -4148,6 +5285,10 @@ uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -4197,6 +5338,13 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +util.promisify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + util@0.10.3, util@^0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -4217,6 +5365,13 @@ val-loader@^1.0.2: dependencies: loader-utils "^1.0.0" +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + vary@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/vary/-/vary-1.0.1.tgz#99e4981566a286118dfb2b817357df7993376d10" @@ -4243,6 +5398,25 @@ void-elements@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" +w3c-hr-time@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" + dependencies: + browser-process-hrtime "^0.1.2" + +walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + dependencies: + makeerror "1.0.x" + +watch@~0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" + dependencies: + exec-sh "^0.2.0" + minimist "^1.2.0" + watchpack@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" @@ -4251,6 +5425,10 @@ watchpack@^1.4.0: chokidar "^1.7.0" graceful-fs "^4.1.2" +webidl-conversions@^4.0.1, webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + webpack-dev-middleware@^1.9.0: version "1.12.2" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e" @@ -4268,15 +5446,33 @@ webpack-sources@^1.0.1: source-list-map "^2.0.0" source-map "~0.6.1" +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3" + dependencies: + iconv-lite "0.4.19" + whatwg-fetch@>=0.10.0: version "2.0.3" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" +whatwg-url@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.0.tgz#08fdf2b9e872783a7a1f6216260a1d66cc722e08" + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.0" + webidl-conversions "^4.0.1" + whet.extend@~0.9.9: version "0.9.9" resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" -which@^1.1.1, which@^1.2.9: +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.1.1, which@^1.2.12, which@^1.2.9, which@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: @@ -4325,16 +5521,43 @@ worker-loader@^1.1.0: loader-utils "^1.0.0" schema-utils "^0.3.0" +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +write-file-atomic@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" dependencies: mkdirp "^0.5.1" +ws@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-4.0.0.tgz#bfe1da4c08eeb9780b986e0e4d10eccd7345999f" + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -4353,6 +5576,29 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yargs-parser@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" + dependencies: + camelcase "^4.1.0" + +yargs@^10.0.3: + version "10.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.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 "^8.1.0" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"