@@ -79,6 +79,14 @@ declare namespace ts {
7979 readonly kind: EventEndInstallTypes;
8080 readonly installSuccess: boolean;
8181 }
82+ interface InstallTypingHost extends JsTyping.TypingResolutionHost {
83+ useCaseSensitiveFileNames: boolean;
84+ writeFile(path: string, content: string): void;
85+ createDirectory(path: string): void;
86+ getCurrentDirectory?(): string;
87+ watchFile?(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher;
88+ watchDirectory?(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher;
89+ }
8290 interface SetTypings extends ProjectResponse {
8391 readonly typeAcquisition: TypeAcquisition;
8492 readonly compilerOptions: CompilerOptions;
@@ -2965,6 +2973,54 @@ declare namespace ts {
29652973 bigintLiteral = 25
29662974 }
29672975 }
2976+ namespace typingsInstaller {
2977+ interface Log {
2978+ isEnabled(): boolean;
2979+ writeLine(text: string): void;
2980+ }
2981+ type RequestCompletedAction = (success: boolean) => void;
2982+ interface PendingRequest {
2983+ requestId: number;
2984+ packageNames: string[];
2985+ cwd: string;
2986+ onRequestCompleted: RequestCompletedAction;
2987+ }
2988+ abstract class TypingsInstaller {
2989+ protected readonly installTypingHost: InstallTypingHost;
2990+ private readonly globalCachePath;
2991+ private readonly safeListPath;
2992+ private readonly typesMapLocation;
2993+ private readonly throttleLimit;
2994+ protected readonly log: Log;
2995+ private readonly packageNameToTypingLocation;
2996+ private readonly missingTypingsSet;
2997+ private readonly knownCachesSet;
2998+ private readonly projectWatchers;
2999+ private safeList;
3000+ private readonly toCanonicalFileName;
3001+ private readonly globalCachePackageJsonPath;
3002+ private installRunCount;
3003+ private inFlightRequestCount;
3004+ abstract readonly typesRegistry: Map<string, MapLike<string>>;
3005+ constructor(installTypingHost: InstallTypingHost, globalCachePath: string, safeListPath: Path, typesMapLocation: Path, throttleLimit: number, log?: Log);
3006+ closeProject(req: CloseProject): void;
3007+ private closeWatchers;
3008+ install(req: DiscoverTypings): void;
3009+ private initializeSafeList;
3010+ private processCacheLocation;
3011+ private filterTypings;
3012+ protected ensurePackageDirectoryExists(directory: string): void;
3013+ private installTypings;
3014+ private ensureDirectoryExists;
3015+ private watchFiles;
3016+ private createSetTypings;
3017+ private installTypingsAsync;
3018+ private executeWithThrottling;
3019+ protected abstract installWorker(requestId: number, packageNames: string[], cwd: string, onRequestCompleted: RequestCompletedAction): void;
3020+ protected abstract sendResponse(response: SetTypings | InvalidateCachedTypings | BeginInstallTypes | EndInstallTypes): void;
3021+ protected readonly latestDistTag = "latest";
3022+ }
3023+ }
29683024 interface CompressedData {
29693025 length: number;
29703026 compressionKind: string;
@@ -9790,6 +9846,14 @@ declare namespace ts {
97909846 emit(writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): EmitResult | BuildInvalidedProject<T> | undefined;
97919847 }
97929848 type InvalidatedProject<T extends BuilderProgram> = UpdateOutputFileStampsProject | BuildInvalidedProject<T> | UpdateBundleProject<T>;
9849+ namespace JsTyping {
9850+ interface TypingResolutionHost {
9851+ directoryExists(path: string): boolean;
9852+ fileExists(fileName: string): boolean;
9853+ readFile(path: string, encoding?: string): string | undefined;
9854+ readDirectory(rootDir: string, extensions: readonly string[], excludes: readonly string[] | undefined, includes: readonly string[] | undefined, depth?: number): string[];
9855+ }
9856+ }
97939857 function getDefaultFormatCodeSettings(newLineCharacter?: string): FormatCodeSettings;
97949858 /**
97959859 * Represents an immutable snapshot of a script at a specified time.Once acquired, the
0 commit comments