diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 3160c30b5eea..c7f92f01e003 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -4,10 +4,22 @@ const path = require("path"); const cjsGlobals = ["__dirname", "__filename", "require", "module", "exports"]; +const testFiles = [ + "packages/*/test/**/*.js", + "codemods/*/test/**/*.js", + "eslint/*/test/**/*.js", +]; +const sourceFiles = exts => [ + `packages/*/src/**/*.{${exts}}`, + `codemods/*/src/**/*.{${exts}}`, + `eslint/*/src/**/*.{${exts}}`, +]; + module.exports = { root: true, plugins: [ "import", + "node", "jest", "prettier", "@babel/development", @@ -36,11 +48,7 @@ module.exports = { }, }, { - files: [ - "packages/*/src/**/*.{js,ts,cjs}", - "codemods/*/src/**/*.{js,ts,cjs}", - "eslint/*/src/**/*.{js,ts,cjs}", - ], + files: sourceFiles("js,ts,cjs,mjs"), rules: { "@babel/development/no-undefined-identifier": "error", "@babel/development/no-deprecated-clone": "error", @@ -51,9 +59,7 @@ module.exports = { }, { files: [ - "packages/*/test/**/*.js", - "codemods/*/test/**/*.js", - "eslint/*/test/**/*.js", + ...testFiles, "packages/babel-helper-transform-fixture-test-runner/src/helpers.{ts,js}", "test/**/*.js", ], @@ -68,20 +74,21 @@ module.exports = { "jest/no-test-callback": "off", "jest/valid-describe": "off", "import/extensions": ["error", "always"], + "import/no-extraneous-dependencies": "off", "no-restricted-imports": ["error", { patterns: ["**/src/**"] }], }, }, { - files: [ - "packages/*/src/**/*.{js,ts}", - "codemods/*/src/**/*.{js,ts}", - "eslint/*/src/**/*.{js,ts}", - "packages/*/test/**/*.js", - "codemods/*/test/**/*.js", - "eslint/*/test/**/*.js", - "packages/babel-helper-transform-fixture-test-runner/src/helpers.{ts,js}", - "test/**/*.js", - ], + files: testFiles, + rules: { + "node/no-unsupported-features": [ + "error", + { version: "12.17.0", ignores: ["modules"] }, + ], + }, + }, + { + files: [...sourceFiles("js,ts,mjs"), ...testFiles, "test/**/*.js"], excludedFiles: [ // @babel/register is the require() hook, so it will always be CJS-based "packages/babel-register/**/*.{js,ts}", diff --git a/.gitignore b/.gitignore index 37c66b084feb..1ace24da8134 100644 --- a/.gitignore +++ b/.gitignore @@ -52,7 +52,8 @@ package-lock.json /packages/babel-runtime-corejs3/core-js/**/*.js /packages/babel-runtime-corejs3/core-js-stable/**/*.js -/packages/babel-register/test/.babel +/packages/babel-register/test/.cache.babel +/packages/babel-register/test/.index.babel /packages/babel-cli/test/tmp /packages/babel-node/test/tmp /packages/*/lib diff --git a/codemods/babel-plugin-codemod-object-assign-to-object-spread/test/package.json b/codemods/babel-plugin-codemod-object-assign-to-object-spread/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/codemods/babel-plugin-codemod-object-assign-to-object-spread/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/codemods/babel-plugin-codemod-optional-catch-binding/test/package.json b/codemods/babel-plugin-codemod-optional-catch-binding/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/codemods/babel-plugin-codemod-optional-catch-binding/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/eslint/babel-eslint-parser/test/package.json b/eslint/babel-eslint-parser/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/eslint/babel-eslint-parser/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/eslint/babel-eslint-plugin-development-internal/test/rules/package.json b/eslint/babel-eslint-plugin-development-internal/test/rules/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/eslint/babel-eslint-plugin-development-internal/test/rules/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/eslint/babel-eslint-plugin-development/test/rules/package.json b/eslint/babel-eslint-plugin-development/test/rules/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/eslint/babel-eslint-plugin-development/test/rules/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/eslint/babel-eslint-plugin/test/rules/package.json b/eslint/babel-eslint-plugin/test/rules/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/eslint/babel-eslint-plugin/test/rules/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/eslint/babel-eslint-tests/test/fixtures/package.json b/eslint/babel-eslint-tests/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/eslint/babel-eslint-tests/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/eslint/babel-eslint-tests/test/helpers/verifyAndAssertMessages.js b/eslint/babel-eslint-tests/test/helpers/verifyAndAssertMessages.js index 6829c73bbbd6..4fab9a573330 100644 --- a/eslint/babel-eslint-tests/test/helpers/verifyAndAssertMessages.js +++ b/eslint/babel-eslint-tests/test/helpers/verifyAndAssertMessages.js @@ -31,7 +31,7 @@ export default function verifyAndAssertMessages( "../../../babel-eslint-shared-fixtures/config/babel.config.js", ), }, - ...overrideConfig?.parserOptions, + ...(overrideConfig && overrideConfig.parserOptions), }, }); diff --git a/eslint/babel-eslint-tests/test/package.json b/eslint/babel-eslint-tests/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/eslint/babel-eslint-tests/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/jest.config.js b/jest.config.js index b60fa636a815..915130726618 100644 --- a/jest.config.js +++ b/jest.config.js @@ -2,6 +2,8 @@ const supportsESM = parseInt(process.versions.node) >= 12; const isPublishBundle = process.env.IS_PUBLISH; module.exports = { + runner: supportsESM ? "./test/jest-light-runner" : "jest-runner", + collectCoverageFrom: [ "packages/*/src/**/*.{js,mjs,ts}", "codemods/*/src/**/*.{js,mjs,ts}", @@ -47,7 +49,6 @@ module.exports = { "/test/__data__/", "/build/", ], - resolver: supportsESM ? "./test/jestExportsMapResolver.cjs" : null, // We don't need module name mappers here as depedencies of workspace // package should be declared explicitly in the package.json // Yarn will generate correct file links so that Jest can resolve correctly diff --git a/package.json b/package.json index ee6e33f32c69..8832ce97388b 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "eslint-plugin-flowtype": "^8.0.3", "eslint-plugin-import": "^2.25.2", "eslint-plugin-jest": "^25.2.2", + "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^3.4.0", "fancy-log": "^1.3.3", "flow-bin": "^0.123.0", @@ -61,8 +62,8 @@ "gulp-filter": "^7.0.0", "gulp-plumber": "^1.2.1", "husky": "^7.0.4", - "jest": "^27.2.0", - "jest-worker": "^27.2.0", + "jest": "^27.4.0", + "jest-worker": "^27.4.0", "lint-staged": "^9.2.0", "lodash": "^4.17.21", "mergeiterator": "^1.2.5", @@ -80,6 +81,7 @@ "eslint/*", "packages/*", "test/esm", + "test/jest-light-runner", "test/runtime-integration/*", "benchmark" ], diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/options.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/options.json index 1843a59d10d6..69978087cf4e 100644 --- a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/options.json +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with ignored file/options.json @@ -1,6 +1,7 @@ { "args": ["./src/index.js"], "env": { + "BABEL_ENV": "test", "BABEL_SHOW_CONFIG_FOR": "./src/index.js" }, "os": ["darwin", "linux"] diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/options.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/options.json index 1843a59d10d6..69978087cf4e 100644 --- a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/options.json +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR with only file/options.json @@ -1,6 +1,7 @@ { "args": ["./src/index.js"], "env": { + "BABEL_ENV": "test", "BABEL_SHOW_CONFIG_FOR": "./src/index.js" }, "os": ["darwin", "linux"] diff --git a/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/package.json b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-cli/test/fixtures/babel/env - SHOW_CONFIG_FOR/in-files/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-cli/test/fixtures/package.json b/packages/babel-cli/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-cli/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-cli/test/index.js b/packages/babel-cli/test/index.js index b2f40308c630..2de08e866d00 100644 --- a/packages/babel-cli/test/index.js +++ b/packages/babel-cli/test/index.js @@ -45,13 +45,13 @@ const readDir = function (loc, filter) { const saveInFiles = function (files) { // Place an empty .babelrc in each test so tests won't unexpectedly get to repo-level config. - if (!fs.existsSync(".babelrc")) { - outputFileSync(".babelrc", "{}"); + if (!fs.existsSync(path.join(tmpLoc, ".babelrc"))) { + outputFileSync(path.join(tmpLoc, ".babelrc"), "{}"); } Object.keys(files).forEach(function (filename) { const content = files[filename]; - outputFileSync(filename, content); + outputFileSync(path.join(tmpLoc, filename), content); }); }; @@ -123,7 +123,7 @@ const assertTest = function (stdout, stderr, opts, cwd) { const expected = opts.outFiles[filename]; const actual = actualFiles[filename]; - expect(actual).toBe(expected ?? ""); + expect(actual).toBe(expected || ""); } } catch (e) { e.message += "\n at " + filename; @@ -152,7 +152,7 @@ const buildTest = function (binName, testName, opts) { args = args.concat(opts.args); const env = { ...process.env, ...opts.env }; - const spawn = child.spawn(process.execPath, args, { env }); + const spawn = child.spawn(process.execPath, args, { env, cwd: tmpLoc }); let stderr = ""; let stdout = ""; @@ -190,15 +190,11 @@ const buildTest = function (binName, testName, opts) { }; fs.readdirSync(fixtureLoc).forEach(function (binName) { - if (binName.startsWith(".")) return; + if (binName.startsWith(".") || binName === "package.json") return; const suiteLoc = path.join(fixtureLoc, binName); describe("bin/" + binName, function () { - let cwd; - beforeEach(() => { - cwd = process.cwd(); - if (fs.existsSync(tmpLoc)) { for (const child of fs.readdirSync(tmpLoc)) { rimraf.sync(path.join(tmpLoc, child)); @@ -206,12 +202,6 @@ fs.readdirSync(fixtureLoc).forEach(function (binName) { } else { fs.mkdirSync(tmpLoc); } - - process.chdir(tmpLoc); - }); - - afterEach(() => { - process.chdir(cwd); }); fs.readdirSync(suiteLoc).forEach(function (testName) { diff --git a/packages/babel-cli/test/package.json b/packages/babel-cli/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-cli/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-code-frame/test/package.json b/packages/babel-code-frame/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-code-frame/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-core/test/api.js b/packages/babel-core/test/api.js index 1fea7a1a831e..4bd3419b008e 100644 --- a/packages/babel-core/test/api.js +++ b/packages/babel-core/test/api.js @@ -138,13 +138,13 @@ describe("parser and generator options", function () { describe("api", function () { it("exposes the resolvePlugin method", function () { expect(() => babel.resolvePlugin("nonexistent-plugin")).toThrow( - /Cannot resolve module 'babel-plugin-nonexistent-plugin'/, + /Cannot (?:find|resolve) module 'babel-plugin-nonexistent-plugin'/, ); }); it("exposes the resolvePreset method", function () { expect(() => babel.resolvePreset("nonexistent-preset")).toThrow( - /Cannot resolve module 'babel-preset-nonexistent-preset'/, + /Cannot (?:find|resolve) module 'babel-preset-nonexistent-preset'/, ); }); diff --git a/packages/babel-core/test/config-chain.js b/packages/babel-core/test/config-chain.js index e8a7d967062a..01961fa7e110 100644 --- a/packages/babel-core/test/config-chain.js +++ b/packages/babel-core/test/config-chain.js @@ -14,7 +14,7 @@ import { isMJS, loadOptionsAsync, skipUnsupportedESM } from "./helpers/esm.js"; // TODO: In Babel 8, we can directly uses fs.promises which is supported by // node 8+ const pfs = - fs.promises ?? + fs.promises || new Proxy(fs, { get(target, name) { if (name === "copyFile") { diff --git a/packages/babel-core/test/fixtures/package.json b/packages/babel-core/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-core/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-core/test/package.json b/packages/babel-core/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-core/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-core/test/resolution.js b/packages/babel-core/test/resolution.js index b68cb1929953..b8a204f9687c 100644 --- a/packages/babel-core/test/resolution.js +++ b/packages/babel-core/test/resolution.js @@ -355,8 +355,8 @@ describe("addon resolution", function () { // `require.resolve` is provided. // see https://github.com/babel/babel/pull/12439/files#r535996000 process.versions.node.startsWith("8.") - ? /Cannot resolve module 'babel-preset-foo'/ - : /Cannot resolve module 'babel-preset-foo'.*\n- If you want to resolve "foo", use "module:foo"/, + ? /Cannot (?:find|resolve) module 'babel-preset-foo'/ + : /Cannot (?:find|resolve) module 'babel-preset-foo'.*\n- If you want to resolve "foo", use "module:foo"/s, ); }); @@ -371,8 +371,8 @@ describe("addon resolution", function () { }); }).toThrow( process.versions.node.startsWith("8.") - ? /Cannot resolve module 'babel-plugin-foo'/ - : /Cannot resolve module 'babel-plugin-foo'.*\n- If you want to resolve "foo", use "module:foo"/, + ? /Cannot (?:find|resolve) module 'babel-plugin-foo'/ + : /Cannot (?:find|resolve) module 'babel-plugin-foo'.*\n- If you want to resolve "foo", use "module:foo"/s, ); }); @@ -387,8 +387,8 @@ describe("addon resolution", function () { }); }).toThrow( process.versions.node.startsWith("8.") - ? /Cannot resolve module 'babel-preset-foo'/ - : /Cannot resolve module 'babel-preset-foo'.*\n- Did you mean "@babel\/foo"\?/, + ? /Cannot (?:find|resolve) module 'babel-preset-foo'/ + : /Cannot (?:find|resolve) module 'babel-preset-foo'.*\n- Did you mean "@babel\/foo"\?/s, ); }); @@ -403,8 +403,8 @@ describe("addon resolution", function () { }); }).toThrow( process.versions.node.startsWith("8.") - ? /Cannot resolve module 'babel-plugin-foo'/ - : /Cannot resolve module 'babel-plugin-foo'.*\n- Did you mean "@babel\/foo"\?/, + ? /Cannot (?:find|resolve) module 'babel-plugin-foo'/ + : /Cannot (?:find|resolve) module 'babel-plugin-foo'.*\n- Did you mean "@babel\/foo"\?/s, ); }); @@ -419,8 +419,8 @@ describe("addon resolution", function () { }); }).toThrow( process.versions.node.startsWith("8.") - ? /Cannot resolve module 'babel-preset-testplugin'/ - : /Cannot resolve module 'babel-preset-testplugin'.*\n- Did you accidentally pass a plugin as a preset\?/, + ? /Cannot (?:find|resolve) module 'babel-preset-testplugin'/ + : /Cannot (?:find|resolve) module 'babel-preset-testplugin'.*\n- Did you accidentally pass a plugin as a preset\?/s, ); }); @@ -435,8 +435,8 @@ describe("addon resolution", function () { }); }).toThrow( process.versions.node.startsWith("8.") - ? /Cannot resolve module 'babel-plugin-testpreset'/ - : /Cannot resolve module 'babel-plugin-testpreset'.*\n- Did you accidentally pass a preset as a plugin\?/, + ? /Cannot (?:find|resolve) module 'babel-plugin-testpreset'/ + : /Cannot (?:find|resolve) module 'babel-plugin-testpreset'.*\n- Did you accidentally pass a preset as a plugin\?/s, ); }); @@ -449,7 +449,7 @@ describe("addon resolution", function () { babelrc: false, presets: ["foo"], }); - }).toThrow(/Cannot resolve module 'babel-preset-foo'/); + }).toThrow(/Cannot (?:find|resolve) module 'babel-preset-foo'/); }); it("should throw about missing plugins", function () { @@ -461,6 +461,6 @@ describe("addon resolution", function () { babelrc: false, plugins: ["foo"], }); - }).toThrow(/Cannot resolve module 'babel-plugin-foo'/); + }).toThrow(/Cannot (?:find|resolve) module 'babel-plugin-foo'/); }); }); diff --git a/packages/babel-generator/test/package.json b/packages/babel-generator/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-generator/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-helper-annotate-as-pure/test/package.json b/packages/babel-helper-annotate-as-pure/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-helper-annotate-as-pure/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-helper-compilation-targets/test/load-browserslist-package-json/package.json b/packages/babel-helper-compilation-targets/test/load-browserslist-package-json/package.json index 6cb011cbaae3..e2fdb0d5a452 100644 --- a/packages/babel-helper-compilation-targets/test/load-browserslist-package-json/package.json +++ b/packages/babel-helper-compilation-targets/test/load-browserslist-package-json/package.json @@ -1,3 +1,4 @@ { - "browserslist": "chrome 4" + "browserslist": "chrome 4", + "type": "module" } diff --git a/packages/babel-helper-compilation-targets/test/package.json b/packages/babel-helper-compilation-targets/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-helper-compilation-targets/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-helper-create-class-features-plugin/test/package.json b/packages/babel-helper-create-class-features-plugin/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-helper-create-class-features-plugin/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-helper-create-regexp-features-plugin/test/package.json b/packages/babel-helper-create-regexp-features-plugin/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-helper-create-regexp-features-plugin/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-helper-fixtures/src/index.ts b/packages/babel-helper-fixtures/src/index.ts index 59a9c08b1d8d..a94b2a46a1a9 100644 --- a/packages/babel-helper-fixtures/src/index.ts +++ b/packages/babel-helper-fixtures/src/index.ts @@ -60,7 +60,11 @@ function shouldIgnore(name, ignore?: Array) { const base = path.basename(name, ext); return ( - name[0] === "." || ext === ".md" || base === "LICENSE" || base === "options" + name[0] === "." || + ext === ".md" || + base === "LICENSE" || + base === "options" || + name === "package.json" ); } diff --git a/packages/babel-helper-module-imports/test/package.json b/packages/babel-helper-module-imports/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-helper-module-imports/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-helper-optimise-call-expression/test/package.json b/packages/babel-helper-optimise-call-expression/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-helper-optimise-call-expression/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-helper-plugin-test-runner/esm.mjs b/packages/babel-helper-plugin-test-runner/esm.mjs new file mode 100644 index 000000000000..c2af2b80628b --- /dev/null +++ b/packages/babel-helper-plugin-test-runner/esm.mjs @@ -0,0 +1,11 @@ +import _cjs from "./lib/index.js"; + +const adapter = _cjs.default.bind(); + +// For backward compatibility with the CJS-only version, this makes +// import _x from "@babel/helper-plugin-test-runner" +// const x = _x.default +// still work. +adapter.default = _cjs.default; + +export default adapter; diff --git a/packages/babel-helper-plugin-test-runner/package.json b/packages/babel-helper-plugin-test-runner/package.json index 0096c0e84ae3..9f7418d71c62 100644 --- a/packages/babel-helper-plugin-test-runner/package.json +++ b/packages/babel-helper-plugin-test-runner/package.json @@ -13,6 +13,20 @@ "access": "public" }, "main": "./lib/index.js", + "exports": { + ".": [ + { + "import": "./esm.mjs", + "default": "./lib/index.js" + }, + "./lib/index.js" + ], + "./lib": "./lib/index.js", + "./lib/index": "./lib/index.js", + "./lib/index.js": "./lib/index.js", + "./package": "./package.json", + "./package.json": "./package.json" + }, "dependencies": { "@babel/helper-transform-fixture-test-runner": "workspace:^" }, diff --git a/packages/babel-helper-transform-fixture-test-runner/test/package.json b/packages/babel-helper-transform-fixture-test-runner/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-helper-transform-fixture-test-runner/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-helper-validator-identifier/test/package.json b/packages/babel-helper-validator-identifier/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-helper-validator-identifier/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-helper-validator-option/test/package.json b/packages/babel-helper-validator-option/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-helper-validator-option/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-helpers/test/fixtures/package.json b/packages/babel-helpers/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-helpers/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-helpers/test/package.json b/packages/babel-helpers/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-helpers/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-highlight/test/package.json b/packages/babel-highlight/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-highlight/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-node/test/fixtures.js b/packages/babel-node/test/fixtures.js index a9f6ec2a3259..d4d5cf85e46d 100644 --- a/packages/babel-node/test/fixtures.js +++ b/packages/babel-node/test/fixtures.js @@ -34,12 +34,9 @@ const readDir = function (loc, filter) { }; const saveInFiles = function (files) { - // Place an empty .babelrc in each test so tests won't unexpectedly get to repo-level config. - outputFileSync(".babelrc", "{}"); - Object.keys(files).forEach(function (filename) { const content = files[filename]; - outputFileSync(filename, content); + outputFileSync(path.join(tmpLoc, filename), content); }); }; @@ -76,14 +73,17 @@ const assertTest = function (stdout, stderr, ipcMessage, opts) { } if (opts.outFiles) { - const actualFiles = readDir(path.join(tmpLoc)); + // For some reaons, on GH actions always appears a file called "null" ¯\_(ツ)_/¯ + const actualFiles = readDir(tmpLoc, name => name !== "null"); Object.keys(actualFiles).forEach(function (filename) { if (!Object.prototype.hasOwnProperty.call(opts.inFiles, filename)) { const expected = opts.outFiles[filename]; const actual = actualFiles[filename]; - expect(expected).not.toBeUndefined(); + if (expected == null) { + throw new Error("Unexpected generated file: " + filename); + } if (expected) { expect(actual).toBe(expected); @@ -100,11 +100,9 @@ const assertTest = function (stdout, stderr, ipcMessage, opts) { const buildTest = function (testName, opts) { return function (callback) { saveInFiles(opts.inFiles); - let args = [binLoc]; - args.push("--config-file", "../config.json"); - args = args.concat(opts.args); + const args = [binLoc].concat(opts.args); - const spawnOpts = {}; + const spawnOpts = { cwd: tmpLoc, env: { BABEL_DISABLE_CACHE: true } }; if (opts.ipc) { spawnOpts.stdio = ["pipe", "pipe", "pipe", "ipc"]; } @@ -136,9 +134,6 @@ const buildTest = function (testName, opts) { assertTest(stdout, stderr, ipcMessage, opts); } catch (e) { err = e; - } - - if (err) { err.message = args.map(arg => `"${arg}"`).join(" ") + ": " + err.message; } @@ -154,24 +149,11 @@ const buildTest = function (testName, opts) { }; describe("bin/babel-node", function () { - let cwd; - beforeEach(() => { - cwd = process.cwd(); - if (fs.existsSync(tmpLoc)) { - for (const child of fs.readdirSync(tmpLoc)) { - rimraf.sync(path.join(tmpLoc, child)); - } - } else { - fs.mkdirSync(tmpLoc); + rimraf.sync(tmpLoc); } - - process.chdir(tmpLoc); - }); - - afterEach(() => { - process.chdir(cwd); + fs.mkdirSync(tmpLoc); }); fs.readdirSync(fixtureLoc).forEach(function (testName) { @@ -202,6 +184,12 @@ describe("bin/babel-node", function () { if (fs.existsSync(babelrcLoc)) { // copy .babelrc file to tmp directory opts.inFiles[".babelrc"] = helper.readFile(babelrcLoc); + } else { + // Place an empty .babelrc in each test so tests won't unexpectedly get to repo-level config. + opts.inFiles[".babelrc"] = "{}"; + } + if (!opts.inFiles["package.json"]) { + opts.inFiles["package.json"] = `{ "type": "commonjs" }`; } // eslint-disable-next-line jest/valid-title diff --git a/packages/babel-node/test/fixtures/cli/require/.babelrc b/packages/babel-node/test/fixtures/cli/require/.babelrc new file mode 100644 index 000000000000..bd980b438191 --- /dev/null +++ b/packages/babel-node/test/fixtures/cli/require/.babelrc @@ -0,0 +1,6 @@ +{ + "presets": [ + "@babel/preset-env", + ["@babel/preset-react", { "runtime": "classic" }] + ] +} diff --git a/packages/babel-node/test/package.json b/packages/babel-node/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-node/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-parser/test/estree-throws.js b/packages/babel-parser/test/estree-throws.js index 58c828f379f5..f8a4a7d14507 100644 --- a/packages/babel-parser/test/estree-throws.js +++ b/packages/babel-parser/test/estree-throws.js @@ -6,8 +6,7 @@ import { fileURLToPath } from "url"; runFixtureTestsWithoutExactASTMatch( path.join(path.dirname(fileURLToPath(import.meta.url)), "fixtures"), (input, options = {}) => { - options.plugins = options.plugins || []; - options.plugins.push("estree"); - return parse(input, options); + const plugins = options.plugins || []; + return parse(input, { ...options, plugins: plugins.concat("estree") }); }, ); diff --git a/packages/babel-parser/test/helpers/runFixtureTests.js b/packages/babel-parser/test/helpers/runFixtureTests.js index 0aaf0858d6b6..7388a01d836c 100644 --- a/packages/babel-parser/test/helpers/runFixtureTests.js +++ b/packages/babel-parser/test/helpers/runFixtureTests.js @@ -218,7 +218,7 @@ function runTest(test, parseFunction, compareErrorsOnly = false) { return save(test, ast); } - if (ast.errors?.length) { + if (ast.errors && ast.errors.length) { throw new Error( `Expected non-recoverable error message: ${ opts.throws diff --git a/packages/babel-parser/test/package.json b/packages/babel-parser/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-parser/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression/test/fixtures/package.json b/packages/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression/test/package.json b/packages/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-bugfix-safari-id-destructuring-collision-in-function-expression/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining/test/package.json b/packages/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-bugfix-v8-spread-parameters-in-optional-chaining/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-external-helpers/test/package.json b/packages/babel-plugin-external-helpers/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-external-helpers/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-async-do-expressions/test/package.json b/packages/babel-plugin-proposal-async-do-expressions/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-async-do-expressions/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-async-generator-functions/test/package.json b/packages/babel-plugin-proposal-async-generator-functions/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-async-generator-functions/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-class-properties/test/package.json b/packages/babel-plugin-proposal-class-properties/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-class-properties/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-class-static-block/test/package.json b/packages/babel-plugin-proposal-class-static-block/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-class-static-block/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-decorators/test/package.json b/packages/babel-plugin-proposal-decorators/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-decorators/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-do-expressions/test/package.json b/packages/babel-plugin-proposal-do-expressions/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-do-expressions/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-dynamic-import/test/package.json b/packages/babel-plugin-proposal-dynamic-import/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-dynamic-import/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-export-default-from/test/package.json b/packages/babel-plugin-proposal-export-default-from/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-export-default-from/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-export-namespace-from/test/package.json b/packages/babel-plugin-proposal-export-namespace-from/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-export-namespace-from/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-function-bind/test/package.json b/packages/babel-plugin-proposal-function-bind/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-function-bind/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-function-sent/test/package.json b/packages/babel-plugin-proposal-function-sent/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-function-sent/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-json-strings/test/package.json b/packages/babel-plugin-proposal-json-strings/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-json-strings/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-logical-assignment-operators/test/package.json b/packages/babel-plugin-proposal-logical-assignment-operators/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-logical-assignment-operators/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-nullish-coalescing-operator/test/package.json b/packages/babel-plugin-proposal-nullish-coalescing-operator/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-nullish-coalescing-operator/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-numeric-separator/test/package.json b/packages/babel-plugin-proposal-numeric-separator/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-numeric-separator/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/package.json b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-plugin-proposal-object-rest-spread/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-plugin-proposal-object-rest-spread/test/package.json b/packages/babel-plugin-proposal-object-rest-spread/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-object-rest-spread/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-optional-catch-binding/test/package.json b/packages/babel-plugin-proposal-optional-catch-binding/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-optional-catch-binding/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-optional-chaining/test/package.json b/packages/babel-plugin-proposal-optional-chaining/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-optional-chaining/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-partial-application/test/package.json b/packages/babel-plugin-proposal-partial-application/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-partial-application/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-pipeline-operator/test/package.json b/packages/babel-plugin-proposal-pipeline-operator/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-pipeline-operator/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-private-methods/test/package.json b/packages/babel-plugin-proposal-private-methods/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-private-methods/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-private-property-in-object/test/package.json b/packages/babel-plugin-proposal-private-property-in-object/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-private-property-in-object/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-record-and-tuple/test/package.json b/packages/babel-plugin-proposal-record-and-tuple/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-record-and-tuple/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-throw-expressions/test/package.json b/packages/babel-plugin-proposal-throw-expressions/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-throw-expressions/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-proposal-unicode-property-regex/test/package.json b/packages/babel-plugin-proposal-unicode-property-regex/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-proposal-unicode-property-regex/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-syntax-decorators/test/package.json b/packages/babel-plugin-syntax-decorators/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-syntax-decorators/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-syntax-typescript/test/package.json b/packages/babel-plugin-syntax-typescript/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-syntax-typescript/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-arrow-functions/test/package.json b/packages/babel-plugin-transform-arrow-functions/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-arrow-functions/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-async-to-generator/test/package.json b/packages/babel-plugin-transform-async-to-generator/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-async-to-generator/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-block-scoped-functions/test/package.json b/packages/babel-plugin-transform-block-scoped-functions/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-block-scoped-functions/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-block-scoping/test/package.json b/packages/babel-plugin-transform-block-scoping/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-block-scoping/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-classes/test/package.json b/packages/babel-plugin-transform-classes/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-computed-properties/test/package.json b/packages/babel-plugin-transform-computed-properties/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-computed-properties/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-destructuring/test/package.json b/packages/babel-plugin-transform-destructuring/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-destructuring/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-dotall-regex/test/package.json b/packages/babel-plugin-transform-dotall-regex/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-dotall-regex/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-duplicate-keys/test/package.json b/packages/babel-plugin-transform-duplicate-keys/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-duplicate-keys/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-exponentiation-operator/test/package.json b/packages/babel-plugin-transform-exponentiation-operator/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-exponentiation-operator/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-flow-comments/test/package.json b/packages/babel-plugin-transform-flow-comments/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-flow-comments/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-flow-strip-types/test/package.json b/packages/babel-plugin-transform-flow-strip-types/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-flow-strip-types/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-for-of/test/package.json b/packages/babel-plugin-transform-for-of/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-for-of/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-function-name/test/package.json b/packages/babel-plugin-transform-function-name/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-function-name/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-instanceof/test/package.json b/packages/babel-plugin-transform-instanceof/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-instanceof/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-jscript/test/package.json b/packages/babel-plugin-transform-jscript/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-jscript/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-member-expression-literals/test/package.json b/packages/babel-plugin-transform-member-expression-literals/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-member-expression-literals/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-modules-amd/test/package.json b/packages/babel-plugin-transform-modules-amd/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-modules-amd/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-modules-commonjs/test/fixtures/package.json b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-plugin-transform-modules-commonjs/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-plugin-transform-modules-commonjs/test/package.json b/packages/babel-plugin-transform-modules-commonjs/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-modules-commonjs/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-modules-systemjs/test/package.json b/packages/babel-plugin-transform-modules-systemjs/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-modules-systemjs/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-modules-umd/test/package.json b/packages/babel-plugin-transform-modules-umd/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-modules-umd/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-named-capturing-groups-regex/test/package.json b/packages/babel-plugin-transform-named-capturing-groups-regex/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-named-capturing-groups-regex/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-new-target/test/package.json b/packages/babel-plugin-transform-new-target/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-new-target/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-object-super/test/package.json b/packages/babel-plugin-transform-object-super/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-object-super/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-parameters/test/package.json b/packages/babel-plugin-transform-parameters/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-parameters/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-property-literals/test/package.json b/packages/babel-plugin-transform-property-literals/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-property-literals/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-property-mutators/test/package.json b/packages/babel-plugin-transform-property-mutators/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-property-mutators/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-proto-to-assign/test/package.json b/packages/babel-plugin-transform-proto-to-assign/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-proto-to-assign/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-react-constant-elements/test/package.json b/packages/babel-plugin-transform-react-constant-elements/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-react-constant-elements/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-react-display-name/test/package.json b/packages/babel-plugin-transform-react-display-name/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-react-display-name/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-react-inline-elements/test/package.json b/packages/babel-plugin-transform-react-inline-elements/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-react-inline-elements/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-react-jsx-compat/test/package.json b/packages/babel-plugin-transform-react-jsx-compat/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-compat/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/package.json b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-plugin-transform-react-jsx-development/test/package.json b/packages/babel-plugin-transform-react-jsx-development/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-development/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-react-jsx-self/test/package.json b/packages/babel-plugin-transform-react-jsx-self/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-self/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-react-jsx-source/test/package.json b/packages/babel-plugin-transform-react-jsx-source/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-source/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/package.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-plugin-transform-react-jsx/test/package.json b/packages/babel-plugin-transform-react-jsx/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-react-pure-annotations/test/package.json b/packages/babel-plugin-transform-react-pure-annotations/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-react-pure-annotations/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-regenerator/test/package.json b/packages/babel-plugin-transform-regenerator/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-regenerator/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-reserved-words/test/package.json b/packages/babel-plugin-transform-reserved-words/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-reserved-words/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-runtime/test/package.json b/packages/babel-plugin-transform-runtime/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-runtime/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-shorthand-properties/test/package.json b/packages/babel-plugin-transform-shorthand-properties/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-shorthand-properties/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-spread/test/package.json b/packages/babel-plugin-transform-spread/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-spread/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-sticky-regex/test/package.json b/packages/babel-plugin-transform-sticky-regex/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-sticky-regex/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-strict-mode/test/package.json b/packages/babel-plugin-transform-strict-mode/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-strict-mode/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-template-literals/test/package.json b/packages/babel-plugin-transform-template-literals/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-template-literals/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-typeof-symbol/test/package.json b/packages/babel-plugin-transform-typeof-symbol/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-typeof-symbol/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-typescript/test/fixtures/package.json b/packages/babel-plugin-transform-typescript/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-plugin-transform-typescript/test/package.json b/packages/babel-plugin-transform-typescript/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-typescript/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-unicode-escapes/test/package.json b/packages/babel-plugin-transform-unicode-escapes/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-unicode-escapes/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-plugin-transform-unicode-regex/test/package.json b/packages/babel-plugin-transform-unicode-regex/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-plugin-transform-unicode-regex/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-preset-env/test/fixtures/debug-babel-7/browserslist-env/package.json b/packages/babel-preset-env/test/fixtures/debug-babel-7/browserslist-env/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/debug-babel-7/browserslist-env/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-preset-env/test/fixtures/debug/browserslist-env/package.json b/packages/babel-preset-env/test/fixtures/debug/browserslist-env/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/debug/browserslist-env/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-preset-env/test/fixtures/package.json b/packages/babel-preset-env/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-preset-env/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-preset-env/test/index.spec.js b/packages/babel-preset-env/test/index.spec.js index 1a1b6e8da794..d8668426b292 100644 --- a/packages/babel-preset-env/test/index.spec.js +++ b/packages/babel-preset-env/test/index.spec.js @@ -12,12 +12,12 @@ const pluginLegacyBabelPolyfill = _pluginLegacyBabelPolyfill.default; const transformations = _transformations.default; const availablePlugins = _availablePlugins.default; -import _pluginCoreJS2 from "babel-plugin-polyfill-corejs2"; -import _pluginCoreJS3 from "babel-plugin-polyfill-corejs3"; -import _pluginRegenerator from "babel-plugin-polyfill-regenerator"; -const pluginCoreJS2 = _pluginCoreJS2.default; -const pluginCoreJS3 = _pluginCoreJS3.default; -const pluginRegenerator = _pluginRegenerator.default; +import { createRequire } from "module"; +const require = createRequire(import.meta.url); + +const pluginCoreJS2 = require("babel-plugin-polyfill-corejs2").default; +const pluginCoreJS3 = require("babel-plugin-polyfill-corejs3").default; +const pluginRegenerator = require("babel-plugin-polyfill-regenerator").default; describe("babel-preset-env", () => { describe("transformIncludesAndExcludes", () => { diff --git a/packages/babel-preset-env/test/package.json b/packages/babel-preset-env/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-preset-env/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-preset-flow/test/package.json b/packages/babel-preset-flow/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-preset-flow/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-preset-react/test/fixtures/package.json b/packages/babel-preset-react/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-preset-react/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-preset-react/test/package.json b/packages/babel-preset-react/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-preset-react/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-preset-typescript/test/package.json b/packages/babel-preset-typescript/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-preset-typescript/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-register/src/nodeWrapper.ts b/packages/babel-register/src/nodeWrapper.ts index 1839dfc7e44a..27b3cead2f80 100644 --- a/packages/babel-register/src/nodeWrapper.ts +++ b/packages/babel-register/src/nodeWrapper.ts @@ -13,6 +13,9 @@ const internalModuleCache = Object.create(null); Module._cache = internalModuleCache; const node = require("./node"); + +// NOTE: This Module._cache set is intercepted by the beforeEach hook in +// packages/babel-register/test/index.js to install dependencies mocks. Module._cache = globalModuleCache; // Add source-map-support to global cache as it's stateful diff --git a/packages/babel-register/test/cache.js b/packages/babel-register/test/cache.js index 9effb135a511..8c9de253cd34 100644 --- a/packages/babel-register/test/cache.js +++ b/packages/babel-register/test/cache.js @@ -1,10 +1,13 @@ import fs from "fs"; import path from "path"; import { fileURLToPath } from "url"; +import { createRequire, Module } from "module"; + +const require = createRequire(import.meta.url); const testCacheFilename = path.join( path.dirname(fileURLToPath(import.meta.url)), - ".babel", + ".cache.babel", ); const oldBabelDisableCacheValue = process.env.BABEL_DISABLE_CACHE; @@ -32,14 +35,30 @@ function resetCache() { process.env.BABEL_DISABLE_CACHE = oldBabelDisableCacheValue; } +const OLD_JEST_MOCKS = !!jest.doMock; + describe("@babel/register - caching", () => { describe("cache", () => { let load, get, setDirty, save; let consoleWarnSpy; + if (!OLD_JEST_MOCKS) { + let oldModuleCache; + beforeAll(() => { + oldModuleCache = Module._cache; + }); + afterAll(() => { + Module._cache = oldModuleCache; + }); + } + beforeEach(() => { // Since lib/cache is a singleton we need to fully reload it - jest.resetModules(); + if (OLD_JEST_MOCKS) { + jest.resetModules(); + } else { + Module._cache = {}; + } const cache = require("../lib/cache.js"); load = cache.load; diff --git a/packages/babel-register/test/fixtures/package.json b/packages/babel-register/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-register/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-register/test/index.js b/packages/babel-register/test/index.js index d90842c2059d..c813ddce47f9 100644 --- a/packages/babel-register/test/index.js +++ b/packages/babel-register/test/index.js @@ -1,46 +1,19 @@ -"use strict"; +import { createRequire, Module } from "module"; +import path from "path"; +import fs from "fs"; +import child from "child_process"; +import { fileURLToPath } from "url"; -const fs = require("fs"); -const path = require("path"); -const child = require("child_process"); - -let currentHook; -let currentOptions; -let sourceMapSupport = false; +const dirname = path.dirname(fileURLToPath(import.meta.url)); +const require = createRequire(import.meta.url); const registerFile = require.resolve("../lib/index"); -const testCacheFilename = path.join(__dirname, ".babel"); +const testCacheFilename = path.join(dirname, ".index.babel"); const testFile = require.resolve("./fixtures/babelrc/es2015"); const testFileContent = fs.readFileSync(testFile); -const sourceMapTestFile = require.resolve("./fixtures/source-map/index"); -const sourceMapNestedTestFile = require.resolve( - "./fixtures/source-map/foo/bar", -); -const internalModulesTestFile = require.resolve( - "./fixtures/internal-modules/index", -); - -jest.mock("pirates", () => { - return { - addHook(hook, opts) { - currentHook = hook; - currentOptions = opts; - - return () => { - currentHook = null; - currentOptions = null; - }; - }, - }; -}); -jest.mock("source-map-support", () => { - return { - install() { - sourceMapSupport = true; - }, - }; -}); +const piratesPath = require.resolve("pirates"); +const smsPath = require.resolve("source-map-support"); const defaultOptions = { exts: [".js", ".jsx", ".es6", ".es", ".mjs", ".cjs"], @@ -59,7 +32,31 @@ function resetCache() { process.env.BABEL_CACHE_PATH = null; } +const OLD_JEST_MOCKS = !!jest.doMock; + describe("@babel/register", function () { + let currentHook, currentOptions, sourceMapSupport; + + const mocks = { + ["pirates"]: { + addHook(hook, opts) { + currentHook = hook; + currentOptions = opts; + + return () => { + currentHook = null; + currentOptions = null; + }; + }, + }, + + ["source-map-support"]: { + install() { + sourceMapSupport = true; + }, + }, + }; + let babelRegister; function setupRegister(config = { babelrc: false }) { @@ -82,6 +79,12 @@ describe("@babel/register", function () { cleanCache(); } + beforeEach(() => { + currentHook = null; + currentOptions = null; + sourceMapSupport = false; + }); + afterEach(async () => { // @babel/register saves the cache on process.nextTick. // We need to wait for at least one tick so that when jest @@ -90,16 +93,60 @@ describe("@babel/register", function () { await new Promise(setImmediate); revertRegister(); - currentHook = null; - currentOptions = null; - sourceMapSupport = false; - jest.resetModules(); }); afterAll(() => { resetCache(); }); + if (OLD_JEST_MOCKS) { + jest.doMock("pirates", () => mocks["pirates"]); + jest.doMock("source-map-support", () => mocks["source-map-support"]); + + afterEach(() => { + jest.resetModules(); + }); + } else { + let originalRequireCacheDescriptor; + beforeAll(() => { + originalRequireCacheDescriptor = Object.getOwnPropertyDescriptor( + Module, + "_cache", + ); + }); + + beforeEach(() => { + const isEmptyObj = obj => + Object.getPrototypeOf(obj) === null && Object.keys(obj).length === 0; + + // This setter intercepts the Module._cache assignment in + // packages/babel-register/src/nodeWrapper.js to install in the + // internal isolated cache. + const emptyInitialCache = {}; + Object.defineProperty(Module, "_cache", { + get: () => emptyInitialCache, + set(value) { + expect(isEmptyObj(value)).toBe(true); + + Object.defineProperty(Module, "_cache", { + value, + enumerable: originalRequireCacheDescriptor.enumerable, + configurable: originalRequireCacheDescriptor.configurable, + writable: originalRequireCacheDescriptor.writable, + }); + value[piratesPath] = { exports: mocks["pirates"] }; + value[smsPath] = { exports: mocks["source-map-support"] }; + }, + enumerable: originalRequireCacheDescriptor.enumerable, + configurable: originalRequireCacheDescriptor.configurable, + }); + }); + + afterAll(() => { + Object.defineProperty(Module, "_cache", originalRequireCacheDescriptor); + }); + } + test("registers hook correctly", () => { setupRegister(); @@ -159,11 +206,11 @@ describe("@babel/register", function () { const output = await spawnNodeAsync([ "-r", registerFile, - sourceMapTestFile, + require.resolve("./fixtures/source-map/index"), ]); const sourceMap = JSON.parse(output); expect(sourceMap.map.sourceRoot + sourceMap.map.sources[0]).toBe( - sourceMapNestedTestFile, + require.resolve("./fixtures/source-map/foo/bar"), ); }); @@ -194,14 +241,16 @@ describe("@babel/register", function () { // Need a clean environment without `convert-source-map` // already in the require cache, so we spawn a separate process - const output = await spawnNodeAsync([internalModulesTestFile]); + const output = await spawnNodeAsync([ + require.resolve("./fixtures/internal-modules/index.js"), + ]); const { convertSourceMap } = JSON.parse(output); expect(convertSourceMap).toMatch("/* transformed */"); }); }); function spawnNodeAsync(args) { - const spawn = child.spawn(process.execPath, args, { cwd: __dirname }); + const spawn = child.spawn(process.execPath, args, { cwd: dirname }); let output = ""; let callback; diff --git a/packages/babel-register/test/package.json b/packages/babel-register/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-register/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-standalone/test/package.json b/packages/babel-standalone/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-standalone/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-template/test/package.json b/packages/babel-template/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-template/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-traverse/test/fixtures/package.json b/packages/babel-traverse/test/fixtures/package.json new file mode 100644 index 000000000000..a3c15a7a6312 --- /dev/null +++ b/packages/babel-traverse/test/fixtures/package.json @@ -0,0 +1 @@ +{ "type": "commonjs" } diff --git a/packages/babel-traverse/test/package.json b/packages/babel-traverse/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-traverse/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/packages/babel-traverse/test/scope.js b/packages/babel-traverse/test/scope.js index 1045afa0a3bc..9ed72bef2690 100644 --- a/packages/babel-traverse/test/scope.js +++ b/packages/babel-traverse/test/scope.js @@ -4,7 +4,7 @@ import * as t from "@babel/types"; import _traverse, { NodePath } from "../lib/index.js"; const traverse = _traverse.default; -function getPath(code, options): NodePath { +function getPath(code, options) { const ast = typeof code === "string" ? parse(code, options) : createNode(code); let path; diff --git a/packages/babel-types/test/package.json b/packages/babel-types/test/package.json new file mode 100644 index 000000000000..5ffd9800b97c --- /dev/null +++ b/packages/babel-types/test/package.json @@ -0,0 +1 @@ +{ "type": "module" } diff --git a/test/jest-light-runner/package.json b/test/jest-light-runner/package.json new file mode 100644 index 000000000000..586ec0dc38eb --- /dev/null +++ b/test/jest-light-runner/package.json @@ -0,0 +1,19 @@ +{ + "name": "@babel/jest-light-runner", + "version": "0.0.1", + "private": true, + "type": "module", + "main": "./src/index.js", + "exports": { + ".": "./src/index.js" + }, + "dependencies": { + "expect": "^27.4.0", + "jest-circus": "^27.4.0", + "jest-each": "^27.4.0", + "jest-mock": "^27.4.0", + "jest-snapshot": "^27.4.0", + "piscina": "^3.1.0", + "supports-color": "^9.0.2" + } +} diff --git a/test/jest-light-runner/src/global-setup.js b/test/jest-light-runner/src/global-setup.js new file mode 100644 index 000000000000..6db8e0197451 --- /dev/null +++ b/test/jest-light-runner/src/global-setup.js @@ -0,0 +1,27 @@ +/* eslint-disable import/extensions */ + +import mock from "jest-mock"; +import expect from "expect"; +import snapshot from "jest-snapshot"; +import * as circus from "jest-circus"; + +expect.extend({ + toMatchInlineSnapshot: snapshot.toMatchInlineSnapshot, + toMatchSnapshot: snapshot.toMatchSnapshot, + toThrowErrorMatchingInlineSnapshot: + snapshot.toThrowErrorMatchingInlineSnapshot, + toThrowErrorMatchingSnapshot: snapshot.toThrowErrorMatchingSnapshot, +}); + +globalThis.expect = expect; +globalThis.test = circus.test; +globalThis.it = circus.it; +globalThis.describe = circus.describe; +globalThis.beforeAll = circus.beforeAll; +globalThis.afterAll = circus.afterAll; +globalThis.beforeEach = circus.beforeEach; +globalThis.afterEach = circus.afterEach; +globalThis.jest = { + fn: mock.fn, + spyOn: mock.spyOn, +}; diff --git a/test/jest-light-runner/src/index.js b/test/jest-light-runner/src/index.js new file mode 100644 index 000000000000..8caebd7789a9 --- /dev/null +++ b/test/jest-light-runner/src/index.js @@ -0,0 +1,54 @@ +import { Piscina } from "piscina"; +import supportsColor from "supports-color"; +import { MessageChannel } from "worker_threads"; +import os from "os"; + +/** @typedef {import("@jest/test-result").Test} Test */ + +const piscina = new Piscina({ + filename: new URL("./worker-runner.js", import.meta.url).href, + maxThreads: os.cpus().length / 2, + env: { + // Workers don't have a tty; we whant them to inherit + // the color support level from the main thread. + FORCE_COLOR: supportsColor.stdout.level, + ...process.env, + }, +}); + +export default class LightRunner { + #config; + + constructor(config) { + this.#config = config; + } + + /** + * @param {Array} tests + * @param {*} watcher + * @param {*} onStart + * @param {*} onResult + * @param {*} onFailure + */ + runTests(tests, watcher, onStart, onResult, onFailure) { + const { updateSnapshot } = this.#config; + + return Promise.all( + tests.map(test => { + const mc = new MessageChannel(); + mc.port2.onmessage = () => onStart(test); + mc.port2.unref(); + + return piscina + .run( + { test, updateSnapshot, port: mc.port1 }, + { transferList: [mc.port1] } + ) + .then( + result => void onResult(test, result), + error => void onFailure(test, error) + ); + }) + ); + } +} diff --git a/test/jest-light-runner/src/worker-runner.js b/test/jest-light-runner/src/worker-runner.js new file mode 100644 index 000000000000..a40bbb4340b6 --- /dev/null +++ b/test/jest-light-runner/src/worker-runner.js @@ -0,0 +1,226 @@ +import path from "path"; +import { fileURLToPath, pathToFileURL } from "url"; +import { performance } from "perf_hooks"; +import snapshot from "jest-snapshot"; +import expect from "expect"; +import * as circus from "jest-circus"; + +import "./global-setup.js"; + +/** @typedef {{ failures: number, passses: number, pending: number, start: number, end: number }} Stats */ +/** @typedef {{ ancestors: string[], title: string, errors: Error[], skipped: boolean }} InternalTestResult */ + +// Node.js workers (worker_therads) don't support +// process.chdir, that we use multiple times in our tests. +// We can "polyfill" it for process.cwd() usage, but it +// won't affect path.* and fs.* functions. +{ + const startCwd = process.cwd(); + let cwd = startCwd; + process.cwd = () => cwd; + process.chdir = dir => { + cwd = path.resolve(cwd, dir); + }; +} + +export default async function ({ test, updateSnapshot, port }) { + port.postMessage("start"); + + /** @type {Stats} */ + const stats = { passes: 0, failures: 0, pending: 0, start: 0, end: 0 }; + /** @type {Array} */ + const results = []; + + const { tests, hasFocusedTests } = await loadTests(test.path); + + const snapshotState = new snapshot.SnapshotState( + `${path.dirname(test.path)}/__snapshots__/${path.basename(test.path)}.snap`, + { prettierPath: "prettier", updateSnapshot } + ); + expect.setState({ snapshotState }); + + stats.start = performance.now(); + await runTestBlock(tests, hasFocusedTests, results, stats); + stats.end = performance.now(); + + snapshotState._inlineSnapshots.forEach(({ frame }) => { + // When using native ESM, errors have an URL location. + // Jest expects paths. + frame.file = fileURLToPath(frame.file); + }); + snapshotState.save(); + + return toTestResult(stats, results, test); +} + +async function loadTests(testFile) { + circus.resetState(); + await import(pathToFileURL(testFile)); + const { rootDescribeBlock, hasFocusedTests } = circus.getState(); + return { tests: rootDescribeBlock, hasFocusedTests }; +} + +async function runTestBlock( + block, + hasFocusedTests, + results, + stats, + ancestors = [] +) { + await runHooks("beforeAll", block, results, stats, ancestors); + + for (const child of block.children) { + const { type, mode, fn, name } = child; + const nextAncestors = ancestors.concat(name); + + if ( + mode === "skip" || + (hasFocusedTests && type === "test" && mode !== "only") + ) { + stats.pending++; + results.push({ ancestors, title: name, errors: [], skipped: true }); + } else if (type === "describeBlock") { + await runTestBlock(child, hasFocusedTests, results, stats, nextAncestors); + } else if (type === "test") { + await runHooks("beforeEach", block, results, stats, nextAncestors, true); + await runTest(fn, stats, results, ancestors, name); + await runHooks("afterEach", block, results, stats, nextAncestors, true); + } + } + + await runHooks("afterAll", block, results, stats, ancestors); + + return results; +} + +/** + * @param {Function} fn + * @param {Stats} stats + * @param {Array} results + * @param {string[]} ancestors + * @param {string} name + */ +async function runTest(fn, stats, results, ancestors, name) { + expect.setState({ + suppressedErrors: [], + currentTestName: ancestors.concat(name).join(" "), + }); + + const errors = []; + await callAsync(fn).catch(error => { + errors.push(error); + }); + + // Get suppressed errors from ``jest-matchers`` that weren't throw during + // test execution and add them to the test result, potentially failing + // a passing test. + const { suppressedErrors } = expect.getState(); + expect.setState({ suppressedErrors: [] }); + if (suppressedErrors.length > 0) { + errors.unshift(...suppressedErrors); + } + + if (errors.length > 0) { + stats.failures++; + } else { + stats.passes++; + } + results.push({ ancestors, title: name, errors, skipped: false }); +} + +async function runHooks(hook, block, results, stats, ancestors, runInParents) { + for (const { type, fn } of block.hooks) { + if (type === hook) { + await callAsync(fn).catch(error => { + stats.failures++; + results.push({ ancestors, title: `(${hook})`, error, skipped: false }); + }); + } + } + + if (block.parent && runInParents) { + await runHooks(hook, block.parent, results, stats, ancestors, true); + } +} + +function callAsync(fn) { + if (fn.length >= 1) { + return new Promise((resolve, reject) => { + fn((err, result) => { + if (err) { + reject(err); + } else { + resolve(result); + } + }); + }); + } else { + return Promise.resolve().then(fn); + } +} + +/** + * + * @param {Stats} stats + * @param {Array} tests + * @param {import("@jest/test-result").Test} testInput + * @returns {import("@jest/test-result").TestResult} + */ +function toTestResult(stats, tests, { path, context }) { + const { start, end } = stats; + const runtime = end - start; + + return { + coverage: globalThis.__coverage__, + console: null, + failureMessage: tests + .filter(t => t.errors.length > 0) + .map(failureToString) + .join("\n"), + numFailingTests: stats.failures, + numPassingTests: stats.passes, + numPendingTests: stats.pending, + perfStats: { + start, + end, + runtime: Math.round(runtime), // ms precision + slow: runtime / 1000 > context.config.slowTestThreshold, + }, + skipped: false, + snapshot: { + added: 0, + fileDeleted: false, + matched: 0, + unchecked: 0, + unmatched: 0, + updated: 0, + }, + sourceMaps: {}, + testExecError: null, + testFilePath: path, + testResults: tests.map(test => { + return { + ancestorTitles: test.ancestors, + duration: test.duration / 1000, + failureMessages: test.errors.length ? [failureToString(test)] : [], + fullName: test.title, + numPassingAsserts: test.errors.length > 0 ? 1 : 0, + status: test.skipped + ? "pending" + : test.errors.length > 0 + ? "failed" + : "passed", + title: test.title, + }; + }), + }; +} + +function failureToString(test) { + return ( + test.ancestors.concat(test.title).join(" > ") + + "\n" + + test.errors.map(e => e.toString().replace(/^/gm, "\t")).join("\n") + + "\n" + ); +} diff --git a/test/jestExportsMapResolver.cjs b/test/jestExportsMapResolver.cjs deleted file mode 100644 index 5d3c7b91438e..000000000000 --- a/test/jestExportsMapResolver.cjs +++ /dev/null @@ -1,31 +0,0 @@ -// Temporary workaround for https://github.com/facebook/jest/issues/9771 -// Source: https://github.com/facebook/jest/issues/9771#issuecomment-841624042 - -const enhancedResolve = require("enhanced-resolve"); - -const EXTENSIONS = [".js", ".json", ".node", ".ts"]; - -function mapGetOr(map, key, init) { - if (!map.has(key)) { - map.set(key, init()); - } - return map.get(key); -} - -const resolversCache = new Map(); -function getResolver(conditionNames) { - const cacheKeySeparator = ":::"; - const cacheKey = conditionNames.join(cacheKeySeparator); - - return mapGetOr(resolversCache, cacheKey, () => - enhancedResolve.create.sync({ - conditionNames, - extensions: EXTENSIONS, - }) - ); -} - -module.exports = function (request, options) { - const resolver = getResolver(options.conditions || ["default"]); - return resolver(options.basedir, request); -}; diff --git a/yarn.lock b/yarn.lock index 8fccdfa16c9f..3fe6312ce989 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,13 @@ __metadata: version: 5 cacheKey: 8 +"@assemblyscript/loader@npm:^0.10.1": + version: 0.10.1 + resolution: "@assemblyscript/loader@npm:0.10.1" + checksum: fd1f57bdf2c55252a48c2d93fbec3c5a9ef4ca40e581e8709dd8ee437613eb47af74c8cdba011a324077eda9605d6f24983f429c2ce18b0b582ddcc5acf75c26 + languageName: node + linkType: hard + "@babel-baseline/core@npm:@babel/core@7.15.8": version: 7.15.8 resolution: "@babel/core@npm:7.15.8" @@ -1033,6 +1040,20 @@ __metadata: languageName: unknown linkType: soft +"@babel/jest-light-runner@workspace:test/jest-light-runner": + version: 0.0.0-use.local + resolution: "@babel/jest-light-runner@workspace:test/jest-light-runner" + dependencies: + expect: ^27.4.0 + jest-circus: ^27.4.0 + jest-each: ^27.4.0 + jest-mock: ^27.4.0 + jest-snapshot: ^27.4.0 + piscina: ^3.1.0 + supports-color: ^9.0.2 + languageName: unknown + linkType: soft + "@babel/node@workspace:packages/babel-node": version: 0.0.0-use.local resolution: "@babel/node@workspace:packages/babel-node" @@ -3800,50 +3821,49 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^27.2.0": - version: 27.2.0 - resolution: "@jest/console@npm:27.2.0" +"@jest/console@npm:^27.4.0": + version: 27.4.0 + resolution: "@jest/console@npm:27.4.0" dependencies: - "@jest/types": ^27.1.1 + "@jest/types": ^27.4.0 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^27.2.0 - jest-util: ^27.2.0 + jest-message-util: ^27.4.0 + jest-util: ^27.4.0 slash: ^3.0.0 - checksum: 6cbdc6745401647947d2847cf0ef0efc0495c9e4897de955ae398302d721393a257cdf034835795eb3afa874870b84f8e2dc1585c151a76999200a94daf3faa0 + checksum: 2ee56f9e447bb8b928a58cfb814e55ddb16326a50bfe9c53626be819c969239f620e46eb528d6afebf00ffc1e76638aa62ee80704e6beeda42257f464b1beaa3 languageName: node linkType: hard -"@jest/core@npm:^27.2.0": - version: 27.2.0 - resolution: "@jest/core@npm:27.2.0" +"@jest/core@npm:^27.4.0": + version: 27.4.0 + resolution: "@jest/core@npm:27.4.0" dependencies: - "@jest/console": ^27.2.0 - "@jest/reporters": ^27.2.0 - "@jest/test-result": ^27.2.0 - "@jest/transform": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/console": ^27.4.0 + "@jest/reporters": ^27.4.0 + "@jest/test-result": ^27.4.0 + "@jest/transform": ^27.4.0 + "@jest/types": ^27.4.0 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.8.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-changed-files: ^27.1.1 - jest-config: ^27.2.0 - jest-haste-map: ^27.2.0 - jest-message-util: ^27.2.0 - jest-regex-util: ^27.0.6 - jest-resolve: ^27.2.0 - jest-resolve-dependencies: ^27.2.0 - jest-runner: ^27.2.0 - jest-runtime: ^27.2.0 - jest-snapshot: ^27.2.0 - jest-util: ^27.2.0 - jest-validate: ^27.2.0 - jest-watcher: ^27.2.0 + jest-changed-files: ^27.4.0 + jest-config: ^27.4.0 + jest-haste-map: ^27.4.0 + jest-message-util: ^27.4.0 + jest-regex-util: ^27.4.0 + jest-resolve: ^27.4.0 + jest-resolve-dependencies: ^27.4.0 + jest-runner: ^27.4.0 + jest-runtime: ^27.4.0 + jest-snapshot: ^27.4.0 + jest-util: ^27.4.0 + jest-validate: ^27.4.0 + jest-watcher: ^27.4.0 micromatch: ^4.0.4 - p-each-series: ^2.1.0 rimraf: ^3.0.0 slash: ^3.0.0 strip-ansi: ^6.0.0 @@ -3852,56 +3872,57 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 3f6622f6c9b01a270598ad5740d62e863a19cf7be2e491ccfcd70e757dab721105348e9e7cc09e2beaac13450fee6f0e226754ac682f33b30de0a6ac69d44d71 + checksum: ea070d969b684eb54d21991a71eb2ebaf9c7b58cd7a2abc2f82499e1d95079845d06798bdbe2af2fa87fe4f344ff47bcb22c0381920c901f68ddf8eabba00e04 languageName: node linkType: hard -"@jest/environment@npm:^27.2.0": - version: 27.2.0 - resolution: "@jest/environment@npm:27.2.0" +"@jest/environment@npm:^27.4.0": + version: 27.4.0 + resolution: "@jest/environment@npm:27.4.0" dependencies: - "@jest/fake-timers": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/fake-timers": ^27.4.0 + "@jest/types": ^27.4.0 "@types/node": "*" - jest-mock: ^27.1.1 - checksum: 9b07f8c06a9f884cb5514aa425e4b8fc04bc5f2dd9a3720b98bc858709397c42446ff15369cfab87142ca515d57f8e11958877ccd65dfa03662a3351d2f93979 + jest-mock: ^27.4.0 + checksum: 0dd8adcb3840e4b3097ae710213f1b439d7712d561667b4c8cd0ee788bf236ceabdf1a8e6810fd5ff23880b1042a9ab5a558b2e5555f2b16fd5398feb07d17da languageName: node linkType: hard -"@jest/fake-timers@npm:^27.2.0": - version: 27.2.0 - resolution: "@jest/fake-timers@npm:27.2.0" +"@jest/fake-timers@npm:^27.4.0": + version: 27.4.0 + resolution: "@jest/fake-timers@npm:27.4.0" dependencies: - "@jest/types": ^27.1.1 - "@sinonjs/fake-timers": ^7.0.2 + "@jest/types": ^27.4.0 + "@sinonjs/fake-timers": ^8.0.1 "@types/node": "*" - jest-message-util: ^27.2.0 - jest-mock: ^27.1.1 - jest-util: ^27.2.0 - checksum: c350fb972d72f8368ad5901965c86205d52cb11246c3044a90b8dc74589198ba6d9fa21d8598e38a16ce791a03b7470dc16999b5788fb9c3f4ade55d460ec697 + jest-message-util: ^27.4.0 + jest-mock: ^27.4.0 + jest-util: ^27.4.0 + checksum: 9a2e1207596a4cccf0f7688788da551190065610e1388c1b5210f1ae61765681692e61dd717b39e272f0163a8bef8f4abb82bea665bd2a1206fdbc7dcb407edd languageName: node linkType: hard -"@jest/globals@npm:^27.2.0": - version: 27.2.0 - resolution: "@jest/globals@npm:27.2.0" +"@jest/globals@npm:^27.4.0": + version: 27.4.0 + resolution: "@jest/globals@npm:27.4.0" dependencies: - "@jest/environment": ^27.2.0 - "@jest/types": ^27.1.1 - expect: ^27.2.0 - checksum: ec1f29fc25835b2347cbaad13145654fe25d34506af341175a06f3a4c16bb6c7d7a19ab8a4759e52f81562f939125469bacc7fce3f8658dd1e60a0e77bdaedfa + "@jest/environment": ^27.4.0 + "@jest/types": ^27.4.0 + expect: ^27.4.0 + checksum: 1bd0ff85447fe51b56252a3f5160a7d88877988dc10944c57a2ae5103db1cd6fe654146f71bcb03662767c014dac29ad07ffedf8763c7963bd632489a6fe027f languageName: node linkType: hard -"@jest/reporters@npm:^27.2.0": - version: 27.2.0 - resolution: "@jest/reporters@npm:27.2.0" +"@jest/reporters@npm:^27.4.0": + version: 27.4.0 + resolution: "@jest/reporters@npm:27.4.0" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^27.2.0 - "@jest/test-result": ^27.2.0 - "@jest/transform": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/console": ^27.4.0 + "@jest/test-result": ^27.4.0 + "@jest/transform": ^27.4.0 + "@jest/types": ^27.4.0 + "@types/node": "*" chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 exit: ^0.1.2 @@ -3912,79 +3933,79 @@ __metadata: istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.0.2 - jest-haste-map: ^27.2.0 - jest-resolve: ^27.2.0 - jest-util: ^27.2.0 - jest-worker: ^27.2.0 + jest-haste-map: ^27.4.0 + jest-resolve: ^27.4.0 + jest-util: ^27.4.0 + jest-worker: ^27.4.0 slash: ^3.0.0 source-map: ^0.6.0 string-length: ^4.0.1 terminal-link: ^2.0.0 - v8-to-istanbul: ^8.0.0 + v8-to-istanbul: ^8.1.0 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true - checksum: afb433b8f0afc038b3fb70bbb464926d80110e28d9a301c56a4d27fc46ccc7a0cf7369a4247b9e097c5eba396c69facb1c9f1c1870d40eb05cc970086423b85c + checksum: eba8f5a90e5ba83641de77c020c4ab1b4eae4d987e2ab0b175da9ff8ded74d0aa21daea2c4f7987cca86d3d6d6f569c6587f5412ad379b580396cf29c011b13e languageName: node linkType: hard -"@jest/source-map@npm:^27.0.6": - version: 27.0.6 - resolution: "@jest/source-map@npm:27.0.6" +"@jest/source-map@npm:^27.4.0": + version: 27.4.0 + resolution: "@jest/source-map@npm:27.4.0" dependencies: callsites: ^3.0.0 graceful-fs: ^4.2.4 source-map: ^0.6.0 - checksum: b4c09a0392e58a970b1bede96cd995279d95254efc997acff7fb44ad52fd4e4a372ce955c32777d1eac2006c3869b7d97227126d45a28612a40815823e3cbdb0 + checksum: cf87ac3dd1c2d210b0637060710d64417bcd88d670cbb26af7367ded99fd7d64d431c1718054351f0236c14659bc17a8deff6ee3d9f52902299911231bbaf0c8 languageName: node linkType: hard -"@jest/test-result@npm:^27.2.0": - version: 27.2.0 - resolution: "@jest/test-result@npm:27.2.0" +"@jest/test-result@npm:^27.4.0": + version: 27.4.0 + resolution: "@jest/test-result@npm:27.4.0" dependencies: - "@jest/console": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/console": ^27.4.0 + "@jest/types": ^27.4.0 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 9941bccc196ac926660ca462ce2946c68dc383de6c5ea060592fe1ab59b89607ab163a831c809d3d83b11ff5dc38f5dafb06b2f1a41e7a5c36e5607308b0af8a + checksum: 3de52ed3b97b8839a6574c2c36b4f948976d72041475bfe1281441432b7dcf2232e5b04d5304f3cac3559aa79188450f52144338cbec009b21f65e692b0088ef languageName: node linkType: hard -"@jest/test-sequencer@npm:^27.2.0": - version: 27.2.0 - resolution: "@jest/test-sequencer@npm:27.2.0" +"@jest/test-sequencer@npm:^27.4.0": + version: 27.4.0 + resolution: "@jest/test-sequencer@npm:27.4.0" dependencies: - "@jest/test-result": ^27.2.0 + "@jest/test-result": ^27.4.0 graceful-fs: ^4.2.4 - jest-haste-map: ^27.2.0 - jest-runtime: ^27.2.0 - checksum: 8df5166f44d512de5b09ba004d3cf3e1f0d8f631a64b304afdcf3441363656541d3f7663eea401e5247ec4e64dd92e7e96172c1455c6fceec4b7ed4bb4b4a333 + jest-haste-map: ^27.4.0 + jest-runtime: ^27.4.0 + checksum: 1ed769dc66ef6c441615cd9dcf17d234b511a2a24554a34caedde9c6790a4f4bb6eb87cecb4dc45c16912a5d619f4fc3c2ab87b9dce6ccc97e3e0d174ba8d8d5 languageName: node linkType: hard -"@jest/transform@npm:^27.2.0": - version: 27.2.0 - resolution: "@jest/transform@npm:27.2.0" +"@jest/transform@npm:^27.4.0": + version: 27.4.0 + resolution: "@jest/transform@npm:27.4.0" dependencies: "@babel/core": ^7.1.0 - "@jest/types": ^27.1.1 + "@jest/types": ^27.4.0 babel-plugin-istanbul: ^6.0.0 chalk: ^4.0.0 convert-source-map: ^1.4.0 fast-json-stable-stringify: ^2.0.0 graceful-fs: ^4.2.4 - jest-haste-map: ^27.2.0 - jest-regex-util: ^27.0.6 - jest-util: ^27.2.0 + jest-haste-map: ^27.4.0 + jest-regex-util: ^27.4.0 + jest-util: ^27.4.0 micromatch: ^4.0.4 pirates: ^4.0.1 slash: ^3.0.0 source-map: ^0.6.1 write-file-atomic: ^3.0.0 - checksum: 0bd4ad3ce2b12765d0c015001e2eb9b864ac20eda2805a4da4a3be5cf1dc3f6be51a018ce6d6c782d0afdd7708a63db16ff7b1294315eae8b716aea1188ea00c + checksum: 6187f30e6f05f4b6081ed3cb11d66d4f0015432a68306c7a3dad05c0ec1368b5bf75218a4b2d3367243f34b1c7329a6d2b2f725bf0df4517591078fac6fe9e26 languageName: node linkType: hard @@ -4000,16 +4021,16 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^27.1.1": - version: 27.1.1 - resolution: "@jest/types@npm:27.1.1" +"@jest/types@npm:^27.4.0": + version: 27.4.0 + resolution: "@jest/types@npm:27.4.0" 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 - checksum: 917acbf05d96415cae05067f1f0c79a58112b086baf941b92f4fc989d75f632cf7c2a87eb679254609c96d24ed7e442ea5b387312651996ed95310f7003a43e2 + checksum: 9fefb76764f8f6ca077cdb471d6e5e8de83ba6746f558a92847d59c09c09f2b1a7c2f02bf8ed2b2f7a8f346ddcd85e8647207479b326759d5b75871f4cf02bc2 languageName: node linkType: hard @@ -4184,12 +4205,12 @@ __metadata: languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^7.0.2": - version: 7.1.0 - resolution: "@sinonjs/fake-timers@npm:7.1.0" +"@sinonjs/fake-timers@npm:^8.0.1": + version: 8.1.0 + resolution: "@sinonjs/fake-timers@npm:8.1.0" dependencies: "@sinonjs/commons": ^1.7.0 - checksum: 8f3af2426eee1e0464b3a20c676ca195db794979af289f04b9091d7262646683a2f08f246616b45cc91aa6c3215e0dd4244ad06d78dee44a4c5ffc7a655e052e + checksum: 09b5a158ce013a6c37613258bad79ca4efeb99b1f59c41c73cca36cac00b258aefcf46eeea970fccf06b989414d86fe9f54c1102272c0c3bdd51a313cea80949 languageName: node linkType: hard @@ -4348,6 +4369,17 @@ __metadata: languageName: node linkType: hard +"@types/jsdom@npm:^16.2.4": + version: 16.2.13 + resolution: "@types/jsdom@npm:16.2.13" + dependencies: + "@types/node": "*" + "@types/parse5": "*" + "@types/tough-cookie": "*" + checksum: 2575d020e345f556a28208dad4d495e317e7364f1de222322c100841f49a815c73c0aa32d32d7a72a05fd7cd33551f4c0effc108fbaaf194ec42ed0f04d877b9 + languageName: node + linkType: hard + "@types/jsesc@npm:^2.5.0": version: 2.5.1 resolution: "@types/jsesc@npm:2.5.1" @@ -4383,6 +4415,13 @@ __metadata: languageName: node linkType: hard +"@types/parse5@npm:*": + version: 6.0.2 + resolution: "@types/parse5@npm:6.0.2" + checksum: ab21fa73091ca44fa5a3e3beb6549e07f6a8f08b65f12d10c9c1302927c67424e18e897d641fd59fc1f04d8c2c8382b4b3235e145e4d6958f559a7ef5956c323 + languageName: node + linkType: hard + "@types/prettier@npm:^2.1.5": version: 2.2.3 resolution: "@types/prettier@npm:2.2.3" @@ -4434,6 +4473,13 @@ __metadata: languageName: node linkType: hard +"@types/tough-cookie@npm:*": + version: 4.0.1 + resolution: "@types/tough-cookie@npm:4.0.1" + checksum: 7570c1c2d74201f4ead3512cf8e4c99e97d92ab8a02ae2fb987fd720ced0ca1a2baf250c98a861a170b86762606c9bf6d32207675f13dffc5ab75c08c96578d2 + languageName: node + linkType: hard + "@types/yargs-parser@npm:*": version: 15.0.0 resolution: "@types/yargs-parser@npm:15.0.0" @@ -5207,10 +5253,10 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^5.0.0": - version: 5.0.0 - resolution: "ansi-regex@npm:5.0.0" - checksum: b1bb4e992a5d96327bb4f72eaba9f8047f1d808d273ad19d399e266bfcc7fb19a4d1a127a32f7bc61fe46f1a94a4d04ec4c424e3fbe184929aa866323d8ed4ce +"ansi-regex@npm:^5.0.0, ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b languageName: node linkType: hard @@ -5614,21 +5660,21 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^27.2.0": - version: 27.2.0 - resolution: "babel-jest@npm:27.2.0" +"babel-jest@npm:^27.4.0": + version: 27.4.0 + resolution: "babel-jest@npm:27.4.0" dependencies: - "@jest/transform": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/transform": ^27.4.0 + "@jest/types": ^27.4.0 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.0.0 - babel-preset-jest: ^27.2.0 + babel-preset-jest: ^27.4.0 chalk: ^4.0.0 graceful-fs: ^4.2.4 slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 82de77285be55e25b7dc01af852ad11c6eb48588392d03448ab8533cd4edcb6972baf6f9ddfb56dbdbe8bc30494e51e994598de1be8954af9fb98f76c9b4ac88 + checksum: 64366ec9277a4feb5a84ecd373d46584d20a12f53ecb085b9976de1f9bff8d082d197fdd39b6176192ad04790a7780175ed068bf724cfbc35b2721a8552f04ae languageName: node linkType: hard @@ -5654,15 +5700,15 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^27.2.0": - version: 27.2.0 - resolution: "babel-plugin-jest-hoist@npm:27.2.0" +"babel-plugin-jest-hoist@npm:^27.4.0": + version: 27.4.0 + resolution: "babel-plugin-jest-hoist@npm:27.4.0" dependencies: "@babel/template": ^7.3.3 "@babel/types": ^7.3.3 "@types/babel__core": ^7.0.0 "@types/babel__traverse": ^7.0.6 - checksum: de6c19b5469310f14b4e1408032b9bbe86fc1f77e7b804c2b808d738045d3890cd7c55b36c4815b49f732843c472d7a5fe0b733cffd5e2284c11d8f1e2ff677e + checksum: 48f216f286f2fb3b1d571b4ba4ccffdb0c11a2fb1117e4c355b26c8cef09603abd96a5c1f8442866830a7da5accdd9ae4805f3e977b606a596b4a259f2ff5a67 languageName: node linkType: hard @@ -5747,15 +5793,15 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^27.2.0": - version: 27.2.0 - resolution: "babel-preset-jest@npm:27.2.0" +"babel-preset-jest@npm:^27.4.0": + version: 27.4.0 + resolution: "babel-preset-jest@npm:27.4.0" dependencies: - babel-plugin-jest-hoist: ^27.2.0 + babel-plugin-jest-hoist: ^27.4.0 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: c484e6e7c61616f4e2b2aeef54a2a48a1c64949cfb1c21884c7595d422997407049a3185f1536a419c344399df1e04f67d5e335f05c720c3b14859db079a674d + checksum: 744449cc63283116e8268c088a714d9c26d93af8d6051523b900517b665e0122239fc6a326de206657d423f4cccfaf2437ef099fcdfbfd91c4cdde6b1c55c11f languageName: node linkType: hard @@ -5797,6 +5843,7 @@ __metadata: eslint-plugin-flowtype: ^8.0.3 eslint-plugin-import: ^2.25.2 eslint-plugin-jest: ^25.2.2 + eslint-plugin-node: ^11.1.0 eslint-plugin-prettier: ^3.4.0 fancy-log: ^1.3.3 flow-bin: ^0.123.0 @@ -5805,8 +5852,8 @@ __metadata: gulp-filter: ^7.0.0 gulp-plumber: ^1.2.1 husky: ^7.0.4 - jest: ^27.2.0 - jest-worker: ^27.2.0 + jest: ^27.4.0 + jest-worker: ^27.4.0 lint-staged: ^9.2.0 lodash: ^4.17.21 mergeiterator: ^1.2.5 @@ -5850,10 +5897,10 @@ __metadata: languageName: node linkType: hard -"base64-js@npm:^1.0.2": - version: 1.3.1 - resolution: "base64-js@npm:1.3.1" - checksum: 957b9ced0ea1b39588a117193f801b045a5fb2d6f1b9943dd304bcad46e5681bf837fe092105692b11653658e8443764139d6b11d3c4037093b96e8db4e1dbb2 +"base64-js@npm:^1.0.2, base64-js@npm:^1.2.0": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 languageName: node linkType: hard @@ -6491,10 +6538,10 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.1.1": - version: 3.1.1 - resolution: "ci-info@npm:3.1.1" - checksum: 638bc0d84ce5567ce048d77cefb5d606e36b4929cc72c32f2102e24b0ac4fb3e378fee1821d71246f6a2f029c96b3c6c1c183348f894133f788f33cbe82258fa +"ci-info@npm:^3.2.0": + version: 3.2.0 + resolution: "ci-info@npm:3.2.0" + checksum: c68995a94e95ce3f233ff845e62dfc56f2e8ff1e3f5c1361bcdd520cbbc9726d8a54cbc1a685cb9ee19c3c5e71a1dade6dda23eb364b59b8e6c32508a9b761bc languageName: node linkType: hard @@ -7284,10 +7331,10 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^27.0.6": - version: 27.0.6 - resolution: "diff-sequences@npm:27.0.6" - checksum: f35ad024d426cd1026d6c98a1f604c41966a0e89712b05a38812fc11e645ff0e915ec17bc8f4b6910fed6df0b309b255aa6c7c77728be452c6dbbfa30aa2067b +"diff-sequences@npm:^27.4.0": + version: 27.4.0 + resolution: "diff-sequences@npm:27.4.0" + checksum: 66d04033e8632eeacdd029b4ecaf87d233d475e4b0cd1cee035eda99e70e1a7f803507d72f2677990ef526f28a2f6e5709af8d94dcdc0682b8884a3a646190a1 languageName: node linkType: hard @@ -7788,6 +7835,18 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-es@npm:^3.0.0": + version: 3.0.1 + resolution: "eslint-plugin-es@npm:3.0.1" + dependencies: + eslint-utils: ^2.0.0 + regexpp: ^3.0.0 + peerDependencies: + eslint: ">=4.19.1" + checksum: e57592c52301ee8ddc296ae44216df007f3a870bcb3be8d1fbdb909a1d3a3efe3fa3785de02066f9eba1d6466b722d3eb3cc3f8b75b3cf6a1cbded31ac6298e4 + languageName: node + linkType: hard + "eslint-plugin-flowtype@npm:^8.0.3": version: 8.0.3 resolution: "eslint-plugin-flowtype@npm:8.0.3" @@ -7840,6 +7899,22 @@ __metadata: languageName: node linkType: hard +"eslint-plugin-node@npm:^11.1.0": + version: 11.1.0 + resolution: "eslint-plugin-node@npm:11.1.0" + dependencies: + eslint-plugin-es: ^3.0.0 + eslint-utils: ^2.0.0 + ignore: ^5.1.1 + minimatch: ^3.0.4 + resolve: ^1.10.1 + semver: ^6.1.0 + peerDependencies: + eslint: ">=5.16.0" + checksum: 5804c4f8a6e721f183ef31d46fbe3b4e1265832f352810060e0502aeac7de034df83352fc88643b19641bb2163f2587f1bd4119aff0fd21e8d98c57c450e013b + languageName: node + linkType: hard + "eslint-plugin-prettier@npm:^3.4.0": version: 3.4.0 resolution: "eslint-plugin-prettier@npm:3.4.0" @@ -7892,7 +7967,7 @@ __metadata: languageName: node linkType: hard -"eslint-utils@npm:^2.1.0": +"eslint-utils@npm:^2.0.0, eslint-utils@npm:^2.1.0": version: 2.1.0 resolution: "eslint-utils@npm:2.1.0" dependencies: @@ -8132,6 +8207,13 @@ __metadata: languageName: node linkType: hard +"eventemitter-asyncresource@npm:^1.0.0": + version: 1.0.0 + resolution: "eventemitter-asyncresource@npm:1.0.0" + checksum: 3cfbbc3490bd429a165bff6336289ff810f7df214796f25000d2097a5a0883eae51542a78674916ff99bbd4c66811911b310df1cb4fc96dfc9546ba9dfc89f8f + languageName: node + linkType: hard + "events@npm:^2.0.0": version: 2.1.0 resolution: "events@npm:2.1.0" @@ -8237,17 +8319,17 @@ __metadata: languageName: node linkType: hard -"expect@npm:^27.2.0": - version: 27.2.0 - resolution: "expect@npm:27.2.0" +"expect@npm:^27.4.0": + version: 27.4.0 + resolution: "expect@npm:27.4.0" dependencies: - "@jest/types": ^27.1.1 + "@jest/types": ^27.4.0 ansi-styles: ^5.0.0 - jest-get-type: ^27.0.6 - jest-matcher-utils: ^27.2.0 - jest-message-util: ^27.2.0 - jest-regex-util: ^27.0.6 - checksum: 623b69e8e97bb55ecd0a27378431f42bb14f4f08a14b7497af870da38b86985ebde9d2fab026a9cb4983465a0bae5bb7d8a0c0df0384c745e9b12d5c239de2ca + jest-get-type: ^27.4.0 + jest-matcher-utils: ^27.4.0 + jest-message-util: ^27.4.0 + jest-regex-util: ^27.4.0 + checksum: bf52f4862f05c412faa244a49d04462a23960fe176032a6450c124740feb3ba1dcc6a892d66192c730c8235a61a6e5b8a008fdcbac47af8ebee3311877d00544 languageName: node linkType: hard @@ -8352,16 +8434,15 @@ __metadata: linkType: hard "fast-glob@npm:^3.0.3, fast-glob@npm:^3.1.1": - version: 3.2.4 - resolution: "fast-glob@npm:3.2.4" + version: 3.2.7 + resolution: "fast-glob@npm:3.2.7" dependencies: "@nodelib/fs.stat": ^2.0.2 "@nodelib/fs.walk": ^1.2.3 - glob-parent: ^5.1.0 + glob-parent: ^5.1.2 merge2: ^1.3.0 - micromatch: ^4.0.2 - picomatch: ^2.2.1 - checksum: a70ce897b23e85521688b03897115315e8c781f2e5ee5f3b83e8c10df6a464e8be415c800f55c9c40278b41aeccc60883f018f76dde8250b8cf28e7566c13f75 + micromatch: ^4.0.4 + checksum: 2f4708ff112d2b451888129fdd9a0938db88b105b0ddfd043c064e3c4d3e20eed8d7c7615f7565fee660db34ddcf08a2db1bf0ab3c00b87608e4719694642d78 languageName: node linkType: hard @@ -8922,7 +9003,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"glob-parent@npm:^5.0.0, glob-parent@npm:^5.1.0, glob-parent@npm:~5.1.0": +"glob-parent@npm:^5.0.0, glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.0": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -9242,6 +9323,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"has-flag@npm:^5.0.0": + version: 5.0.1 + resolution: "has-flag@npm:5.0.1" + checksum: e0a151db8e43b528258c4269c23224c691b42c1f5168f6d88b61c3f9398ef16d44226a78a0596642da55851cf306a8afe57d6936d4d69a24b66fd10de1373da8 + languageName: node + linkType: hard + "has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2": version: 1.0.2 resolution: "has-symbols@npm:1.0.2" @@ -9333,6 +9421,24 @@ fsevents@^1.2.7: languageName: node linkType: hard +"hdr-histogram-js@npm:^2.0.1": + version: 2.0.1 + resolution: "hdr-histogram-js@npm:2.0.1" + dependencies: + "@assemblyscript/loader": ^0.10.1 + base64-js: ^1.2.0 + pako: ^1.0.3 + checksum: 28006929257b804b4ebd13d5490416c04bd69149f93c445d167f486a2b0c511b663a06c2187ae5b722ce10f4167cd15d7756fa66baddf7dcfd99bdacf5da5feb + languageName: node + linkType: hard + +"hdr-histogram-percentiles-obj@npm:^3.0.0": + version: 3.0.0 + resolution: "hdr-histogram-percentiles-obj@npm:3.0.0" + checksum: ab238edcb38d9b60d23ca53da0ecd9a6b1c8ee9a49e30a6146bd3f8f70f26244652f28b79974157c00504e7ddf3129e0ddb217baf71d32330e3fae0105bf30ed + languageName: node + linkType: hard + "hmac-drbg@npm:^1.0.0": version: 1.0.1 resolution: "hmac-drbg@npm:1.0.1" @@ -9717,17 +9823,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"is-ci@npm:^3.0.0": - version: 3.0.0 - resolution: "is-ci@npm:3.0.0" - dependencies: - ci-info: ^3.1.1 - bin: - is-ci: bin.js - checksum: 4b45aef32dd42dcb1f6fb3cd4b3a7ee7e18ea47516d2129005f46c3f36983506bb471382bac890973cf48a2f60d926a24461674ca2d9dc10744d82d4a876c26b - languageName: node - linkType: hard - "is-core-module@npm:^2.2.0, is-core-module@npm:^2.7.0": version: 2.8.0 resolution: "is-core-module@npm:2.8.0" @@ -10181,60 +10276,60 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-changed-files@npm:^27.1.1": - version: 27.1.1 - resolution: "jest-changed-files@npm:27.1.1" +"jest-changed-files@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-changed-files@npm:27.4.0" dependencies: - "@jest/types": ^27.1.1 + "@jest/types": ^27.4.0 execa: ^5.0.0 throat: ^6.0.1 - checksum: 82dd381fba04267182a60117bd66b9694ff296c7d10e847d4db85a88bf02a1cafd8951323e132a68538885fc534f6930ab49113ee269effce83120e436f8524b + checksum: 3b591d07da0ff8425c18a37c83c776d78d75b53ec53be009825f41e1bd229f898d941679bb64acb731647c64f3fccbec611c39d5ebdb04a5c90574775ec11834 languageName: node linkType: hard -"jest-circus@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-circus@npm:27.2.0" +"jest-circus@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-circus@npm:27.4.0" dependencies: - "@jest/environment": ^27.2.0 - "@jest/test-result": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/environment": ^27.4.0 + "@jest/test-result": ^27.4.0 + "@jest/types": ^27.4.0 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 dedent: ^0.7.0 - expect: ^27.2.0 + expect: ^27.4.0 is-generator-fn: ^2.0.0 - jest-each: ^27.2.0 - jest-matcher-utils: ^27.2.0 - jest-message-util: ^27.2.0 - jest-runtime: ^27.2.0 - jest-snapshot: ^27.2.0 - jest-util: ^27.2.0 - pretty-format: ^27.2.0 + jest-each: ^27.4.0 + jest-matcher-utils: ^27.4.0 + jest-message-util: ^27.4.0 + jest-runtime: ^27.4.0 + jest-snapshot: ^27.4.0 + jest-util: ^27.4.0 + pretty-format: ^27.4.0 slash: ^3.0.0 stack-utils: ^2.0.3 throat: ^6.0.1 - checksum: c0db6ce3706e326e6b5df0aec8f4f27e4dc2e18de178b4cc2b740e3228df893f2754cdaf9b4a19bc29a06c7f408ad7d73b8c82e24baafb7e865209a2c9561faf + checksum: cbc2438e8da12b3b07d10462e54a60202e0b936f03124540f8d771420ab94ec8a60b11e74aff9dc830d2e973a017ba788ece7020e6aa462db54951dd642f9b75 languageName: node linkType: hard -"jest-cli@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-cli@npm:27.2.0" +"jest-cli@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-cli@npm:27.4.0" dependencies: - "@jest/core": ^27.2.0 - "@jest/test-result": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/core": ^27.4.0 + "@jest/test-result": ^27.4.0 + "@jest/types": ^27.4.0 chalk: ^4.0.0 exit: ^0.1.2 graceful-fs: ^4.2.4 import-local: ^3.0.2 - jest-config: ^27.2.0 - jest-util: ^27.2.0 - jest-validate: ^27.2.0 + jest-config: ^27.4.0 + jest-util: ^27.4.0 + jest-validate: ^27.4.0 prompts: ^2.0.1 - yargs: ^16.0.3 + yargs: ^16.2.0 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -10242,41 +10337,42 @@ fsevents@^1.2.7: optional: true bin: jest: bin/jest.js - checksum: fa96bc41010591fa7b3fb78eab7fea1ce2231149e50c1685f5d4c840c255e5ede7389f7fefaf2a501f4ac64c924521b0e454b359db552a5fce0c0129f846728e + checksum: 849cdb9fda2300bc2e160c636caeab72cc8044cd23f77bc099db473a8d8d1cdea489c40e06926523accf0ba68037df0c036ed2cc4b08f02b127e336edaae2060 languageName: node linkType: hard -"jest-config@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-config@npm:27.2.0" +"jest-config@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-config@npm:27.4.0" dependencies: "@babel/core": ^7.1.0 - "@jest/test-sequencer": ^27.2.0 - "@jest/types": ^27.1.1 - babel-jest: ^27.2.0 + "@jest/test-sequencer": ^27.4.0 + "@jest/types": ^27.4.0 + babel-jest: ^27.4.0 chalk: ^4.0.0 + ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.1 graceful-fs: ^4.2.4 - is-ci: ^3.0.0 - jest-circus: ^27.2.0 - jest-environment-jsdom: ^27.2.0 - jest-environment-node: ^27.2.0 - jest-get-type: ^27.0.6 - jest-jasmine2: ^27.2.0 - jest-regex-util: ^27.0.6 - jest-resolve: ^27.2.0 - jest-runner: ^27.2.0 - jest-util: ^27.2.0 - jest-validate: ^27.2.0 + jest-circus: ^27.4.0 + jest-environment-jsdom: ^27.4.0 + jest-environment-node: ^27.4.0 + jest-get-type: ^27.4.0 + jest-jasmine2: ^27.4.0 + jest-regex-util: ^27.4.0 + jest-resolve: ^27.4.0 + jest-runner: ^27.4.0 + jest-util: ^27.4.0 + jest-validate: ^27.4.0 micromatch: ^4.0.4 - pretty-format: ^27.2.0 + pretty-format: ^27.4.0 + slash: ^3.0.0 peerDependencies: ts-node: ">=9.0.0" peerDependenciesMeta: ts-node: optional: true - checksum: 3396de6d808fea4261e13e0320c081cfe78ad542809f94481b3262940e2ea6a05fede0b5e7bf28025d77e09326226eeb8ed9547362df4fb6d8bf81db7df413f5 + checksum: 3cc6c6c37d55c5b83ac78d6bf1186c4e59e5c6d9a438510824bbcf72e7fa8b20492a37c316ffa0b6c4aab539a055412625e7de40476c0d647f3f4e6431fa7148 languageName: node linkType: hard @@ -10292,66 +10388,67 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-diff@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-diff@npm:27.2.0" +"jest-diff@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-diff@npm:27.4.0" dependencies: chalk: ^4.0.0 - diff-sequences: ^27.0.6 - jest-get-type: ^27.0.6 - pretty-format: ^27.2.0 - checksum: 881b930374b1074825c141fae823186b0d206074843a59bc9bdbec89271e7f08ff890b827f7cba3de4ffd057a14fbad29980a7f7a90a9e04e72f208dbfda431e + diff-sequences: ^27.4.0 + jest-get-type: ^27.4.0 + pretty-format: ^27.4.0 + checksum: ec87592f0f8cea3ab23485a18cb41ef7b32c716bd639f07514ad19fe383004c3d52a1d31f1f7e23096da4750650afd2421525f5cde374e6afecba26d9d3e4959 languageName: node linkType: hard -"jest-docblock@npm:^27.0.6": - version: 27.0.6 - resolution: "jest-docblock@npm:27.0.6" +"jest-docblock@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-docblock@npm:27.4.0" dependencies: detect-newline: ^3.0.0 - checksum: 6d68b9f2bef76e0bde06a8e6d13a7e1d2fc67f61a8fa8a089727198e565510aef852a0a089c3c4157b00a82597f792fa83c8480499203978ef38d8cd6578bea0 + checksum: 4b7639ceb7808280562166c87c49746d9e9cc13f8315ea05a0a400d2f7b11f4491b4ad50935e5976db6509f26004fa2b187dc19eea5e09c445eed2648eb1e927 languageName: node linkType: hard -"jest-each@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-each@npm:27.2.0" +"jest-each@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-each@npm:27.4.0" dependencies: - "@jest/types": ^27.1.1 + "@jest/types": ^27.4.0 chalk: ^4.0.0 - jest-get-type: ^27.0.6 - jest-util: ^27.2.0 - pretty-format: ^27.2.0 - checksum: 26b745ddaf296ccac7561fa7f9e990350b57f9afbb0e1d908b000230a709b81e316a444c90d3caca24e32c3b0e10ce08d9202c1e8ebc3774c6a0c69c5a116058 + jest-get-type: ^27.4.0 + jest-util: ^27.4.0 + pretty-format: ^27.4.0 + checksum: 9bb947e08e4695801594494c43341c43691097ef0d8550bd1d2a0af4a7c8b1d1d3222abfa7dbcdc48cd6d5e7c568bcd5145b4d3dc1ca770c0d06ba8938aab940 languageName: node linkType: hard -"jest-environment-jsdom@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-environment-jsdom@npm:27.2.0" +"jest-environment-jsdom@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-environment-jsdom@npm:27.4.0" dependencies: - "@jest/environment": ^27.2.0 - "@jest/fake-timers": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/environment": ^27.4.0 + "@jest/fake-timers": ^27.4.0 + "@jest/types": ^27.4.0 + "@types/jsdom": ^16.2.4 "@types/node": "*" - jest-mock: ^27.1.1 - jest-util: ^27.2.0 + jest-mock: ^27.4.0 + jest-util: ^27.4.0 jsdom: ^16.6.0 - checksum: 9ec3bfe05302c2b6d24739405e588b0de7f52fce7c4dac0abf6e27a1ce616337087f5b3dc9f828271f6acae8ec9468da10178914d9c491f0a1d3356eb8700c99 + checksum: 2bcf6f3e8451ccb1a82b34e5ee62326266b2d4bcd0bb32783b3ff194e2c0a672890916321b69370aef7d7172d8ec250ab779ae2c4f515bc450b50bfad3b1a13d languageName: node linkType: hard -"jest-environment-node@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-environment-node@npm:27.2.0" +"jest-environment-node@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-environment-node@npm:27.4.0" dependencies: - "@jest/environment": ^27.2.0 - "@jest/fake-timers": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/environment": ^27.4.0 + "@jest/fake-timers": ^27.4.0 + "@jest/types": ^27.4.0 "@types/node": "*" - jest-mock: ^27.1.1 - jest-util: ^27.2.0 - checksum: 6c2f105d4d68404af9475abaafc70fd2b6962a41416a7a1269e1195df94866e4b07ceac6a4beda11d9d73174e5f2a052a97598a3bef74a15701ad128c963a87d + jest-mock: ^27.4.0 + jest-util: ^27.4.0 + checksum: 76822c6883ea03fdc2565e2866197604dafcfb8faaa07563fe2f3faa7486a3687b5276d5db4be357be976e06f598e512348f6f13f70e49eb0e7f3c9e800b6a2a languageName: node linkType: hard @@ -10362,109 +10459,109 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-get-type@npm:^27.0.6": - version: 27.0.6 - resolution: "jest-get-type@npm:27.0.6" - checksum: 2d4c1381bb5ddb212d80ad00497c7cbb3312358e10b62ac19f1fe5a28ae4af709202bfc235b77ec508970b83fd89945937652d636bcaf88614fa00028a6f3138 +"jest-get-type@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-get-type@npm:27.4.0" + checksum: bb9b70e420009fdaed3026d5bccd01569f92c7500f9f544d862796d4f4efa93ced5484864b2f272c7748bfb5bfd3268d48868b169c51ab45fe5b45b9519b6e46 languageName: node linkType: hard -"jest-haste-map@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-haste-map@npm:27.2.0" +"jest-haste-map@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-haste-map@npm:27.4.0" dependencies: - "@jest/types": ^27.1.1 + "@jest/types": ^27.4.0 "@types/graceful-fs": ^4.1.2 "@types/node": "*" anymatch: ^3.0.3 fb-watchman: ^2.0.0 fsevents: ^2.3.2 graceful-fs: ^4.2.4 - jest-regex-util: ^27.0.6 - jest-serializer: ^27.0.6 - jest-util: ^27.2.0 - jest-worker: ^27.2.0 + jest-regex-util: ^27.4.0 + jest-serializer: ^27.4.0 + jest-util: ^27.4.0 + jest-worker: ^27.4.0 micromatch: ^4.0.4 walker: ^1.0.7 dependenciesMeta: fsevents: optional: true - checksum: 3b659e007f31eb2d1df596c628fa8d9870bdcef4ff3e2a4170e5b24669254f6e1e26762b95272540bcf8cde9c5d409513c4e4d6a615153a62d860aa6cd3765b2 + checksum: e93a1f687a203bdeb0ac8158815cdbfcb52d889af69da26aed8c51abf01e9ec79123ef964238986336cbd45d38498fce9d22e358ff2d4b11812841eae0b7daed languageName: node linkType: hard -"jest-jasmine2@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-jasmine2@npm:27.2.0" +"jest-jasmine2@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-jasmine2@npm:27.4.0" dependencies: "@babel/traverse": ^7.1.0 - "@jest/environment": ^27.2.0 - "@jest/source-map": ^27.0.6 - "@jest/test-result": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/environment": ^27.4.0 + "@jest/source-map": ^27.4.0 + "@jest/test-result": ^27.4.0 + "@jest/types": ^27.4.0 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - expect: ^27.2.0 + expect: ^27.4.0 is-generator-fn: ^2.0.0 - jest-each: ^27.2.0 - jest-matcher-utils: ^27.2.0 - jest-message-util: ^27.2.0 - jest-runtime: ^27.2.0 - jest-snapshot: ^27.2.0 - jest-util: ^27.2.0 - pretty-format: ^27.2.0 + jest-each: ^27.4.0 + jest-matcher-utils: ^27.4.0 + jest-message-util: ^27.4.0 + jest-runtime: ^27.4.0 + jest-snapshot: ^27.4.0 + jest-util: ^27.4.0 + pretty-format: ^27.4.0 throat: ^6.0.1 - checksum: cfb7bb8f438f87f167b35eb0bd01a56c1bc4f82be99ceeb90808498bb274f9c89df4945248bd6fcaaf96639862fcb1e3168112d0595e4abd682efe35bc2137e0 + checksum: 950cd076715e3a499c214ca286e55ec0a1142e44294480e0c2a880bd183869415e63671617530df8f538f96451505d8dc957cfe66555ef08933b6da0e504861b languageName: node linkType: hard -"jest-leak-detector@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-leak-detector@npm:27.2.0" +"jest-leak-detector@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-leak-detector@npm:27.4.0" dependencies: - jest-get-type: ^27.0.6 - pretty-format: ^27.2.0 - checksum: 52c411486c9028e88665fb665c678e4af6c4d3d09a91b29876edb1ffab2ed9bf882b09f86d2c9716e47266751adcc5525c52232bd8907d2a36c1a48020c1defb + jest-get-type: ^27.4.0 + pretty-format: ^27.4.0 + checksum: ffe5aea9079ecce27bae872e7b83bcdd7383b0fcce3b8ab5bca073a0908a243a1f8e1c16dfb2ef9f17a356b197d6514addf7c5afa70bd1d677a19e0ce2608d7e languageName: node linkType: hard -"jest-matcher-utils@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-matcher-utils@npm:27.2.0" +"jest-matcher-utils@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-matcher-utils@npm:27.4.0" dependencies: chalk: ^4.0.0 - jest-diff: ^27.2.0 - jest-get-type: ^27.0.6 - pretty-format: ^27.2.0 - checksum: ddc38773667204cf57e2b7d81fb5993ad52f3135ae75e0fcc1e9b70476106033f88dd6049216a6852704a776553c04c664a08befbe75b6ceb01b134a0a86ba4f + jest-diff: ^27.4.0 + jest-get-type: ^27.4.0 + pretty-format: ^27.4.0 + checksum: c9599774393762a060998ef031d4ce4dce47281167886ad627f6b089293d51e7866808fb7d6e0235a24e324ade399ee861c7a35ef2047eccbe737bb630b45ee7 languageName: node linkType: hard -"jest-message-util@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-message-util@npm:27.2.0" +"jest-message-util@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-message-util@npm:27.4.0" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^27.1.1 + "@jest/types": ^27.4.0 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.4 micromatch: ^4.0.4 - pretty-format: ^27.2.0 + pretty-format: ^27.4.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: b6298e8ed0928db360ad099b3609db06401a5aa7400ad41a2afb8e5da7bab35ec894fb5e0beabbc9c68552ba50989e88c331bcd7f40b508260d0b18731024e5e + checksum: dfb5a51fb82d96b29145b1dd9929f3cb56ac1ca0ca865fbc12d39ed0b7ba72d2ef5ae71cef207607a3a55becfc86296df53c3a19275ad71f8899355a5593a45b languageName: node linkType: hard -"jest-mock@npm:^27.1.1": - version: 27.1.1 - resolution: "jest-mock@npm:27.1.1" +"jest-mock@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-mock@npm:27.4.0" dependencies: - "@jest/types": ^27.1.1 + "@jest/types": ^27.4.0 "@types/node": "*" - checksum: 7414b4eb6bacfd19fa9d9f6babb46b2ede9e49c0feecfa7b5531efadcb0fbbd6f46e95d6fb75de904b3c866824e39d163fe469195a8ce14b59b9ef9ac6df70d1 + checksum: 18c1b5eef5cd356ad99a16b54e8341f3299705dbf86ce00c9226762e363bda0e329701f96097f1a34cc6d4a50fae39d71921082766fb2c89f41eed7523752581 languageName: node linkType: hard @@ -10480,84 +10577,83 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-regex-util@npm:^27.0.6": - version: 27.0.6 - resolution: "jest-regex-util@npm:27.0.6" - checksum: 4d613b00f2076560e9d5e5674ec63a4130d7b1584dbbf25d84d3a455b0ff7a12d8f94eaa00facd7934d285330d370c270ca093667d537a5842e95457e8e1ecf4 +"jest-regex-util@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-regex-util@npm:27.4.0" + checksum: 222e4aacec601fd2cfdfee74adb8d324fef672f77577a7c2220893ec1a62031a2640388fce8d0bd8be2e4537da1ab40aa74dba60ac531a23b2643b15c65014ac languageName: node linkType: hard -"jest-resolve-dependencies@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-resolve-dependencies@npm:27.2.0" +"jest-resolve-dependencies@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-resolve-dependencies@npm:27.4.0" dependencies: - "@jest/types": ^27.1.1 - jest-regex-util: ^27.0.6 - jest-snapshot: ^27.2.0 - checksum: 164cc41b4ce23e2e7e549b79a5acce0549b5a31b1aeffab5cd4790e7171608874453f8d845a513dc97465d9bb553beb8706de23e33c960d7868e88b747a8d3bf + "@jest/types": ^27.4.0 + jest-regex-util: ^27.4.0 + jest-snapshot: ^27.4.0 + checksum: acdb43025bbc9f0e7e809cb5ba91bafe52c05db3143ca41064fb31249b26837d5de96721fc4f4ab95d43e78b0c31a0b168019ffc35c7e6cd2f655e553b5a59b6 languageName: node linkType: hard -"jest-resolve@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-resolve@npm:27.2.0" +"jest-resolve@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-resolve@npm:27.4.0" dependencies: - "@jest/types": ^27.1.1 + "@jest/types": ^27.4.0 chalk: ^4.0.0 - escalade: ^3.1.1 graceful-fs: ^4.2.4 - jest-haste-map: ^27.2.0 + jest-haste-map: ^27.4.0 jest-pnp-resolver: ^1.2.2 - jest-util: ^27.2.0 - jest-validate: ^27.2.0 + jest-util: ^27.4.0 + jest-validate: ^27.4.0 resolve: ^1.20.0 + resolve.exports: ^1.1.0 slash: ^3.0.0 - checksum: 382a063d795c2f38fe79a69a5ff9c9154bcb927079fa96de52d1e52f61f6817bfdb21194551cb424eb85ee96903681dd783d738912bc9a4c64f792b60b6f72e1 + checksum: 44159762857c4323e49e3762cfb624b7418dff0567f5e294e5c329fd5b8b91a9fcfaf90d92564c58f62ba272b349c0a62aa84268b77481fc224a371a6d7f341d languageName: node linkType: hard -"jest-runner@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-runner@npm:27.2.0" +"jest-runner@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-runner@npm:27.4.0" dependencies: - "@jest/console": ^27.2.0 - "@jest/environment": ^27.2.0 - "@jest/test-result": ^27.2.0 - "@jest/transform": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/console": ^27.4.0 + "@jest/environment": ^27.4.0 + "@jest/test-result": ^27.4.0 + "@jest/transform": ^27.4.0 + "@jest/types": ^27.4.0 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.8.1 exit: ^0.1.2 graceful-fs: ^4.2.4 - jest-docblock: ^27.0.6 - jest-environment-jsdom: ^27.2.0 - jest-environment-node: ^27.2.0 - jest-haste-map: ^27.2.0 - jest-leak-detector: ^27.2.0 - jest-message-util: ^27.2.0 - jest-resolve: ^27.2.0 - jest-runtime: ^27.2.0 - jest-util: ^27.2.0 - jest-worker: ^27.2.0 + jest-docblock: ^27.4.0 + jest-environment-jsdom: ^27.4.0 + jest-environment-node: ^27.4.0 + jest-haste-map: ^27.4.0 + jest-leak-detector: ^27.4.0 + jest-message-util: ^27.4.0 + jest-resolve: ^27.4.0 + jest-runtime: ^27.4.0 + jest-util: ^27.4.0 + jest-worker: ^27.4.0 source-map-support: ^0.5.6 throat: ^6.0.1 - checksum: d82f0b8f3d2eeeb1a951133e7f5823704725c1d09bfb61d42727039852f9aa70ecc1c215ee42bcbc6e0548f7c35a4ed57bebcbba9f8ec0665af45f7970f667e4 + checksum: 721aef4d2953f01176b62e4f2d84148914c68a899e83cbb6ccc43b8ce6898718acb27ffdb693e9fddf7e27927ae5d298886a97da3b84dd0f05a998943b48f664 languageName: node linkType: hard -"jest-runtime@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-runtime@npm:27.2.0" +"jest-runtime@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-runtime@npm:27.4.0" dependencies: - "@jest/console": ^27.2.0 - "@jest/environment": ^27.2.0 - "@jest/fake-timers": ^27.2.0 - "@jest/globals": ^27.2.0 - "@jest/source-map": ^27.0.6 - "@jest/test-result": ^27.2.0 - "@jest/transform": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/console": ^27.4.0 + "@jest/environment": ^27.4.0 + "@jest/globals": ^27.4.0 + "@jest/source-map": ^27.4.0 + "@jest/test-result": ^27.4.0 + "@jest/transform": ^27.4.0 + "@jest/types": ^27.4.0 "@types/yargs": ^16.0.0 chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 @@ -10566,34 +10662,34 @@ fsevents@^1.2.7: exit: ^0.1.2 glob: ^7.1.3 graceful-fs: ^4.2.4 - jest-haste-map: ^27.2.0 - jest-message-util: ^27.2.0 - jest-mock: ^27.1.1 - jest-regex-util: ^27.0.6 - jest-resolve: ^27.2.0 - jest-snapshot: ^27.2.0 - jest-util: ^27.2.0 - jest-validate: ^27.2.0 + jest-haste-map: ^27.4.0 + jest-message-util: ^27.4.0 + jest-mock: ^27.4.0 + jest-regex-util: ^27.4.0 + jest-resolve: ^27.4.0 + jest-snapshot: ^27.4.0 + jest-util: ^27.4.0 + jest-validate: ^27.4.0 slash: ^3.0.0 strip-bom: ^4.0.0 - yargs: ^16.0.3 - checksum: 0095eda680085c523f96362f7b28a3e60e328ef7100b8a03b598f142e06afa553ad987d96507c30b1984542dafffaa15ba29e5853a45eb83582e5b50d207907a + yargs: ^16.2.0 + checksum: 97b05314fa74cc750a9108eb328b693348d6b8ce3a96e308db500ebc5dd6b15a446888b04effe4347fb063fd6dedeb35358ee320db675a645780d3484ae134c9 languageName: node linkType: hard -"jest-serializer@npm:^27.0.6": - version: 27.0.6 - resolution: "jest-serializer@npm:27.0.6" +"jest-serializer@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-serializer@npm:27.4.0" dependencies: "@types/node": "*" graceful-fs: ^4.2.4 - checksum: b0b8d97cb17ad4d1414769e4c81441c608cdfb7e3519afdcddc0f660dae4950cb30aad75a414dde97499c4830d961e8dff09d8683911295e299f0d86a104abdc + checksum: 1ed5f38e88010f258bd9557d7842a89741ff15bfc578328e8ae1985933406350b817cf5e3127773e3dbc755dbe2522195378f8b98284bcc32111a723294ebbea languageName: node linkType: hard -"jest-snapshot@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-snapshot@npm:27.2.0" +"jest-snapshot@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-snapshot@npm:27.4.0" dependencies: "@babel/core": ^7.7.2 "@babel/generator": ^7.7.2 @@ -10601,68 +10697,68 @@ fsevents@^1.2.7: "@babel/plugin-syntax-typescript": ^7.7.2 "@babel/traverse": ^7.7.2 "@babel/types": ^7.0.0 - "@jest/transform": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/transform": ^27.4.0 + "@jest/types": ^27.4.0 "@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.2.0 + expect: ^27.4.0 graceful-fs: ^4.2.4 - jest-diff: ^27.2.0 - jest-get-type: ^27.0.6 - jest-haste-map: ^27.2.0 - jest-matcher-utils: ^27.2.0 - jest-message-util: ^27.2.0 - jest-resolve: ^27.2.0 - jest-util: ^27.2.0 + jest-diff: ^27.4.0 + jest-get-type: ^27.4.0 + jest-haste-map: ^27.4.0 + jest-matcher-utils: ^27.4.0 + jest-message-util: ^27.4.0 + jest-resolve: ^27.4.0 + jest-util: ^27.4.0 natural-compare: ^1.4.0 - pretty-format: ^27.2.0 + pretty-format: ^27.4.0 semver: ^7.3.2 - checksum: 5a46ef7e8300e672cd2e9b271a3bf34cc8be8266fd244bbcf314826c007fb684fad1864f37835d8f42c7b449353112738583a4495a7a0c049ca90c56b0326f23 + checksum: b3125ed9e36e3460e436d09c5a2c325814b8b131e86c5a52f66a0891c006898edbe80ec3a588f5476202c097dd7ed37c3428bb494c368a0dfbf0e0df95f6e016 languageName: node linkType: hard -"jest-util@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-util@npm:27.2.0" +"jest-util@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-util@npm:27.4.0" dependencies: - "@jest/types": ^27.1.1 + "@jest/types": ^27.4.0 "@types/node": "*" chalk: ^4.0.0 + ci-info: ^3.2.0 graceful-fs: ^4.2.4 - is-ci: ^3.0.0 picomatch: ^2.2.3 - checksum: 03928f50d7e1b63c00a18176495890df2dec87dfff96ace8c97131886a3060e9d481cd30f94580f220ae6064d763d0395a50df44706fa49f05c2f7e819d170d5 + checksum: 4ec091ddab8a84ea38eb0763e9e55b50592e655faf21845d3d27dda907b16debd2552a777a562fe8429527e1c2b20c6ff299b107c5117a10002e70e3c39d0e9a languageName: node linkType: hard -"jest-validate@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-validate@npm:27.2.0" +"jest-validate@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-validate@npm:27.4.0" dependencies: - "@jest/types": ^27.1.1 + "@jest/types": ^27.4.0 camelcase: ^6.2.0 chalk: ^4.0.0 - jest-get-type: ^27.0.6 + jest-get-type: ^27.4.0 leven: ^3.1.0 - pretty-format: ^27.2.0 - checksum: 5bb02274dcf90bbc22a62d420cc3dd9431d787446b043ae3c09e6698d0538d0916403bc7423cb81519320d897bbbcdfb06fc967d04a57c81eab3c71b01cd7a97 + pretty-format: ^27.4.0 + checksum: 4bf130a3f6373287fd83e274565304c8353320c74c3476bf18c7dd4446fa4f5a2eb36fb77a96a1334d2265731e19b08fdf07555c4b02ca63e64818e50a04f6f4 languageName: node linkType: hard -"jest-watcher@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-watcher@npm:27.2.0" +"jest-watcher@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-watcher@npm:27.4.0" dependencies: - "@jest/test-result": ^27.2.0 - "@jest/types": ^27.1.1 + "@jest/test-result": ^27.4.0 + "@jest/types": ^27.4.0 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - jest-util: ^27.2.0 + jest-util: ^27.4.0 string-length: ^4.0.1 - checksum: 7289df4402ccaee9715e60d7523c955cff6051aebc3fbdcff1b2641a83931286f55d89bb5f2dd10499841ae986878cb939229dd5d3657c777f71d30d74ee5c65 + checksum: f6e3e9405ffd052093132bfb86274b67367ad9c49af0176bf4261635f9f6d70421d57ad666c8e201832df55c233f5356a40fa24e05abde0f0f79a75c2e0971b9 languageName: node linkType: hard @@ -10677,24 +10773,24 @@ fsevents@^1.2.7: languageName: node linkType: hard -"jest-worker@npm:^27.2.0": - version: 27.2.0 - resolution: "jest-worker@npm:27.2.0" +"jest-worker@npm:^27.4.0": + version: 27.4.0 + resolution: "jest-worker@npm:27.4.0" dependencies: "@types/node": "*" merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: 2189649c8ce67c9e3f09f20943872a24486546a81216d698986763708610232c6e942de41c10cdefee1a6abfcc7a64208de88d5a8c5cff55cb52f5da16688733 + checksum: 16e3966fd69e0d28f9270e4ce3f9ba3c6d82b074d51ae1d93ea66e5793dc846945461f6409a2365e8dbf10a441138b3d3f7536137efd7bc3d4b4e4f07de1a89f languageName: node linkType: hard -"jest@npm:^27.2.0": - version: 27.2.0 - resolution: "jest@npm:27.2.0" +"jest@npm:^27.4.0": + version: 27.4.0 + resolution: "jest@npm:27.4.0" dependencies: - "@jest/core": ^27.2.0 + "@jest/core": ^27.4.0 import-local: ^3.0.2 - jest-cli: ^27.2.0 + jest-cli: ^27.4.0 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -10702,7 +10798,7 @@ fsevents@^1.2.7: optional: true bin: jest: bin/jest.js - checksum: 468749325b0f5cd8d3e6e6a92157f0b9bc6565efa99e7a5aff9fdf0f629f5107c6739e461429e680948786ce5ab7f78837c3b11a0489d92eb00aea0402cdb873 + checksum: 609c6a9fdc8bf98539b2ddba7720207f081eb66e1916e91804cb70e3bbc0d4924eaffbc5b521d6d7f3d7d28842d27de1c0847de4e78309457089f50202a07d31 languageName: node linkType: hard @@ -11824,6 +11920,26 @@ fsevents@^1.2.7: languageName: node linkType: hard +"nice-napi@npm:^1.0.2": + version: 1.0.2 + resolution: "nice-napi@npm:1.0.2" + dependencies: + node-addon-api: ^3.0.0 + node-gyp: latest + node-gyp-build: ^4.2.2 + conditions: "!os=win32" + languageName: node + linkType: hard + +"node-addon-api@npm:^3.0.0": + version: 3.2.1 + resolution: "node-addon-api@npm:3.2.1" + dependencies: + node-gyp: latest + checksum: 2369986bb0881ccd9ef6bacdf39550e07e089a9c8ede1cbc5fc7712d8e2faa4d50da0e487e333d4125f8c7a616c730131d1091676c9d499af1d74560756b4a18 + languageName: node + linkType: hard + "node-environment-flags@npm:^1.0.5": version: 1.0.6 resolution: "node-environment-flags@npm:1.0.6" @@ -11834,6 +11950,17 @@ fsevents@^1.2.7: languageName: node linkType: hard +"node-gyp-build@npm:^4.2.2": + version: 4.3.0 + resolution: "node-gyp-build@npm:4.3.0" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 1ecab16d9f275174d516e223f60f65ebe07540347d5c04a6a7d6921060b7f2e3af4f19463d9d1dcedc452e275c2ae71354a99405e55ebd5b655bb2f38025c728 + languageName: node + linkType: hard + "node-gyp@npm:latest": version: 7.1.0 resolution: "node-gyp@npm:7.1.0" @@ -12255,13 +12382,6 @@ fsevents@^1.2.7: languageName: node linkType: hard -"p-each-series@npm:^2.1.0": - version: 2.1.0 - resolution: "p-each-series@npm:2.1.0" - checksum: 072f3ac2639ed3df341d1ce4421949be70a27547a45fbd2ee13328a3977e3190120f35a685a350cf491e5632afdc2f0a2cd7af7f81c3318095481434e8464b01 - languageName: node - linkType: hard - "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -12360,10 +12480,10 @@ fsevents@^1.2.7: languageName: node linkType: hard -"pako@npm:~1.0.5": - version: 1.0.10 - resolution: "pako@npm:1.0.10" - checksum: 02e35639495ba8a36a489a925c37f6faffb4be75238da1d52371cb38f674b18c5c95babed24f4616d9877776bd00e4969e7e9f6413ae9b3fd43189a7cea237c3 +"pako@npm:^1.0.3, pako@npm:~1.0.5": + version: 1.0.11 + resolution: "pako@npm:1.0.11" + checksum: 1be2bfa1f807608c7538afa15d6f25baa523c30ec870a3228a89579e474a4d992f4293859524e46d5d87fd30fa17c5edf34dbef0671251d9749820b488660b16 languageName: node linkType: hard @@ -12656,6 +12776,21 @@ fsevents@^1.2.7: languageName: node linkType: hard +"piscina@npm:^3.1.0": + version: 3.1.0 + resolution: "piscina@npm:3.1.0" + dependencies: + eventemitter-asyncresource: ^1.0.0 + hdr-histogram-js: ^2.0.1 + hdr-histogram-percentiles-obj: ^3.0.0 + nice-napi: ^1.0.2 + dependenciesMeta: + nice-napi: + optional: true + checksum: ae093257c3b4a54ead4687f1423716137c4e8e0012616bb3f93efd81ae1661aeb250c34a623b142c0d298541d0f8c96d09965024fc45cb7beb92109ea6f6c882 + languageName: node + linkType: hard + "pkg-dir@npm:^2.0.0": version: 2.0.0 resolution: "pkg-dir@npm:2.0.0" @@ -12775,15 +12910,15 @@ fsevents@^1.2.7: languageName: node linkType: hard -"pretty-format@npm:^27.2.0": - version: 27.2.0 - resolution: "pretty-format@npm:27.2.0" +"pretty-format@npm:^27.4.0": + version: 27.4.0 + resolution: "pretty-format@npm:27.4.0" dependencies: - "@jest/types": ^27.1.1 - ansi-regex: ^5.0.0 + "@jest/types": ^27.4.0 + ansi-regex: ^5.0.1 ansi-styles: ^5.0.0 react-is: ^17.0.1 - checksum: 182041979718b7843f4679b5b79a6bb5299b5fa96034e53d6c5e5f7b0156806bcf86648db57e3f8dfdb35539380765b2487ec4d26517b8722fd193698d12f579 + checksum: fabea838da9f9afb8aeb801705610ddce9fb2c20259f98d1c7d35a8b79c5bed31bcad067df00abe8bca40216403111e0babdbad8c46d57ffd3c98eaf6d28a19c languageName: node linkType: hard @@ -13145,7 +13280,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"regexpp@npm:^3.1.0, regexpp@npm:^3.2.0": +"regexpp@npm:^3.0.0, regexpp@npm:^3.1.0, regexpp@npm:^3.2.0": version: 3.2.0 resolution: "regexpp@npm:3.2.0" checksum: a78dc5c7158ad9ddcfe01aa9144f46e192ddbfa7b263895a70a5c6c73edd9ce85faf7c0430e59ac38839e1734e275b9c3de5c57ee3ab6edc0e0b1bdebefccef8 @@ -13349,7 +13484,14 @@ fsevents@^1.2.7: languageName: node linkType: hard -"resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.9.0": +"resolve.exports@npm:^1.1.0": + version: 1.1.0 + resolution: "resolve.exports@npm:1.1.0" + checksum: 52865af8edb088f6c7759a328584a5de6b226754f004b742523adcfe398cfbc4559515104bc2ae87b8e78b1e4de46c9baec400b3fb1f7d517b86d2d48a098a2d + languageName: node + linkType: hard + +"resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.9.0, resolve@npm:^1.10.1": version: 1.20.0 resolution: "resolve@npm:1.20.0" dependencies: @@ -13359,7 +13501,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.4#~builtin, resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.3.2#~builtin, resolve@patch:resolve@^1.4.0#~builtin, resolve@patch:resolve@^1.9.0#~builtin": +"resolve@patch:resolve@^1.1.4#~builtin, resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.0#~builtin, resolve@patch:resolve@^1.10.1#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.3.2#~builtin, resolve@patch:resolve@^1.4.0#~builtin, resolve@patch:resolve@^1.9.0#~builtin": version: 1.20.0 resolution: "resolve@patch:resolve@npm%3A1.20.0#~builtin::version=1.20.0&hash=07638b" dependencies: @@ -13593,7 +13735,7 @@ fsevents@^1.2.7: languageName: node linkType: hard -"semver-BABEL_8_BREAKING-false@npm:semver@^6.3.0, semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": +"semver-BABEL_8_BREAKING-false@npm:semver@^6.3.0, semver@npm:^6.0.0, semver@npm:^6.1.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": version: 6.3.0 resolution: "semver@npm:6.3.0" bin: @@ -14395,6 +14537,15 @@ fsevents@^1.2.7: languageName: node linkType: hard +"supports-color@npm:^9.0.2": + version: 9.0.2 + resolution: "supports-color@npm:9.0.2" + dependencies: + has-flag: ^5.0.0 + checksum: 690c21f61945a1ebab61fbc9dc861672b1d9678359ce75312b8b7ecb873f37f2ed2df56daa4ef4265300bea2e51f8285831ffb0a190ac46aaeed1d5b44fd51fe + languageName: node + linkType: hard + "supports-hyperlinks@npm:^2.0.0": version: 2.1.0 resolution: "supports-hyperlinks@npm:2.1.0" @@ -15202,14 +15353,14 @@ typescript@~4.2.3: languageName: node linkType: hard -"v8-to-istanbul@npm:^8.0.0": - version: 8.0.0 - resolution: "v8-to-istanbul@npm:8.0.0" +"v8-to-istanbul@npm:^8.1.0": + version: 8.1.0 + resolution: "v8-to-istanbul@npm:8.1.0" dependencies: "@types/istanbul-lib-coverage": ^2.0.1 convert-source-map: ^1.6.0 source-map: ^0.7.3 - checksum: 3e8be80b9967a18c2196b016b29a956ffddb8fd2f2abe5ae126a616209c2ed7ba3172a9630715b375c50f88dd1dea3c97ba3e2ebfaee902dc4cc6a177f31a039 + checksum: c7dabf9567e0c210b24d0720e553803cbe1ff81edb1ec7f2080eb4be01ed081a40286cc9f4aaa86d1bf8d57840cefae8fdf326b7cb8faa316ba50c7b948030d4 languageName: node linkType: hard @@ -15837,7 +15988,7 @@ typescript@~4.2.3: languageName: node linkType: hard -"yargs@npm:^16.0.3": +"yargs@npm:^16.2.0": version: 16.2.0 resolution: "yargs@npm:16.2.0" dependencies: