123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 |
- import { BaseError } from 'make-error';
- import type * as _ts from 'typescript';
- import type { TSCommon } from './ts-compiler-types';
- import type { createEsmHooks as createEsmHooksFn } from './esm';
- export { TSCommon };
- export { createRepl, CreateReplOptions, ReplService, EvalAwarePartialHost, } from './repl';
- export type { TranspilerModule, TranspilerFactory, CreateTranspilerOptions, TranspileOutput, TranspileOptions, Transpiler, } from './transpilers/types';
- export type { NodeLoaderHooksAPI1, NodeLoaderHooksAPI2, NodeLoaderHooksFormat, } from './esm';
- /**
- * Registered `ts-node` instance information.
- */
- export declare const REGISTER_INSTANCE: unique symbol;
- /**
- * Expose `REGISTER_INSTANCE` information on node.js `process`.
- */
- declare global {
- namespace NodeJS {
- interface Process {
- [REGISTER_INSTANCE]?: Service;
- }
- }
- }
- /**
- * Export the current version.
- */
- export declare const VERSION: any;
- /**
- * Options for creating a new TypeScript compiler instance.
- * @category Basic
- */
- export interface CreateOptions {
- /**
- * Behave as if invoked within this working directory. Roughly equivalent to `cd $dir && ts-node ...`
- *
- * @default process.cwd()
- */
- cwd?: string;
- /**
- * Legacy alias for `cwd`
- *
- * @deprecated use `projectSearchDir` or `cwd`
- */
- dir?: string;
- /**
- * Emit output files into `.ts-node` directory.
- *
- * @default false
- */
- emit?: boolean;
- /**
- * Scope compiler to files within `scopeDir`.
- *
- * @default false
- */
- scope?: boolean;
- /**
- * @default First of: `tsconfig.json` "rootDir" if specified, directory containing `tsconfig.json`, or cwd if no `tsconfig.json` is loaded.
- */
- scopeDir?: string;
- /**
- * Use pretty diagnostic formatter.
- *
- * @default false
- */
- pretty?: boolean;
- /**
- * Use TypeScript's faster `transpileModule`.
- *
- * @default false
- */
- transpileOnly?: boolean;
- /**
- * **DEPRECATED** Specify type-check is enabled (e.g. `transpileOnly == false`).
- *
- * @default true
- */
- typeCheck?: boolean;
- /**
- * Use TypeScript's compiler host API instead of the language service API.
- *
- * @default false
- */
- compilerHost?: boolean;
- /**
- * Logs TypeScript errors to stderr instead of throwing exceptions.
- *
- * @default false
- */
- logError?: boolean;
- /**
- * Load "files" and "include" from `tsconfig.json` on startup.
- *
- * Default is to override `tsconfig.json` "files" and "include" to only include the entrypoint script.
- *
- * @default false
- */
- files?: boolean;
- /**
- * Specify a custom TypeScript compiler.
- *
- * @default "typescript"
- */
- compiler?: string;
- /**
- * Specify a custom transpiler for use with transpileOnly
- */
- transpiler?: string | [string, object];
- /**
- * Transpile with swc instead of the TypeScript compiler, and skip typechecking.
- *
- * Equivalent to setting both `transpileOnly: true` and `transpiler: 'ts-node/transpilers/swc'`
- *
- * For complete instructions: https://typestrong.org/ts-node/docs/transpilers
- */
- swc?: boolean;
- /**
- * Paths which should not be compiled.
- *
- * Each string in the array is converted to a regular expression via `new RegExp()` and tested against source paths prior to compilation.
- *
- * Source paths are normalized to posix-style separators, relative to the directory containing `tsconfig.json` or to cwd if no `tsconfig.json` is loaded.
- *
- * Default is to ignore all node_modules subdirectories.
- *
- * @default ["(?:^|/)node_modules/"]
- */
- ignore?: string[];
- /**
- * Path to TypeScript config file or directory containing a `tsconfig.json`.
- * Similar to the `tsc --project` flag: https://www.typescriptlang.org/docs/handbook/compiler-options.html
- */
- project?: string;
- /**
- * Search for TypeScript config file (`tsconfig.json`) in this or parent directories.
- */
- projectSearchDir?: string;
- /**
- * Skip project config resolution and loading.
- *
- * @default false
- */
- skipProject?: boolean;
- /**
- * Skip ignore check, so that compilation will be attempted for all files with matching extensions.
- *
- * @default false
- */
- skipIgnore?: boolean;
- /**
- * JSON object to merge with TypeScript `compilerOptions`.
- *
- * @allOf [{"$ref": "https://schemastore.azurewebsites.net/schemas/json/tsconfig.json#definitions/compilerOptionsDefinition/properties/compilerOptions"}]
- */
- compilerOptions?: object;
- /**
- * Ignore TypeScript warnings by diagnostic code.
- */
- ignoreDiagnostics?: Array<number | string>;
- /**
- * Modules to require, like node's `--require` flag.
- *
- * If specified in `tsconfig.json`, the modules will be resolved relative to the `tsconfig.json` file.
- *
- * If specified programmatically, each input string should be pre-resolved to an absolute path for
- * best results.
- */
- require?: Array<string>;
- readFile?: (path: string) => string | undefined;
- fileExists?: (path: string) => boolean;
- transformers?: _ts.CustomTransformers | ((p: _ts.Program) => _ts.CustomTransformers);
- /**
- * Allows the usage of top level await in REPL.
- *
- * Uses node's implementation which accomplishes this with an AST syntax transformation.
- *
- * Enabled by default when tsconfig target is es2018 or above. Set to false to disable.
- *
- * **Note**: setting to `true` when tsconfig target is too low will throw an Error. Leave as `undefined`
- * to get default, automatic behavior.
- */
- experimentalReplAwait?: boolean;
- /**
- * Override certain paths to be compiled and executed as CommonJS or ECMAScript modules.
- * When overridden, the tsconfig "module" and package.json "type" fields are overridden, and
- * the file extension is ignored.
- * This is useful if you cannot use .mts, .cts, .mjs, or .cjs file extensions;
- * it achieves the same effect.
- *
- * Each key is a glob pattern following the same rules as tsconfig's "include" array.
- * When multiple patterns match the same file, the last pattern takes precedence.
- *
- * `cjs` overrides matches files to compile and execute as CommonJS.
- * `esm` overrides matches files to compile and execute as native ECMAScript modules.
- * `package` overrides either of the above to default behavior, which obeys package.json "type" and
- * tsconfig.json "module" options.
- */
- moduleTypes?: ModuleTypes;
- /**
- * A function to collect trace messages from the TypeScript compiler, for example when `traceResolution` is enabled.
- *
- * @default console.log
- */
- tsTrace?: (str: string) => void;
- /**
- * Enable native ESM support.
- *
- * For details, see https://typestrong.org/ts-node/docs/imports#native-ecmascript-modules
- */
- esm?: boolean;
- /**
- * Re-order file extensions so that TypeScript imports are preferred.
- *
- * For example, when both `index.js` and `index.ts` exist, enabling this option causes `require('./index')` to resolve to `index.ts` instead of `index.js`
- *
- * @default false
- */
- preferTsExts?: boolean;
- /**
- * Like node's `--experimental-specifier-resolution`, , but can also be set in your `tsconfig.json` for convenience.
- *
- * For details, see https://nodejs.org/dist/latest-v18.x/docs/api/esm.html#customizing-esm-specifier-resolution-algorithm
- */
- experimentalSpecifierResolution?: 'node' | 'explicit';
- /**
- * Allow using voluntary `.ts` file extension in import specifiers.
- *
- * Typically, in ESM projects, import specifiers must have an emit extension, `.js`, `.cjs`, or `.mjs`,
- * and we automatically map to the corresponding `.ts`, `.cts`, or `.mts` source file. This is the
- * recommended approach.
- *
- * However, if you really want to use `.ts` in import specifiers, and are aware that this may
- * break tooling, you can enable this flag.
- */
- experimentalTsImportSpecifiers?: boolean;
- }
- export declare type ModuleTypes = Record<string, ModuleTypeOverride>;
- export declare type ModuleTypeOverride = 'cjs' | 'esm' | 'package';
- /**
- * Options for registering a TypeScript compiler instance globally.
- * @category Basic
- */
- export interface RegisterOptions extends CreateOptions {
- /**
- * Enable experimental features that re-map imports and require calls to support:
- * `baseUrl`, `paths`, `rootDirs`, `.js` to `.ts` file extension mappings,
- * `outDir` to `rootDir` mappings for composite projects and monorepos.
- *
- * For details, see https://github.com/TypeStrong/ts-node/issues/1514
- */
- experimentalResolver?: boolean;
- }
- export declare type ExperimentalSpecifierResolution = 'node' | 'explicit';
- /**
- * Must be an interface to support `typescript-json-schema`.
- */
- export interface TsConfigOptions extends Omit<RegisterOptions, 'transformers' | 'readFile' | 'fileExists' | 'skipProject' | 'project' | 'dir' | 'cwd' | 'projectSearchDir' | 'optionBasePaths' | 'tsTrace'> {
- }
- /**
- * Information retrieved from type info check.
- */
- export interface TypeInfo {
- name: string;
- comment: string;
- }
- /**
- * TypeScript diagnostics error.
- */
- export declare class TSError extends BaseError {
- diagnosticCodes: number[];
- name: string;
- diagnosticText: string;
- diagnostics: ReadonlyArray<_ts.Diagnostic>;
- constructor(diagnosticText: string, diagnosticCodes: number[], diagnostics?: ReadonlyArray<_ts.Diagnostic>);
- }
- /**
- * Primary ts-node service, which wraps the TypeScript API and can compile TypeScript to JavaScript
- */
- export interface Service {
- ts: TSCommon;
- config: _ts.ParsedCommandLine;
- options: RegisterOptions;
- enabled(enabled?: boolean): boolean;
- ignored(fileName: string): boolean;
- compile(code: string, fileName: string, lineOffset?: number): string;
- getTypeInfo(code: string, fileName: string, position: number): TypeInfo;
- }
- /**
- * Re-export of `Service` interface for backwards-compatibility
- * @deprecated use `Service` instead
- * @see {Service}
- */
- export declare type Register = Service;
- /**
- * Create a new TypeScript compiler instance and register it onto node.js
- *
- * @category Basic
- */
- export declare function register(opts?: RegisterOptions): Service;
- /**
- * Register TypeScript compiler instance onto node.js
- * @category Basic
- */
- export declare function register(service: Service): Service;
- /**
- * Create TypeScript compiler instance.
- *
- * @category Basic
- */
- export declare function create(rawOptions?: CreateOptions): Service;
- /**
- * Create an implementation of node's ESM loader hooks.
- *
- * This may be useful if you
- * want to wrap or compose the loader hooks to add additional functionality or
- * combine with another loader.
- *
- * Node changed the hooks API, so there are two possible APIs. This function
- * detects your node version and returns the appropriate API.
- *
- * @category ESM Loader
- */
- export declare const createEsmHooks: typeof createEsmHooksFn;
- /**
- * When using `module: nodenext` or `module: node12`, there are two possible styles of emit depending in file extension or package.json "type":
- *
- * - CommonJS with dynamic imports preserved (not transformed into `require()` calls)
- * - ECMAScript modules with `import foo = require()` transformed into `require = createRequire(); const foo = require()`
- */
- export declare type NodeModuleEmitKind = 'nodeesm' | 'nodecjs';
|