diff --git a/.eslintrc.js b/.eslintrc.js index 1f30b066..c5a1f0d5 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -75,7 +75,7 @@ module.exports = { { files: ["test/**/*.js"], env: { - mocha: true + jest: true } } ] diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 70873e73..e81bb735 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -32,7 +32,9 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: yarn - - run: yarn --frozen-lockfile - - run: yarn cover:ci + - name: Install dependencies + run: yarn --frozen-lockfile + - name: Run tests with coverage + run: npm run test:coverage -- --ci - if: ${{ matrix.os != 'windows-latest' }} uses: codecov/codecov-action@v3 diff --git a/.husky/pre-commit b/.husky/pre-commit old mode 100644 new mode 100755 diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..f15f0a61 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,3 @@ +module.exports = { + moduleFileExtensions: ["js", "mjs", "cjs", "ts"] +}; diff --git a/package.json b/package.json index ff990544..b7bbe0ad 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ }, "license": "MIT", "devDependencies": { - "@types/mocha": "^8.0.3", + "@types/jest": "^27.5.1", "@types/node": "^14.11.1", "cspell": "4.2.8", "eslint": "^7.9.0", @@ -27,12 +27,10 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^3.1.4", "husky": "^6.0.0", + "jest": "^27.5.1", "lint-staged": "^10.4.0", "memfs": "^3.2.0", - "mocha": "^8.1.3", - "nyc": "^15.1.0", "prettier": "^2.1.2", - "should": "^13.2.3", "tooling": "webpack/tooling#v1.14.0", "typescript": "^4.2.0-beta" }, @@ -53,11 +51,11 @@ "pretty": "prettier --loglevel warn --write \"lib/**/*.{js,json}\" \"test/*.js\"", "pretest": "yarn lint", "spelling": "cspell \"**/*.*\"", - "test": "mocha --full-trace --check-leaks", - "test:only": "mocha --full-trace --check-leaks", + "test:only": "jest", + "test:watch": "yarn test:only -- --watch", + "test:coverage": "yarn test:only -- --collectCoverageFrom=\"lib/**/*.js\" --coverage", + "test": "yarn test:coverage", "precover": "yarn lint", - "cover": "nyc --reporter=html node node_modules/mocha/bin/_mocha --full-trace --check-leaks", - "cover:ci": "nyc --reporter=lcovonly node node_modules/mocha/bin/_mocha --full-trace --check-leaks", "prepare": "husky install" }, "lint-staged": { diff --git a/test/CachedInputFileSystem.js b/test/CachedInputFileSystem.test.js similarity index 67% rename from test/CachedInputFileSystem.js rename to test/CachedInputFileSystem.test.js index 21aea5aa..9e57fd04 100644 --- a/test/CachedInputFileSystem.js +++ b/test/CachedInputFileSystem.test.js @@ -1,12 +1,9 @@ -var should = require("should"); +const { CachedInputFileSystem } = require("../"); -var { CachedInputFileSystem } = require("../"); +describe("CachedInputFileSystem OperationMergerBackend ('stat' and 'statSync')", () => { + let fs; -describe("CachedInputFileSystem OperationMergerBackend ('stat' and 'statSync')", function () { - this.timeout(3000); - var fs; - - beforeEach(function () { + beforeEach(() => { fs = new CachedInputFileSystem( { stat: function (path, options, callback) { @@ -33,34 +30,34 @@ describe("CachedInputFileSystem OperationMergerBackend ('stat' and 'statSync')", 0 ); }); - afterEach(function () { + afterEach(() => { fs.purge(); }); it("should join accesses", function (done) { fs.stat("a", function (err, result) { - should.exist(result); + expect(result).toBeDefined(); result.a = true; }); fs.stat("a", function (err, result) { - should.exist(result); - should.exist(result.a); + expect(result).toBeDefined(); + expect(result.a).toBeDefined(); done(); }); }); it("should not join accesses with options", function (done) { fs.stat("a", function (err, result) { - should.exist(result); + expect(result).toBeDefined(); result.a = true; - result.path.should.be.eql("a"); - should.not.exist(result.options); + expect(result.path).toEqual("a"); + expect(result.options).toBeUndefined(); }); fs.stat("a", { options: true }, function (err, result) { - should.exist(result); - should.not.exist(result.a); - result.path.should.be.eql("a"); - result.options.should.eql({ options: true }); + expect(result).toBeDefined(); + expect(result.a).toBeUndefined(); + expect(result.path).toEqual("a"); + expect(result.options).toMatchObject({ options: true }); done(); }); }); @@ -69,25 +66,25 @@ describe("CachedInputFileSystem OperationMergerBackend ('stat' and 'statSync')", fs.stat("a", function (err, result) { result.a = true; fs.stat("a", function (err, result) { - should.not.exist(result.a); + expect(result.a).toBeUndefined(); done(); }); }); }); - it("should not cache sync accesses", function () { + it("should not cache sync accesses", () => { const result = fs.statSync("a"); result.a = true; const result2 = fs.statSync("a"); - should.not.exist(result2.a); + + expect(result2.a).toBeUndefined(); }); }); -describe("CachedInputFileSystem OperationMergerBackend ('lstat' and 'lstatSync')", function () { - this.timeout(3000); - var fs; +describe("CachedInputFileSystem OperationMergerBackend ('lstat' and 'lstatSync')", () => { + let fs; - beforeEach(function () { + beforeEach(() => { fs = new CachedInputFileSystem( { lstat: function (path, options, callback) { @@ -114,34 +111,37 @@ describe("CachedInputFileSystem OperationMergerBackend ('lstat' and 'lstatSync') 0 ); }); - afterEach(function () { + afterEach(() => { fs.purge(); }); it("should join accesses", function (done) { fs.lstat("a", function (err, result) { - should.exist(result); + expect(result).toBeDefined(); result.a = true; }); fs.lstat("a", function (err, result) { - should.exist(result); - should.exist(result.a); + expect(result).toBeDefined(); + expect(result.a).toBeDefined(); done(); }); }); it("should not join accesses with options", function (done) { fs.lstat("a", function (err, result) { - should.exist(result); + expect(result).toBeDefined(); + result.a = true; - result.path.should.be.eql("a"); - should.not.exist(result.options); + + expect(result).toBeDefined(); + expect(result.path).toEqual("a"); + expect(result.options).toBeUndefined(); }); fs.lstat("a", { options: true }, function (err, result) { - should.exist(result); - should.not.exist(result.a); - result.path.should.be.eql("a"); - result.options.should.eql({ options: true }); + expect(result).toBeDefined(); + expect(result.a).toBeUndefined(); + expect(result.path).toEqual("a"); + expect(result.options).toMatchObject({ options: true }); done(); }); }); @@ -150,25 +150,25 @@ describe("CachedInputFileSystem OperationMergerBackend ('lstat' and 'lstatSync') fs.lstat("a", function (err, result) { result.a = true; fs.lstat("a", function (err, result) { - should.not.exist(result.a); + expect(result.a).toBeUndefined(); done(); }); }); }); - it("should not cache sync accesses", function () { + it("should not cache sync accesses", () => { const result = fs.lstatSync("a"); result.a = true; const result2 = fs.lstatSync("a"); - should.not.exist(result2.a); + + expect(result2.a).toBeUndefined(); }); }); -describe("CachedInputFileSystem CacheBackend", function () { - this.timeout(3000); - var fs; +describe("CachedInputFileSystem CacheBackend", () => { + let fs; - beforeEach(function () { + beforeEach(() => { let counter = 0; fs = new CachedInputFileSystem( { @@ -198,7 +198,7 @@ describe("CachedInputFileSystem CacheBackend", function () { 1000 ); }); - afterEach(function () { + afterEach(() => { fs.purge(); }); @@ -207,7 +207,7 @@ describe("CachedInputFileSystem CacheBackend", function () { result.a = true; }); fs.stat("a", function (err, result) { - should.exist(result.a); + expect(result.a).toBeDefined(); done(); }); }); @@ -217,25 +217,26 @@ describe("CachedInputFileSystem CacheBackend", function () { fs.stat("a", function (err, result) { if (called) return done(new Error("callback was called twice")); called = true; - should.exist(result); + expect(result).toBeDefined(); result.a = true; done(); }); const syncResult = fs.statSync("a"); - should.exist(syncResult); - should.exist(syncResult.a); + + expect(syncResult).toBeDefined(); + expect(syncResult.a).toBeDefined(); }); it("should not join accesses with options", function (done) { fs.stat("a", function (err, result) { result.a = true; - result.path.should.be.eql("a"); - should.not.exist(result.options); + expect(result.path).toEqual("a"); + expect(result.options).toBeUndefined(); }); fs.stat("a", { options: true }, function (err, result) { - should.not.exist(result.a); - result.path.should.be.eql("a"); - result.options.should.eql({ options: true }); + expect(result.a).toBeUndefined(); + expect(result.path).toEqual("a"); + expect(result.options).toMatchObject({ options: true }); done(); }); }); @@ -245,55 +246,55 @@ describe("CachedInputFileSystem CacheBackend", function () { result.a = true; var sync = true; fs.stat("a", function (err, result) { - should.exist(result.a); - sync.should.be.eql(true); - setTimeout(function () { + expect(result.a).toBeDefined(); + expect(sync).toEqual(true); + setTimeout(() => { fs.stat("a", function (err, result) { - should.not.exist(result.a); + expect(result.a).toBeUndefined(); result.b = true; var sync2 = true; fs.stat("a", function (err, result) { - should.not.exist(result.a); - should.exist(result.b); - sync2.should.be.eql(true); + expect(result.b).toBeDefined(); + expect(result.a).toBeUndefined(); + expect(sync2).toEqual(true); done(); }); - setTimeout(function () { + setTimeout(() => { sync2 = false; }, 50); }); }, 1100); }); - setTimeout(function () { + setTimeout(() => { sync = false; }, 50); }); }); - it("should cache sync accesses", function () { + it("should cache sync accesses", () => { const result = fs.statSync("a"); result.a = true; const result2 = fs.statSync("a"); - should.exist(result2.a); + expect(result2.a).toBeDefined(); const result3 = fs.statSync("a", { options: true }); - should.not.exist(result3.a); - result3.options.should.be.eql({ options: true }); + expect(result3.a).toBeUndefined(); + expect(result3.options).toMatchObject({ options: true }); }); it("should recover after passive periods", function (done) { fs.stat("a", function (err, result) { result.a = true; - setTimeout(function () { + setTimeout(() => { fs.stat("a", function (err, result) { - should.exist(result.a); - setTimeout(function () { + expect(result.a).toBeDefined(); + setTimeout(() => { fs.stat("a", function (err, result) { - should.not.exist(result.a); + expect(result.a).toBeUndefined(); result.b = true; - setTimeout(function () { + setTimeout(() => { fs.stat("a", function (err, result) { - should.not.exist(result.a); - should.exist(result.b); + expect(result.b).toBeDefined(); + expect(result.a).toBeUndefined(); done(); }); }, 500); @@ -307,14 +308,14 @@ describe("CachedInputFileSystem CacheBackend", function () { it("should restart after timeout", function (done) { fs.stat("a", function (err, result) { result.a = true; - setTimeout(function () { + setTimeout(() => { fs.stat("a", function (err, result) { - should.not.exist(result.a); + expect(result.a).toBeUndefined(); result.b = true; - setTimeout(function () { + setTimeout(() => { fs.stat("a", function (err, result) { - should.not.exist(result.a); - should.exist(result.b); + expect(result.b).toBeDefined(); + expect(result.a).toBeUndefined(); done(); }); }, 50); @@ -333,16 +334,16 @@ describe("CachedInputFileSystem CacheBackend", function () { it("should purge readdir correctly", function (done) { fs.readdir("/test/path", (err, r) => { - r[0].should.be.eql("0"); + expect(r[0]).toEqual("0"); fs.purge(["/test/path/sub/path"]); fs.readdir("/test/path", (err, r) => { - r[0].should.be.eql("0"); + expect(r[0]).toEqual("0"); fs.purge(["/test/path/sub"]); fs.readdir("/test/path", (err, r) => { - r[0].should.be.eql("1"); + expect(r[0]).toEqual("1"); fs.purge(["/test/path"]); fs.readdir("/test/path", (err, r) => { - r[0].should.be.eql("2"); + expect(r[0]).toEqual("2"); done(); }); }); diff --git a/test/SyncAsyncFileSystemDecorator.js b/test/SyncAsyncFileSystemDecorator.test.js similarity index 69% rename from test/SyncAsyncFileSystemDecorator.js rename to test/SyncAsyncFileSystemDecorator.test.js index cbb83590..0f474fd6 100644 --- a/test/SyncAsyncFileSystemDecorator.js +++ b/test/SyncAsyncFileSystemDecorator.test.js @@ -2,7 +2,6 @@ const fs = require("fs"); const path = require("path"); -const should = require("should"); const SyncAsyncFileSystemDecorator = require("../lib/SyncAsyncFileSystemDecorator"); describe("SyncAsyncFileSystemDecorator stat", function () { @@ -12,9 +11,10 @@ describe("SyncAsyncFileSystemDecorator stat", function () { path.join(__dirname, "fixtures", "decorated-fs", "exists.js"), { bigint: true }, function (error, result) { - should(error).be.null(); - should(result).have.properties(["size", "birthtime"]); - should(result.size).be.of.type("bigint"); + expect(error).toBeNull(); + expect(result).toHaveProperty("size"); + expect(result).toHaveProperty("birthtime"); + expect(typeof result.size).toEqual("bigint"); done(); } ); @@ -25,9 +25,10 @@ describe("SyncAsyncFileSystemDecorator stat", function () { decoratedFs.stat( path.join(__dirname, "fixtures", "decorated-fs", "exists.js"), function (error, result) { - should(error).be.null(); - should(result).have.properties(["size", "birthtime"]); - should(result.size).be.of.type("number"); + expect(error).toBeNull(); + expect(result).toHaveProperty("size"); + expect(result).toHaveProperty("birthtime"); + expect(typeof result.size).toEqual("number"); done(); } ); diff --git a/test/__snapshots__/alias.test.js.snap b/test/__snapshots__/alias.test.js.snap new file mode 100644 index 00000000..33a02827 --- /dev/null +++ b/test/__snapshots__/alias.test.js.snap @@ -0,0 +1,33 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`alias should log the correct info 1`] = ` +Array [ + "resolve 'aliasA/dir' in '/'", + " Parsed request is a module", + " No description file found in / or above", + " aliased with mapping 'aliasA': 'a' to 'a/dir'", + " Parsed request is a module", + " No description file found in / or above", + " resolve as module", + " looking for modules in /", + " existing directory /a", + " No description file found in /a or above", + " No description file found in /a or above", + " no extension", + " /a/dir is not a file", + " .js", + " /a/dir.js doesn't exist", + " .json", + " /a/dir.json doesn't exist", + " .node", + " /a/dir.node doesn't exist", + " as directory", + " existing directory /a/dir", + " No description file found in /a/dir or above", + " using path: /a/dir/index", + " No description file found in /a/dir or above", + " no extension", + " existing file: /a/dir/index", + " reporting result /a/dir/index", +] +`; diff --git a/test/__snapshots__/exportsField.test.js.snap b/test/__snapshots__/exportsField.test.js.snap new file mode 100644 index 00000000..fa62e152 --- /dev/null +++ b/test/__snapshots__/exportsField.test.js.snap @@ -0,0 +1,20 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`ExportsFieldPlugin should log the correct info 1`] = ` +Array [ + "resolve 'exports-field/dist/browser.js' in '...'", + " Parsed request is a module", + " using description file: .../package.json (relative path: .)", + " resolve as module", + " looking for modules in .../node_modules", + " existing directory .../node_modules/exports-field", + " using description file: .../node_modules/exports-field/package.json (relative path: .)", + " using exports field: ./lib/lib2/browser.js", + " using description file: .../node_modules/exports-field/package.json (relative path: ./lib/lib2/browser.js)", + " .../node_modules/exports-field/lib/lib2/browser.js doesn't exist", + " using exports field: ./lib/browser.js", + " using description file: .../node_modules/exports-field/package.json (relative path: ./lib/browser.js)", + " existing file: .../node_modules/exports-field/lib/browser.js", + " reporting result .../node_modules/exports-field/lib/browser.js", +] +`; diff --git a/test/__snapshots__/fallback.test.js.snap b/test/__snapshots__/fallback.test.js.snap new file mode 100644 index 00000000..a804810e --- /dev/null +++ b/test/__snapshots__/fallback.test.js.snap @@ -0,0 +1,36 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`fallback should log the correct info 1`] = ` +Array [ + "resolve 'aliasA/dir' in '/'", + " Parsed request is a module", + " No description file found in / or above", + " resolve as module", + " looking for modules in /", + " /aliasA doesn't exist", + " aliased with mapping 'aliasA': 'a' to 'a/dir'", + " Parsed request is a module", + " No description file found in / or above", + " resolve as module", + " looking for modules in /", + " existing directory /a", + " No description file found in /a or above", + " No description file found in /a or above", + " no extension", + " /a/dir is not a file", + " .js", + " /a/dir.js doesn't exist", + " .json", + " /a/dir.json doesn't exist", + " .node", + " /a/dir.node doesn't exist", + " as directory", + " existing directory /a/dir", + " No description file found in /a/dir or above", + " using path: /a/dir/index", + " No description file found in /a/dir or above", + " no extension", + " existing file: /a/dir/index", + " reporting result /a/dir/index", +] +`; diff --git a/test/__snapshots__/importsField.test.js.snap b/test/__snapshots__/importsField.test.js.snap new file mode 100644 index 00000000..19b4c67c --- /dev/null +++ b/test/__snapshots__/importsField.test.js.snap @@ -0,0 +1,29 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`ImportsFieldPlugin should log the correct info 1`] = ` +Array [ + "resolve '#a/dist/index.js' in '...'", + " using description file: .../package.json (relative path: .)", + " resolve as internal import", + " using imports field: a/dist/index.js", + " Parsed request is a module", + " using description file: .../package.json (relative path: .)", + " resolve as module", + " looking for modules in .../node_modules", + " existing directory .../node_modules/a", + " using description file: .../node_modules/a/package.json (relative path: .)", + " using exports field: ./lib/lib2/index.js", + " using description file: .../node_modules/a/package.json (relative path: ./lib/lib2/index.js)", + " no extension", + " .../node_modules/a/lib/lib2/index.js doesn't exist", + " .js", + " .../node_modules/a/lib/lib2/index.js.js doesn't exist", + " as directory", + " .../node_modules/a/lib/lib2/index.js doesn't exist", + " using exports field: ./lib/index.js", + " using description file: .../node_modules/a/package.json (relative path: ./lib/index.js)", + " no extension", + " existing file: .../node_modules/a/lib/index.js", + " reporting result .../node_modules/a/lib/index.js", +] +`; diff --git a/test/__snapshots__/restrictions.test.js.snap b/test/__snapshots__/restrictions.test.js.snap new file mode 100644 index 00000000..a321d1ee --- /dev/null +++ b/test/__snapshots__/restrictions.test.js.snap @@ -0,0 +1,50 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`restrictions should try to find alternative #3 1`] = ` +Array [ + "resolve 'pck2' in '.../test/fixtures/restrictions'", + " Parsed request is a module", + " using description file: .../package.json (relative path: ./test/fixtures/restrictions)", + " resolve as module", + " looking for modules in .../test/fixtures/restrictions/node_modules", + " single file module", + " using description file: .../package.json (relative path: ./test/fixtures/restrictions/node_modules/pck2)", + " no extension", + " .../test/fixtures/restrictions/node_modules/pck2 is not a file", + " .js", + " .../test/fixtures/restrictions/node_modules/pck2.js doesn't exist", + " existing directory .../test/fixtures/restrictions/node_modules/pck2", + " using description file: .../test/fixtures/restrictions/node_modules/pck2/package.json (relative path: .)", + " using description file: .../package.json (relative path: ./test/fixtures/restrictions/node_modules/pck2)", + " no extension", + " .../test/fixtures/restrictions/node_modules/pck2 is not a file", + " .js", + " .../test/fixtures/restrictions/node_modules/pck2.js doesn't exist", + " as directory", + " existing directory .../test/fixtures/restrictions/node_modules/pck2", + " using description file: .../test/fixtures/restrictions/node_modules/pck2/package.json (relative path: .)", + " use ../../../c.js from main in package.json", + " using description file: .../package.json (relative path: ./test/fixtures/c.js)", + " no extension", + " existing file: .../test/fixtures/c.js", + " .../test/fixtures/c.js is not inside of the restriction .../test/fixtures/restrictions", + " .js", + " .../test/fixtures/c.js.js doesn't exist", + " as directory", + " .../test/fixtures/c.js is not a directory", + " use ./module.js from module in package.json", + " using description file: .../test/fixtures/restrictions/node_modules/pck2/package.json (relative path: ./module.js)", + " no extension", + " existing file: .../test/fixtures/restrictions/node_modules/pck2/module.js", + " .../test/fixtures/restrictions/node_modules/pck2/module.js doesn't match the restriction //.(sass|scss|css)$/", + " .js", + " .../test/fixtures/restrictions/node_modules/pck2/module.js.js doesn't exist", + " as directory", + " .../test/fixtures/restrictions/node_modules/pck2/module.js is not a directory", + " use ./index.css from style in package.json", + " using description file: .../test/fixtures/restrictions/node_modules/pck2/package.json (relative path: ./index.css)", + " no extension", + " existing file: .../test/fixtures/restrictions/node_modules/pck2/index.css", + " reporting result .../test/fixtures/restrictions/node_modules/pck2/index.css", +] +`; diff --git a/test/alias.js b/test/alias.js deleted file mode 100644 index a1672948..00000000 --- a/test/alias.js +++ /dev/null @@ -1,179 +0,0 @@ -const should = require("should"); - -const path = require("path"); -const { Volume } = require("memfs"); -const { ResolverFactory } = require("../"); -const CachedInputFileSystem = require("../lib/CachedInputFileSystem"); -const fs = require("fs"); - -const nodeFileSystem = new CachedInputFileSystem(fs, 4000); - -describe("alias", function () { - var resolver; - - beforeEach(function () { - var fileSystem = Volume.fromJSON( - { - "/a/index": "", - "/a/dir/index": "", - "/recursive/index": "", - "/recursive/dir/index": "", - "/b/index": "", - "/b/dir/index": "", - "/c/index": "", - "/c/dir/index": "", - "/d/index.js": "", - "/d/dir/.empty": "", - "/e/index": "", - "/e/anotherDir/index": "", - "/e/dir/file": "" - }, - "/" - ); - resolver = ResolverFactory.createResolver({ - alias: { - aliasA: "a", - b$: "a/index", - c$: "/a/index", - multiAlias: ["b", "c", "d", "e", "a"], - recursive: "recursive/dir", - "/d/dir": "/c/dir", - "/d/index.js": "/c/index", - // alias configuration should work - "#": "/c/dir", - "@": "/c/dir", - ignored: false - }, - modules: "/", - useSyncFileSystemCalls: true, - fileSystem: fileSystem - }); - }); - - it("should resolve a not aliased module", function () { - resolver.resolveSync({}, "/", "a").should.be.eql("/a/index"); - resolver.resolveSync({}, "/", "a/index").should.be.eql("/a/index"); - resolver.resolveSync({}, "/", "a/dir").should.be.eql("/a/dir/index"); - resolver.resolveSync({}, "/", "a/dir/index").should.be.eql("/a/dir/index"); - }); - it("should resolve an aliased module", function () { - resolver.resolveSync({}, "/", "aliasA").should.be.eql("/a/index"); - resolver.resolveSync({}, "/", "aliasA/index").should.be.eql("/a/index"); - resolver.resolveSync({}, "/", "aliasA/dir").should.be.eql("/a/dir/index"); - resolver - .resolveSync({}, "/", "aliasA/dir/index") - .should.be.eql("/a/dir/index"); - }); - it('should resolve "#" alias', () => { - resolver.resolveSync({}, "/", "#").should.be.eql("/c/dir/index"); - resolver.resolveSync({}, "/", "#/index").should.be.eql("/c/dir/index"); - }); - it('should resolve "@" alias', () => { - resolver.resolveSync({}, "/", "@").should.be.eql("/c/dir/index"); - resolver.resolveSync({}, "/", "@/index").should.be.eql("/c/dir/index"); - }); - it("should resolve an ignore module", () => { - resolver.resolveSync({}, "/", "ignored").should.be.eql(false); - }); - it("should resolve a recursive aliased module", function () { - resolver - .resolveSync({}, "/", "recursive") - .should.be.eql("/recursive/dir/index"); - resolver - .resolveSync({}, "/", "recursive/index") - .should.be.eql("/recursive/dir/index"); - resolver - .resolveSync({}, "/", "recursive/dir") - .should.be.eql("/recursive/dir/index"); - resolver - .resolveSync({}, "/", "recursive/dir/index") - .should.be.eql("/recursive/dir/index"); - }); - it("should resolve a file aliased module", function () { - resolver.resolveSync({}, "/", "b").should.be.eql("/a/index"); - resolver.resolveSync({}, "/", "c").should.be.eql("/a/index"); - }); - it("should resolve a file aliased module with a query", function () { - resolver.resolveSync({}, "/", "b?query").should.be.eql("/a/index?query"); - resolver.resolveSync({}, "/", "c?query").should.be.eql("/a/index?query"); - }); - it("should resolve a path in a file aliased module", function () { - resolver.resolveSync({}, "/", "b/index").should.be.eql("/b/index"); - resolver.resolveSync({}, "/", "b/dir").should.be.eql("/b/dir/index"); - resolver.resolveSync({}, "/", "b/dir/index").should.be.eql("/b/dir/index"); - resolver.resolveSync({}, "/", "c/index").should.be.eql("/c/index"); - resolver.resolveSync({}, "/", "c/dir").should.be.eql("/c/dir/index"); - resolver.resolveSync({}, "/", "c/dir/index").should.be.eql("/c/dir/index"); - }); - it("should resolve a file aliased file", function () { - resolver.resolveSync({}, "/", "d").should.be.eql("/c/index"); - resolver.resolveSync({}, "/", "d/dir/index").should.be.eql("/c/dir/index"); - }); - it("should resolve a file in multiple aliased dirs", function () { - resolver - .resolveSync({}, "/", "multiAlias/dir/file") - .should.be.eql("/e/dir/file"); - resolver - .resolveSync({}, "/", "multiAlias/anotherDir") - .should.be.eql("/e/anotherDir/index"); - }); - it("should log the correct info", done => { - const log = []; - resolver.resolve( - {}, - "/", - "aliasA/dir", - { log: v => log.push(v) }, - (err, result) => { - if (err) return done(err); - result.should.be.eql("/a/dir/index"); - log.should.be.eql([ - "resolve 'aliasA/dir' in '/'", - " Parsed request is a module", - " No description file found in / or above", - " aliased with mapping 'aliasA': 'a' to 'a/dir'", - " Parsed request is a module", - " No description file found in / or above", - " resolve as module", - " looking for modules in /", - " existing directory /a", - " No description file found in /a or above", - " No description file found in /a or above", - " no extension", - " /a/dir is not a file", - " .js", - " /a/dir.js doesn't exist", - " .json", - " /a/dir.json doesn't exist", - " .node", - " /a/dir.node doesn't exist", - " as directory", - " existing directory /a/dir", - " No description file found in /a/dir or above", - " using path: /a/dir/index", - " No description file found in /a/dir or above", - " no extension", - " existing file: /a/dir/index", - " reporting result /a/dir/index" - ]); - done(); - } - ); - }); - - it("should work with absolute paths", done => { - const resolver = ResolverFactory.createResolver({ - alias: { - [path.resolve(__dirname, "fixtures", "foo")]: false - }, - modules: path.resolve(__dirname, "fixtures"), - fileSystem: nodeFileSystem - }); - - resolver.resolve({}, __dirname, "foo/index", {}, (err, result) => { - if (err) done(err); - should(result).be.eql(false); - done(); - }); - }); -}); diff --git a/test/alias.test.js b/test/alias.test.js new file mode 100644 index 00000000..b2629a6e --- /dev/null +++ b/test/alias.test.js @@ -0,0 +1,159 @@ +const path = require("path"); +const { Volume } = require("memfs"); +const { ResolverFactory } = require("../"); +const CachedInputFileSystem = require("../lib/CachedInputFileSystem"); +const fs = require("fs"); + +const nodeFileSystem = new CachedInputFileSystem(fs, 4000); + +describe("alias", () => { + let resolver; + + beforeEach(() => { + const fileSystem = Volume.fromJSON( + { + "/a/index": "", + "/a/dir/index": "", + "/recursive/index": "", + "/recursive/dir/index": "", + "/b/index": "", + "/b/dir/index": "", + "/c/index": "", + "/c/dir/index": "", + "/d/index.js": "", + "/d/dir/.empty": "", + "/e/index": "", + "/e/anotherDir/index": "", + "/e/dir/file": "" + }, + "/" + ); + resolver = ResolverFactory.createResolver({ + alias: { + aliasA: "a", + b$: "a/index", + c$: "/a/index", + multiAlias: ["b", "c", "d", "e", "a"], + recursive: "recursive/dir", + "/d/dir": "/c/dir", + "/d/index.js": "/c/index", + // alias configuration should work + "#": "/c/dir", + "@": "/c/dir", + ignored: false + }, + modules: "/", + useSyncFileSystemCalls: true, + fileSystem: fileSystem + }); + }); + + it("should resolve a not aliased module", () => { + expect(resolver.resolveSync({}, "/", "a")).toEqual("/a/index"); + expect(resolver.resolveSync({}, "/", "a/index")).toEqual("/a/index"); + expect(resolver.resolveSync({}, "/", "a/dir")).toEqual("/a/dir/index"); + expect(resolver.resolveSync({}, "/", "a/dir/index")).toEqual( + "/a/dir/index" + ); + }); + it("should resolve an aliased module", () => { + expect(resolver.resolveSync({}, "/", "aliasA")).toEqual("/a/index"); + expect(resolver.resolveSync({}, "/", "aliasA/index")).toEqual("/a/index"); + expect(resolver.resolveSync({}, "/", "aliasA/dir")).toEqual("/a/dir/index"); + expect(resolver.resolveSync({}, "/", "aliasA/dir/index")).toEqual( + "/a/dir/index" + ); + }); + it('should resolve "#" alias', () => { + expect(resolver.resolveSync({}, "/", "#")).toEqual("/c/dir/index"); + expect(resolver.resolveSync({}, "/", "#/index")).toEqual("/c/dir/index"); + }); + it('should resolve "@" alias', () => { + expect(resolver.resolveSync({}, "/", "@")).toEqual("/c/dir/index"); + expect(resolver.resolveSync({}, "/", "@/index")).toEqual("/c/dir/index"); + }); + it("should resolve an ignore module", () => { + expect(resolver.resolveSync({}, "/", "ignored")).toEqual(false); + }); + it("should resolve a recursive aliased module", () => { + expect(resolver.resolveSync({}, "/", "recursive")).toEqual( + "/recursive/dir/index" + ); + expect(resolver.resolveSync({}, "/", "recursive/index")).toEqual( + "/recursive/dir/index" + ); + expect(resolver.resolveSync({}, "/", "recursive/dir")).toEqual( + "/recursive/dir/index" + ); + expect(resolver.resolveSync({}, "/", "recursive/dir/index")).toEqual( + "/recursive/dir/index" + ); + }); + it("should resolve a file aliased module", () => { + expect(resolver.resolveSync({}, "/", "b")).toEqual("/a/index"); + expect(resolver.resolveSync({}, "/", "c")).toEqual("/a/index"); + }); + it("should resolve a file aliased module with a query", () => { + expect(resolver.resolveSync({}, "/", "b?query")).toEqual("/a/index?query"); + expect(resolver.resolveSync({}, "/", "c?query")).toEqual("/a/index?query"); + }); + it("should resolve a path in a file aliased module", () => { + expect(resolver.resolveSync({}, "/", "b/index")).toEqual("/b/index"); + expect(resolver.resolveSync({}, "/", "b/dir")).toEqual("/b/dir/index"); + expect(resolver.resolveSync({}, "/", "b/dir/index")).toEqual( + "/b/dir/index" + ); + expect(resolver.resolveSync({}, "/", "c/index")).toEqual("/c/index"); + expect(resolver.resolveSync({}, "/", "c/dir")).toEqual("/c/dir/index"); + expect(resolver.resolveSync({}, "/", "c/dir/index")).toEqual( + "/c/dir/index" + ); + }); + it("should resolve a file aliased file", () => { + expect(resolver.resolveSync({}, "/", "d")).toEqual("/c/index"); + expect(resolver.resolveSync({}, "/", "d/dir/index")).toEqual( + "/c/dir/index" + ); + }); + it("should resolve a file in multiple aliased dirs", () => { + expect(resolver.resolveSync({}, "/", "multiAlias/dir/file")).toEqual( + "/e/dir/file" + ); + expect(resolver.resolveSync({}, "/", "multiAlias/anotherDir")).toEqual( + "/e/anotherDir/index" + ); + }); + it("should log the correct info", done => { + const log = []; + resolver.resolve( + {}, + "/", + "aliasA/dir", + { log: v => log.push(v) }, + (err, result) => { + if (err) return done(err); + + expect(result).toEqual("/a/dir/index"); + expect(log).toMatchSnapshot(); + + done(); + } + ); + }); + + it("should work with absolute paths", done => { + const resolver = ResolverFactory.createResolver({ + alias: { + [path.resolve(__dirname, "fixtures", "foo")]: false + }, + modules: path.resolve(__dirname, "fixtures"), + fileSystem: nodeFileSystem + }); + + resolver.resolve({}, __dirname, "foo/index", {}, (err, result) => { + if (err) done(err); + expect(result).toEqual(false); + done(); + }); + }); +}); diff --git a/test/browserField.js b/test/browserField.js deleted file mode 100644 index 95cbf9db..00000000 --- a/test/browserField.js +++ /dev/null @@ -1,93 +0,0 @@ -require("should"); - -var path = require("path"); -var fs = require("fs"); -var { ResolverFactory } = require("../"); - -var browserModule = path.join(__dirname, "fixtures", "browser-module"); - -function p() { - return path.join.apply( - path, - [browserModule].concat(Array.prototype.slice.call(arguments)) - ); -} - -describe("browserField", function () { - var resolver; - - beforeEach(function () { - resolver = ResolverFactory.createResolver({ - aliasFields: [ - "browser", - ["innerBrowser1", "field2", "browser"], // not presented - ["innerBrowser1", "field", "browser"], - ["innerBrowser2", "browser"] - ], - useSyncFileSystemCalls: true, - fileSystem: fs - }); - }); - - it("should ignore", function (done) { - resolver.resolve({}, p(), "./lib/ignore", {}, function (err, result) { - if (err) throw err; - result.should.be.eql(false); - done(); - }); - }); - it("should ignore", function () { - resolver.resolveSync({}, p(), "./lib/ignore").should.be.eql(false); - resolver.resolveSync({}, p(), "./lib/ignore.js").should.be.eql(false); - resolver.resolveSync({}, p("lib"), "./ignore").should.be.eql(false); - resolver.resolveSync({}, p("lib"), "./ignore.js").should.be.eql(false); - }); - - it("should replace a file", function () { - resolver - .resolveSync({}, p(), "./lib/replaced") - .should.be.eql(p("lib", "browser.js")); - resolver - .resolveSync({}, p(), "./lib/replaced.js") - .should.be.eql(p("lib", "browser.js")); - resolver - .resolveSync({}, p("lib"), "./replaced") - .should.be.eql(p("lib", "browser.js")); - resolver - .resolveSync({}, p("lib"), "./replaced.js") - .should.be.eql(p("lib", "browser.js")); - }); - - it("should replace a module with a file", function () { - resolver - .resolveSync({}, p(), "module-a") - .should.be.eql(p("browser", "module-a.js")); - resolver - .resolveSync({}, p("lib"), "module-a") - .should.be.eql(p("browser", "module-a.js")); - }); - - it("should replace a module with a module", function () { - resolver - .resolveSync({}, p(), "module-b") - .should.be.eql(p("node_modules", "module-c.js")); - resolver - .resolveSync({}, p("lib"), "module-b") - .should.be.eql(p("node_modules", "module-c.js")); - }); - - it("should resolve in nested property", function () { - resolver - .resolveSync({}, p(), "./lib/main1.js") - .should.be.eql(p("lib", "main.js")); - resolver - .resolveSync({}, p(), "./lib/main2.js") - .should.be.eql(p("lib", "browser.js")); - }); - - it("should check only alias field properties", () => { - resolver - .resolveSync({}, p(), "./toString") - .should.be.eql(p("lib", "toString.js")); - }); -}); diff --git a/test/browserField.test.js b/test/browserField.test.js new file mode 100644 index 00000000..a77c49c7 --- /dev/null +++ b/test/browserField.test.js @@ -0,0 +1,92 @@ +const path = require("path"); +const fs = require("fs"); +const { ResolverFactory } = require("../"); + +const browserModule = path.join(__dirname, "fixtures", "browser-module"); + +function p() { + return path.join.apply( + path, + [browserModule].concat(Array.prototype.slice.call(arguments)) + ); +} + +describe("browserField", () => { + let resolver; + + beforeEach(() => { + resolver = ResolverFactory.createResolver({ + aliasFields: [ + "browser", + ["innerBrowser1", "field2", "browser"], // not presented + ["innerBrowser1", "field", "browser"], + ["innerBrowser2", "browser"] + ], + useSyncFileSystemCalls: true, + fileSystem: fs + }); + }); + + it("should ignore", function (done) { + resolver.resolve({}, p(), "./lib/ignore", {}, function (err, result) { + if (err) throw err; + expect(result).toEqual(false); + done(); + }); + }); + + it("should ignore", () => { + expect(resolver.resolveSync({}, p(), "./lib/ignore")).toEqual(false); + expect(resolver.resolveSync({}, p(), "./lib/ignore.js")).toEqual(false); + expect(resolver.resolveSync({}, p("lib"), "./ignore")).toEqual(false); + expect(resolver.resolveSync({}, p("lib"), "./ignore.js")).toEqual(false); + }); + + it("should replace a file", () => { + expect(resolver.resolveSync({}, p(), "./lib/replaced")).toEqual( + p("lib", "browser.js") + ); + expect(resolver.resolveSync({}, p(), "./lib/replaced.js")).toEqual( + p("lib", "browser.js") + ); + expect(resolver.resolveSync({}, p("lib"), "./replaced")).toEqual( + p("lib", "browser.js") + ); + expect(resolver.resolveSync({}, p("lib"), "./replaced.js")).toEqual( + p("lib", "browser.js") + ); + }); + + it("should replace a module with a file", () => { + expect(resolver.resolveSync({}, p(), "module-a")).toEqual( + p("browser", "module-a.js") + ); + expect(resolver.resolveSync({}, p("lib"), "module-a")).toEqual( + p("browser", "module-a.js") + ); + }); + + it("should replace a module with a module", () => { + expect(resolver.resolveSync({}, p(), "module-b")).toEqual( + p("node_modules", "module-c.js") + ); + expect(resolver.resolveSync({}, p("lib"), "module-b")).toEqual( + p("node_modules", "module-c.js") + ); + }); + + it("should resolve in nested property", () => { + expect(resolver.resolveSync({}, p(), "./lib/main1.js")).toEqual( + p("lib", "main.js") + ); + expect(resolver.resolveSync({}, p(), "./lib/main2.js")).toEqual( + p("lib", "browser.js") + ); + }); + + it("should check only alias field properties", () => { + expect(resolver.resolveSync({}, p(), "./toString")).toEqual( + p("lib", "toString.js") + ); + }); +}); diff --git a/test/dependencies.js b/test/dependencies.test.js similarity index 85% rename from test/dependencies.js rename to test/dependencies.test.js index 46ca173f..26607852 100644 --- a/test/dependencies.js +++ b/test/dependencies.test.js @@ -1,13 +1,11 @@ -require("should"); - -var { Volume } = require("memfs"); -var resolve = require("../"); +const { Volume } = require("memfs"); +const resolve = require("../"); describe("dependencies", function () { - var resolver; + let resolver; beforeEach(function () { - var fileSystem = Volume.fromJSON( + const fileSystem = Volume.fromJSON( { "/a/b/node_modules/some-module/index.js": "", "/a/node_modules/module/package.json": JSON.stringify({ @@ -96,13 +94,13 @@ describe("dependencies", function () { (err, result) => { if (err) return done(err); - result.should.be.eql(testCase.result); - Array.from(fileDependencies) - .sort() - .should.eql(testCase.fileDependencies.sort()); - Array.from(missingDependencies) - .sort() - .should.eql(testCase.missingDependencies.sort()); + expect(result).toEqual(testCase.result); + expect(Array.from(fileDependencies).sort()).toEqual( + testCase.fileDependencies.sort() + ); + expect(Array.from(missingDependencies).sort()).toEqual( + testCase.missingDependencies.sort() + ); done(); } ); diff --git a/test/exportsField.js b/test/exportsField.test.js similarity index 93% rename from test/exportsField.js rename to test/exportsField.test.js index cf8089e0..5e70ff52 100644 --- a/test/exportsField.js +++ b/test/exportsField.test.js @@ -1,6 +1,5 @@ const path = require("path"); const fs = require("fs"); -const should = require("should"); const { processExportsField } = require("../lib/util/entrypoints"); const ResolverFactory = require("../lib/ResolverFactory"); const CachedInputFileSystem = require("../lib/CachedInputFileSystem"); @@ -2215,17 +2214,19 @@ describe("Process exports field", function exportsField() { testCases.forEach(testCase => { it(testCase.name, () => { if (testCase.expect instanceof Error) { - should.throws(() => + expect(() => { processExportsField(testCase.suite[0])( testCase.suite[1], new Set(testCase.suite[2]) - ) - ); + ); + }).toThrowError(); } else { - processExportsField(testCase.suite[0])( - testCase.suite[1], - new Set(testCase.suite[2]) - ).should.eql(testCase.expect); + expect( + processExportsField(testCase.suite[0])( + testCase.suite[1], + new Set(testCase.suite[2]) + ) + ).toEqual(testCase.expect); } }); }); @@ -2251,7 +2252,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "exports-field", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "node_modules/exports-field/x.js") ); done(); @@ -2274,7 +2275,7 @@ describe("ExportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "node_modules/exports-field/lib/lib2/main.js") ); done(); @@ -2298,7 +2299,7 @@ describe("ExportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture2, "node_modules/exports-field/lib/browser.js") ); done(); @@ -2314,8 +2315,8 @@ describe("ExportsFieldPlugin", () => { {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/Can't resolve/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/Can't resolve/); done(); } ); @@ -2329,8 +2330,8 @@ describe("ExportsFieldPlugin", () => { {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/Can't resolve/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/Can't resolve/); done(); } ); @@ -2345,7 +2346,7 @@ describe("ExportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture2, "node_modules/exports-field/lib/lib2/main.js") ); done(); @@ -2362,7 +2363,7 @@ describe("ExportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "node_modules/exports-field/lib/lib2/main.js") ); done(); @@ -2379,7 +2380,7 @@ describe("ExportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture2, "node_modules/exports-field/lib/browser.js") ); done(); @@ -2396,7 +2397,7 @@ describe("ExportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve( fixture2, "node_modules/exports-field/lib/browser.js?foo" @@ -2410,8 +2411,8 @@ describe("ExportsFieldPlugin", () => { it("resolver should respect query parameters #2. Direct matching", done => { resolver.resolve({}, fixture2, "exports-field?foo", {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/Package path \.\/\?foo is not exported/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/Package path \.\/\?foo is not exported/); done(); }); }); @@ -2425,7 +2426,7 @@ describe("ExportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve( fixture2, "node_modules/exports-field/lib/browser.js#foo" @@ -2439,8 +2440,8 @@ describe("ExportsFieldPlugin", () => { it("resolver should respect fragment parameters #2. Direct matching", done => { resolver.resolve({}, fixture2, "exports-field#foo", {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/Package path \.\/#foo is not exported/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/Package path \.\/#foo is not exported/); done(); }); }); @@ -2454,7 +2455,7 @@ describe("ExportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "node_modules/exports-field/lib/main.js") ); done(); @@ -2470,8 +2471,8 @@ describe("ExportsFieldPlugin", () => { {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/Can't resolve/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/Can't resolve/); done(); } ); @@ -2485,8 +2486,8 @@ describe("ExportsFieldPlugin", () => { {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/out of package scope/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/out of package scope/); done(); } ); @@ -2500,8 +2501,8 @@ describe("ExportsFieldPlugin", () => { {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/out of package scope/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/out of package scope/); done(); } ); @@ -2511,7 +2512,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "@exports-field/core", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "./a.js")); + expect(result).toEqual(path.resolve(fixture, "./a.js")); done(); }); }); @@ -2524,8 +2525,8 @@ describe("ExportsFieldPlugin", () => { {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/not exported from package/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/not exported from package/); done(); } ); @@ -2542,7 +2543,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture3, "exports-field", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture3, "node_modules/exports-field/main.js") ); done(); @@ -2560,7 +2561,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture3, "exports-field", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture3, "node_modules/exports-field/main.js") ); done(); @@ -2578,7 +2579,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture3, "exports-field", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture3, "node_modules/exports-field/main.js") ); done(); @@ -2596,7 +2597,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture2, "exports-field", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture2, "node_modules/exports-field/index.js") ); done(); @@ -2614,7 +2615,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture3, "exports-field", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture3, "node_modules/exports-field/index") ); done(); @@ -2624,8 +2625,8 @@ describe("ExportsFieldPlugin", () => { it("request ending with slash #1", done => { resolver.resolve({}, fixture, "exports-field/", {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/Resolving to directories is not possible/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/Resolving to directories is not possible/); done(); }); }); @@ -2633,8 +2634,8 @@ describe("ExportsFieldPlugin", () => { it("request ending with slash #2", done => { resolver.resolve({}, fixture, "exports-field/dist/", {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/Resolving to directories is not possible/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/Resolving to directories is not possible/); done(); }); }); @@ -2642,8 +2643,8 @@ describe("ExportsFieldPlugin", () => { it("request ending with slash #3", done => { resolver.resolve({}, fixture, "exports-field/lib/", {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/Resolving to directories is not possible/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/Resolving to directories is not possible/); done(); }); }); @@ -2651,8 +2652,8 @@ describe("ExportsFieldPlugin", () => { it("should throw error if target is invalid", done => { resolver.resolve({}, fixture4, "exports-field", {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/Trying to access out of package scope/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/Trying to access out of package scope/); done(); }); }); @@ -2665,9 +2666,9 @@ describe("ExportsFieldPlugin", () => { {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/should be relative path/); - err.message.should.match(/umd/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/should be relative path/); + expect(err.message).toMatch(/umd/); done(); } ); @@ -2683,27 +2684,12 @@ describe("ExportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.be.eql( - path.join(fixture, "node_modules/exports-field/lib/browser.js") + expect(result).toEqual( + path.resolve(fixture, "node_modules/exports-field/lib/browser.js") ); - log - .map(line => line.replace(fixture, "...").replace(/\\/g, "/")) - .should.be.eql([ - "resolve 'exports-field/dist/browser.js' in '...'", - " Parsed request is a module", - " using description file: .../package.json (relative path: .)", - " resolve as module", - " looking for modules in .../node_modules", - " existing directory .../node_modules/exports-field", - " using description file: .../node_modules/exports-field/package.json (relative path: .)", - " using exports field: ./lib/lib2/browser.js", - " using description file: .../node_modules/exports-field/package.json (relative path: ./lib/lib2/browser.js)", - " .../node_modules/exports-field/lib/lib2/browser.js doesn't exist", - " using exports field: ./lib/browser.js", - " using description file: .../node_modules/exports-field/package.json (relative path: ./lib/browser.js)", - " existing file: .../node_modules/exports-field/lib/browser.js", - " reporting result .../node_modules/exports-field/lib/browser.js" - ]); + expect( + log.map(line => line.replace(fixture, "...").replace(/\\/g, "/")) + ).toMatchSnapshot(); done(); } ); @@ -2718,7 +2704,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "m/features/f.js", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/m/src/features/f.js") ); done(); @@ -2734,7 +2720,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "m/features/y/y.js", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/m/src/features/y/y.js") ); done(); @@ -2750,7 +2736,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "m/features/y/y.js", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/m/src/features/y/y.js") ); done(); @@ -2771,7 +2757,7 @@ describe("ExportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/m/src/features/y/y.js") ); done(); @@ -2788,7 +2774,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "m/middle/nested/f.js", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/m/src/middle/nested/f.js") ); done(); @@ -2809,7 +2795,7 @@ describe("ExportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/m/src/middle-1/nested/f.js") ); done(); @@ -2831,7 +2817,7 @@ describe("ExportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/m/src/middle-2/nested/f.js") ); done(); @@ -2848,7 +2834,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "m/middle-3/nested/f", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve( fixture, "./node_modules/m/src/middle-3/nested/f/nested/f.js" @@ -2867,7 +2853,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "m/middle-4/f/nested", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/m/src/middle-4/f/f.js") ); done(); @@ -2883,7 +2869,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "m/middle-5/f$/$", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/m/src/middle-5/f$/$.js") ); done(); @@ -2903,8 +2889,8 @@ describe("ExportsFieldPlugin", () => { {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match( + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch( /Package path \.\/features\/internal\/file\.js is not exported/ ); done(); @@ -2930,7 +2916,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "@org/pkg/string.js", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/@org/pkg/dist/string.js") ); done(); @@ -2955,7 +2941,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "pkg/string.js", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/pkg/dist/string.js") ); done(); @@ -2980,7 +2966,7 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "pkg/string.js", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/pkg/dist/string.js") ); done(); @@ -3004,8 +2990,10 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "pkg/string.js", {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/Package path \.\/string\.ts is not exported/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch( + /Package path \.\/string\.ts is not exported/ + ); done(); }); }); @@ -3027,8 +3015,10 @@ describe("ExportsFieldPlugin", () => { resolver.resolve({}, fixture, "pkg/string.js", {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/Package path \.\/string\.ts is not exported/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch( + /Package path \.\/string\.ts is not exported/ + ); done(); }); }); diff --git a/test/extension-alias.js b/test/extension-alias.test.js similarity index 82% rename from test/extension-alias.js rename to test/extension-alias.test.js index 0ebca622..aafc760e 100644 --- a/test/extension-alias.js +++ b/test/extension-alias.test.js @@ -1,6 +1,5 @@ const path = require("path"); const fs = require("fs"); -const should = require("should"); const CachedInputFileSystem = require("../lib/CachedInputFileSystem"); const ResolverFactory = require("../lib/ResolverFactory"); @@ -24,7 +23,7 @@ describe("extension-alias", () => { it("should alias fully specified file", done => { resolver.resolve({}, fixture, "./index.js", {}, (err, result) => { if (err) return done(err); - should(result).be.eql(path.resolve(fixture, "index.ts")); + expect(result).toEqual(path.resolve(fixture, "index.ts")); done(); }); }); @@ -32,7 +31,7 @@ describe("extension-alias", () => { it("should alias fully specified file when there are two alternatives", done => { resolver.resolve({}, fixture, "./dir/index.js", {}, (err, result) => { if (err) return done(err); - should(result).be.eql(path.resolve(fixture, "dir", "index.ts")); + expect(result).toEqual(path.resolve(fixture, "dir", "index.ts")); done(); }); }); @@ -40,7 +39,7 @@ describe("extension-alias", () => { it("should also allow the second alternative", done => { resolver.resolve({}, fixture, "./dir2/index.js", {}, (err, result) => { if (err) return done(err); - should(result).be.eql(path.resolve(fixture, "dir2", "index.js")); + expect(result).toEqual(path.resolve(fixture, "dir2", "index.js")); done(); }); }); @@ -48,14 +47,14 @@ describe("extension-alias", () => { it("should support alias option without an array", done => { resolver.resolve({}, fixture, "./dir2/index.mjs", {}, (err, result) => { if (err) return done(err); - should(result).be.eql(path.resolve(fixture, "dir2", "index.mts")); + expect(result).toEqual(path.resolve(fixture, "dir2", "index.mts")); done(); }); }); it("should not allow to fallback to the original extension or add extensions", done => { resolver.resolve({}, fixture, "./index.mjs", {}, (err, result) => { - should(err).be.instanceOf(Error); + expect(err).toBeInstanceOf(Error); done(); }); }); @@ -73,7 +72,7 @@ describe("extension-alias", () => { it("directory", done => { resolver.resolve({}, fixture, "./dir2", {}, (err, result) => { if (err) return done(err); - should(result).be.eql(path.resolve(fixture, "dir2", "index.js")); + expect(result).toEqual(path.resolve(fixture, "dir2", "index.js")); done(); }); }); @@ -81,7 +80,7 @@ describe("extension-alias", () => { it("file", done => { resolver.resolve({}, fixture, "./dir2/index", {}, (err, result) => { if (err) return done(err); - should(result).be.eql(path.resolve(fixture, "dir2", "index.js")); + expect(result).toEqual(path.resolve(fixture, "dir2", "index.js")); done(); }); }); diff --git a/test/extensions.js b/test/extensions.test.js similarity index 85% rename from test/extensions.js rename to test/extensions.test.js index 4963f35e..6d0154a8 100644 --- a/test/extensions.js +++ b/test/extensions.test.js @@ -1,5 +1,3 @@ -require("should"); - const path = require("path"); const fs = require("fs"); const { ResolverFactory, CachedInputFileSystem } = require("../"); @@ -29,7 +27,7 @@ describe("extensions", function () { resolver.resolve({}, fixture, "./foo", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "foo.ts")); + expect(result).toEqual(path.resolve(fixture, "foo.ts")); done(); }); }); @@ -37,7 +35,7 @@ describe("extensions", function () { resolver.resolve({}, fixture, "./dir", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "dir", "index.ts")); + expect(result).toEqual(path.resolve(fixture, "dir/index.ts")); done(); }); }); @@ -45,7 +43,7 @@ describe("extensions", function () { resolver.resolve({}, fixture, ".", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "index.js")); + expect(result).toEqual(path.resolve(fixture, "index.js")); done(); }); }); @@ -53,7 +51,7 @@ describe("extensions", function () { resolver.resolve({}, fixture, "module", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "node_modules/module.js")); + expect(result).toEqual(path.resolve(fixture, "node_modules/module.js")); done(); }); }); @@ -61,7 +59,7 @@ describe("extensions", function () { resolver.resolve({}, fixture, "module/", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "node_modules/module/index.ts") ); done(); @@ -70,28 +68,28 @@ describe("extensions", function () { it("should not resolve to file when request has a trailing slash (relative)", function (done) { resolver.resolve({}, fixture, "./foo.js/", {}, (err, result) => { if (!err) throw new Error("No error"); - err.should.be.instanceof(Error); + expect(err).toBeInstanceOf(Error); done(); }); }); it("should not resolve to file when request has a trailing slash (module)", function (done) { resolver.resolve({}, fixture, "module.js/", {}, (err, result) => { if (!err) throw new Error("No error"); - err.should.be.instanceof(Error); + expect(err).toBeInstanceOf(Error); done(); }); }); it("should default enforceExtension to true when extensions includes an empty string", function (done) { const missingDependencies = new Set(); resolver2.resolve({}, fixture, "./foo", { missingDependencies }, () => { - missingDependencies.should.not.containEql(path.resolve(fixture, "foo")); + expect(missingDependencies).not.toContain(path.resolve(fixture, "foo")); done(); }); }); it("should respect enforceExtension when extensions includes an empty string", function (done) { const missingDependencies = new Set(); resolver3.resolve({}, fixture, "./foo", { missingDependencies }, () => { - missingDependencies.should.containEql(path.resolve(fixture, "foo")); + expect(missingDependencies).toContain(path.resolve(fixture, "foo")); done(); }); }); diff --git a/test/fallback.js b/test/fallback.js deleted file mode 100644 index f61220b0..00000000 --- a/test/fallback.js +++ /dev/null @@ -1,147 +0,0 @@ -require("should"); - -var { Volume } = require("memfs"); -var { ResolverFactory } = require("../"); - -describe("fallback", function () { - var resolver; - - beforeEach(function () { - var fileSystem = Volume.fromJSON( - { - "/a/index": "", - "/a/dir/index": "", - "/recursive/index": "", - "/recursive/dir/index": "", - "/recursive/dir/file": "", - "/recursive/dir/dir/index": "", - "/b/index": "", - "/b/dir/index": "", - "/c/index": "", - "/c/dir/index": "", - "/d/index.js": "", - "/d/dir/.empty": "", - "/e/index": "", - "/e/anotherDir/index": "", - "/e/dir/file": "" - }, - "/" - ); - resolver = ResolverFactory.createResolver({ - fallback: { - aliasA: "a", - b$: "a/index", - c$: "/a/index", - multiAlias: ["b", "c", "d", "e", "a"], - recursive: "recursive/dir", - "/d/dir": "/c/dir", - "/d/index.js": "/c/index", - ignored: false - }, - modules: "/", - useSyncFileSystemCalls: true, - fileSystem: fileSystem - }); - }); - - it("should resolve a not aliased module", function () { - resolver.resolveSync({}, "/", "a").should.be.eql("/a/index"); - resolver.resolveSync({}, "/", "a/index").should.be.eql("/a/index"); - resolver.resolveSync({}, "/", "a/dir").should.be.eql("/a/dir/index"); - resolver.resolveSync({}, "/", "a/dir/index").should.be.eql("/a/dir/index"); - }); - it("should resolve an fallback module", function () { - resolver.resolveSync({}, "/", "aliasA").should.be.eql("/a/index"); - resolver.resolveSync({}, "/", "aliasA/index").should.be.eql("/a/index"); - resolver.resolveSync({}, "/", "aliasA/dir").should.be.eql("/a/dir/index"); - resolver - .resolveSync({}, "/", "aliasA/dir/index") - .should.be.eql("/a/dir/index"); - }); - it("should resolve an ignore module", () => { - resolver.resolveSync({}, "/", "ignored").should.be.eql(false); - }); - it("should resolve a recursive aliased module", function () { - resolver - .resolveSync({}, "/", "recursive") - .should.be.eql("/recursive/index"); - resolver - .resolveSync({}, "/", "recursive/index") - .should.be.eql("/recursive/index"); - resolver - .resolveSync({}, "/", "recursive/dir") - .should.be.eql("/recursive/dir/index"); - resolver - .resolveSync({}, "/", "recursive/dir/index") - .should.be.eql("/recursive/dir/index"); - resolver - .resolveSync({}, "/", "recursive/file") - .should.be.eql("/recursive/dir/file"); - }); - it("should resolve a file aliased module with a query", function () { - resolver.resolveSync({}, "/", "b?query").should.be.eql("/b/index?query"); - resolver.resolveSync({}, "/", "c?query").should.be.eql("/c/index?query"); - }); - it("should resolve a path in a file aliased module", function () { - resolver.resolveSync({}, "/", "b/index").should.be.eql("/b/index"); - resolver.resolveSync({}, "/", "b/dir").should.be.eql("/b/dir/index"); - resolver.resolveSync({}, "/", "b/dir/index").should.be.eql("/b/dir/index"); - resolver.resolveSync({}, "/", "c/index").should.be.eql("/c/index"); - resolver.resolveSync({}, "/", "c/dir").should.be.eql("/c/dir/index"); - resolver.resolveSync({}, "/", "c/dir/index").should.be.eql("/c/dir/index"); - }); - it("should resolve a file in multiple aliased dirs", function () { - resolver - .resolveSync({}, "/", "multiAlias/dir/file") - .should.be.eql("/e/dir/file"); - resolver - .resolveSync({}, "/", "multiAlias/anotherDir") - .should.be.eql("/e/anotherDir/index"); - }); - it("should log the correct info", done => { - const log = []; - resolver.resolve( - {}, - "/", - "aliasA/dir", - { log: v => log.push(v) }, - (err, result) => { - if (err) return done(err); - result.should.be.eql("/a/dir/index"); - log.should.be.eql([ - "resolve 'aliasA/dir' in '/'", - " Parsed request is a module", - " No description file found in / or above", - " resolve as module", - " looking for modules in /", - " /aliasA doesn't exist", - " aliased with mapping 'aliasA': 'a' to 'a/dir'", - " Parsed request is a module", - " No description file found in / or above", - " resolve as module", - " looking for modules in /", - " existing directory /a", - " No description file found in /a or above", - " No description file found in /a or above", - " no extension", - " /a/dir is not a file", - " .js", - " /a/dir.js doesn't exist", - " .json", - " /a/dir.json doesn't exist", - " .node", - " /a/dir.node doesn't exist", - " as directory", - " existing directory /a/dir", - " No description file found in /a/dir or above", - " using path: /a/dir/index", - " No description file found in /a/dir or above", - " no extension", - " existing file: /a/dir/index", - " reporting result /a/dir/index" - ]); - done(); - } - ); - }); -}); diff --git a/test/fallback.test.js b/test/fallback.test.js new file mode 100644 index 00000000..3bedf7c0 --- /dev/null +++ b/test/fallback.test.js @@ -0,0 +1,112 @@ +const { Volume } = require("memfs"); +const { ResolverFactory } = require("../"); + +describe("fallback", function () { + let resolver; + + beforeEach(function () { + const fileSystem = Volume.fromJSON( + { + "/a/index": "", + "/a/dir/index": "", + "/recursive/index": "", + "/recursive/dir/index": "", + "/recursive/dir/file": "", + "/recursive/dir/dir/index": "", + "/b/index": "", + "/b/dir/index": "", + "/c/index": "", + "/c/dir/index": "", + "/d/index.js": "", + "/d/dir/.empty": "", + "/e/index": "", + "/e/anotherDir/index": "", + "/e/dir/file": "" + }, + "/" + ); + resolver = ResolverFactory.createResolver({ + fallback: { + aliasA: "a", + b$: "a/index", + c$: "/a/index", + multiAlias: ["b", "c", "d", "e", "a"], + recursive: "recursive/dir", + "/d/dir": "/c/dir", + "/d/index.js": "/c/index", + ignored: false + }, + modules: "/", + useSyncFileSystemCalls: true, + fileSystem: fileSystem + }); + }); + + it("should resolve a not aliased module", function () { + expect(resolver.resolveSync({}, "/", "a")).toBe("/a/index"); + expect(resolver.resolveSync({}, "/", "a/index")).toBe("/a/index"); + expect(resolver.resolveSync({}, "/", "a/dir")).toBe("/a/dir/index"); + expect(resolver.resolveSync({}, "/", "a/dir/index")).toBe("/a/dir/index"); + }); + it("should resolve an fallback module", function () { + expect(resolver.resolveSync({}, "/", "aliasA")).toBe("/a/index"); + expect(resolver.resolveSync({}, "/", "aliasA/index")).toBe("/a/index"); + expect(resolver.resolveSync({}, "/", "aliasA/dir")).toBe("/a/dir/index"); + expect(resolver.resolveSync({}, "/", "aliasA/dir/index")).toBe( + "/a/dir/index" + ); + }); + it("should resolve an ignore module", () => { + expect(resolver.resolveSync({}, "/", "ignored")).toBe(false); + }); + it("should resolve a recursive aliased module", function () { + expect(resolver.resolveSync({}, "/", "recursive")).toBe("/recursive/index"); + expect(resolver.resolveSync({}, "/", "recursive/index")).toBe( + "/recursive/index" + ); + expect(resolver.resolveSync({}, "/", "recursive/dir")).toBe( + "/recursive/dir/index" + ); + expect(resolver.resolveSync({}, "/", "recursive/dir/index")).toBe( + "/recursive/dir/index" + ); + expect(resolver.resolveSync({}, "/", "recursive/file")).toBe( + "/recursive/dir/file" + ); + }); + it("should resolve a file aliased module with a query", function () { + expect(resolver.resolveSync({}, "/", "b?query")).toBe("/b/index?query"); + expect(resolver.resolveSync({}, "/", "c?query")).toBe("/c/index?query"); + }); + it("should resolve a path in a file aliased module", function () { + expect(resolver.resolveSync({}, "/", "b/index")).toBe("/b/index"); + expect(resolver.resolveSync({}, "/", "b/dir")).toBe("/b/dir/index"); + expect(resolver.resolveSync({}, "/", "b/dir/index")).toBe("/b/dir/index"); + expect(resolver.resolveSync({}, "/", "c/index")).toBe("/c/index"); + expect(resolver.resolveSync({}, "/", "c/dir")).toBe("/c/dir/index"); + expect(resolver.resolveSync({}, "/", "c/dir/index")).toBe("/c/dir/index"); + }); + it("should resolve a file in multiple aliased dirs", function () { + expect(resolver.resolveSync({}, "/", "multiAlias/dir/file")).toBe( + "/e/dir/file" + ); + expect(resolver.resolveSync({}, "/", "multiAlias/anotherDir")).toBe( + "/e/anotherDir/index" + ); + }); + it("should log the correct info", done => { + const log = []; + resolver.resolve( + {}, + "/", + "aliasA/dir", + { log: v => log.push(v) }, + (err, result) => { + if (err) return done(err); + expect(result).toBe("/a/dir/index"); + expect(log).toMatchSnapshot(); + done(); + } + ); + }); +}); diff --git a/test/forEachBail.js b/test/forEachBail.test.js similarity index 78% rename from test/forEachBail.js rename to test/forEachBail.test.js index e950bf78..7a01ebe8 100644 --- a/test/forEachBail.js +++ b/test/forEachBail.test.js @@ -1,5 +1,3 @@ -require("should"); - const { forEachBail } = require("../"); describe("forEachBail", () => { @@ -16,8 +14,8 @@ describe("forEachBail", () => { }, (err, result) => { if (err) return done(err); - result.should.be.eql("result"); - log.should.be.eql([0, 1, 2, 3, 4, 5]); + expect(result).toBe("result"); + expect(log).toEqual([0, 1, 2, 3, 4, 5]); done(); } ); @@ -29,7 +27,8 @@ describe("forEachBail", () => { done(new Error("Should not be called")); }, (err, result) => { - [err, result].should.be.eql([undefined, undefined]); + expect(err).toBeUndefined(); + expect(result).toBeUndefined(); done(); } ); @@ -41,7 +40,8 @@ describe("forEachBail", () => { return callback(); }, (err, result) => { - [err, result].should.be.eql([undefined, undefined]); + expect(err).toBeUndefined(); + expect(result).toBeUndefined(); done(); } ); @@ -53,7 +53,8 @@ describe("forEachBail", () => { process.nextTick(callback); }, (err, result) => { - [err, result].should.be.eql([undefined, undefined]); + expect(err).toBeUndefined(); + expect(result).toBeUndefined(); done(); } ); diff --git a/test/fullSpecified.js b/test/fullSpecified.test.js similarity index 94% rename from test/fullSpecified.js rename to test/fullSpecified.test.js index 77358056..3121517c 100644 --- a/test/fullSpecified.js +++ b/test/fullSpecified.test.js @@ -1,5 +1,3 @@ -require("should"); - const { Volume } = require("memfs"); const { ResolverFactory } = require("../"); @@ -77,9 +75,9 @@ describe("fullSpecified", function () { for (const key of Object.keys(failingResolves)) { const request = failingResolves[key]; it(`should fail resolving ${key}`, () => { - (() => { + expect(() => { resolver.resolveSync({}, "/a", request); - }).should.throwError(); + }).toThrowError(); }); } @@ -87,7 +85,7 @@ describe("fullSpecified", function () { const [request, expected] = successfulResolves[key]; it(`should resolve ${key} successfully`, () => { try { - resolver.resolveSync({}, "/a", request).should.be.eql(expected); + expect(resolver.resolveSync({}, "/a", request)).toEqual(expected); } catch (e) { e.message += `\n${e.details}`; throw e; @@ -116,7 +114,9 @@ describe("fullSpecified", function () { const [request, expected] = successfulContextResolves[key]; it(`should resolve ${key} successfully to an context`, () => { try { - contextResolver.resolveSync({}, "/a", request).should.be.eql(expected); + expect(contextResolver.resolveSync({}, "/a", request)).toEqual( + expected + ); } catch (e) { e.message += `\n${e.details}`; throw e; diff --git a/test/getPaths.js b/test/getPaths.test.js similarity index 84% rename from test/getPaths.js rename to test/getPaths.test.js index 2549f076..eff8f0ad 100644 --- a/test/getPaths.js +++ b/test/getPaths.test.js @@ -1,5 +1,3 @@ -require("should"); - const getPaths = require("../lib/getPaths"); /** @@ -19,7 +17,7 @@ const cases = [ cases.forEach(case_ => { it(case_[0], () => { const { paths, segments } = getPaths(case_[0]); - paths.should.be.eql(case_[1].paths); - segments.should.be.eql(case_[1].segments); + expect(paths).toEqual(case_[1].paths); + expect(segments).toEqual(case_[1].segments); }); }); diff --git a/test/identifier.js b/test/identifier.test.js similarity index 58% rename from test/identifier.js rename to test/identifier.test.js index 214d7bb1..6d18954c 100644 --- a/test/identifier.js +++ b/test/identifier.test.js @@ -1,21 +1,20 @@ -require("should"); const { parseIdentifier } = require("../lib/util/identifier"); /** - * @typedef {{input: string, expect: [string, string, string]}} TestSuite + * @typedef {{input: string, expected: [string, string, string]}} TestSuite */ /** * @param {TestSuite[]} suites suites */ function run(suites) { - suites.forEach(({ input, expect }) => { + suites.forEach(({ input, expected }) => { it(input, () => { const parsed = parseIdentifier(input); if (!parsed) throw new Error("should not be null"); - parsed.should.eql(expect); + expect(parsed).toEqual(expected); }); }); } @@ -25,35 +24,35 @@ describe("parse identifier. edge cases", () => { const tests = [ { input: "path/#", - expect: ["path/", "", "#"] + expected: ["path/", "", "#"] }, { input: "path/as/?", - expect: ["path/as/", "?", ""] + expected: ["path/as/", "?", ""] }, { input: "path/#/?", - expect: ["path/", "", "#/?"] + expected: ["path/", "", "#/?"] }, { input: "path/#repo#hash", - expect: ["path/", "", "#repo#hash"] + expected: ["path/", "", "#repo#hash"] }, { input: "path/#r#hash", - expect: ["path/", "", "#r#hash"] + expected: ["path/", "", "#r#hash"] }, { input: "path/#repo/#repo2#hash", - expect: ["path/", "", "#repo/#repo2#hash"] + expected: ["path/", "", "#repo/#repo2#hash"] }, { input: "path/#r/#r#hash", - expect: ["path/", "", "#r/#r#hash"] + expected: ["path/", "", "#r/#r#hash"] }, { input: "path/#/not/a/hash?not-a-query", - expect: ["path/", "", "#/not/a/hash?not-a-query"] + expected: ["path/", "", "#/not/a/hash?not-a-query"] } ]; @@ -65,27 +64,27 @@ describe("parse identifier. Windows-like paths", () => { const tests = [ { input: "path\\#", - expect: ["path\\", "", "#"] + expected: ["path\\", "", "#"] }, { input: "C:path\\as\\?", - expect: ["C:path\\as\\", "?", ""] + expected: ["C:path\\as\\", "?", ""] }, { input: "path\\#\\?", - expect: ["path\\", "", "#\\?"] + expected: ["path\\", "", "#\\?"] }, { input: "path\\#repo#hash", - expect: ["path\\", "", "#repo#hash"] + expected: ["path\\", "", "#repo#hash"] }, { input: "path\\#r#hash", - expect: ["path\\", "", "#r#hash"] + expected: ["path\\", "", "#r#hash"] }, { input: "path\\#/not/a/hash?not-a-query", - expect: ["path\\", "", "#/not/a/hash?not-a-query"] + expected: ["path\\", "", "#/not/a/hash?not-a-query"] } ]; diff --git a/test/importsField.js b/test/importsField.test.js similarity index 90% rename from test/importsField.js rename to test/importsField.test.js index 59eacba4..06933441 100644 --- a/test/importsField.js +++ b/test/importsField.test.js @@ -1,6 +1,5 @@ const path = require("path"); const fs = require("fs"); -const should = require("should"); const { processImportsField } = require("../lib/util/entrypoints"); const ResolverFactory = require("../lib/ResolverFactory"); const CachedInputFileSystem = require("../lib/CachedInputFileSystem"); @@ -1161,17 +1160,19 @@ describe("Process imports field", function exportsField() { testCases.forEach(testCase => { it(testCase.name, () => { if (testCase.expect instanceof Error) { - should.throws(() => + expect(() => processImportsField(testCase.suite[0])( testCase.suite[1], new Set(testCase.suite[2]) ) - ); + ).toThrowError(); } else { - processImportsField(testCase.suite[0])( - testCase.suite[1], - new Set(testCase.suite[2]) - ).should.eql(testCase.expect); + expect( + processImportsField(testCase.suite[0])( + testCase.suite[1], + new Set(testCase.suite[2]) + ) + ).toEqual(testCase.expect); } }); }); @@ -1191,7 +1192,7 @@ describe("ImportsFieldPlugin", () => { resolver.resolve({}, fixture, "#imports-field", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "b.js")); + expect(result).toEqual(path.resolve(fixture, "b.js")); done(); }); }); @@ -1205,7 +1206,7 @@ describe("ImportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "b.js")); + expect(result).toEqual(path.resolve(fixture, "b.js")); done(); } ); @@ -1214,8 +1215,8 @@ describe("ImportsFieldPlugin", () => { it("should disallow resolve out of package scope", done => { resolver.resolve({}, fixture, "#b", {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/Trying to access out of package scope/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/Trying to access out of package scope/); done(); }); }); @@ -1232,7 +1233,7 @@ describe("ImportsFieldPlugin", () => { resolver.resolve({}, fixture, "#imports-field", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "./b.js")); + expect(result).toEqual(path.resolve(fixture, "b.js")); done(); }); }); @@ -1249,7 +1250,7 @@ describe("ImportsFieldPlugin", () => { resolver.resolve({}, fixture, "#b", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "./a.js")); + expect(result).toEqual(path.resolve(fixture, "a.js")); done(); }); }); @@ -1258,7 +1259,7 @@ describe("ImportsFieldPlugin", () => { resolver.resolve({}, fixture, "#a/dist/main.js", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "node_modules/a/lib/lib2/main.js") ); done(); @@ -1268,8 +1269,8 @@ describe("ImportsFieldPlugin", () => { it("should resolve package #2", done => { resolver.resolve({}, fixture, "#a", {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - err.message.should.match(/is not imported from package/); + expect(err).toBeInstanceOf(Error); + expect(err.message).toMatch(/is not imported from package/); done(); }); }); @@ -1278,7 +1279,7 @@ describe("ImportsFieldPlugin", () => { resolver.resolve({}, fixture, "#ccc/index.js", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "node_modules/c/index.js")); + expect(result).toEqual(path.resolve(fixture, "node_modules/c/index.js")); done(); }); }); @@ -1287,7 +1288,7 @@ describe("ImportsFieldPlugin", () => { resolver.resolve({}, fixture, "#c", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "node_modules/c/index.js")); + expect(result).toEqual(path.resolve(fixture, "node_modules/c/index.js")); done(); }); }); @@ -1309,7 +1310,7 @@ describe("ImportsFieldPlugin", () => { if (err) return done(err); if (!result) throw new Error("No result"); console.log(result); - result.should.equal(file); + expect(result).toEqual(file); done(); }); }); @@ -1325,34 +1326,12 @@ describe("ImportsFieldPlugin", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.be.eql(path.join(fixture, "node_modules/a/lib/index.js")); - log - .map(line => line.replace(fixture, "...").replace(/\\/g, "/")) - .should.be.eql([ - "resolve '#a/dist/index.js' in '...'", - " using description file: .../package.json (relative path: .)", - " resolve as internal import", - " using imports field: a/dist/index.js", - " Parsed request is a module", - " using description file: .../package.json (relative path: .)", - " resolve as module", - " looking for modules in .../node_modules", - " existing directory .../node_modules/a", - " using description file: .../node_modules/a/package.json (relative path: .)", - " using exports field: ./lib/lib2/index.js", - " using description file: .../node_modules/a/package.json (relative path: ./lib/lib2/index.js)", - " no extension", - " .../node_modules/a/lib/lib2/index.js doesn't exist", - " .js", - " .../node_modules/a/lib/lib2/index.js.js doesn't exist", - " as directory", - " .../node_modules/a/lib/lib2/index.js doesn't exist", - " using exports field: ./lib/index.js", - " using description file: .../node_modules/a/package.json (relative path: ./lib/index.js)", - " no extension", - " existing file: .../node_modules/a/lib/index.js", - " reporting result .../node_modules/a/lib/index.js" - ]); + expect(result).toEqual( + path.join(fixture, "node_modules/a/lib/index.js") + ); + expect( + log.map(line => line.replace(fixture, "...").replace(/\\/g, "/")) + ).toMatchSnapshot(); done(); } ); @@ -1366,7 +1345,7 @@ describe("ImportsFieldPlugin", () => { resolver.resolve({}, fixture, "#internal/i.js", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "./src/internal/i.js")); + expect(result).toEqual(path.resolve(fixture, "./src/internal/i.js")); done(); }); }); diff --git a/test/incorrect-description-file.js b/test/incorrect-description-file.test.js similarity index 70% rename from test/incorrect-description-file.js rename to test/incorrect-description-file.test.js index 7e6245de..20ed2cb4 100644 --- a/test/incorrect-description-file.js +++ b/test/incorrect-description-file.test.js @@ -1,10 +1,8 @@ -require("should"); +const path = require("path"); +const fs = require("fs"); +const { CachedInputFileSystem, ResolverFactory } = require("../"); -var path = require("path"); -var fs = require("fs"); -var { CachedInputFileSystem, ResolverFactory } = require("../"); - -var fixtures = path.join(__dirname, "fixtures", "incorrect-package"); +const fixtures = path.join(__dirname, "fixtures", "incorrect-package"); const nodeFileSystem = new CachedInputFileSystem(fs, 4000); function p() { @@ -30,9 +28,11 @@ describe("incorrect description file", () => { }; resolver.resolve({}, p("pack1"), ".", ctx, function (err, result) { if (!err) throw new Error("No error"); - err.should.be.instanceof(Error); - ctx.fileDependencies.has(p("package.json")); - called.should.be.eql(true); + expect(err).toBeInstanceOf(Error); + expect(ctx.fileDependencies.has(p("pack1", "package.json"))).toEqual( + true + ); + expect(called).toBe(true); done(); }); }); @@ -47,8 +47,10 @@ describe("incorrect description file", () => { }; resolver.resolve({}, p("pack2"), ".", ctx, function (err, result) { if (!err) throw new Error("No error"); - ctx.fileDependencies.has(p("package.json")); - called.should.be.eql(true); + expect(ctx.fileDependencies.has(p("pack2", "package.json"))).toEqual( + true + ); + expect(called).toBe(true); done(); }); }); @@ -56,7 +58,7 @@ describe("incorrect description file", () => { it("should not resolve main in incorrect description file #3", done => { resolver.resolve({}, p("pack2"), ".", {}, function (err, result) { if (!err) throw new Error("No error"); - err.should.be.instanceof(Error); + expect(err).toBeInstanceOf(Error); done(); }); }); diff --git a/test/missing.js b/test/missing.test.js similarity index 80% rename from test/missing.js rename to test/missing.test.js index da7b02db..15f771f3 100644 --- a/test/missing.js +++ b/test/missing.test.js @@ -1,13 +1,11 @@ -var should = require("should"); - -var path = require("path"); -var resolve = require("../"); +const path = require("path"); +const resolve = require("../"); describe("missing", function () { /** * @type {Array<[string, string, Array]>} */ - var testCases = [ + const testCases = [ [ path.join(__dirname, "fixtures"), "./missing-file", @@ -74,11 +72,11 @@ describe("missing", function () { testCases.forEach(function (testCase) { it( "should tell about missing file when trying to resolve " + testCase[1], - function (done) { - var callback = function (err, filename) { - Array.from(missingDependencies) - .sort() - .should.containDeep(testCase[2].sort()); + done => { + const callback = function (err, filename) { + expect(Array.from(missingDependencies).sort()).toEqual( + expect.arrayContaining(testCase[2].sort()) + ); done(); }; const missingDependencies = new Set(); @@ -88,13 +86,14 @@ describe("missing", function () { it( "should report error details exactly once when trying to resolve " + testCase[1], - function (done) { - var callback = function (err, filename) { + done => { + const callback = function (err, filename) { if (err) { - var details = err.details.split("\n"); - var firstDetail = details.shift(); - should.notEqual(firstDetail.indexOf(testCase[1]), -1); - details.should.not.containDeep([firstDetail]); + const details = err.details.split("\n"); + const firstDetail = details.shift(); + + expect(firstDetail).toContain(testCase[1]); + expect(details).not.toContain(firstDetail); } done(); }; diff --git a/test/path.js b/test/path.test.js similarity index 80% rename from test/path.js rename to test/path.test.js index 8e9fd8f8..8629ea99 100644 --- a/test/path.js +++ b/test/path.test.js @@ -1,5 +1,3 @@ -require("should"); - const { checkImportsExportsFieldTarget } = require("../lib/util/path"); describe("checkImportsExportsFieldTarget", () => { @@ -22,8 +20,9 @@ describe("checkImportsExportsFieldTarget", () => { it(case_, done => { const error = checkImportsExportsFieldTarget(case_); if (!error) return done("expect error"); - error.should.be.instanceof(Error); - error.message.should.match(/Trying to access out of package scope/); + + expect(error).toBeInstanceOf(Error); + expect(error.message).toMatch(/Trying to access out of package scope/); done(); }); }); diff --git a/test/plugins.js b/test/plugins.test.js similarity index 85% rename from test/plugins.js rename to test/plugins.test.js index 7ae834f8..6d55e1bb 100644 --- a/test/plugins.js +++ b/test/plugins.test.js @@ -1,12 +1,10 @@ "use strict"; -require("should"); - const path = require("path"); const { ResolverFactory, CloneBasenamePlugin } = require("../"); describe("plugins", function () { - it("should resolve with the CloneBasenamePlugin", function (done) { + it("should resolve with the CloneBasenamePlugin", done => { const resolver = ResolverFactory.createResolver({ fileSystem: require("fs"), plugins: [ @@ -25,7 +23,7 @@ describe("plugins", function () { function (err, result) { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.be.eql( + expect(result).toEqual( path.resolve( __dirname, "fixtures/directory-default/directory-default.js" diff --git a/test/pnp.js b/test/pnp.test.js similarity index 86% rename from test/pnp.js rename to test/pnp.test.js index b4aa42de..65c5a669 100644 --- a/test/pnp.js +++ b/test/pnp.test.js @@ -1,16 +1,12 @@ -require("should"); - const path = require("path"); const fs = require("fs"); const { ResolverFactory, CachedInputFileSystem } = require("../"); -/** @typedef {import("../lib/PnpPlugin").PnpApiImpl} PnpApi */ - const nodeFileSystem = new CachedInputFileSystem(fs, 4000); - const fixture = path.resolve(__dirname, "fixtures", "pnp"); let isAdmin = false; + try { fs.symlinkSync("dir", path.resolve(fixture, "pkg/symlink"), "dir"); isAdmin = true; @@ -29,10 +25,10 @@ describe("pnp", () => { let resolverFuzzy; let resolver; if (isAdmin) { - before(() => { + beforeAll(() => { fs.symlinkSync("dir", path.resolve(fixture, "pkg/symlink"), "dir"); }); - after(() => { + afterAll(() => { fs.unlinkSync(path.resolve(fixture, "pkg/symlink")); }); } @@ -79,14 +75,14 @@ describe("pnp", () => { pnpApi.mocks.set("pkg", path.resolve(fixture, "pkg")); resolver.resolve({}, __dirname, "pkg/dir/index.js", {}, (err, result) => { if (err) return done(err); - result.should.equal(path.resolve(fixture, "pkg/dir/index.js")); + expect(result).toEqual(path.resolve(fixture, "pkg/dir/index.js")); done(); }); }); it("should not resolve a not fully specified request when fullySpecified is set", done => { pnpApi.mocks.set("pkg", path.resolve(fixture, "pkg")); resolver.resolve({}, __dirname, "pkg/dir/index", {}, (err, result) => { - err.should.be.instanceof(Error); + expect(err).toBeInstanceOf(Error); done(); }); }); @@ -101,8 +97,8 @@ describe("pnp", () => { { fileDependencies }, (err, result) => { if (err) return done(err); - result.should.equal(path.resolve(fixture, "pkg/dir/index.js")); - Array.from(fileDependencies).should.containEql( + expect(result).toEqual(path.resolve(fixture, "pkg/dir/index.js")); + expect(Array.from(fileDependencies)).toContainEqual( path.resolve(fixture, ".pnp.js") ); done(); @@ -113,7 +109,7 @@ describe("pnp", () => { pnpApi.mocks.set("pkg", path.resolve(fixture, "pkg")); resolver.resolve({}, __dirname, "pkg", {}, (err, result) => { if (err) return done(err); - result.should.equal(path.resolve(fixture, "pkg/main.js")); + expect(result).toEqual(path.resolve(fixture, "pkg/main.js")); done(); }); }); @@ -121,7 +117,7 @@ describe("pnp", () => { pnpApi.mocks.set("@user/pkg", path.resolve(fixture, "pkg")); resolver.resolve({}, __dirname, "@user/pkg", {}, (err, result) => { if (err) return done(err); - result.should.equal(path.resolve(fixture, "pkg/main.js")); + expect(result).toEqual(path.resolve(fixture, "pkg/main.js")); done(); }); }); @@ -137,7 +133,7 @@ describe("pnp", () => { {}, (err, result) => { if (err) return done(err); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "pkg/symlink/index.js") ); done(); @@ -155,7 +151,9 @@ describe("pnp", () => { {}, (err, result) => { if (err) return done(err); - result.should.equal(path.resolve(fixture, "pkg/typescript/index.ts")); + expect(result).toEqual( + path.resolve(fixture, "pkg/typescript/index.ts") + ); done(); } ); @@ -169,7 +167,7 @@ describe("pnp", () => { {}, (err, result) => { if (err) return done(err); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "pkg/package-alias/browser.js") ); done(); @@ -185,7 +183,9 @@ describe("pnp", () => { {}, (err, result) => { if (err) return done(err); - result.should.equal(path.resolve(fixture, "../node_modules/m2/b.js")); + expect(result).toEqual( + path.resolve(fixture, "../node_modules/m2/b.js") + ); done(); } ); @@ -199,7 +199,7 @@ describe("pnp", () => { {}, (err, result) => { if (err) return done(err); - result.should.equal( + expect(result).toEqual( path.resolve( __dirname, "fixtures/prefer-pnp/alternative-modules/m1/b.js" @@ -218,7 +218,7 @@ describe("pnp", () => { {}, (err, result) => { if (err) return done(err); - result.should.equal(path.resolve(fixture, "pkg/index.js")); + expect(result).toEqual(path.resolve(fixture, "pkg/index.js")); done(); } ); @@ -232,7 +232,7 @@ describe("pnp", () => { {}, (err, result) => { if (err) return done(err); - result.should.equal(path.resolve(fixture, "pkg/index.js")); + expect(result).toEqual(path.resolve(fixture, "pkg/index.js")); done(); } ); @@ -245,7 +245,7 @@ describe("pnp", () => { {}, (err, result) => { if (err) return done(err); - result.should.equal(path.resolve(fixture, "../pnp-a/m2/a.js")); + expect(result).toEqual(path.resolve(fixture, "../pnp-a/m2/a.js")); done(); } ); @@ -259,7 +259,7 @@ describe("pnp", () => { {}, (err, result) => { if (err) return done(err); - result.should.equal(path.resolve(fixture, "pkg3/a.js")); + expect(result).toEqual(path.resolve(fixture, "pkg3/a.js")); done(); } ); @@ -273,7 +273,7 @@ describe("pnp", () => { {}, (err, result) => { if (err) return done(err); - result.should.equal(path.resolve(fixture, "pkg3/a.js")); + expect(result).toEqual(path.resolve(fixture, "pkg3/a.js")); done(); } ); diff --git a/test/pr-53.js b/test/pr-53.test.js similarity index 50% rename from test/pr-53.js rename to test/pr-53.test.js index 5b645a14..cc4b7ced 100644 --- a/test/pr-53.js +++ b/test/pr-53.test.js @@ -1,9 +1,7 @@ -require("should"); +const { CachedInputFileSystem } = require("../"); -var { CachedInputFileSystem } = require("../"); - -describe("pr-53", function () { - it("should allow to readJsonSync in CachedInputFileSystem", function () { +describe("pr-53", () => { + it("should allow to readJsonSync in CachedInputFileSystem", () => { var cfs = new CachedInputFileSystem( { readFileSync: function (path) { @@ -13,6 +11,6 @@ describe("pr-53", function () { 1000 ); if (!cfs.readJsonSync) throw new Error("readJsonSync must be available"); - cfs.readJsonSync("xyz").should.be.eql("abcxyz"); + expect(cfs.readJsonSync("xyz")).toEqual("abcxyz"); }); }); diff --git a/test/resolve.js b/test/resolve.test.js similarity index 78% rename from test/resolve.js rename to test/resolve.test.js index 055bad4d..6804a603 100644 --- a/test/resolve.js +++ b/test/resolve.test.js @@ -1,9 +1,7 @@ -var should = require("should"); +const path = require("path"); +const resolve = require("../"); -var path = require("path"); -var resolve = require("../"); - -var fixtures = path.join(__dirname, "fixtures"); +const fixtures = path.join(__dirname, "fixtures"); const asyncContextResolve = resolve.create({ extensions: [".js", ".json", ".node"], @@ -25,17 +23,17 @@ const preferRelativeResolve = resolve.create({ }); function testResolve(name, context, moduleName, result) { - describe(name, function () { - it("should resolve sync correctly", function () { - var filename = resolve.sync(context, moduleName); - should.exist(filename); - filename.should.equal(result); + describe(name, () => { + it("should resolve sync correctly", () => { + const filename = resolve.sync(context, moduleName); + expect(filename).toBeDefined(); + expect(filename).toEqual(result); }); it("should resolve async correctly", function (done) { resolve(context, moduleName, function (err, filename) { if (err) return done(err); - should.exist(filename); - /** @type {string} */ (filename).should.equal(result); + expect(filename).toBeDefined(); + expect(filename).toEqual(result); done(); }); }); @@ -43,23 +41,23 @@ function testResolve(name, context, moduleName, result) { } function testResolveContext(name, context, moduleName, result) { - describe(name, function () { + describe(name, () => { it("should resolve async correctly", function (done) { asyncContextResolve(context, moduleName, function (err, filename) { if (err) done(err); - should.exist(filename); - /** @type {string} */ (filename).should.equal(result); + expect(filename).toBeDefined(); + expect(filename).toEqual(result); done(); }); }); - it("should resolve sync correctly", function () { - var filename = syncContextResolve(context, moduleName); - should.exist(filename); - filename.should.equal(result); + it("should resolve sync correctly", () => { + const filename = syncContextResolve(context, moduleName); + expect(filename).toBeDefined(); + expect(filename).toEqual(result); }); }); } -describe("resolve", function () { +describe("resolve", () => { testResolve( "absolute path", fixtures, @@ -268,8 +266,8 @@ describe("resolve", function () { "config/myObjectFile", function (err, filename) { if (err) done(err); - should.exist(filename); - /** @type {string} */ (filename).should.equal( + expect(filename).toBeDefined(); + expect(filename).toEqual( path.resolve(issue238, "./src/common/config/myObjectFile.js") ); done(); @@ -280,10 +278,8 @@ describe("resolve", function () { it("should correctly resolve with preferRelative", function (done) { preferRelativeResolve(fixtures, "main1.js", function (err, filename) { if (err) done(err); - should.exist(filename); - /** @type {string} */ (filename).should.equal( - path.join(fixtures, "main1.js") - ); + expect(filename).toBeDefined(); + expect(filename).toEqual(path.join(fixtures, "main1.js")); done(); }); }); @@ -291,8 +287,8 @@ describe("resolve", function () { it("should correctly resolve with preferRelative", function (done) { preferRelativeResolve(fixtures, "m1/a.js", function (err, filename) { if (err) done(err); - should.exist(filename); - /** @type {string} */ (filename).should.equal( + expect(filename).toBeDefined(); + expect(filename).toEqual( path.join(fixtures, "node_modules", "m1", "a.js") ); done(); @@ -300,38 +296,23 @@ describe("resolve", function () { }); it("should not crash when passing undefined as path", done => { - resolve( - fixtures, - /** @type {string} */ (/** @type {unknown} */ (undefined)), - err => { - /** @type {Error} */ (err).should.be.instanceof(Error); - done(); - } - ); + resolve(fixtures, undefined, err => { + expect(err).toBeInstanceOf(Error); + done(); + }); }); it("should not crash when passing undefined as context", done => { - resolve( - {}, - /** @type {string} */ (/** @type {unknown} */ (undefined)), - "./test/resolve.js", - err => { - /** @type {Error} */ (err).should.be.instanceof(Error); - done(); - } - ); + resolve({}, undefined, "./test/resolve.js", err => { + expect(err).toBeInstanceOf(Error); + done(); + }); }); it("should not crash when passing undefined everywhere", done => { - resolve( - /** @type {object} */ (undefined), - /** @type {string} */ (/** @type {unknown} */ (undefined)), - /** @type {string} */ (/** @type {unknown} */ (undefined)), - /** @type {object} */ (/** @type {unknown} */ (undefined)), - err => { - /** @type {Error} */ (err).should.be.instanceof(Error); - done(); - } - ); + resolve(undefined, undefined, undefined, undefined, err => { + expect(err).toBeInstanceOf(Error); + done(); + }); }); }); diff --git a/test/restrictions.js b/test/restrictions.js deleted file mode 100644 index da23fda1..00000000 --- a/test/restrictions.js +++ /dev/null @@ -1,149 +0,0 @@ -require("should"); -const path = require("path"); -const fs = require("fs"); -const ResolverFactory = require("../lib/ResolverFactory"); -const CachedInputFileSystem = require("../lib/CachedInputFileSystem"); - -const fixture = path.resolve(__dirname, "fixtures", "restrictions"); -const nodeFileSystem = new CachedInputFileSystem(fs, 4000); - -describe("restrictions", () => { - it("should respect RegExp restriction", done => { - const resolver = ResolverFactory.createResolver({ - extensions: [".js"], - fileSystem: nodeFileSystem, - restrictions: [/\.(sass|scss|css)$/] - }); - - resolver.resolve({}, fixture, "pck1", {}, (err, result) => { - if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - done(); - }); - }); - - it("should try to find alternative #1", done => { - const resolver = ResolverFactory.createResolver({ - extensions: [".js", ".css"], - fileSystem: nodeFileSystem, - mainFiles: ["index"], - restrictions: [/\.(sass|scss|css)$/] - }); - - resolver.resolve({}, fixture, "pck1", {}, (err, result) => { - if (err) return done(err); - if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "node_modules/pck1/index.css")); - done(); - }); - }); - - it("should respect string restriction", done => { - const resolver = ResolverFactory.createResolver({ - extensions: [".js"], - fileSystem: nodeFileSystem, - restrictions: [fixture] - }); - - resolver.resolve({}, fixture, "pck2", {}, (err, result) => { - if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); - done(); - }); - }); - - it("should try to find alternative #2", done => { - const resolver = ResolverFactory.createResolver({ - extensions: [".js"], - fileSystem: nodeFileSystem, - mainFields: ["main", "style"], - restrictions: [fixture, /\.(sass|scss|css)$/] - }); - - resolver.resolve({}, fixture, "pck2", {}, (err, result) => { - if (err) return done(err); - if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixture, "node_modules/pck2/index.css")); - done(); - }); - }); - - it("should try to find alternative #3", done => { - const resolver = ResolverFactory.createResolver({ - extensions: [".js"], - fileSystem: nodeFileSystem, - mainFields: ["main", "module", "style"], - restrictions: [fixture, /\.(sass|scss|css)$/] - }); - - const log = []; - - resolver.resolve( - {}, - fixture, - "pck2", - { log: log.push.bind(log) }, - (err, result) => { - if (err) return done(err); - if (!result) throw new Error("No result"); - result.should.equal( - path.resolve(fixture, "node_modules/pck2/index.css") - ); - log - .map(line => - line - .replace(path.resolve(__dirname, ".."), "...") - .replace(path.resolve(__dirname, ".."), "...") - .replace(/\\/g, "/") - ) - .should.be.eql([ - "resolve 'pck2' in '.../test/fixtures/restrictions'", - " Parsed request is a module", - " using description file: .../package.json (relative path: ./test/fixtures/restrictions)", - " resolve as module", - " looking for modules in .../test/fixtures/restrictions/node_modules", - " single file module", - " using description file: .../package.json (relative path: ./test/fixtures/restrictions/node_modules/pck2)", - " no extension", - " .../test/fixtures/restrictions/node_modules/pck2 is not a file", - " .js", - " .../test/fixtures/restrictions/node_modules/pck2.js doesn't exist", - " existing directory .../test/fixtures/restrictions/node_modules/pck2", - " using description file: .../test/fixtures/restrictions/node_modules/pck2/package.json (relative path: .)", - " using description file: .../package.json (relative path: ./test/fixtures/restrictions/node_modules/pck2)", - " no extension", - " .../test/fixtures/restrictions/node_modules/pck2 is not a file", - " .js", - " .../test/fixtures/restrictions/node_modules/pck2.js doesn't exist", - " as directory", - " existing directory .../test/fixtures/restrictions/node_modules/pck2", - " using description file: .../test/fixtures/restrictions/node_modules/pck2/package.json (relative path: .)", - " use ../../../c.js from main in package.json", - " using description file: .../package.json (relative path: ./test/fixtures/c.js)", - " no extension", - " existing file: .../test/fixtures/c.js", - " .../test/fixtures/c.js is not inside of the restriction .../test/fixtures/restrictions", - " .js", - " .../test/fixtures/c.js.js doesn't exist", - " as directory", - " .../test/fixtures/c.js is not a directory", - " use ./module.js from module in package.json", - " using description file: .../test/fixtures/restrictions/node_modules/pck2/package.json (relative path: ./module.js)", - " no extension", - " existing file: .../test/fixtures/restrictions/node_modules/pck2/module.js", - " .../test/fixtures/restrictions/node_modules/pck2/module.js doesn't match the restriction //.(sass|scss|css)$/", - " .js", - " .../test/fixtures/restrictions/node_modules/pck2/module.js.js doesn't exist", - " as directory", - " .../test/fixtures/restrictions/node_modules/pck2/module.js is not a directory", - " use ./index.css from style in package.json", - " using description file: .../test/fixtures/restrictions/node_modules/pck2/package.json (relative path: ./index.css)", - " no extension", - " existing file: .../test/fixtures/restrictions/node_modules/pck2/index.css", - " reporting result .../test/fixtures/restrictions/node_modules/pck2/index.css" - ]); - done(); - } - ); - }); -}); diff --git a/test/restrictions.test.js b/test/restrictions.test.js new file mode 100644 index 00000000..f0d398fd --- /dev/null +++ b/test/restrictions.test.js @@ -0,0 +1,107 @@ +const path = require("path"); +const fs = require("fs"); +const ResolverFactory = require("../lib/ResolverFactory"); +const CachedInputFileSystem = require("../lib/CachedInputFileSystem"); + +const fixture = path.resolve(__dirname, "fixtures", "restrictions"); +const nodeFileSystem = new CachedInputFileSystem(fs, 4000); + +describe("restrictions", () => { + it("should respect RegExp restriction", done => { + const resolver = ResolverFactory.createResolver({ + extensions: [".js"], + fileSystem: nodeFileSystem, + restrictions: [/\.(sass|scss|css)$/] + }); + + resolver.resolve({}, fixture, "pck1", {}, (err, result) => { + if (!err) throw new Error(`expect error, got ${result}`); + expect(err).toBeInstanceOf(Error); + done(); + }); + }); + + it("should try to find alternative #1", done => { + const resolver = ResolverFactory.createResolver({ + extensions: [".js", ".css"], + fileSystem: nodeFileSystem, + mainFiles: ["index"], + restrictions: [/\.(sass|scss|css)$/] + }); + + resolver.resolve({}, fixture, "pck1", {}, (err, result) => { + if (err) return done(err); + if (!result) throw new Error("No result"); + expect(result).toEqual( + path.resolve(fixture, "node_modules/pck1/index.css") + ); + done(); + }); + }); + + it("should respect string restriction", done => { + const resolver = ResolverFactory.createResolver({ + extensions: [".js"], + fileSystem: nodeFileSystem, + restrictions: [fixture] + }); + + resolver.resolve({}, fixture, "pck2", {}, (err, result) => { + if (!err) throw new Error(`expect error, got ${result}`); + expect(err).toBeInstanceOf(Error); + done(); + }); + }); + + it("should try to find alternative #2", done => { + const resolver = ResolverFactory.createResolver({ + extensions: [".js"], + fileSystem: nodeFileSystem, + mainFields: ["main", "style"], + restrictions: [fixture, /\.(sass|scss|css)$/] + }); + + resolver.resolve({}, fixture, "pck2", {}, (err, result) => { + if (err) return done(err); + if (!result) throw new Error("No result"); + expect(result).toEqual( + path.resolve(fixture, "node_modules/pck2/index.css") + ); + done(); + }); + }); + + it("should try to find alternative #3", done => { + const resolver = ResolverFactory.createResolver({ + extensions: [".js"], + fileSystem: nodeFileSystem, + mainFields: ["main", "module", "style"], + restrictions: [fixture, /\.(sass|scss|css)$/] + }); + + const log = []; + + resolver.resolve( + {}, + fixture, + "pck2", + { log: log.push.bind(log) }, + (err, result) => { + if (err) return done(err); + if (!result) throw new Error("No result"); + expect(result).toEqual( + path.resolve(fixture, "node_modules/pck2/index.css") + ); + expect( + log.map(line => + line + .replace(path.resolve(__dirname, ".."), "...") + .replace(path.resolve(__dirname, ".."), "...") + .replace(/\\/g, "/") + ) + ).toMatchSnapshot(); + done(); + } + ); + }); +}); diff --git a/test/roots.js b/test/roots.test.js similarity index 85% rename from test/roots.js rename to test/roots.test.js index 4c9826cd..f9b608db 100644 --- a/test/roots.js +++ b/test/roots.test.js @@ -1,4 +1,3 @@ -require("should"); const path = require("path"); const fs = require("fs"); const ResolverFactory = require("../lib/ResolverFactory"); @@ -46,7 +45,7 @@ describe("roots", () => { resolver.resolve({}, fixtures, "/fixtures/b.js", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixtures, "b.js")); + expect(result).toEqual(path.resolve(fixtures, "b.js")); done(); }); }); @@ -55,7 +54,7 @@ describe("roots", () => { resolver.resolve({}, fixtures, "/b.js", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixtures, "b.js")); + expect(result).toEqual(path.resolve(fixtures, "b.js")); done(); }); }); @@ -64,7 +63,7 @@ describe("roots", () => { resolver.resolve({}, fixtures, "/fixtures/b", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixtures, "b.js")); + expect(result).toEqual(path.resolve(fixtures, "b.js")); done(); }); }); @@ -78,7 +77,9 @@ describe("roots", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixtures, "extensions/dir/index.js")); + expect(result).toEqual( + path.resolve(fixtures, "extensions/dir/index.js") + ); done(); } ); @@ -88,7 +89,7 @@ describe("roots", () => { resolver.resolve({}, fixtures, "foo/b", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixtures, "b.js")); + expect(result).toEqual(path.resolve(fixtures, "b.js")); done(); }); }); @@ -102,7 +103,7 @@ describe("roots", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixtures, "lib")); + expect(result).toEqual(path.resolve(fixtures, "lib")); done(); } ); @@ -111,7 +112,7 @@ describe("roots", () => { it("should not work with relative path", done => { resolver.resolve({}, fixtures, "fixtures/b.js", {}, (err, result) => { if (!err) throw new Error(`expect error, got ${result}`); - err.should.be.instanceof(Error); + expect(err).toBeInstanceOf(Error); done(); }); }); @@ -125,7 +126,7 @@ describe("roots", () => { (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal(path.resolve(fixtures, "b.js")); + expect(result).toEqual(path.resolve(fixtures, "b.js")); done(); } ); diff --git a/test/scoped-packages.js b/test/scoped-packages.test.js similarity index 93% rename from test/scoped-packages.js rename to test/scoped-packages.test.js index 8943860f..9a3c55b7 100644 --- a/test/scoped-packages.js +++ b/test/scoped-packages.test.js @@ -1,5 +1,3 @@ -require("should"); - const path = require("path"); const fs = require("fs"); const { CachedInputFileSystem, ResolverFactory } = require("../"); @@ -18,7 +16,7 @@ describe("scoped-packages", () => { resolver.resolve({}, fixture, "@scope/pack1", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/@scope/pack1/main.js") ); done(); @@ -29,7 +27,7 @@ describe("scoped-packages", () => { resolver.resolve({}, fixture, "@scope/pack2", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/@scope/pack2/main.js") ); done(); @@ -40,7 +38,7 @@ describe("scoped-packages", () => { resolver.resolve({}, fixture, "@scope/pack2/lib", {}, (err, result) => { if (err) return done(err); if (!result) throw new Error("No result"); - result.should.equal( + expect(result).toEqual( path.resolve(fixture, "./node_modules/@scope/pack2/lib/index.js") ); done(); diff --git a/test/simple.js b/test/simple.js deleted file mode 100644 index 4ea0de0b..00000000 --- a/test/simple.js +++ /dev/null @@ -1,39 +0,0 @@ -var should = require("should"); - -var path = require("path"); -var resolve = require("../"); - -describe("simple", function () { - var pathsToIt = [ - [__dirname, "../lib/index", "direct"], - [__dirname, "..", "as directory"], - [path.join(__dirname, "..", ".."), "./enhanced-resolve", "as module"], - [ - path.join(__dirname, "..", ".."), - "./enhanced-resolve/lib/index", - "in module" - ] - ]; - pathsToIt.forEach(function (pathToIt) { - it("should resolve itself " + pathToIt[2], function (done) { - resolve(pathToIt[0], pathToIt[1], function (err, filename) { - if (err) - return done( - new Error([err.message, err.stack, err.details].join("\n")) - ); - should.exist(filename); - /** @type {string} */ (filename).should.have.type("string"); - /** @type {string} */ (filename).should.be.eql( - path.join(__dirname, "..", "lib", "index.js") - ); - done(); - }); - }); - it("should resolve itself sync " + pathToIt[2], function () { - var filename = resolve.sync(pathToIt[0], pathToIt[1]); - should.exist(filename); - filename.should.have.type("string"); - filename.should.be.eql(path.join(__dirname, "..", "lib", "index.js")); - }); - }); -}); diff --git a/test/simple.test.js b/test/simple.test.js new file mode 100644 index 00000000..22d439df --- /dev/null +++ b/test/simple.test.js @@ -0,0 +1,37 @@ +const path = require("path"); +const resolve = require("../"); + +describe("simple", () => { + const pathsToIt = [ + [__dirname, "../lib/index", "direct"], + [__dirname, "..", "as directory"], + [path.join(__dirname, "..", ".."), "./enhanced-resolve", "as module"], + [ + path.join(__dirname, "..", ".."), + "./enhanced-resolve/lib/index", + "in module" + ] + ]; + pathsToIt.forEach(function (pathToIt) { + it("should resolve itself " + pathToIt[2], function (done) { + resolve(pathToIt[0], pathToIt[1], function (err, filename) { + if (err) + return done( + new Error([err.message, err.stack, err.details].join("\n")) + ); + + expect(filename).toBeDefined(); + expect(typeof filename).toEqual("string"); + expect(filename).toEqual(path.join(__dirname, "..", "lib", "index.js")); + done(); + }); + }); + it("should resolve itself sync " + pathToIt[2], () => { + const filename = resolve.sync(pathToIt[0], pathToIt[1]); + + expect(filename).toBeDefined(); + expect(typeof filename).toEqual("string"); + expect(filename).toEqual(path.join(__dirname, "..", "lib", "index.js")); + }); + }); +}); diff --git a/test/symlink.js b/test/symlink.test.js similarity index 83% rename from test/symlink.js rename to test/symlink.test.js index ad451c26..23319126 100644 --- a/test/symlink.js +++ b/test/symlink.test.js @@ -1,14 +1,12 @@ -var should = require("should"); - -var path = require("path"); -var fs = require("fs"); +const path = require("path"); +const fs = require("fs"); const { platform } = require("os"); -var resolve = require("../"); +const resolve = require("../"); -var tempPath = path.join(__dirname, "temp"); +const tempPath = path.join(__dirname, "temp"); -describe("symlink", function () { - var isAdmin = true; +describe("symlink", () => { + let isAdmin = true; try { fs.mkdirSync(tempPath); fs.symlinkSync( @@ -45,7 +43,7 @@ describe("symlink", function () { const isWindows = platform() === "win32"; const oldCWD = (isWindows && process.cwd()) || ""; - before(function () { + beforeEach(() => { // Create some cool symlinks try { fs.mkdirSync(tempPath); @@ -88,7 +86,7 @@ describe("symlink", function () { } }); - after(function () { + afterEach(() => { // PR #150: Restore the original working directory. if (isWindows) { process.chdir(oldCWD); @@ -102,10 +100,10 @@ describe("symlink", function () { fs.rmdirSync(tempPath); }); - var resolveWithoutSymlinks = resolve.create({ + const resolveWithoutSymlinks = resolve.create({ symlinks: false }); - var resolveSyncWithoutSymlinks = resolve.create.sync({ + const resolveSyncWithoutSymlinks = resolve.create.sync({ symlinks: false }); @@ -213,32 +211,33 @@ describe("symlink", function () { it("should resolve symlink to itself " + pathToIt[2], function (done) { resolve(pathToIt[0], pathToIt[1], function (err, filename) { if (err) return done(err); - should.exist(filename); - /** @type {string} */ (filename).should.have.type("string"); - /** @type {string} */ (filename).should.be.eql( + expect(filename).toBeDefined(); + expect(typeof filename).toBe("string"); + expect(filename).toEqual( path.join(__dirname, "..", "lib", "index.js") ); + resolveWithoutSymlinks(pathToIt[0], pathToIt[1], function ( err, filename ) { if (err) return done(err); - /** @type {string} */ (filename).should.have.type("string"); - /** @type {string} */ (filename).should.be.eql( - path.resolve(pathToIt[0], pathToIt[1]) - ); + expect(typeof filename).toBe("string"); + expect(filename).toEqual(path.resolve(pathToIt[0], pathToIt[1])); done(); }); }); }); - it("should resolve symlink to itself sync " + pathToIt[2], function () { - var filename = resolve.sync(pathToIt[0], pathToIt[1]); - should.exist(filename); - filename.should.have.type("string"); - filename.should.be.eql(path.join(__dirname, "..", "lib", "index.js")); + it("should resolve symlink to itself sync " + pathToIt[2], () => { + let filename = resolve.sync(pathToIt[0], pathToIt[1]); + expect(filename).toBeDefined(); + expect(typeof filename).toBe("string"); + expect(filename).toEqual(path.join(__dirname, "..", "lib", "index.js")); + filename = resolveSyncWithoutSymlinks(pathToIt[0], pathToIt[1]); - filename.should.have.type("string"); - filename.should.be.eql(path.resolve(pathToIt[0], pathToIt[1])); + + expect(typeof filename).toBe("string"); + expect(filename).toEqual(path.resolve(pathToIt[0], pathToIt[1])); }); }); } else { diff --git a/test/unsafe-cache.js b/test/unsafe-cache.test.js similarity index 70% rename from test/unsafe-cache.js rename to test/unsafe-cache.test.js index 3d0bebdd..2d5dd094 100644 --- a/test/unsafe-cache.js +++ b/test/unsafe-cache.test.js @@ -1,15 +1,13 @@ -require("should"); +const path = require("path"); +const resolve = require("../"); -var path = require("path"); -var resolve = require("../"); +describe("unsafe-cache", () => { + let cache; + let cachedResolve; + let context; + let otherContext; -describe("unsafe-cache", function () { - var cache; - var cachedResolve; - var context; - var otherContext; - - beforeEach(function () { + beforeEach(() => { context = { some: "context" }; @@ -18,20 +16,20 @@ describe("unsafe-cache", function () { }; }); - describe("with no other options", function () { - beforeEach(function () { + describe("with no other options", () => { + beforeEach(() => { cache = {}; cachedResolve = resolve.create({ unsafeCache: cache }); }); - it("should cache request", function (done) { + it("should cache request", done => { cachedResolve(path.join(__dirname, "fixtures"), "m2/b", function ( err, result ) { if (err) return done(err); - Object.keys(cache).should.have.length(1); + expect(Object.keys(cache)).toHaveLength(1); Object.keys(cache).forEach(function (key) { cache[key] = { path: "yep" @@ -42,19 +40,19 @@ describe("unsafe-cache", function () { result ) { if (err) return done(err); - result.should.be.eql("yep"); + expect(result).toEqual("yep"); done(); }); }); }); - it("should not return from cache if context does not match", function (done) { + it("should not return from cache if context does not match", done => { cachedResolve( context, path.join(__dirname, "fixtures"), "m2/b", function (err, result) { if (err) return done(err); - Object.keys(cache).should.have.length(1); + expect(Object.keys(cache)).toHaveLength(1); Object.keys(cache).forEach(function (key) { cache[key] = { path: "yep" @@ -66,20 +64,20 @@ describe("unsafe-cache", function () { "m2/b", function (err, result) { if (err) return done(err); - result.should.not.be.eql("yep"); + expect(result).not.toEqual("yep"); done(); } ); } ); }); - it("should not return from cache if query does not match", function (done) { + it("should not return from cache if query does not match", done => { cachedResolve(path.join(__dirname, "fixtures"), "m2/b?query", function ( err, result ) { if (err) return done(err); - Object.keys(cache).should.have.length(1); + expect(Object.keys(cache)).toHaveLength(1); Object.keys(cache).forEach(function (key) { cache[key] = { path: "yep" @@ -90,7 +88,7 @@ describe("unsafe-cache", function () { "m2/b?query2", function (err, result) { if (err) return done(err); - result.should.not.be.eql("yep"); + expect(result).not.toEqual("yep"); done(); } ); @@ -98,22 +96,22 @@ describe("unsafe-cache", function () { }); }); - describe("with cacheWithContext false", function () { - beforeEach(function () { + describe("with cacheWithContext false", () => { + beforeEach(() => { cache = {}; cachedResolve = resolve.create({ unsafeCache: cache, cacheWithContext: false }); }); - it("should cache request", function (done) { + it("should cache request", done => { cachedResolve( context, path.join(__dirname, "fixtures"), "m2/b", function (err, result) { if (err) return done(err); - Object.keys(cache).should.have.length(1); + expect(Object.keys(cache)).toHaveLength(1); Object.keys(cache).forEach(function (key) { cache[key] = { path: "yep" @@ -125,21 +123,21 @@ describe("unsafe-cache", function () { "m2/b", function (err, result) { if (err) return done(err); - result.should.be.eql("yep"); + expect(result).toEqual("yep"); done(); } ); } ); }); - it("should return from cache even if context does not match", function (done) { + it("should return from cache even if context does not match", done => { cachedResolve( context, path.join(__dirname, "fixtures"), "m2/b", function (err, result) { if (err) return done(err); - Object.keys(cache).should.have.length(1); + expect(Object.keys(cache)).toHaveLength(1); Object.keys(cache).forEach(function (key) { cache[key] = { path: "yep" @@ -151,7 +149,7 @@ describe("unsafe-cache", function () { "m2/b", function (err, result) { if (err) return done(err); - result.should.be.eql("yep"); + expect(result).toEqual("yep"); done(); } ); diff --git a/test/yield.js b/test/yield.test.js similarity index 78% rename from test/yield.js rename to test/yield.test.js index 2d32b179..c6ae9104 100644 --- a/test/yield.js +++ b/test/yield.test.js @@ -1,4 +1,3 @@ -const should = require("should"); const path = require("path"); const fs = require("fs"); @@ -58,10 +57,10 @@ describe("should resolve all aliases", () => { }; resolver.resolve({}, fixtures, "index/b", context, (err, result) => { - should(err).be.eql(null); - should(result).be.eql(undefined); - should(paths).be.eql(makeFixturePaths(["/a/foo/b", "/a/foo-2/b"])); - should(contextifyDependencies(fileDependencies)).be.eql([ + expect(err).toEqual(null); + expect(result).toBeUndefined(); + expect(paths).toEqual(makeFixturePaths(["/a/foo/b", "/a/foo-2/b"])); + expect(contextifyDependencies(fileDependencies)).toEqual([ "", "/a", "/a/foo", @@ -69,7 +68,7 @@ describe("should resolve all aliases", () => { "/a/foo-2/b", "/a/foo/b" ]); - should(contextifyDependencies(missingDependencies)).be.eql([ + expect(contextifyDependencies(missingDependencies)).toEqual([ "/a/foo-2/b", "/a/foo-2/b.js", "/a/foo-2/package.json", @@ -79,7 +78,7 @@ describe("should resolve all aliases", () => { "/a/package.json", "/package.json" ]); - should(Array.from(contextDependencies).sort()).be.eql([]); + expect(Array.from(contextDependencies).sort()).toEqual([]); done(); }); }); @@ -99,10 +98,10 @@ describe("should resolve all aliases", () => { }; modulesResolver.resolve({}, fixtures, "foo/a", context, (err, result) => { - should(err).be.eql(null); - should(result).be.eql(undefined); - should(paths).be.eql(makeFixturePaths(["/a/foo/a", "/b/foo/a"])); - should(contextifyDependencies(fileDependencies)).be.eql([ + expect(err).toEqual(null); + expect(result).toBeUndefined(); + expect(paths).toEqual(makeFixturePaths(["/a/foo/a", "/b/foo/a"])); + expect(contextifyDependencies(fileDependencies)).toEqual([ "", "/a", "/a/foo", @@ -111,7 +110,7 @@ describe("should resolve all aliases", () => { "/b/foo", "/b/foo/a" ]); - should(contextifyDependencies(missingDependencies)).be.eql([ + expect(contextifyDependencies(missingDependencies)).toEqual([ "/a/foo/a", "/a/foo/a.js", "/a/foo/package.json", @@ -122,7 +121,7 @@ describe("should resolve all aliases", () => { "/b/package.json", "/package.json" ]); - should(Array.from(contextDependencies).sort()).be.eql([]); + expect(Array.from(contextDependencies).sort()).toEqual([]); done(); }); }); @@ -136,9 +135,9 @@ describe("should resolve all aliases", () => { }; resolver.resolve({}, fixtures, "index/c", context, (err, result) => { - should(err).be.eql(null); - should(result).be.eql(undefined); - should(paths).be.eql(makeFixturePaths(["/a/foo-2/c"])); + expect(err).toEqual(null); + expect(result).toBeUndefined(); + expect(paths).toEqual(makeFixturePaths(["/a/foo-2/c"])); done(); }); }); @@ -158,15 +157,15 @@ describe("should resolve all aliases", () => { }; resolver.resolve({}, fixtures, "foo", context, (err, result) => { - should(err).be.eql(null); - should(result).be.eql(undefined); - should(paths).be.eql([false]); - should(contextifyDependencies(fileDependencies)).be.eql([]); - should(contextifyDependencies(missingDependencies)).be.eql([ + expect(err).toEqual(null); + expect(result).toBeUndefined(); + expect(paths).toEqual([false]); + expect(contextifyDependencies(fileDependencies)).toEqual([]); + expect(contextifyDependencies(missingDependencies)).toEqual([ "/node_modules", "/package.json" ]); - should(Array.from(contextDependencies).sort()).be.eql([]); + expect(Array.from(contextDependencies).sort()).toEqual([]); done(); }); }); @@ -186,12 +185,12 @@ describe("should resolve all aliases", () => { }; resolver.resolve({}, fixtures, "index/unknown", context, (err, result) => { - should(err).not.be.eql(null); - should(err).not.be.eql(undefined); - should(result).be.eql(undefined); - should(paths).be.eql([]); - should(contextifyDependencies(fileDependencies)).be.eql([]); - should(contextifyDependencies(missingDependencies)).be.eql([ + expect(err).not.toEqual(null); + expect(err).not.toBeUndefined(); + expect(result).toBeUndefined(); + expect(paths).toEqual([]); + expect(contextifyDependencies(fileDependencies)).toEqual([]); + expect(contextifyDependencies(missingDependencies)).toEqual([ "/a/foo-2/package.json", "/a/foo-2/unknown", "/a/foo-2/unknown.js", @@ -201,7 +200,7 @@ describe("should resolve all aliases", () => { "/a/package.json", "/package.json" ]); - should(Array.from(contextDependencies).sort()).be.eql([]); + expect(Array.from(contextDependencies).sort()).toEqual([]); done(); }); }); @@ -236,20 +235,21 @@ describe("should resolve all aliases", () => { resolver.resolve({}, fixtures, "index/a", context, (err, result) => { calls++; - should(calls).be.eql(1); - should(err).be.eql(null); - should(result).be.eql(undefined); - should(paths).be.eql([false]); - should(contextifyDependencies(fileDependencies)).be.eql([ + expect(calls).toEqual(1); + expect(err).toEqual(null); + expect(result).toBeUndefined(); + expect(paths).toEqual([false]); + expect(contextifyDependencies(fileDependencies)).toEqual([ "/c/foo/package.json" ]); - should(contextifyDependencies(missingDependencies)).be.eql([ + expect(contextifyDependencies(missingDependencies)).toEqual([ "/c/foo/a", "/c/foo/a.js", "/package.json" ]); - should(Array.from(contextDependencies).sort()).be.eql([]); - should(beatifyLogs(logs)).be.eql([ + expect(Array.from(contextDependencies).sort()).toEqual([]); + + expect(beatifyLogs(logs)).toEqual([ "resolve 'index/a' in 'fixtures'", " Parsed request is a module", " using description file (relative path: ./test/fixtures/yield)", @@ -267,6 +267,7 @@ describe("should resolve all aliases", () => { path.sep )} is not a directory` ]); + done(); }); }); @@ -369,18 +370,18 @@ describe("should resolve all aliases", () => { resolver.resolve({}, fixtures, "index/a", context, (err, result) => { calls++; - should(calls).be.eql(1); - should(err).be.eql(null); - should(result).be.eql(undefined); - should(paths).be.eql(makeFixturePaths(expectedResult)); - should(contextifyDependencies(fileDependencies)).be.eql([ + expect(calls).toEqual(1); + expect(err).toEqual(null); + expect(result).toBeUndefined(); + expect(paths).toEqual(makeFixturePaths(expectedResult)); + expect(contextifyDependencies(fileDependencies)).toEqual([ "", "/a", "/a/foo", "/a/foo/a", "/c/foo/package.json" ]); - should(contextifyDependencies(missingDependencies)).be.eql([ + expect(contextifyDependencies(missingDependencies)).toEqual([ "/a/foo/a", "/a/foo/a.js", "/a/foo/package.json", @@ -389,8 +390,9 @@ describe("should resolve all aliases", () => { "/c/foo/a.js", "/package.json" ]); - should(Array.from(contextDependencies).sort()).be.eql([]); - should(beatifyLogs(logs)).be.eql(expectedLogs); + expect(Array.from(contextDependencies).sort()).toEqual([]); + expect(beatifyLogs(logs)).toEqual(expectedLogs); + done(); }); } @@ -424,9 +426,9 @@ describe("should resolve all aliases", () => { }; resolver.resolve({}, fixtures, "unknown", context, (err, result) => { if (err) done(err); - should(err).be.eql(null); - should(result).be.eql(undefined); - should(paths).be.eql(["/a"]); + expect(err).toBeNull(); + expect(result).toBeUndefined(); + expect(paths).toEqual(["/a"]); done(); }); }); @@ -446,10 +448,10 @@ describe("should resolve all aliases", () => { yield: obj => paths.push(obj.path) }; resolver.resolve({}, fixtures, "unknown", context, (err, result) => { - should(err).not.be.eql(null); - should(/** @type {Error} */ (err).message).be.eql("error"); - should(result).be.eql(undefined); - should(paths).be.eql([]); + expect(err).not.toBe(null); + expect(err.message).toBe("error"); + expect(result).toBeUndefined(); + expect(paths).toEqual([]); done(); }); }); @@ -477,24 +479,23 @@ describe("should resolve all aliases", () => { "index/b", { yield: obj => paths.push(obj.path) }, (err, result) => { - should(err).be.eql(null); - should(result).be.eql(undefined); - should(paths).be.eql( + expect(err).toBe(null); + expect(result).toBeUndefined(); + expect(paths).toEqual( makeFixturePaths(["/a/foo/b", "/a/foo-2/b"]) ); // original + 2 aliases - should(Object.keys(cache)).have.length(3); + expect(Object.keys(cache)).toHaveLength(3); + const cacheId = Object.keys(cache).find(id => { const { request } = JSON.parse(id); return request === "index/b"; }); - should(cacheId).not.be.eql(undefined); - should( - Array.isArray(cache[/** @type {string} */ (cacheId)]) - ).be.eql(true); - should( - cache[/** @type {string} */ (cacheId)].map(o => o.path) - ).be.eql(makeFixturePaths(["/a/foo/b", "/a/foo-2/b"])); + expect(cacheId).not.toBeUndefined(); + expect(Array.isArray(cache[cacheId])).toBe(true); + expect(cache[cacheId].map(o => o.path)).toEqual( + makeFixturePaths(["/a/foo/b", "/a/foo-2/b"]) + ); done(); } ); @@ -522,19 +523,17 @@ describe("should resolve all aliases", () => { "foo", { yield: obj => paths.push(obj.path) }, (err, result) => { - should(err).be.eql(null); - should(result).be.eql(undefined); - should(paths).be.eql([false]); + expect(err).toBe(null); + expect(result).toBeUndefined(); + expect(paths).toEqual([false]); + // original + 0 aliases - should(Object.keys(cache)).have.length(1); + expect(Object.keys(cache)).toHaveLength(1); + const cacheId = Object.keys(cache)[0]; - should(cacheId).not.be.eql(undefined); - should( - Array.isArray(cache[/** @type {string} */ (cacheId)]) - ).be.eql(true); - should( - cache[/** @type {string} */ (cacheId)].map(o => o.path) - ).be.eql([false]); + expect(cacheId).not.toBeUndefined(); + expect(Array.isArray(cache[cacheId])).toBe(true); + expect(cache[cacheId].map(o => o.path)).toEqual([false]); done(); } ); diff --git a/tsconfig.json b/tsconfig.json index b59e4c27..e6c90167 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,8 +10,8 @@ "noImplicitThis": true, "alwaysStrict": true, "strictNullChecks": true, - "types": ["node", "mocha"], + "types": ["node"], "esModuleInterop": true }, - "include": ["lib/**/*.js", "test/*.js", "declarations.d.ts"] + "include": ["lib/**/*.js", "declarations.d.ts"] } diff --git a/yarn.lock b/yarn.lock index c2c1c8fd..5c64d9f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,14 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@apidevtools/json-schema-ref-parser@9.0.6": version "9.0.6" resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c" @@ -11,132 +19,155 @@ call-me-maybe "^1.0.1" js-yaml "^3.13.1" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": +"@babel/code-frame@^7.0.0": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== dependencies: "@babel/highlight" "^7.10.4" -"@babel/core@^7.7.5": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" - integrity sha512-Wpcv03AGnmkgm6uS6k8iwhIwTrcP0m17TL1n1sy7qD0qelDu4XNeW0dN0mHfa+Gei211yDaLoEe/VlbXQzM4Bg== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.6" - "@babel/helper-module-transforms" "^7.11.0" - "@babel/helpers" "^7.10.4" - "@babel/parser" "^7.11.5" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.11.5" - "@babel/types" "^7.11.5" +"@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/compat-data@^7.21.5": + version "7.21.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.7.tgz#61caffb60776e49a57ba61a88f02bedd8714f6bc" + integrity sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA== + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.21.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4" + integrity sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.5" + "@babel/helper-compilation-targets" "^7.21.5" + "@babel/helper-module-transforms" "^7.21.5" + "@babel/helpers" "^7.21.5" + "@babel/parser" "^7.21.8" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.5" + "@babel/types" "^7.21.5" convert-source-map "^1.7.0" debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" -"@babel/generator@^7.11.5", "@babel/generator@^7.11.6": - version "7.11.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" - integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== +"@babel/generator@^7.21.5", "@babel/generator@^7.7.2": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.5.tgz#c0c0e5449504c7b7de8236d99338c3e2a340745f" + integrity sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w== dependencies: - "@babel/types" "^7.11.5" + "@babel/types" "^7.21.5" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" - source-map "^0.5.0" -"@babel/helper-function-name@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" - integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== +"@babel/helper-compilation-targets@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" + integrity sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w== dependencies: - "@babel/helper-get-function-arity" "^7.10.4" - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/compat-data" "^7.21.5" + "@babel/helper-validator-option" "^7.21.0" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" -"@babel/helper-get-function-arity@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" - integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== - dependencies: - "@babel/types" "^7.10.4" +"@babel/helper-environment-visitor@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" + integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ== -"@babel/helper-member-expression-to-functions@^7.10.4": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz#ae69c83d84ee82f4b42f96e2a09410935a8f26df" - integrity sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q== +"@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== dependencies: - "@babel/types" "^7.11.0" + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" -"@babel/helper-module-imports@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz#4c5c54be04bd31670a7382797d75b9fa2e5b5620" - integrity sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw== - dependencies: - "@babel/types" "^7.10.4" - -"@babel/helper-module-transforms@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" - integrity sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-replace-supers" "^7.10.4" - "@babel/helper-simple-access" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/template" "^7.10.4" - "@babel/types" "^7.11.0" - lodash "^4.17.19" +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" -"@babel/helper-optimise-call-expression@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" - integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== +"@babel/helper-module-imports@^7.21.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== dependencies: - "@babel/types" "^7.10.4" + "@babel/types" "^7.21.4" -"@babel/helper-replace-supers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz#d585cd9388ea06e6031e4cd44b6713cbead9e6cf" - integrity sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A== +"@babel/helper-module-transforms@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" + integrity sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw== dependencies: - "@babel/helper-member-expression-to-functions" "^7.10.4" - "@babel/helper-optimise-call-expression" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/helper-environment-visitor" "^7.21.5" + "@babel/helper-module-imports" "^7.21.4" + "@babel/helper-simple-access" "^7.21.5" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.5" + "@babel/types" "^7.21.5" -"@babel/helper-simple-access@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" - integrity sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" + integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== + +"@babel/helper-simple-access@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" + integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== dependencies: - "@babel/template" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/types" "^7.21.5" -"@babel/helper-split-export-declaration@^7.11.0": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" - integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== dependencies: - "@babel/types" "^7.11.0" + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" + integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== -"@babel/helpers@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044" - integrity sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA== +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== + +"@babel/helpers@^7.21.5": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.5.tgz#5bac66e084d7a4d2d9696bdf0175a93f7fb63c08" + integrity sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA== dependencies: - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.10.4" - "@babel/types" "^7.10.4" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.5" + "@babel/types" "^7.21.5" "@babel/highlight@^7.10.4": version "7.10.4" @@ -147,44 +178,150 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.10.4", "@babel/parser@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" - integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8": + version "7.21.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8" + integrity sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" -"@babel/template@^7.10.4": +"@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" - integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.10.4" - "@babel/types" "^7.10.4" - -"@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" - integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.11.5" - "@babel/helper-function-name" "^7.10.4" - "@babel/helper-split-export-declaration" "^7.11.0" - "@babel/parser" "^7.11.5" - "@babel/types" "^7.11.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" + integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/template@^7.20.7", "@babel/template@^7.3.3": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/traverse@^7.21.5", "@babel/traverse@^7.7.2": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" + integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw== + dependencies: + "@babel/code-frame" "^7.21.4" + "@babel/generator" "^7.21.5" + "@babel/helper-environment-visitor" "^7.21.5" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.21.5" + "@babel/types" "^7.21.5" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.19" -"@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.5": - version "7.11.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" - integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.21.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" + integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" + "@babel/helper-string-parser" "^7.21.5" + "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + "@cspell/dict-aws@^1.0.13": version "1.0.14" resolved "https://registry.yarnpkg.com/@cspell/dict-aws/-/dict-aws-1.0.14.tgz#beddede1053ce3622400e36c65da9fd2954e939d" @@ -382,25 +519,317 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" + +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" + +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" + +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== + dependencies: + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== + dependencies: + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" + +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.5.1" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + "@jsdevtools/ono@^7.1.3": version "7.1.3" resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== +"@sinonjs/commons@^1.7.0": + version "1.8.6" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" + integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.5.tgz#c107216842905afafd3b6e774f6f935da6f5db80" + integrity sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q== + dependencies: + "@babel/types" "^7.3.0" + "@types/color-name@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/graceful-fs@^4.1.2": + version "4.1.6" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^27.5.1": + version "27.5.2" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" + integrity sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA== + dependencies: + jest-matcher-utils "^27.0.0" + pretty-format "^27.0.0" + "@types/json-schema@^7.0.4": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== -"@types/mocha@^8.0.3": - version "8.0.3" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.0.3.tgz#51b21b6acb6d1b923bbdc7725c38f9f455166402" - integrity sha512-vyxR57nv8NfcU0GZu8EUXZLTbCMupIUwy95LJ6lllN+JRPG25CwMHoB1q5xKh8YKhQnHYRAn4yW2yuHbf/5xgg== +"@types/node@*": + version "20.1.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.1.0.tgz#258805edc37c327cf706e64c6957f241ca4c4c20" + integrity sha512-O+z53uwx64xY7D6roOi4+jApDGFg0qn6WHcxe5QeqjMaTezBO/mxdfFXIVAVVyNWKx84OmPB3L8kbVYOTeN34A== "@types/node@^14.11.1": version "14.11.1" @@ -412,21 +841,78 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/prettier@^2.1.5": + version "2.7.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" + integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^16.0.0": + version "16.0.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" + integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== + dependencies: + "@types/yargs-parser" "*" + "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== +abab@^2.0.3, abab@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + acorn-jsx@^5.2.0: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + acorn@^7.4.0: version "7.4.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== +acorn@^8.2.4: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -445,11 +931,18 @@ ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-colors@4.1.1, ansi-colors@^4.1.1: +ansi-colors@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + ansi-escapes@^4.3.0: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" @@ -462,11 +955,6 @@ ansi-regex@^2.1.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - ansi-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" @@ -477,6 +965,11 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -492,31 +985,24 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + any-promise@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== +anymatch@^3.0.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -append-transform@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" - integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== - dependencies: - default-require-extensions "^3.0.0" - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -529,16 +1015,6 @@ array-timsort@^1.0.3: resolved "https://registry.yarnpkg.com/array-timsort/-/array-timsort-1.0.3.tgz#3c9e4199e54fb2b9c3fe5976396a21614ef0d926" integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== -array.prototype.map@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" - integrity sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.4" - astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -549,21 +1025,82 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + at-least-node@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== + dependencies: + babel-plugin-jest-hoist "^27.5.1" + babel-preset-current-node-syntax "^1.0.0" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -572,27 +1109,39 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.1, braces@~3.0.2: +braces@^3.0.1, braces@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -caching-transform@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" - integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== +browserslist@^4.21.3: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== dependencies: - hasha "^5.0.0" - make-dir "^3.0.0" - package-hash "^4.0.0" - write-file-atomic "^3.0.0" + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== call-me-maybe@^1.0.1: version "1.0.1" @@ -604,11 +1153,21 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001449: + version "1.0.30001485" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001485.tgz#026bb7319f1e483391872dc303a973d4f513f619" + integrity sha512-8aUpZ7sjhlOyiNsg+pgcrTTPUXKh+rg544QYHSvQErljVEKJzvkYkCR/hUFeeVoEfTToUtY9cUKNRC7+c45YkA== + chalk@^2.0.0: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -626,20 +1185,20 @@ chalk@^4.0.0, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" - integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.4.0" - optionalDependencies: - fsevents "~2.1.2" +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== clean-stack@^2.0.0: version "2.2.0" @@ -673,24 +1232,6 @@ cli-truncate@^2.1.0: slice-ansi "^3.0.0" string-width "^4.2.0" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -700,6 +1241,16 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -724,6 +1275,13 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commander@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-6.1.0.tgz#f8d722b78103141006b66f4c7ba1e97315ba75bc" @@ -772,6 +1330,11 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" +convert-source-map@^1.4.0, convert-source-map@^1.6.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -795,7 +1358,7 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cross-spawn@^7.0.0, cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -902,6 +1465,23 @@ cspell@4.2.8: glob "^7.1.6" minimatch "^3.0.4" +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -910,17 +1490,33 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^1.0.1" -debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +debug@4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js@^10.2.1: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== dedent@^0.7.0: version "0.7.0" @@ -932,24 +1528,30 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -default-require-extensions@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" - integrity sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg== - dependencies: - strip-bom "^4.0.0" +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -diff@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== doctrine@^3.0.0: version "3.0.0" @@ -958,6 +1560,13 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + dot-prop@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" @@ -965,6 +1574,16 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" +electron-to-chromium@^1.4.284: + version "1.4.385" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.385.tgz#1afd8d6280d510145148777b899ff481c65531ff" + integrity sha512-L9zlje9bIw0h+CwPQumiuVlfMcV4boxRjFIWDcLfFqTZNbkwOExBzfmswytHawObQX4OUhtNv8gIiB21kOurIg== + +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -996,68 +1615,6 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5: - version "1.17.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.18.0-next.0: - version "1.18.0-next.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.0.tgz#b302834927e624d8e5837ed48224291f2c66e6fc" - integrity sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.0" - is-negative-zero "^2.0.0" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - -es-get-iterator@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" - integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== - dependencies: - es-abstract "^1.17.4" - has-symbols "^1.0.1" - is-arguments "^1.0.4" - is-map "^2.0.1" - is-set "^2.0.1" - is-string "^1.0.5" - isarray "^2.0.5" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.51, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: version "0.10.53" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" @@ -1067,11 +1624,6 @@ es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@ es6-symbol "~3.1.3" next-tick "~1.0.0" -es6-error@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - es6-iterator@^2.0.3, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" @@ -1104,16 +1656,28 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + eslint-config-prettier@^6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz#f6d2238c1290d01c859a8b5c1f7d352a0b0da8b1" @@ -1290,13 +1854,43 @@ execa@^4.0.3: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: - type "^2.0.0" - + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== + dependencies: + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -1312,11 +1906,18 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -1338,30 +1939,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-cache-dir@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -1379,30 +1956,19 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" -flat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" - integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== - dependencies: - is-buffer "~2.0.3" - flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== -foreground-child@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" - integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: - cross-spawn "^7.0.0" - signal-exit "^3.0.2" - -fromentries@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.2.1.tgz#64c31665630479bc993cd800d53387920dc61b4d" - integrity sha512-Xu2Qh8yqYuDhQGOhD5iJGninErSfI9A3FrriD3tjUgV5VbJFeH8vfgZ9HnC6jWN80QDVNQK5vmxRAmEAp7Mevw== + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" fs-extra@^9.1.0: version "9.1.0" @@ -1424,10 +1990,10 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== function-bind@^1.1.1: version "1.1.1" @@ -1444,12 +2010,12 @@ gensequence@^3.1.1: resolved "https://registry.yarnpkg.com/gensequence/-/gensequence-3.1.1.tgz#95c1afc7c0680f92942c17f2d6f83f3d26ea97af" integrity sha512-ys3h0hiteRwmY6BsvSttPmkhC0vEQHPJduANBRtH/dlDPZ0UBIb/dXy80IcckXyuQ6LKg+PloRqvGER9IS7F7g== -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -1481,14 +2047,31 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" -glob-parent@^5.0.0, glob-parent@~5.1.0: +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: is-glob "^4.0.1" -glob@7.1.6, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.1.1, glob@^7.1.2: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -1519,20 +2102,20 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -graceful-fs@^4.1.15, graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== +graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== has-flag@^3.0.0: version "3.0.0" @@ -1549,11 +2132,6 @@ has-own-prop@^2.0.0: resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af" integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -1561,34 +2139,57 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hasha@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.0.tgz#33094d1f69c40a4a6ac7be53d5fe3ff95a269e0c" - integrity sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw== +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: - is-stream "^2.0.0" - type-fest "^0.8.0" - -he@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + husky@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e" integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ== +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + iconv-lite@^0.6.2: version "0.6.3" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" @@ -1614,6 +2215,14 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -1642,37 +2251,17 @@ ini@^1.3.4: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== +is-core-module@^2.11.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== dependencies: - binary-extensions "^2.0.0" - -is-buffer@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - -is-callable@^1.1.4, is-callable@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.1.tgz#4d1e21a4f437509d25ce55f8184350771421c96d" - integrity sha512-wliAfSzx6V+6WfMOmus1xy0XvSgf/dlStkvTfq7F0g4bOIW0PSUbnyse3NhDwdyYS1ozfUtAAySqTws3z9Eqgg== - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + has "^1.0.3" is-extglob@^2.1.1: version "2.1.1" @@ -1689,23 +2278,18 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" -is-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" - integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== - -is-negative-zero@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" - integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -1721,105 +2305,57 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== is-promise@^2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== -is-regex@^1.1.0, is-regex@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== - dependencies: - has-symbols "^1.0.1" - is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= -is-set@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" - integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== - is-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== -is-string@^1.0.4, is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: +istanbul-lib-coverage@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-hook@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" - integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== - dependencies: - append-transform "^2.0.0" +istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: - "@babel/core" "^7.7.5" + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" + istanbul-lib-coverage "^3.2.0" semver "^6.3.0" -istanbul-lib-processinfo@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz#e1426514662244b2f25df728e8fd1ba35fe53b9c" - integrity sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw== - dependencies: - archy "^1.0.0" - cross-spawn "^7.0.0" - istanbul-lib-coverage "^3.0.0-alpha.1" - make-dir "^3.0.0" - p-map "^3.0.0" - rimraf "^3.0.0" - uuid "^3.3.3" - istanbul-lib-report@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" @@ -1838,10 +2374,10 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== +istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -1851,25 +2387,417 @@ iterable-to-stream@^1.0.1: resolved "https://registry.yarnpkg.com/iterable-to-stream/-/iterable-to-stream-1.0.1.tgz#37e86baacf6b1a0e9233dad4eb526d0423d08bf3" integrity sha512-O62gD5ADMUGtJoOoM9U6LQ7i4byPXUNoHJ6mqsmkQJcom331ZJGDApWgDESWyBMEHEJRjtHozgIiTzYo9RU4UA== -iterate-iterator@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.1.tgz#1693a768c1ddd79c969051459453f082fe82e9f6" - integrity sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw== +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== + dependencies: + "@jest/types" "^27.5.1" + execa "^5.0.0" + throat "^6.0.1" -iterate-value@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" - integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== + dependencies: + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + prompts "^2.0.1" + yargs "^16.2.0" + +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== + dependencies: + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== + dependencies: + detect-newline "^3.0.0" + +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" + +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== + dependencies: + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" + +jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + source-map-support "^0.5.6" + throat "^6.0.1" + +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" + +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== + dependencies: + "@jest/types" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" + +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== + dependencies: + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" + string-length "^4.0.1" + +jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== dependencies: - es-get-iterator "^1.0.2" - iterate-iterator "^1.0.1" + "@jest/core" "^27.5.1" + import-local "^3.0.2" + jest-cli "^27.5.1" js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.14.0, js-yaml@^3.13.1: +js-yaml@^3.13.1: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== @@ -1882,6 +2810,39 @@ jsdoctypeparser@^9.0.0: resolved "https://registry.yarnpkg.com/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz#8c97e2fb69315eb274b0f01377eaa5c940bd7b26" integrity sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw== +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -1932,7 +2893,7 @@ json-stringify-safe@^5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@^2.1.2: +json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -1946,6 +2907,16 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -1954,6 +2925,14 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -1994,14 +2973,6 @@ listr2@^2.6.0: rxjs "^6.6.2" through "^2.3.8" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -2009,24 +2980,12 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= - -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20: +lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.0.0, log-symbols@^4.0.0: +log-symbols@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== @@ -2043,6 +3002,13 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + lru-queue@0.1: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" @@ -2050,13 +3016,20 @@ lru-queue@0.1: dependencies: es5-ext "~0.10.2" -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + memfs@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.0.tgz#f9438e622b5acd1daa8a4ae160c496fdd1325b26" @@ -2091,18 +3064,45 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -minimatch@3.0.4, minimatch@^3.0.4: +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimist@^1.2.5: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -2120,37 +3120,6 @@ mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@^8.1.3: - version "8.1.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.3.tgz#5e93f873e35dfdd69617ea75f9c68c2ca61c2ac5" - integrity sha512-ZbaYib4hT4PpF4bdSO2DohooKXIn4lDeiYqB+vTmCdr6l2woW0b6H3pf5x4sM5nwQMru9RvjjHYWVGltR50ZBw== - dependencies: - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.4.2" - debug "4.1.1" - diff "4.0.2" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.1.6" - growl "1.10.5" - he "1.2.0" - js-yaml "3.14.0" - log-symbols "4.0.0" - minimatch "3.0.4" - ms "2.1.2" - object.assign "4.1.0" - promise.allsettled "1.0.2" - serialize-javascript "4.0.0" - strip-json-comments "3.0.1" - supports-color "7.1.0" - which "2.0.2" - wide-align "1.1.3" - workerpool "6.0.0" - yargs "13.3.2" - yargs-parser "13.1.2" - yargs-unparser "1.6.1" - ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -2180,93 +3149,38 @@ next-tick@~1.0.0: resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= -node-preload@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" - integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== - dependencies: - process-on-spawn "^1.0.0" +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== -normalize-path@^3.0.0, normalize-path@~3.0.0: +normalize-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -npm-run-path@^4.0.0: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" -nyc@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" - integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== - dependencies: - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - caching-transform "^4.0.0" - convert-source-map "^1.7.0" - decamelize "^1.2.0" - find-cache-dir "^3.2.0" - find-up "^4.1.0" - foreground-child "^2.0.0" - get-package-type "^0.1.0" - glob "^7.1.6" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-hook "^3.0.0" - istanbul-lib-instrument "^4.0.0" - istanbul-lib-processinfo "^2.0.2" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - make-dir "^3.0.0" - node-preload "^0.2.1" - p-map "^3.0.0" - process-on-spawn "^1.0.0" - resolve-from "^5.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - spawn-wrap "^2.0.0" - test-exclude "^6.0.0" - yargs "^15.0.2" +nwsapi@^2.2.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.4.tgz#fd59d5e904e8e1f03c25a7d5a15cfa16c714a1e5" + integrity sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g== object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-inspect@^1.7.0, object-inspect@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" - integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.18.0-next.0" - has-symbols "^1.0.1" - object-keys "^1.1.1" - once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -2274,13 +3188,25 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0: +onetime@^5.1.0, onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + optionator@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" @@ -2293,27 +3219,13 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" -p-limit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== - dependencies: - p-try "^2.0.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -2321,20 +3233,6 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -2347,16 +3245,6 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -package-hash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" - integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== - dependencies: - graceful-fs "^4.1.15" - hasha "^5.0.0" - lodash.flattendeep "^4.4.0" - release-zalgo "^1.0.0" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -2374,10 +3262,20 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== path-exists@^4.0.0: version "4.0.0" @@ -2394,7 +3292,7 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.6: +path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== @@ -2404,12 +3302,27 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.0.5: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -pkg-dir@^4.1.0: +picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== @@ -2428,6 +3341,11 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + prettier-linter-helpers@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" @@ -2445,28 +3363,32 @@ prettier@^2.1.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== -process-on-spawn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" - integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== +pretty-format@^27.0.0, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: - fromentries "^1.2.0" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -promise.allsettled@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" - integrity sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg== +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: - array.prototype.map "^1.0.1" - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - iterate-value "^1.0.0" + kleur "^3.0.3" + sisteransi "^1.0.5" + +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== pump@^3.0.0: version "3.0.0" @@ -2481,19 +3403,20 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" +punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== - dependencies: - picomatch "^2.2.1" +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" @@ -2505,13 +3428,6 @@ regextras@^0.7.1: resolved "https://registry.yarnpkg.com/regextras/-/regextras-0.7.1.tgz#be95719d5f43f9ef0b9fa07ad89b7c606995a3b2" integrity sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w== -release-zalgo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= - dependencies: - es6-error "^4.0.1" - repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" @@ -2522,10 +3438,17 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" resolve-from@^4.0.0: version "4.0.0" @@ -2544,13 +3467,27 @@ resolve-global@^1.0.0: dependencies: global-dirs "^0.1.1" -resolve@^1.10.1, resolve@^1.3.2: +resolve.exports@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" + integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== + +resolve@^1.10.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" +resolve@^1.20.0: + version "1.22.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -2580,31 +3517,28 @@ rxjs@^6.6.2: dependencies: tslib "^1.9.0" -safe-buffer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -"safer-buffer@>= 2.1.2 < 3.0.0": +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -semver@^5.4.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -2615,18 +3549,6 @@ semver@^7.2.1, semver@^7.3.2: resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== -serialize-javascript@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -2639,55 +3561,26 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -should-equal@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3" - integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== - dependencies: - should-type "^1.4.0" - -should-format@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" - integrity sha1-m/yPdPo5IFxT04w01xcwPidxJPE= - dependencies: - should-type "^1.3.0" - should-type-adaptors "^1.0.1" - -should-type-adaptors@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a" - integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== - dependencies: - should-type "^1.3.0" - should-util "^1.0.0" - -should-type@^1.3.0, should-type@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" - integrity sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM= - -should-util@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28" - integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== - -should@^13.2.3: - version "13.2.3" - resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" - integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== - dependencies: - should-equal "^2.0.0" - should-format "^3.0.3" - should-type "^1.4.0" - should-type-adaptors "^1.0.1" - should-util "^1.0.0" - signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -2715,27 +3608,23 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" -source-map@^0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map-support@^0.5.6: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" -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" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -spawn-wrap@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" - integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== - dependencies: - foreground-child "^2.0.0" - is-windows "^1.0.2" - make-dir "^3.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - which "^2.0.1" +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== spdx-exceptions@^2.1.0: version "2.3.0" @@ -2760,6 +3649,13 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + stdin@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/stdin/-/stdin-0.0.1.tgz#d3041981aaec3dfdbc77a1b38d6372e38f5fb71e" @@ -2770,15 +3666,15 @@ string-argv@0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" -string-width@^3.0.0, string-width@^3.1.0: +string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -2796,22 +3692,6 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" @@ -2821,14 +3701,7 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -2852,23 +3725,11 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-json-comments@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== - strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -supports-color@7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -2876,13 +3737,38 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -2898,6 +3784,14 @@ tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -2926,6 +3820,11 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +throat@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" + integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== + through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -2939,6 +3838,11 @@ timers-ext@^0.1.5, timers-ext@^0.1.7: es5-ext "~0.10.46" next-tick "1" +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -2961,6 +3865,23 @@ tooling@webpack/tooling#v1.14.0: json-schema-to-typescript "^9.1.1" yargs "^16.1.1" +tough-cookie@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + tslib@^1.9.0: version "1.13.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" @@ -2973,12 +3894,29 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + type-fest@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== -type-fest@^0.8.0, type-fest@^0.8.1: +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== @@ -3012,11 +3950,24 @@ unique-string@^2.0.0: dependencies: crypto-random-string "^2.0.0" +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== +update-browserslist-db@^1.0.10: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.0" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" @@ -3024,59 +3975,97 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -uuid@^3.3.3: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" v8-compile-cache@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + vscode-uri@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.2.tgz#ecfd1d066cb8ef4c3a208decdbab9a8c23d055d0" integrity sha512-jkjy6pjU1fxUvI51P+gCsxg1u2n8LSt0W6KrCNQceaziKzff74GoWmjVG46KieVzybO1sttPQmYfrwSHey7GUA== -which-module@^2.0.0: +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" -which@2.0.2, which@^2.0.1: +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -word-wrap@^1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workerpool@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.0.tgz#85aad67fa1a2c8ef9386a1b43539900f61d03d58" - integrity sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -3117,117 +4106,47 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + xdg-basedir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== +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" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== y18n@^5.0.5: version "5.0.5" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yaml@^1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== -yargs-parser@13.1.2, yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^15.0.1: - version "15.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" - integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.2.2: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-unparser@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.1.tgz#bd4b0ee05b4c94d058929c32cb09e3fce71d3c5f" - integrity sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA== - dependencies: - camelcase "^5.3.1" - decamelize "^1.2.0" - flat "^4.1.0" - is-plain-obj "^1.1.0" - yargs "^14.2.3" - -yargs@13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.2" - -yargs@^14.2.3: - version "14.2.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" - integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== - dependencies: - cliui "^5.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^15.0.1" - -yargs@^15.0.2: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@^16.1.1: +yargs@^16.1.1, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==