diff --git a/packages/jest-resolve-dependencies/src/index.ts b/packages/jest-resolve-dependencies/src/index.ts index c0a081dffe0b..71719bc090a4 100644 --- a/packages/jest-resolve-dependencies/src/index.ts +++ b/packages/jest-resolve-dependencies/src/index.ts @@ -5,10 +5,10 @@ * LICENSE file in the root directory of this source tree. */ -import {Config, Snapshot} from '@jest/types'; +import {Config} from '@jest/types'; import {FS as HasteFS} from 'jest-haste-map'; import Resolver from 'jest-resolve'; -import {isSnapshotPath} from 'jest-snapshot'; +import {isSnapshotPath, SnapshotResolver} from 'jest-snapshot'; namespace DependencyResolver { export type ResolvedModule = { @@ -25,12 +25,12 @@ namespace DependencyResolver { class DependencyResolver { private _hasteFS: HasteFS; private _resolver: Resolver; - private _snapshotResolver: Snapshot.SnapshotResolver; + private _snapshotResolver: SnapshotResolver; constructor( resolver: Resolver, hasteFS: HasteFS, - snapshotResolver: Snapshot.SnapshotResolver, + snapshotResolver: SnapshotResolver, ) { this._resolver = resolver; this._hasteFS = hasteFS; diff --git a/packages/jest-snapshot/src/index.ts b/packages/jest-snapshot/src/index.ts index 68a42e200c0a..0ed61078506c 100644 --- a/packages/jest-snapshot/src/index.ts +++ b/packages/jest-snapshot/src/index.ts @@ -6,7 +6,7 @@ */ import fs from 'fs'; -import {Config, Matchers, Snapshot} from '@jest/types'; +import {Config, Matchers} from '@jest/types'; import {FS as HasteFS} from 'jest-haste-map'; import diff from 'jest-diff'; @@ -14,6 +14,7 @@ import {EXPECTED_COLOR, matcherHint, RECEIVED_COLOR} from 'jest-matcher-utils'; import { buildSnapshotResolver, isSnapshotPath, + SnapshotResolver as JestSnapshotResolver, EXTENSION, } from './snapshot_resolver'; import SnapshotState from './State'; @@ -31,7 +32,7 @@ const fileExists = (filePath: Config.Path, hasteFS: HasteFS): boolean => const cleanup = ( hasteFS: HasteFS, update: Config.SnapshotUpdateState, - snapshotResolver: Snapshot.SnapshotResolver, + snapshotResolver: JestSnapshotResolver, ) => { const pattern = '\\.' + EXTENSION + '$'; const files = hasteFS.matchFiles(pattern); @@ -296,7 +297,7 @@ const _toThrowErrorMatchingSnapshot = ({ }); }; -export = { +const JestSnapshot = { EXTENSION, SnapshotState, addSerializer, @@ -310,3 +311,9 @@ export = { toThrowErrorMatchingSnapshot, utils, }; +/* eslint-disable-next-line no-redeclare */ +namespace JestSnapshot { + export type SnapshotResolver = JestSnapshotResolver; +} + +export = JestSnapshot; diff --git a/packages/jest-snapshot/src/snapshot_resolver.ts b/packages/jest-snapshot/src/snapshot_resolver.ts index 838345c30b23..824fb5307dfa 100644 --- a/packages/jest-snapshot/src/snapshot_resolver.ts +++ b/packages/jest-snapshot/src/snapshot_resolver.ts @@ -6,19 +6,25 @@ */ import path from 'path'; -import {Config, Snapshot} from '@jest/types'; +import {Config} from '@jest/types'; import chalk from 'chalk'; +export type SnapshotResolver = { + testPathForConsistencyCheck: string; + resolveSnapshotPath(testPath: Config.Path, extension?: string): Config.Path; + resolveTestPath(snapshotPath: Config.Path, extension?: string): Config.Path; +}; + export const EXTENSION = 'snap'; export const DOT_EXTENSION = '.' + EXTENSION; export const isSnapshotPath = (path: string): boolean => path.endsWith(DOT_EXTENSION); -const cache: Map = new Map(); +const cache: Map = new Map(); export const buildSnapshotResolver = ( config: Config.ProjectConfig, -): Snapshot.SnapshotResolver => { +): SnapshotResolver => { const key = config.rootDir; if (!cache.has(key)) { cache.set(key, createSnapshotResolver(config.snapshotResolver)); @@ -28,13 +34,13 @@ export const buildSnapshotResolver = ( function createSnapshotResolver( snapshotResolverPath?: Config.Path | null, -): Snapshot.SnapshotResolver { +): SnapshotResolver { return typeof snapshotResolverPath === 'string' ? createCustomSnapshotResolver(snapshotResolverPath) : createDefaultSnapshotResolver(); } -function createDefaultSnapshotResolver(): Snapshot.SnapshotResolver { +function createDefaultSnapshotResolver(): SnapshotResolver { return { resolveSnapshotPath: (testPath: Config.Path) => path.join( @@ -59,10 +65,10 @@ function createDefaultSnapshotResolver(): Snapshot.SnapshotResolver { function createCustomSnapshotResolver( snapshotResolverPath: Config.Path, -): Snapshot.SnapshotResolver { - const custom: Snapshot.SnapshotResolver = require(snapshotResolverPath); +): SnapshotResolver { + const custom: SnapshotResolver = require(snapshotResolverPath); - const keys: [keyof Snapshot.SnapshotResolver, string][] = [ + const keys: [keyof SnapshotResolver, string][] = [ ['resolveSnapshotPath', 'function'], ['resolveTestPath', 'function'], ['testPathForConsistencyCheck', 'string'], @@ -95,7 +101,7 @@ function mustImplement(propName: string, requiredType: string) { ); } -function verifyConsistentTransformations(custom: Snapshot.SnapshotResolver) { +function verifyConsistentTransformations(custom: SnapshotResolver) { const resolvedSnapshotPath = custom.resolveSnapshotPath( custom.testPathForConsistencyCheck, ); diff --git a/packages/jest-types/src/Snapshot.ts b/packages/jest-types/src/Snapshot.ts deleted file mode 100644 index c372b924d750..000000000000 --- a/packages/jest-types/src/Snapshot.ts +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -import {Path} from './Config'; - -export type SnapshotResolver = { - testPathForConsistencyCheck: string; - resolveSnapshotPath(testPath: Path, extension?: string): Path; - resolveTestPath(snapshotPath: Path, extension?: string): Path; -}; diff --git a/packages/jest-types/src/index.ts b/packages/jest-types/src/index.ts index ed4c3acd0eac..102de09777a5 100644 --- a/packages/jest-types/src/index.ts +++ b/packages/jest-types/src/index.ts @@ -10,7 +10,6 @@ import * as Console from './Console'; import * as Matchers from './Matchers'; import * as Mocks from './Mocks'; import * as PrettyFormat from './PrettyFormat'; -import * as Snapshot from './Snapshot'; import * as SourceMaps from './SourceMaps'; import * as TestResult from './TestResult'; import * as Global from './Global'; @@ -22,7 +21,6 @@ export { Matchers, Mocks, PrettyFormat, - Snapshot, SourceMaps, TestResult, Global,