Skip to content

Commit 07ed201

Browse files
committed
export TypingsInstaller from tsserverlibrary
1 parent 79a414b commit 07ed201

File tree

7 files changed

+85
-3
lines changed

7 files changed

+85
-3
lines changed

src/jsTyping/jsTyping.ts

-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ import {
3131
versionMajorMinor,
3232
} from "./_namespaces/ts";
3333

34-
/** @internal */
3534
export interface TypingResolutionHost {
3635
directoryExists(path: string): boolean;
3736
fileExists(fileName: string): boolean;

src/jsTyping/types.ts

-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@ export interface EndInstallTypes extends InstallTypes {
9999
readonly installSuccess: boolean;
100100
}
101101

102-
/** @internal */
103102
export interface InstallTypingHost extends JsTyping.TypingResolutionHost {
104103
useCaseSensitiveFileNames: boolean;
105104
writeFile(path: string, content: string): void;

src/server/_namespaces/ts.server.ts

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/* Generated file to emulate the ts.server namespace. */
22

33
export * from "../../jsTyping/_namespaces/ts.server";
4+
export * from "../../typingsInstallerCore/_namespaces/ts.server";
45
export * from "../types";
56
export * from "../utilitiesPublic";
67
export * from "../utilities";

src/server/tsconfig.json

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"references": [
99
{ "path": "../compiler" },
1010
{ "path": "../jsTyping" },
11+
{ "path": "../typingsInstallerCore" },
1112
{ "path": "../services" },
1213
{ "path": "../deprecatedCompat" }
1314
],

src/typingsInstallerCore/typingsInstaller.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,8 @@ export function getNpmCommandForInstallation(npmPath: string, tsVersion: string,
107107
}
108108

109109
export type RequestCompletedAction = (success: boolean) => void;
110-
interface PendingRequest {
110+
111+
export interface PendingRequest {
111112
requestId: number;
112113
packageNames: string[];
113114
cwd: string;

tests/baselines/reference/api/tsserverlibrary.d.ts

+65
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,70 @@ 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;
8593
readonly typings: string[];
8694
readonly unresolvedImports: SortedReadonlyArray<string>;
8795
readonly kind: ActionSet;
8896
}
97+
namespace typingsInstaller {
98+
interface Log {
99+
isEnabled(): boolean;
100+
writeLine(text: string): void;
101+
}
102+
type RequestCompletedAction = (success: boolean) => void;
103+
interface PendingRequest {
104+
requestId: number;
105+
packageNames: string[];
106+
cwd: string;
107+
onRequestCompleted: RequestCompletedAction;
108+
}
109+
abstract class TypingsInstaller {
110+
protected readonly installTypingHost: InstallTypingHost;
111+
private readonly globalCachePath;
112+
private readonly safeListPath;
113+
private readonly typesMapLocation;
114+
private readonly throttleLimit;
115+
protected readonly log: Log;
116+
private readonly packageNameToTypingLocation;
117+
private readonly missingTypingsSet;
118+
private readonly knownCachesSet;
119+
private readonly projectWatchers;
120+
private safeList;
121+
readonly pendingRunRequests: PendingRequest[];
122+
private readonly toCanonicalFileName;
123+
private readonly globalCachePackageJsonPath;
124+
private installRunCount;
125+
private inFlightRequestCount;
126+
abstract readonly typesRegistry: Map<string, MapLike<string>>;
127+
constructor(installTypingHost: InstallTypingHost, globalCachePath: string, safeListPath: Path, typesMapLocation: Path, throttleLimit: number, log?: Log);
128+
closeProject(req: CloseProject): void;
129+
private closeWatchers;
130+
install(req: DiscoverTypings): void;
131+
private initializeSafeList;
132+
private processCacheLocation;
133+
private filterTypings;
134+
protected ensurePackageDirectoryExists(directory: string): void;
135+
private installTypings;
136+
private ensureDirectoryExists;
137+
private watchFiles;
138+
private createSetTypings;
139+
private installTypingsAsync;
140+
private executeWithThrottling;
141+
protected abstract installWorker(requestId: number, packageNames: string[], cwd: string, onRequestCompleted: RequestCompletedAction): void;
142+
protected abstract sendResponse(response: SetTypings | InvalidateCachedTypings | BeginInstallTypes | EndInstallTypes): void;
143+
protected readonly latestDistTag = "latest";
144+
}
145+
}
89146
namespace protocol {
90147
enum CommandTypes {
91148
JsxClosingTag = "jsxClosingTag",
@@ -9789,6 +9846,14 @@ declare namespace ts {
97899846
emit(writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): EmitResult | BuildInvalidedProject<T> | undefined;
97909847
}
97919848
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+
}
97929857
function getDefaultFormatCodeSettings(newLineCharacter?: string): FormatCodeSettings;
97939858
/**
97949859
* Represents an immutable snapshot of a script at a specified time.Once acquired, the

tests/baselines/reference/api/typescript.d.ts

+16
Original file line numberDiff line numberDiff line change
@@ -5846,6 +5846,14 @@ declare namespace ts {
58465846
emit(writeFile?: WriteFileCallback, customTransformers?: CustomTransformers): EmitResult | BuildInvalidedProject<T> | undefined;
58475847
}
58485848
type InvalidatedProject<T extends BuilderProgram> = UpdateOutputFileStampsProject | BuildInvalidedProject<T> | UpdateBundleProject<T>;
5849+
namespace JsTyping {
5850+
interface TypingResolutionHost {
5851+
directoryExists(path: string): boolean;
5852+
fileExists(fileName: string): boolean;
5853+
readFile(path: string, encoding?: string): string | undefined;
5854+
readDirectory(rootDir: string, extensions: readonly string[], excludes: readonly string[] | undefined, includes: readonly string[] | undefined, depth?: number): string[];
5855+
}
5856+
}
58495857
namespace server {
58505858
type ActionSet = "action::set";
58515859
type ActionInvalidate = "action::invalidate";
@@ -5911,6 +5919,14 @@ declare namespace ts {
59115919
readonly kind: EventEndInstallTypes;
59125920
readonly installSuccess: boolean;
59135921
}
5922+
interface InstallTypingHost extends JsTyping.TypingResolutionHost {
5923+
useCaseSensitiveFileNames: boolean;
5924+
writeFile(path: string, content: string): void;
5925+
createDirectory(path: string): void;
5926+
getCurrentDirectory?(): string;
5927+
watchFile?(path: string, callback: FileWatcherCallback, pollingInterval?: number, options?: WatchOptions): FileWatcher;
5928+
watchDirectory?(path: string, callback: DirectoryWatcherCallback, recursive?: boolean, options?: WatchOptions): FileWatcher;
5929+
}
59145930
interface SetTypings extends ProjectResponse {
59155931
readonly typeAcquisition: TypeAcquisition;
59165932
readonly compilerOptions: CompilerOptions;

0 commit comments

Comments
 (0)