diff --git a/packages/babel-helper-transform-fixture-test-runner/package.json b/packages/babel-helper-transform-fixture-test-runner/package.json index 33c61b6450..718d442293 100644 --- a/packages/babel-helper-transform-fixture-test-runner/package.json +++ b/packages/babel-helper-transform-fixture-test-runner/package.json @@ -24,5 +24,8 @@ "quick-lru": "5.1.0", "regenerator-runtime": "^0.13.7", "source-map": "^0.5.0" + }, + "devDependencies": { + "@types/jest": "^25.2.2" } } diff --git a/packages/babel-helper-transform-fixture-test-runner/src/helpers.js b/packages/babel-helper-transform-fixture-test-runner/src/helpers.ts similarity index 100% rename from packages/babel-helper-transform-fixture-test-runner/src/helpers.js rename to packages/babel-helper-transform-fixture-test-runner/src/helpers.ts diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.ts similarity index 92% rename from packages/babel-helper-transform-fixture-test-runner/src/index.js rename to packages/babel-helper-transform-fixture-test-runner/src/index.ts index 146f1ae904..5d11d54a3d 100644 --- a/packages/babel-helper-transform-fixture-test-runner/src/index.js +++ b/packages/babel-helper-transform-fixture-test-runner/src/index.ts @@ -14,6 +14,7 @@ import fs from "fs"; import path from "path"; import vm from "vm"; import QuickLRU from "quick-lru"; +// @ts-ignore import escapeRegExp from "./escape-regexp.cjs"; import { fileURLToPath } from "url"; @@ -69,10 +70,12 @@ function createContext() { function runCacheableScriptInTestContext( filename: string, srcFn: () => string, - context: Context, - moduleCache: Object, + // todo(flow->ts) was Context type, but it is missing + context: any, + moduleCache: any, ) { - let cached = cachedScripts.get(filename); + // todo(flow->ts) improve types + let cached: any = cachedScripts.get(filename); if (!cached) { const code = `(function (exports, require, module, __filename, __dirname) {\n${srcFn()}\n});`; cached = { @@ -90,7 +93,9 @@ function runCacheableScriptInTestContext( produceCachedData: true, }); + // @ts-expect-error todo(flow->ts) improve types if (script.cachedDataProduced) { + // @ts-expect-error todo(flow->ts) improve types cached.cachedData = script.cachedData; } @@ -115,8 +120,9 @@ function runCacheableScriptInTestContext( function runModuleInTestContext( id: string, relativeFilename: string, - context: Context, - moduleCache: Object, + // todo(flow->ts) was Context type, but it is missing + context: any, + moduleCache: any, ) { const filename = require.resolve(id, { paths: [path.dirname(relativeFilename)], @@ -148,7 +154,9 @@ function runModuleInTestContext( */ export function runCodeInTestContext( code: string, - opts: { filename: string }, + opts: { + filename: string; + }, context = sharedTestContext, ) { const filename = opts.filename; @@ -192,7 +200,8 @@ function run(task) { stderr, } = task; - function getOpts(self) { + // todo(flow->ts) add proper return type (added any, because empty object is inferred) + function getOpts(self): any { const newOpts = merge( { ast: true, @@ -226,7 +235,7 @@ function run(task) { } catch (err) { // Pass empty location to include the whole file in the output. err.message = - `${exec.loc}: ${err.message}\n` + codeFrameColumns(execCode, {}); + `${exec.loc}: ${err.message}\n` + codeFrameColumns(execCode, {} as any); throw err; } } @@ -336,7 +345,7 @@ function validateFile(actualCode, expectedLoc, expectedCode) { } } -function normalizeOutput(code, normalizePathSeparator) { +function normalizeOutput(code, normalizePathSeparator?) { const projectRoot = path.resolve( path.dirname(fileURLToPath(import.meta.url)), "../../../", @@ -391,11 +400,21 @@ expect.extend({ }, }); +declare global { + // eslint-disable-next-line no-redeclare,@typescript-eslint/no-unused-vars + namespace jest { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + interface Matchers { + toEqualFile({ filename, code }): jest.CustomMatcherResult; + } + } +} + export default function ( fixturesLoc: string, name: string, - suiteOpts = {}, - taskOpts = {}, + suiteOpts: any = {}, + taskOpts: any = {}, dynamicOpts?: Function, ) { const suites = getFixtures(fixturesLoc); @@ -432,6 +451,7 @@ export default function ( if (dynamicOpts) dynamicOpts(task.options, task); + // @ts-expect-error todo(flow->ts) missing property if (task.externalHelpers) { (task.options.plugins ??= []).push([ "external-helpers", diff --git a/yarn.lock b/yarn.lock index 54e64c182c..0c7429fa25 100644 --- a/yarn.lock +++ b/yarn.lock @@ -821,6 +821,7 @@ __metadata: "@babel/code-frame": "workspace:^7.12.13" "@babel/core": "workspace:^7.13.10" "@babel/helper-fixtures": "workspace:^7.13.10" + "@types/jest": ^25.2.2 babel-check-duplicated-nodes: ^1.0.0 escape-string-regexp: "condition:BABEL_8_BREAKING ? ^4.0.0 : " lodash: ^4.17.19 @@ -3713,6 +3714,18 @@ __metadata: languageName: node linkType: hard +"@jest/types@npm:^25.5.0": + version: 25.5.0 + resolution: "@jest/types@npm:25.5.0" + dependencies: + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^1.1.1 + "@types/yargs": ^15.0.0 + chalk: ^3.0.0 + checksum: 33ad68320efb297c4bd98975105130e1b4096d631decfc5a093691e24f27fce0410b4a7c5a87b736873271ebc003e48e853529587e584b3152efca572139a4a3 + languageName: node + linkType: hard + "@jest/types@npm:^26.6.1": version: 26.6.1 resolution: "@jest/types@npm:26.6.1" @@ -4041,6 +4054,16 @@ __metadata: languageName: node linkType: hard +"@types/istanbul-reports@npm:^1.1.1": + version: 1.1.2 + resolution: "@types/istanbul-reports@npm:1.1.2" + dependencies: + "@types/istanbul-lib-coverage": "*" + "@types/istanbul-lib-report": "*" + checksum: 92bd1f76a4ce16f5390c80b6b0e657171faf0003b0ff370b3c37739087c825d664493c9debf442c0871d864f1be15c88460f2399ae748186d1a944f16958aea4 + languageName: node + linkType: hard + "@types/istanbul-reports@npm:^3.0.0": version: 3.0.0 resolution: "@types/istanbul-reports@npm:3.0.0" @@ -4050,6 +4073,16 @@ __metadata: languageName: node linkType: hard +"@types/jest@npm:^25.2.2": + version: 25.2.3 + resolution: "@types/jest@npm:25.2.3" + dependencies: + jest-diff: ^25.2.1 + pretty-format: ^25.2.1 + checksum: fe92624fd7b3b5358ffba8e59108b484de1d01df08dfc66bb597d59d09900db1950717adb8d42ce5f81ba615fa0b8de55fd5446808d92f75b45e08fcbe4cec6e + languageName: node + linkType: hard + "@types/jsesc@npm:^2.5.0": version: 2.5.1 resolution: "@types/jsesc@npm:2.5.1" @@ -6102,6 +6135,16 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^3.0.0": + version: 3.0.0 + resolution: "chalk@npm:3.0.0" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: 4018b0c812880da595d0d7b8159939527b72f58d3370e2fdc1a24d9abd460bab851695d7eca014082f110d5702d1221b05493fec430ccce375de907d50cc48c1 + languageName: node + linkType: hard + "char-regex@npm:^1.0.2": version: 1.0.2 resolution: "char-regex@npm:1.0.2" @@ -6975,6 +7018,13 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^25.2.6": + version: 25.2.6 + resolution: "diff-sequences@npm:25.2.6" + checksum: 332484fc00f6beca726d8dbc13095f6006527002bef936a07b4e6bbec681fbaac484e1a7ea4e9ab0d53e375d1cde9e642c8cce31dfe6329cfdf8f01f26b17505 + languageName: node + linkType: hard + "diff-sequences@npm:^26.5.0": version: 26.5.0 resolution: "diff-sequences@npm:26.5.0" @@ -9821,6 +9871,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-diff@npm:^25.2.1": + version: 25.5.0 + resolution: "jest-diff@npm:25.5.0" + dependencies: + chalk: ^3.0.0 + diff-sequences: ^25.2.6 + jest-get-type: ^25.2.6 + pretty-format: ^25.5.0 + checksum: 14a2634ecb159a9a2f061239db1cea0c889e7a72ab05bd1fa799db30efca2ce79291372823f5e3468d9bc856f404f312e44e89c171eea8132b5835d12f71d0b3 + languageName: node + linkType: hard + "jest-diff@npm:^26.6.1": version: 26.6.1 resolution: "jest-diff@npm:26.6.1" @@ -9884,6 +9946,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"jest-get-type@npm:^25.2.6": + version: 25.2.6 + resolution: "jest-get-type@npm:25.2.6" + checksum: 6051fcb75cdaa8fad66fd5a1e91d2c1597e9ccc54eecd5cd489fd73a00e322d28cb5859b656a8224a41eddab0ecfb875df9ec62f545a76afa1a55d3ba97fba6d + languageName: node + linkType: hard + "jest-get-type@npm:^26.3.0": version: 26.3.0 resolution: "jest-get-type@npm:26.3.0" @@ -12243,6 +12312,18 @@ fsevents@^1.2.7: languageName: node linkType: hard +"pretty-format@npm:^25.2.1, pretty-format@npm:^25.5.0": + version: 25.5.0 + resolution: "pretty-format@npm:25.5.0" + dependencies: + "@jest/types": ^25.5.0 + ansi-regex: ^5.0.0 + ansi-styles: ^4.0.0 + react-is: ^16.12.0 + checksum: f7cc631d51e22c809d429d20facfd886ba0b212d419d153467872f68688256c2c55563bf70e943b7347ec9180b41a1d19c4235dc171850f9d5382a52959c0245 + languageName: node + linkType: hard + "pretty-format@npm:^26.6.1": version: 26.6.1 resolution: "pretty-format@npm:26.6.1" @@ -12441,6 +12522,13 @@ fsevents@^1.2.7: languageName: node linkType: hard +"react-is@npm:^16.12.0": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 11bcf1267a314a522615f626f3ce3727a3a24cdbf61c4d452add3550a7875326669631326cfb1ba3e92b6f72244c32ffecf93ad21c0cad8455d3e169d0e3f060 + languageName: node + linkType: hard + "react-is@npm:^17.0.1": version: 17.0.1 resolution: "react-is@npm:17.0.1"