interfaces.d.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. import type * as typescript from 'typescript';
  2. import type { Chalk } from 'chalk';
  3. import type * as logger from './logger';
  4. export interface ErrorInfo {
  5. code: number;
  6. severity: Severity;
  7. content: string;
  8. file: string;
  9. line: number;
  10. character: number;
  11. context: string;
  12. }
  13. export type FileLocation = {
  14. /** 1-based */
  15. line: number;
  16. /** 1-based */
  17. character: number;
  18. };
  19. export interface HostMayBeCacheable {
  20. clearCache?(): void;
  21. fileExistsCache?: Map<string, boolean>;
  22. directoryExistsCache?: Map<string, boolean>;
  23. realpathCache?: Map<string, string>;
  24. }
  25. export interface CacheableHost extends HostMayBeCacheable {
  26. fileExists: typescript.ModuleResolutionHost['fileExists'];
  27. directoryExists: NonNullable<typescript.ModuleResolutionHost['directoryExists']>;
  28. realpath?: typescript.ModuleResolutionHost['realpath'];
  29. }
  30. export interface ModuleResolutionHostMayBeCacheable extends typescript.ModuleResolutionHost, HostMayBeCacheable {
  31. readFile(filePath: string, encoding?: string): string | undefined;
  32. trace: NonNullable<typescript.ModuleResolutionHost['trace']>;
  33. directoryExists: NonNullable<typescript.ModuleResolutionHost['directoryExists']>;
  34. getCurrentDirectory: NonNullable<typescript.ModuleResolutionHost['getCurrentDirectory']>;
  35. getDirectories: NonNullable<typescript.ModuleResolutionHost['getDirectories']>;
  36. useCaseSensitiveFileNames: NonNullable<typescript.LanguageServiceHost['useCaseSensitiveFileNames']>;
  37. getNewLine: NonNullable<typescript.LanguageServiceHost['getNewLine']>;
  38. getDefaultLibFileName: NonNullable<typescript.LanguageServiceHost['getDefaultLibFileName']>;
  39. readDirectory: NonNullable<typescript.LanguageServiceHost['readDirectory']>;
  40. }
  41. export interface ServiceHostWhichMayBeCacheable extends typescript.LanguageServiceHost, HostMayBeCacheable {
  42. }
  43. export interface WatchHost extends typescript.WatchCompilerHostOfFilesAndCompilerOptions<typescript.EmitAndSemanticDiagnosticsBuilderProgram>, HostMayBeCacheable {
  44. invokeFileWatcher: WatchFactory['invokeFileWatcher'];
  45. updateRootFileNames(): void;
  46. outputFiles: Map<FilePathKey, typescript.OutputFile[]>;
  47. tsbuildinfo?: typescript.OutputFile;
  48. }
  49. export type WatchCallbacks<T> = Map<FilePathKey, {
  50. fileName: string;
  51. callbacks: T[];
  52. }>;
  53. export interface WatchFactory {
  54. watchedFiles: WatchCallbacks<typescript.FileWatcherCallback>;
  55. watchedDirectories: WatchCallbacks<typescript.DirectoryWatcherCallback>;
  56. watchedDirectoriesRecursive: WatchCallbacks<typescript.DirectoryWatcherCallback>;
  57. invokeFileWatcher(fileName: string, eventKind: typescript.FileWatcherEventKind): boolean;
  58. /** Used to watch changes in source files, missing files needed to update the program or config file */
  59. watchFile: typescript.WatchHost['watchFile'];
  60. /** Used to watch resolved module's failed lookup locations, config file specs, type roots where auto type reference directives are added */
  61. watchDirectory: typescript.WatchHost['watchDirectory'];
  62. }
  63. export interface SolutionDiagnostics {
  64. global: typescript.Diagnostic[];
  65. perFile: Map<FilePathKey, typescript.Diagnostic[]>;
  66. transpileErrors: [FilePathKey | undefined, typescript.Diagnostic[]][];
  67. }
  68. export type FilePathKey = string & {
  69. __filePathKeyBrand: any;
  70. };
  71. export interface SolutionBuilderWithWatchHost extends typescript.SolutionBuilderWithWatchHost<typescript.EmitAndSemanticDiagnosticsBuilderProgram>, WatchFactory {
  72. diagnostics: SolutionDiagnostics;
  73. writtenFiles: typescript.OutputFile[];
  74. configFileInfo: Map<FilePathKey, ConfigFileInfo>;
  75. outputAffectingInstanceVersion: Map<FilePathKey, true>;
  76. getInputFileStamp(fileName: string): Date;
  77. updateSolutionBuilderInputFile(fileName: string): void;
  78. getOutputFileKeyFromReferencedProject(outputFileName: string): FilePathKey | undefined;
  79. getOutputFileAndKeyFromReferencedProject(oututFileName: string): {
  80. key: FilePathKey;
  81. outputFile: string | false;
  82. } | undefined;
  83. getOutputFileTextAndKeyFromReferencedProject(oututFileName: string): {
  84. key: FilePathKey;
  85. text: string | undefined;
  86. } | undefined;
  87. getInputFileNameFromOutput(outputFileName: string): string | undefined;
  88. getOutputFilesFromReferencedProjectInput(inputFileName: string): typescript.OutputFile[];
  89. buildReferences(): void;
  90. ensureAllReferenceTimestamps(): void;
  91. clearCache(): void;
  92. close(): void;
  93. }
  94. export interface ConfigFileInfo {
  95. config: typescript.ParsedCommandLine | undefined;
  96. outputFileNames?: Map<FilePathKey, {
  97. inputFileName: string;
  98. outputNames: string[];
  99. }>;
  100. tsbuildInfoFile?: string;
  101. dtsFiles?: string[];
  102. }
  103. interface CacheWithRedirects<T> {
  104. ownMap: Map<string, T>;
  105. redirectsMap: Map<typescript.Path, Map<string, T>>;
  106. getOrCreateMapOfCacheRedirects(redirectedReference: typescript.ResolvedProjectReference | undefined): Map<string, T>;
  107. clear(): void;
  108. setOwnOptions(newOptions: typescript.CompilerOptions): void;
  109. setOwnMap(newOwnMap: Map<string, T>): void;
  110. }
  111. interface PerModuleNameCache {
  112. get(directory: string): typescript.ResolvedModuleWithFailedLookupLocations | undefined;
  113. set(directory: string, result: typescript.ResolvedModuleWithFailedLookupLocations): void;
  114. }
  115. export interface ModuleResolutionCache extends typescript.ModuleResolutionCache {
  116. directoryToModuleNameMap: CacheWithRedirects<Map<string, typescript.ResolvedModuleWithFailedLookupLocations>>;
  117. moduleNameToDirectoryMap: CacheWithRedirects<PerModuleNameCache>;
  118. clear(): void;
  119. update(compilerOptions: typescript.CompilerOptions): void;
  120. }
  121. export interface TSInstance {
  122. compiler: typeof typescript;
  123. compilerOptions: typescript.CompilerOptions;
  124. /** Used for Vue for the most part */
  125. appendTsTsxSuffixesIfRequired: (filePath: string) => string;
  126. loaderOptions: LoaderOptions;
  127. rootFileNames: Set<string>;
  128. moduleResolutionCache?: ModuleResolutionCache;
  129. typeReferenceResolutionCache?: typescript.TypeReferenceDirectiveResolutionCache;
  130. /**
  131. * a cache of all the files
  132. */
  133. files: TSFiles;
  134. /**
  135. * contains the modified files - cleared each time after-compile is called
  136. */
  137. modifiedFiles?: Map<FilePathKey, true>;
  138. /**
  139. * Paths to project references that are missing source maps.
  140. * Cleared each time after-compile is called. Used to dedupe
  141. * warnings about source maps during a single compilation.
  142. */
  143. projectsMissingSourceMaps?: Set<string>;
  144. servicesHost?: ServiceHostWhichMayBeCacheable;
  145. languageService?: typescript.LanguageService | null;
  146. version: number;
  147. dependencyGraph: DependencyGraph;
  148. filesWithErrors?: TSFiles;
  149. transformers: typescript.CustomTransformers;
  150. colors: Chalk;
  151. otherFiles: TSFiles;
  152. watchHost?: WatchHost;
  153. watchOfFilesAndCompilerOptions?: typescript.WatchOfFilesAndCompilerOptions<typescript.EmitAndSemanticDiagnosticsBuilderProgram>;
  154. builderProgram?: typescript.EmitAndSemanticDiagnosticsBuilderProgram;
  155. program?: typescript.Program;
  156. hasUnaccountedModifiedFiles?: boolean;
  157. changedFilesList?: boolean;
  158. reportTranspileErrors?: boolean;
  159. solutionBuilderHost?: SolutionBuilderWithWatchHost;
  160. configFilePath: string | undefined;
  161. filePathKeyMapper: (fileName: string) => FilePathKey;
  162. initialSetupPending: boolean;
  163. configParseResult: typescript.ParsedCommandLine;
  164. log: logger.Logger;
  165. }
  166. export interface LoaderOptionsCache {
  167. [name: string]: WeakMap<LoaderOptions, LoaderOptions>;
  168. }
  169. export type DependencyGraph = Map<FilePathKey, ResolvedModule[]>;
  170. export type ReverseDependencyGraph = Map<FilePathKey, Map<FilePathKey, true>>;
  171. export type LogLevel = 'INFO' | 'WARN' | 'ERROR';
  172. export type ResolveModuleName = (moduleName: string, containingFile: string, compilerOptions: typescript.CompilerOptions, moduleResolutionHost: typescript.ModuleResolutionHost) => typescript.ResolvedModuleWithFailedLookupLocations;
  173. export type CustomResolveModuleName = (moduleName: string, containingFile: string, compilerOptions: typescript.CompilerOptions, moduleResolutionHost: typescript.ModuleResolutionHost, parentResolver: ResolveModuleName) => typescript.ResolvedModuleWithFailedLookupLocations;
  174. export type CustomResolveTypeReferenceDirective = (typeDirectiveName: string, containingFile: string, compilerOptions: typescript.CompilerOptions, moduleResolutionHost: typescript.ModuleResolutionHost, parentResolver: typeof typescript.resolveTypeReferenceDirective) => typescript.ResolvedTypeReferenceDirectiveWithFailedLookupLocations;
  175. export interface LoaderOptions {
  176. silent: boolean;
  177. logLevel: LogLevel;
  178. logInfoToStdOut: boolean;
  179. instance: string;
  180. compiler: string;
  181. configFile: string;
  182. context: string;
  183. transpileOnly: boolean;
  184. ignoreDiagnostics: number[];
  185. reportFiles: string[];
  186. errorFormatter: (message: ErrorInfo, colors: Chalk) => string;
  187. onlyCompileBundledFiles: boolean;
  188. colors: boolean;
  189. compilerOptions: typescript.CompilerOptions;
  190. appendTsSuffixTo: (RegExp | string)[];
  191. appendTsxSuffixTo: (RegExp | string)[];
  192. happyPackMode: boolean;
  193. getCustomTransformers: string | ((program: typescript.Program, getProgram: () => typescript.Program) => typescript.CustomTransformers | undefined);
  194. experimentalWatchApi: boolean;
  195. allowTsInNodeModules: boolean;
  196. experimentalFileCaching: boolean;
  197. projectReferences: boolean;
  198. resolveModuleName: CustomResolveModuleName;
  199. resolveTypeReferenceDirective: CustomResolveTypeReferenceDirective;
  200. useCaseSensitiveFileNames?: boolean;
  201. }
  202. export interface TSFile {
  203. fileName: string;
  204. text?: string;
  205. version: number;
  206. modifiedTime?: Date;
  207. projectReference?: {
  208. /**
  209. * Undefined here means we’ve already checked and confirmed there is no
  210. * project reference for the file. Don’t bother checking again.
  211. */
  212. project?: typescript.ResolvedProjectReference;
  213. outputFileName?: string;
  214. };
  215. }
  216. /** where key is filepath */
  217. export type TSFiles = Map<FilePathKey, TSFile>;
  218. export interface ResolvedModule {
  219. originalFileName: string;
  220. resolvedFileName: string;
  221. resolvedModule?: ResolvedModule;
  222. isExternalLibraryImport?: boolean;
  223. }
  224. export interface TSCommon {
  225. resolveTypeReferenceDirective(typeReferenceDirectiveName: string, containingFile: string | undefined, options: typescript.CompilerOptions, host: typescript.ModuleResolutionHost, redirectedReference?: typescript.ResolvedProjectReference, cache?: typescript.TypeReferenceDirectiveResolutionCache, resolutionMode?: typescript.SourceFile['impliedNodeFormat']): typescript.ResolvedTypeReferenceDirectiveWithFailedLookupLocations;
  226. }
  227. /**
  228. * Compiler APIs we use that are marked internal and not included in TypeScript's public API declarations
  229. * @internal
  230. */
  231. export interface TSInternal {
  232. getModeForFileReference?: (ref: typescript.FileReference | string, containingFileMode: typescript.SourceFile['impliedNodeFormat']) => typescript.SourceFile['impliedNodeFormat'];
  233. }
  234. export type Severity = 'error' | 'warning';
  235. export {};
  236. //# sourceMappingURL=interfaces.d.ts.map