/** * 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 type { RawSourceMap } from 'source-map'; import type { Config, TransformTypes } from '@jest/types'; export interface ShouldInstrumentOptions extends Pick { changedFiles?: Set; sourcesRelatedToTestsInChangedFiles?: Set; } export interface Options extends ShouldInstrumentOptions, CallerTransformOptions { isInternalModule?: boolean; } interface FixedRawSourceMap extends Omit { version: number; } export declare type TransformedSource = { code: string; map?: FixedRawSourceMap | string | null; } | string; export declare type TransformResult = TransformTypes.TransformResult; export interface CallerTransformOptions { supportsDynamicImport: boolean; supportsExportNamespaceFrom: boolean; supportsStaticESM: boolean; supportsTopLevelAwait: boolean; } export interface ReducedTransformOptions extends CallerTransformOptions { instrument: boolean; } export interface RequireAndTranspileModuleOptions extends ReducedTransformOptions { applyInteropRequireDefault: boolean; } export declare type StringMap = Map; export interface TransformOptions extends ReducedTransformOptions { /** a cached file system which is used in jest-runtime - useful to improve performance */ cacheFS: StringMap; config: Config.ProjectConfig; /** A stringified version of the configuration - useful in cache busting */ configString: string; /** the options passed through Jest's config by the user */ transformerConfig: OptionType; } export interface SyncTransformer { canInstrument?: boolean; createTransformer?: (options?: OptionType) => SyncTransformer; getCacheKey?: (sourceText: string, sourcePath: Config.Path, options: TransformOptions) => string; getCacheKeyAsync?: (sourceText: string, sourcePath: Config.Path, options: TransformOptions) => Promise; process: (sourceText: string, sourcePath: Config.Path, options: TransformOptions) => TransformedSource; processAsync?: (sourceText: string, sourcePath: Config.Path, options: TransformOptions) => Promise; } export interface AsyncTransformer { canInstrument?: boolean; createTransformer?: (options?: OptionType) => AsyncTransformer; getCacheKey?: (sourceText: string, sourcePath: Config.Path, options: TransformOptions) => string; getCacheKeyAsync?: (sourceText: string, sourcePath: Config.Path, options: TransformOptions) => Promise; process?: (sourceText: string, sourcePath: Config.Path, options: TransformOptions) => TransformedSource; processAsync: (sourceText: string, sourcePath: Config.Path, options: TransformOptions) => Promise; } export declare type Transformer = SyncTransformer | AsyncTransformer; export {};