123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- /**
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- import type {Config} from '@jest/types';
- import type {EncodedSourceMap} from '@jridgewell/trace-mapping';
- import type {TransformTypes} from '@jest/types';
- export declare interface AsyncTransformer<TransformerConfig = unknown> {
- /**
- * Indicates if the transformer is capable of instrumenting the code for code coverage.
- *
- * If V8 coverage is _not_ active, and this is `true`, Jest will assume the code is instrumented.
- * If V8 coverage is _not_ active, and this is `false`. Jest will instrument the code returned by this transformer using Babel.
- */
- canInstrument?: boolean;
- getCacheKey?: (
- sourceText: string,
- sourcePath: string,
- options: TransformOptions<TransformerConfig>,
- ) => string;
- getCacheKeyAsync?: (
- sourceText: string,
- sourcePath: string,
- options: TransformOptions<TransformerConfig>,
- ) => Promise<string>;
- process?: (
- sourceText: string,
- sourcePath: string,
- options: TransformOptions<TransformerConfig>,
- ) => TransformedSource;
- processAsync: (
- sourceText: string,
- sourcePath: string,
- options: TransformOptions<TransformerConfig>,
- ) => Promise<TransformedSource>;
- }
- export declare interface CallerTransformOptions {
- supportsDynamicImport: boolean;
- supportsExportNamespaceFrom: boolean;
- supportsStaticESM: boolean;
- supportsTopLevelAwait: boolean;
- }
- export declare function createScriptTransformer(
- config: Config.ProjectConfig,
- cacheFS?: StringMap,
- ): Promise<ScriptTransformer>;
- export declare function createTranspilingRequire(
- config: Config.ProjectConfig,
- ): Promise<
- <TModuleType = unknown>(
- resolverPath: string,
- applyInteropRequireDefault?: boolean,
- ) => Promise<TModuleType>
- >;
- declare interface ErrorWithCodeFrame extends Error {
- codeFrame?: string;
- }
- declare interface FixedRawSourceMap extends Omit<EncodedSourceMap, 'version'> {
- version: number;
- }
- export declare function handlePotentialSyntaxError(
- e: ErrorWithCodeFrame,
- ): ErrorWithCodeFrame;
- declare interface ReducedTransformOptions extends CallerTransformOptions {
- instrument: boolean;
- }
- declare interface RequireAndTranspileModuleOptions
- extends ReducedTransformOptions {
- applyInteropRequireDefault: boolean;
- }
- export declare type ScriptTransformer = ScriptTransformer_2;
- declare class ScriptTransformer_2 {
- private readonly _config;
- private readonly _cacheFS;
- private readonly _cache;
- private readonly _transformCache;
- private _transformsAreLoaded;
- constructor(_config: Config.ProjectConfig, _cacheFS: StringMap);
- private _buildCacheKeyFromFileInfo;
- private _buildTransformCacheKey;
- private _getCacheKey;
- private _getCacheKeyAsync;
- private _createCachedFilename;
- private _getFileCachePath;
- private _getFileCachePathAsync;
- private _getTransformPatternAndPath;
- private _getTransformPath;
- loadTransformers(): Promise<void>;
- private _getTransformer;
- private _instrumentFile;
- private _buildTransformResult;
- transformSource(
- filepath: string,
- content: string,
- options: ReducedTransformOptions,
- ): TransformResult;
- transformSourceAsync(
- filepath: string,
- content: string,
- options: ReducedTransformOptions,
- ): Promise<TransformResult>;
- private _transformAndBuildScriptAsync;
- private _transformAndBuildScript;
- transformAsync(
- filename: string,
- options: TransformationOptions,
- fileSource?: string,
- ): Promise<TransformResult>;
- transform(
- filename: string,
- options: TransformationOptions,
- fileSource?: string,
- ): TransformResult;
- transformJson(
- filename: string,
- options: TransformationOptions,
- fileSource: string,
- ): string;
- requireAndTranspileModule<ModuleType = unknown>(
- moduleName: string,
- callback?: (module: ModuleType) => void | Promise<void>,
- options?: RequireAndTranspileModuleOptions,
- ): Promise<ModuleType>;
- shouldTransform(filename: string): boolean;
- }
- export declare function shouldInstrument(
- filename: string,
- options: ShouldInstrumentOptions,
- config: Config.ProjectConfig,
- loadedFilenames?: Array<string>,
- ): boolean;
- export declare interface ShouldInstrumentOptions
- extends Pick<
- Config.GlobalConfig,
- 'collectCoverage' | 'collectCoverageFrom' | 'coverageProvider'
- > {
- changedFiles?: Set<string>;
- sourcesRelatedToTestsInChangedFiles?: Set<string>;
- }
- declare type StringMap = Map<string, string>;
- export declare interface SyncTransformer<TransformerConfig = unknown> {
- /**
- * Indicates if the transformer is capable of instrumenting the code for code coverage.
- *
- * If V8 coverage is _not_ active, and this is `true`, Jest will assume the code is instrumented.
- * If V8 coverage is _not_ active, and this is `false`. Jest will instrument the code returned by this transformer using Babel.
- */
- canInstrument?: boolean;
- getCacheKey?: (
- sourceText: string,
- sourcePath: string,
- options: TransformOptions<TransformerConfig>,
- ) => string;
- getCacheKeyAsync?: (
- sourceText: string,
- sourcePath: string,
- options: TransformOptions<TransformerConfig>,
- ) => Promise<string>;
- process: (
- sourceText: string,
- sourcePath: string,
- options: TransformOptions<TransformerConfig>,
- ) => TransformedSource;
- processAsync?: (
- sourceText: string,
- sourcePath: string,
- options: TransformOptions<TransformerConfig>,
- ) => Promise<TransformedSource>;
- }
- export declare interface TransformationOptions
- extends ShouldInstrumentOptions,
- CallerTransformOptions {
- isInternalModule?: boolean;
- }
- export declare type TransformedSource = {
- code: string;
- map?: FixedRawSourceMap | string | null;
- };
- /**
- * We have both sync (`process`) and async (`processAsync`) code transformation, which both can be provided.
- * `require` will always use `process`, and `import` will use `processAsync` if it exists, otherwise fall back to `process`.
- * Meaning, if you use `import` exclusively you do not need `process`, but in most cases supplying both makes sense:
- * Jest transpiles on demand rather than ahead of time, so the sync one needs to exist.
- *
- * For more info on the sync vs async model, see https://jestjs.io/docs/code-transformation#writing-custom-transformers
- */
- declare type Transformer_2<TransformerConfig = unknown> =
- | SyncTransformer<TransformerConfig>
- | AsyncTransformer<TransformerConfig>;
- export {Transformer_2 as Transformer};
- export declare type TransformerCreator<
- X extends Transformer_2<TransformerConfig>,
- TransformerConfig = unknown,
- > = (transformerConfig?: TransformerConfig) => X | Promise<X>;
- /**
- * Instead of having your custom transformer implement the Transformer interface
- * directly, you can choose to export a factory function to dynamically create
- * transformers. This is to allow having a transformer config in your jest config.
- */
- export declare type TransformerFactory<X extends Transformer_2> = {
- createTransformer: TransformerCreator<X>;
- };
- export declare interface TransformOptions<TransformerConfig = unknown>
- extends ReducedTransformOptions {
- /** Cached file system which is used by `jest-runtime` to improve performance. */
- cacheFS: StringMap;
- /** Jest configuration of currently running project. */
- config: Config.ProjectConfig;
- /** Stringified version of the `config` - useful in cache busting. */
- configString: string;
- /** Transformer configuration passed through `transform` option by the user. */
- transformerConfig: TransformerConfig;
- }
- export declare type TransformResult = TransformTypes.TransformResult;
- export {};
|