mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-10-28 16:36:04 +08:00
[api] Generate optional protocol properties with | undefined so we can stop doing silly spreads to satisfy exactOptionalPropertyTypes (#64245)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
1 parent
8ab4504767
commit
248cd7ff15
6 files changed
+329
-344
No files matched your search
@@ -218,8 +218,8 @@ export interface TranspileOptions {
|
||||
|
||||
export interface TranspileOutput {
|
||||
outputText: string;
|
||||
diagnostics?: readonly Diagnostic[];
|
||||
sourceMapText?: string;
|
||||
diagnostics?: readonly Diagnostic[] | undefined;
|
||||
sourceMapText?: string | undefined;
|
||||
}
|
||||
|
||||
// @sync-only-start
|
||||
@@ -515,8 +515,8 @@ export class API<FromLSP extends boolean = false> implements FormatDiagnosticsHo
|
||||
const data: CreateProgramResponse = await this.client.apiRequest("createProgram", {
|
||||
rootFiles,
|
||||
createProgramOptions,
|
||||
...(oldProgram ? { oldProgram: { snapshot: oldProgram.snapshotId, project: oldProgram.getProject().id } } : {}),
|
||||
...(fileChanges ? { fileChanges } : {}),
|
||||
oldProgram: oldProgram ? { snapshot: oldProgram.snapshotId, project: oldProgram.getProject().id } : undefined,
|
||||
fileChanges,
|
||||
});
|
||||
if (!data.project) {
|
||||
throw new Error("createProgram did not return a project");
|
||||
@@ -1116,8 +1116,8 @@ export class LanguageService {
|
||||
project: this.project.id,
|
||||
file: document,
|
||||
position,
|
||||
...(options?.triggerCharacter !== undefined ? { triggerCharacter: options.triggerCharacter } : {}),
|
||||
...(options?.includeSymbol !== undefined ? { includeSymbol: options.includeSymbol } : {}),
|
||||
triggerCharacter: options?.triggerCharacter,
|
||||
includeSymbol: options?.includeSymbol,
|
||||
});
|
||||
if (!data) return undefined;
|
||||
return {
|
||||
@@ -1324,7 +1324,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = await this.client.apiRequest("getSyntacticDiagnostics", {
|
||||
snapshot: this.snapshotId,
|
||||
project: this.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
}
|
||||
@@ -1340,7 +1340,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = await this.client.apiRequest("getBindDiagnostics", {
|
||||
snapshot: this.snapshotId,
|
||||
project: this.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
}
|
||||
@@ -1356,7 +1356,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = await this.client.apiRequest("getSemanticDiagnostics", {
|
||||
snapshot: this.snapshotId,
|
||||
project: this.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
}
|
||||
@@ -1372,7 +1372,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = await this.client.apiRequest("getSuggestionDiagnostics", {
|
||||
snapshot: this.snapshotId,
|
||||
project: this.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
}
|
||||
@@ -1388,7 +1388,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = await this.client.apiRequest("getDeclarationDiagnostics", {
|
||||
snapshot: this.snapshotId,
|
||||
project: this.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
}
|
||||
@@ -1435,7 +1435,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const response = await this.client.apiRequest("emit", {
|
||||
snapshot: this.snapshotId,
|
||||
project: this.project.id,
|
||||
...(emitOnly !== undefined ? { emitOnly } : {}),
|
||||
emitOnly,
|
||||
});
|
||||
const fileSystem = response.emittedFilesContents.length
|
||||
? {
|
||||
@@ -1458,7 +1458,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const response = await this.client.apiRequest("emitToString", {
|
||||
snapshot: this.snapshotId,
|
||||
project: this.project.id,
|
||||
...(emitOnly !== undefined ? { emitOnly } : {}),
|
||||
emitOnly,
|
||||
});
|
||||
return toEmitOutput(response);
|
||||
}
|
||||
@@ -1741,14 +1741,10 @@ export class Checker {
|
||||
project: this.project.id,
|
||||
name,
|
||||
meaning,
|
||||
...(isNode ? { location: getNodeId(location as Node) } : {}),
|
||||
...(!isNode && location
|
||||
? {
|
||||
file: (location as DocumentPosition).document,
|
||||
position: (location as DocumentPosition).position,
|
||||
}
|
||||
: {}),
|
||||
...(excludeGlobals !== undefined ? { excludeGlobals } : {}),
|
||||
location: isNode ? getNodeId(location as Node) : undefined,
|
||||
file: !isNode && location ? (location as DocumentPosition).document : undefined,
|
||||
position: !isNode && location ? (location as DocumentPosition).position : undefined,
|
||||
excludeGlobals,
|
||||
});
|
||||
return data ? this.objectRegistry.getOrCreateSymbol(data) : undefined;
|
||||
}
|
||||
@@ -1763,12 +1759,9 @@ export class Checker {
|
||||
snapshot: this.snapshotId,
|
||||
project: this.project.id,
|
||||
meaning,
|
||||
...(isNode
|
||||
? { location: getNodeId(location as Node) }
|
||||
: {
|
||||
file: (location as DocumentPosition).document,
|
||||
position: (location as DocumentPosition).position,
|
||||
}),
|
||||
location: isNode ? getNodeId(location as Node) : undefined,
|
||||
file: isNode ? undefined : (location as DocumentPosition).document,
|
||||
position: isNode ? undefined : (location as DocumentPosition).position,
|
||||
});
|
||||
return data ? data.map(d => this.objectRegistry.getOrCreateSymbol(d)) : [];
|
||||
}
|
||||
@@ -1932,8 +1925,8 @@ export class Checker {
|
||||
snapshot: this.snapshotId,
|
||||
project: this.project.id,
|
||||
type: type.id,
|
||||
...(enclosingDeclaration ? { location: getNodeId(enclosingDeclaration) } : {}),
|
||||
...(flags !== undefined ? { flags } : {}),
|
||||
location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
|
||||
flags,
|
||||
});
|
||||
if (!binaryData) return undefined;
|
||||
return decodeNode(binaryData) as TypeNode;
|
||||
@@ -1945,8 +1938,8 @@ export class Checker {
|
||||
project: this.project.id,
|
||||
signature: signature.id,
|
||||
kind,
|
||||
...(enclosingDeclaration ? { location: getNodeId(enclosingDeclaration) } : {}),
|
||||
...(flags !== undefined ? { flags } : {}),
|
||||
location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
|
||||
flags,
|
||||
});
|
||||
if (!binaryData) return undefined;
|
||||
return decodeNode(binaryData) as Node;
|
||||
@@ -1957,8 +1950,8 @@ export class Checker {
|
||||
snapshot: this.snapshotId,
|
||||
project: this.project.id,
|
||||
type: type.id,
|
||||
...(enclosingDeclaration ? { location: getNodeId(enclosingDeclaration) } : {}),
|
||||
...(flags !== undefined ? { flags } : {}),
|
||||
location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
|
||||
flags,
|
||||
});
|
||||
if (typeof result !== "string") throw new TypeError("typeToString returned a non-string result");
|
||||
return result;
|
||||
@@ -2296,9 +2289,9 @@ export class Emitter {
|
||||
const base64 = uint8ArrayToBase64(encoded);
|
||||
return this.client.apiRequest("printNode", {
|
||||
data: base64,
|
||||
...(options.preserveSourceNewlines !== undefined ? { preserveSourceNewlines: options.preserveSourceNewlines } : {}),
|
||||
...(options.neverAsciiEscape !== undefined ? { neverAsciiEscape: options.neverAsciiEscape } : {}),
|
||||
...(options.terminateUnterminatedLiterals !== undefined ? { terminateUnterminatedLiterals: options.terminateUnterminatedLiterals } : {}),
|
||||
preserveSourceNewlines: options.preserveSourceNewlines,
|
||||
neverAsciiEscape: options.neverAsciiEscape,
|
||||
terminateUnterminatedLiterals: options.terminateUnterminatedLiterals,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,13 +170,13 @@ export interface ReleaseParams {
|
||||
|
||||
export interface BatchRequestsParams {
|
||||
requests: readonly BatchRequest[] | null;
|
||||
continuationToken?: string;
|
||||
maxResponseBytesPerPage?: number;
|
||||
continuationToken?: string | undefined;
|
||||
maxResponseBytesPerPage?: number | undefined;
|
||||
}
|
||||
|
||||
export interface BatchRequestsResponse {
|
||||
responses: BatchResponse[];
|
||||
continuationToken?: string;
|
||||
continuationToken?: string | undefined;
|
||||
}
|
||||
|
||||
/** InitializeResponse is returned by the initialize method. */
|
||||
@@ -196,25 +196,25 @@ export interface UpdateSnapshotParams {
|
||||
* Snapshot, when set, requires this to be the latest active snapshot and layers
|
||||
* FileSystem over that snapshot's filesystem. Used by Snapshot.update.
|
||||
*/
|
||||
snapshot?: number;
|
||||
snapshot?: number | undefined;
|
||||
/**
|
||||
* OpenProjects lists tsconfig.json files to open/load in the new snapshot.
|
||||
* Opens are ref-counted and persist across snapshots until closed.
|
||||
*/
|
||||
openProjects?: readonly DocumentIdentifier[];
|
||||
openProjects?: readonly DocumentIdentifier[] | undefined;
|
||||
/**
|
||||
* CloseProjects lists tsconfig.json files to release in the new snapshot.
|
||||
* A project is only unloaded once every API client that opened it closes it.
|
||||
*/
|
||||
closeProjects?: readonly DocumentIdentifier[];
|
||||
closeProjects?: readonly DocumentIdentifier[] | undefined;
|
||||
/** FileChanges describes file system changes since the last snapshot. */
|
||||
fileChanges?: APIFileChanges;
|
||||
fileChanges?: APIFileChanges | undefined;
|
||||
/**
|
||||
* FileSystem supplies file contents and directory listings for the new snapshot.
|
||||
* A full filesystem is canonical and total. A filesystem layer is checked
|
||||
* before falling back to the host filesystem.
|
||||
*/
|
||||
fileSystem?: RequestFileSystem;
|
||||
fileSystem?: RequestFileSystem | undefined;
|
||||
/**
|
||||
* OpenFiles lists files to keep open for the API client, mirroring LSP's
|
||||
* textDocument/didOpen. For each file, ancestor directories are searched for a
|
||||
@@ -223,12 +223,12 @@ export interface UpdateSnapshotParams {
|
||||
* inferred project (e.g. a node_modules d.ts not in any project's import graph).
|
||||
* Opens persist across snapshots until the file is closed.
|
||||
*/
|
||||
openFiles?: readonly DocumentIdentifier[];
|
||||
openFiles?: readonly DocumentIdentifier[] | undefined;
|
||||
/**
|
||||
* CloseFiles lists files to release in the new snapshot. A file is only fully
|
||||
* closed once every API client that opened it closes it.
|
||||
*/
|
||||
closeFiles?: readonly DocumentIdentifier[];
|
||||
closeFiles?: readonly DocumentIdentifier[] | undefined;
|
||||
}
|
||||
|
||||
/** UpdateSnapshotResponse is returned by updateSnapshot. */
|
||||
@@ -241,7 +241,7 @@ export interface UpdateSnapshotResponse {
|
||||
* Changes describes source file differences from the previous snapshot.
|
||||
* Nil for the first snapshot in a session.
|
||||
*/
|
||||
changes?: SnapshotChanges;
|
||||
changes?: SnapshotChanges | undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -260,8 +260,8 @@ export interface UpdateTemporarySnapshotParams {
|
||||
export interface CreateProgramParams {
|
||||
rootFiles: readonly DocumentIdentifier[] | null;
|
||||
createProgramOptions: CreateProgramOptions;
|
||||
oldProgram?: CreateProgramOldProgramParams;
|
||||
fileChanges?: APIFileChanges;
|
||||
oldProgram?: CreateProgramOldProgramParams | undefined;
|
||||
fileChanges?: APIFileChanges | undefined;
|
||||
}
|
||||
|
||||
export interface CreateProgramResponse {
|
||||
@@ -276,10 +276,10 @@ export interface ParseCommandLineParams {
|
||||
export interface ConfigFileResponse {
|
||||
fileNames: string[];
|
||||
options: CompilerOptions;
|
||||
projectReferences?: ProjectReference[];
|
||||
typeAcquisition?: TypeAcquisition;
|
||||
compileOnSave?: boolean;
|
||||
raw?: unknown;
|
||||
projectReferences?: ProjectReference[] | undefined;
|
||||
typeAcquisition?: TypeAcquisition | undefined;
|
||||
compileOnSave?: boolean | undefined;
|
||||
raw?: unknown | undefined;
|
||||
errors: DiagnosticResponse[];
|
||||
}
|
||||
|
||||
@@ -289,13 +289,13 @@ export interface ReadConfigFileParams {
|
||||
|
||||
export interface ReadConfigFileResponse {
|
||||
config: unknown;
|
||||
error?: DiagnosticResponse;
|
||||
error?: DiagnosticResponse | undefined;
|
||||
}
|
||||
|
||||
export interface ParseJsonConfigFileContentParams {
|
||||
json: unknown;
|
||||
configDirectory?: string;
|
||||
configFileName?: DocumentIdentifier;
|
||||
configDirectory?: string | undefined;
|
||||
configFileName?: DocumentIdentifier | undefined;
|
||||
}
|
||||
|
||||
export interface ParseConfigFileParams {
|
||||
@@ -309,8 +309,8 @@ export interface TranspileParams {
|
||||
|
||||
export interface TranspileOutputResponse {
|
||||
outputText: string;
|
||||
diagnostics?: DiagnosticResponse[];
|
||||
sourceMapText?: string;
|
||||
diagnostics?: DiagnosticResponse[] | undefined;
|
||||
sourceMapText?: string | undefined;
|
||||
}
|
||||
|
||||
export interface TranspileFromFileParams {
|
||||
@@ -351,10 +351,10 @@ export interface SymbolResponse {
|
||||
name: string;
|
||||
flags: number;
|
||||
checkFlags: number;
|
||||
declarations?: string[];
|
||||
valueDeclaration?: string;
|
||||
parent?: number;
|
||||
exportSymbol?: number;
|
||||
declarations?: string[] | undefined;
|
||||
valueDeclaration?: string | undefined;
|
||||
parent?: number | undefined;
|
||||
exportSymbol?: number | undefined;
|
||||
}
|
||||
|
||||
export interface GetSymbolsAtPositionsParams {
|
||||
@@ -397,47 +397,47 @@ export interface GetTypeOfSymbolParams {
|
||||
export interface TypeResponse {
|
||||
id: number;
|
||||
flags: number;
|
||||
objectFlags?: number;
|
||||
isTupleType?: boolean;
|
||||
objectFlags?: number | undefined;
|
||||
isTupleType?: boolean | undefined;
|
||||
/**
|
||||
* Value is literal type data. BigInt literals are encoded as signed decimal
|
||||
* strings because JSON cannot represent bigint; absent values are null.
|
||||
*/
|
||||
value: unknown;
|
||||
/** ObjectType / TypeReference / StringMappingType / IndexType target */
|
||||
target?: number;
|
||||
target?: number | undefined;
|
||||
/** InterfaceType type parameters */
|
||||
typeParameters?: number[];
|
||||
outerTypeParameters?: number[];
|
||||
localTypeParameters?: number[];
|
||||
typeParameters?: number[] | undefined;
|
||||
outerTypeParameters?: number[] | undefined;
|
||||
localTypeParameters?: number[] | undefined;
|
||||
/** TupleType data */
|
||||
elementFlags?: number[];
|
||||
fixedLength?: number;
|
||||
readonly?: boolean;
|
||||
labeledElementDeclarations?: string[];
|
||||
elementFlags?: number[] | undefined;
|
||||
fixedLength?: number | undefined;
|
||||
readonly?: boolean | undefined;
|
||||
labeledElementDeclarations?: string[] | undefined;
|
||||
/** IndexedAccessType data */
|
||||
objectType?: number;
|
||||
indexType?: number;
|
||||
objectType?: number | undefined;
|
||||
indexType?: number | undefined;
|
||||
/** ConditionalType data */
|
||||
checkType?: number;
|
||||
extendsType?: number;
|
||||
checkType?: number | undefined;
|
||||
extendsType?: number | undefined;
|
||||
/** SubstitutionType data */
|
||||
baseType?: number;
|
||||
substConstraint?: number;
|
||||
baseType?: number | undefined;
|
||||
substConstraint?: number | undefined;
|
||||
/** TemplateLiteralType text segments */
|
||||
texts?: string[];
|
||||
texts?: string[] | undefined;
|
||||
/** FreshableType data (LiteralType and computed enum types) */
|
||||
freshType?: number;
|
||||
regularType?: number;
|
||||
freshType?: number | undefined;
|
||||
regularType?: number | undefined;
|
||||
/** TypeParameter data */
|
||||
isThisType?: boolean;
|
||||
isThisType?: boolean | undefined;
|
||||
/** IntrinsicType data */
|
||||
intrinsicName?: string;
|
||||
intrinsicName?: string | undefined;
|
||||
/** TypeAlias data */
|
||||
aliasTypeArguments?: number[];
|
||||
aliasSymbol?: number;
|
||||
aliasTypeArguments?: number[] | undefined;
|
||||
aliasSymbol?: number | undefined;
|
||||
/** Symbol associated with structured types */
|
||||
symbol?: number;
|
||||
symbol?: number | undefined;
|
||||
}
|
||||
|
||||
export interface GetTypesOfSymbolsParams {
|
||||
@@ -486,15 +486,15 @@ export interface ResolveNameParams {
|
||||
project: string;
|
||||
name: string;
|
||||
/** Optional: node handle for location context */
|
||||
location?: string;
|
||||
location?: string | undefined;
|
||||
/** Optional: file for location context (alternative to Location) */
|
||||
file?: DocumentIdentifier;
|
||||
file?: DocumentIdentifier | undefined;
|
||||
/** Optional: position in file for location context (with File) */
|
||||
position?: number;
|
||||
position?: number | undefined;
|
||||
/** SymbolFlags for what kind of symbol to find */
|
||||
meaning: number;
|
||||
/** Whether to exclude global symbols */
|
||||
excludeGlobals?: boolean;
|
||||
excludeGlobals?: boolean | undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -505,11 +505,11 @@ export interface GetSymbolsInScopeParams {
|
||||
snapshot: number;
|
||||
project: string;
|
||||
/** Optional: node handle for location context */
|
||||
location?: string;
|
||||
location?: string | undefined;
|
||||
/** Optional: file for location context (alternative to Location) */
|
||||
file?: DocumentIdentifier;
|
||||
file?: DocumentIdentifier | undefined;
|
||||
/** Optional: position in file for location context (with File) */
|
||||
position?: number;
|
||||
position?: number | undefined;
|
||||
/** SymbolFlags for what kind of symbols to find */
|
||||
meaning: number;
|
||||
}
|
||||
@@ -524,11 +524,11 @@ export interface GetSignaturesOfTypeParams {
|
||||
export interface SignatureResponse {
|
||||
id: number;
|
||||
flags: number;
|
||||
declaration?: string;
|
||||
typeParameters?: number[];
|
||||
parameters?: number[];
|
||||
thisParameter?: number;
|
||||
target?: number;
|
||||
declaration?: string | undefined;
|
||||
typeParameters?: number[] | undefined;
|
||||
parameters?: number[] | undefined;
|
||||
thisParameter?: number | undefined;
|
||||
target?: number | undefined;
|
||||
}
|
||||
|
||||
export interface GetResolvedSignatureParams {
|
||||
@@ -648,8 +648,8 @@ export interface TypeToTypeNodeParams {
|
||||
snapshot: number;
|
||||
project: string;
|
||||
type: number;
|
||||
location?: string;
|
||||
flags?: number;
|
||||
location?: string | undefined;
|
||||
flags?: number | undefined;
|
||||
}
|
||||
|
||||
/** SignatureToSignatureDeclarationParams are the parameters for the signatureToSignatureDeclaration method. */
|
||||
@@ -658,8 +658,8 @@ export interface SignatureToSignatureDeclarationParams {
|
||||
project: string;
|
||||
signature: number;
|
||||
kind: number;
|
||||
location?: string;
|
||||
flags?: number;
|
||||
location?: string | undefined;
|
||||
flags?: number | undefined;
|
||||
}
|
||||
|
||||
/** CheckerSignatureParams are parameters for checker methods that operate on a signature. */
|
||||
@@ -673,8 +673,8 @@ export interface CheckerSignatureParams {
|
||||
export interface TypePredicateResponse {
|
||||
kind: number;
|
||||
parameterIndex: number;
|
||||
parameterName?: string;
|
||||
type?: TypeResponse;
|
||||
parameterName?: string | undefined;
|
||||
type?: TypeResponse | undefined;
|
||||
}
|
||||
|
||||
/** CheckerTypeParams are parameters for checker methods that operate on a type. */
|
||||
@@ -696,8 +696,8 @@ export interface GetPropertyOfTypeParams {
|
||||
export interface IndexInfoResponse {
|
||||
keyType: TypeResponse;
|
||||
valueType: TypeResponse;
|
||||
isReadonly?: boolean;
|
||||
declaration?: string;
|
||||
isReadonly?: boolean | undefined;
|
||||
declaration?: string | undefined;
|
||||
}
|
||||
|
||||
export interface GetImportAdderEditsParams {
|
||||
@@ -741,7 +741,7 @@ export interface GetMemberInModuleExportsParams {
|
||||
*/
|
||||
export interface JSDocTagInfo {
|
||||
name: string;
|
||||
text?: string;
|
||||
text?: string | undefined;
|
||||
}
|
||||
|
||||
/** GetReferencesToSymbolInFileParams are the parameters for the getReferencesToSymbolInFile method. */
|
||||
@@ -763,7 +763,7 @@ export interface GetReferencedSymbolsForNodeParams {
|
||||
/** ReferencedSymbolEntry represents a symbol definition and its references. */
|
||||
export interface ReferencedSymbolEntry {
|
||||
definition: string;
|
||||
symbol?: SymbolResponse;
|
||||
symbol?: SymbolResponse | undefined;
|
||||
references: string[];
|
||||
}
|
||||
|
||||
@@ -777,7 +777,7 @@ export interface GetSignatureUsagesParams {
|
||||
/** SignatureUsageResponse represents a single usage of a signature as a name-call pair. */
|
||||
export interface SignatureUsageResponse {
|
||||
name: string;
|
||||
call?: string;
|
||||
call?: string | undefined;
|
||||
}
|
||||
|
||||
/** GetCompletionsAtPositionParams are the parameters for the getCompletionsAtPosition method. */
|
||||
@@ -786,8 +786,8 @@ export interface GetCompletionsAtPositionParams {
|
||||
project: string;
|
||||
file: DocumentIdentifier;
|
||||
position: number;
|
||||
triggerCharacter?: string;
|
||||
includeSymbol?: boolean;
|
||||
triggerCharacter?: string | undefined;
|
||||
includeSymbol?: boolean | undefined;
|
||||
}
|
||||
|
||||
/** CompletionInfoResponse wraps a list of completion entries. */
|
||||
@@ -800,48 +800,48 @@ export interface CompletionInfoResponse {
|
||||
export interface GetDiagnosticsParams {
|
||||
snapshot: number;
|
||||
project: string;
|
||||
files?: readonly DocumentIdentifier[];
|
||||
files?: readonly DocumentIdentifier[] | undefined;
|
||||
}
|
||||
|
||||
/** DiagnosticResponse is the API response for a single diagnostic. */
|
||||
export interface DiagnosticResponse {
|
||||
/** FileName is the path of the file this diagnostic belongs to, if any. */
|
||||
fileName?: string;
|
||||
fileName?: string | undefined;
|
||||
/** Pos is the start position of the diagnostic in the source file. */
|
||||
pos: number;
|
||||
/** End is the end position of the diagnostic in the source file. */
|
||||
end: number;
|
||||
/** StartPosition is the zero-based line and UTF-16 character position of Pos. */
|
||||
startPosition?: DiagnosticPositionResponse;
|
||||
startPosition?: DiagnosticPositionResponse | undefined;
|
||||
/** EndPosition is the zero-based line and UTF-16 character position of End. */
|
||||
endPosition?: DiagnosticPositionResponse;
|
||||
endPosition?: DiagnosticPositionResponse | undefined;
|
||||
/** SourceLines contains the source lines needed to render this diagnostic with context. */
|
||||
sourceLines?: DiagnosticSourceLineResponse[];
|
||||
sourceLines?: DiagnosticSourceLineResponse[] | undefined;
|
||||
/** Code is the diagnostic error code. */
|
||||
code: number;
|
||||
/** Category is the diagnostic category (error, warning, suggestion, message). */
|
||||
category: number;
|
||||
/** Source is a custom diagnostic-code prefix. An empty value uses the default "TS". */
|
||||
source?: string;
|
||||
source?: string | undefined;
|
||||
/** Text is the localized diagnostic message text. */
|
||||
text: string;
|
||||
/** ReportsUnnecessary indicates this diagnostic highlights unnecessary code. */
|
||||
reportsUnnecessary?: boolean;
|
||||
reportsUnnecessary?: boolean | undefined;
|
||||
/** ReportsDeprecated indicates this diagnostic highlights deprecated code. */
|
||||
reportsDeprecated?: boolean;
|
||||
reportsDeprecated?: boolean | undefined;
|
||||
/** MessageChain contains chained diagnostic messages, if any. */
|
||||
messageChain?: DiagnosticResponse[];
|
||||
messageChain?: DiagnosticResponse[] | undefined;
|
||||
/** RelatedInformation contains related diagnostic information, if any. */
|
||||
relatedInformation?: DiagnosticResponse[];
|
||||
relatedInformation?: DiagnosticResponse[] | undefined;
|
||||
}
|
||||
|
||||
/** PrintNodeParams are the parameters for the printNode method. */
|
||||
export interface PrintNodeParams {
|
||||
/** base64-encoded binary AST data */
|
||||
data: string;
|
||||
preserveSourceNewlines?: boolean;
|
||||
neverAsciiEscape?: boolean;
|
||||
terminateUnterminatedLiterals?: boolean;
|
||||
preserveSourceNewlines?: boolean | undefined;
|
||||
neverAsciiEscape?: boolean | undefined;
|
||||
terminateUnterminatedLiterals?: boolean | undefined;
|
||||
}
|
||||
|
||||
/** FormatNodeForInsertionParams are the parameters for the formatNodeForInsertion method. */
|
||||
@@ -859,7 +859,7 @@ export interface FormatNodeForInsertionParams {
|
||||
export interface EmitParams {
|
||||
snapshot: number;
|
||||
project: string;
|
||||
emitOnly?: number;
|
||||
emitOnly?: number | undefined;
|
||||
}
|
||||
|
||||
export interface EmitResponse {
|
||||
@@ -1063,7 +1063,7 @@ export interface BatchRequest {
|
||||
| "typeToTypeNode"
|
||||
| "updateSnapshot"
|
||||
| "updateTemporarySnapshot";
|
||||
params?: unknown;
|
||||
params?: unknown | undefined;
|
||||
}
|
||||
|
||||
export interface BatchResponse {
|
||||
@@ -1211,7 +1211,7 @@ export interface BatchResponse {
|
||||
| "updateSnapshot"
|
||||
| "updateTemporarySnapshot";
|
||||
result: unknown;
|
||||
error?: string;
|
||||
error?: string | undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1220,10 +1220,10 @@ export interface BatchResponse {
|
||||
* list individual documents.
|
||||
*/
|
||||
export interface APIFileChanges {
|
||||
invalidateAll?: boolean;
|
||||
changed?: DocumentIdentifier[];
|
||||
created?: DocumentIdentifier[];
|
||||
deleted?: DocumentIdentifier[];
|
||||
invalidateAll?: boolean | undefined;
|
||||
changed?: DocumentIdentifier[] | undefined;
|
||||
created?: DocumentIdentifier[] | undefined;
|
||||
deleted?: DocumentIdentifier[] | undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1235,14 +1235,14 @@ export interface RequestFileSystem {
|
||||
/** Files maps file names to their complete contents. */
|
||||
files: Record<string, string>;
|
||||
/** Directories maps directory names to complete listing results. */
|
||||
directories?: Record<string, RequestDirectoryEntries>;
|
||||
directories?: Record<string, RequestDirectoryEntries> | undefined;
|
||||
/** Symlinks maps link paths to targets in this filesystem or the host filesystem. */
|
||||
symlinks?: Record<string, RequestSymlink>;
|
||||
symlinks?: Record<string, RequestSymlink> | undefined;
|
||||
/**
|
||||
* RemovedPaths lists files or directory trees that must be treated as missing
|
||||
* even when present in an underlying snapshot or host filesystem.
|
||||
*/
|
||||
removedPaths?: string[];
|
||||
removedPaths?: string[] | undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1255,129 +1255,129 @@ export interface SnapshotChanges {
|
||||
* ChangedProjects maps project handles to the file changes within that project.
|
||||
* Projects not listed here (and not in RemovedProjects) are unchanged.
|
||||
*/
|
||||
changedProjects?: Record<string, ProjectFileChanges | null>;
|
||||
changedProjects?: Record<string, ProjectFileChanges | null> | undefined;
|
||||
/**
|
||||
* RemovedProjects lists project handles that were present in the previous
|
||||
* snapshot but absent from the new one.
|
||||
*/
|
||||
removedProjects?: string[];
|
||||
removedProjects?: string[] | undefined;
|
||||
}
|
||||
|
||||
export interface CreateProgramOptions {
|
||||
compilerOptions: CompilerOptions;
|
||||
projectReferences?: ProjectReference[];
|
||||
configFileParsingDiagnostics?: DiagnosticResponse[];
|
||||
projectReferences?: ProjectReference[] | undefined;
|
||||
configFileParsingDiagnostics?: DiagnosticResponse[] | undefined;
|
||||
}
|
||||
|
||||
export interface CreateProgramOldProgramParams {
|
||||
snapshot?: number;
|
||||
project?: string;
|
||||
snapshot?: number | undefined;
|
||||
project?: string | undefined;
|
||||
}
|
||||
|
||||
/** CompilerOptions contains the compiler options exposed by the API. */
|
||||
export interface CompilerOptions {
|
||||
allowJs?: boolean;
|
||||
allowArbitraryExtensions?: boolean;
|
||||
allowImportingTsExtensions?: boolean;
|
||||
allowNonTsExtensions?: boolean;
|
||||
allowUmdGlobalAccess?: boolean;
|
||||
allowUnreachableCode?: boolean;
|
||||
allowUnusedLabels?: boolean;
|
||||
assumeChangesOnlyAffectDirectDependencies?: boolean;
|
||||
checkJs?: boolean;
|
||||
customConditions?: string[];
|
||||
composite?: boolean;
|
||||
emitDeclarationOnly?: boolean;
|
||||
emitBOM?: boolean;
|
||||
emitDecoratorMetadata?: boolean;
|
||||
declaration?: boolean;
|
||||
declarationDir?: string;
|
||||
declarationMap?: boolean;
|
||||
deduplicatePackages?: boolean;
|
||||
disableSizeLimit?: boolean;
|
||||
disableSourceOfProjectReferenceRedirect?: boolean;
|
||||
disableSolutionSearching?: boolean;
|
||||
disableReferencedProjectLoad?: boolean;
|
||||
erasableSyntaxOnly?: boolean;
|
||||
exactOptionalPropertyTypes?: boolean;
|
||||
experimentalDecorators?: boolean;
|
||||
forceConsistentCasingInFileNames?: boolean;
|
||||
isolatedModules?: boolean;
|
||||
isolatedDeclarations?: boolean;
|
||||
ignoreConfig?: boolean;
|
||||
ignoreDeprecations?: string;
|
||||
importHelpers?: boolean;
|
||||
inlineSourceMap?: boolean;
|
||||
inlineSources?: boolean;
|
||||
init?: boolean;
|
||||
incremental?: boolean;
|
||||
jsx?: JsxEmit;
|
||||
jsxFactory?: string;
|
||||
jsxFragmentFactory?: string;
|
||||
jsxImportSource?: string;
|
||||
lib?: string[];
|
||||
libReplacement?: boolean;
|
||||
locale?: string;
|
||||
mapRoot?: string;
|
||||
module?: ModuleKind;
|
||||
moduleResolution?: ModuleResolutionKind;
|
||||
moduleSuffixes?: string[];
|
||||
moduleDetection?: ModuleDetectionKind;
|
||||
newLine?: NewLineKind;
|
||||
noEmit?: boolean;
|
||||
noCheck?: boolean;
|
||||
noErrorTruncation?: boolean;
|
||||
noFallthroughCasesInSwitch?: boolean;
|
||||
noImplicitAny?: boolean;
|
||||
noImplicitThis?: boolean;
|
||||
noImplicitReturns?: boolean;
|
||||
noEmitHelpers?: boolean;
|
||||
noLib?: boolean;
|
||||
noPropertyAccessFromIndexSignature?: boolean;
|
||||
noUncheckedIndexedAccess?: boolean;
|
||||
noEmitOnError?: boolean;
|
||||
noUnusedLocals?: boolean;
|
||||
noUnusedParameters?: boolean;
|
||||
noResolve?: boolean;
|
||||
noImplicitOverride?: boolean;
|
||||
noUncheckedSideEffectImports?: boolean;
|
||||
outDir?: string;
|
||||
paths?: Record<string, string[]>;
|
||||
preserveConstEnums?: boolean;
|
||||
preserveSymlinks?: boolean;
|
||||
project?: string;
|
||||
resolveJsonModule?: boolean;
|
||||
resolvePackageJsonExports?: boolean;
|
||||
resolvePackageJsonImports?: boolean;
|
||||
removeComments?: boolean;
|
||||
rewriteRelativeImportExtensions?: boolean;
|
||||
reactNamespace?: string;
|
||||
rootDir?: string;
|
||||
rootDirs?: string[];
|
||||
skipLibCheck?: boolean;
|
||||
stableTypeOrdering?: boolean;
|
||||
strict?: boolean;
|
||||
strictBindCallApply?: boolean;
|
||||
strictBuiltinIteratorReturn?: boolean;
|
||||
strictFunctionTypes?: boolean;
|
||||
strictNullChecks?: boolean;
|
||||
strictPropertyInitialization?: boolean;
|
||||
stripInternal?: boolean;
|
||||
skipDefaultLibCheck?: boolean;
|
||||
sourceMap?: boolean;
|
||||
sourceRoot?: string;
|
||||
suppressOutputPathCheck?: boolean;
|
||||
target?: ScriptTarget;
|
||||
traceResolution?: boolean;
|
||||
tsBuildInfoFile?: string;
|
||||
typeRoots?: string[];
|
||||
types?: string[];
|
||||
useDefineForClassFields?: boolean;
|
||||
useUnknownInCatchVariables?: boolean;
|
||||
verbatimModuleSyntax?: boolean;
|
||||
maxNodeModuleJsDepth?: number;
|
||||
allowJs?: boolean | undefined;
|
||||
allowArbitraryExtensions?: boolean | undefined;
|
||||
allowImportingTsExtensions?: boolean | undefined;
|
||||
allowNonTsExtensions?: boolean | undefined;
|
||||
allowUmdGlobalAccess?: boolean | undefined;
|
||||
allowUnreachableCode?: boolean | undefined;
|
||||
allowUnusedLabels?: boolean | undefined;
|
||||
assumeChangesOnlyAffectDirectDependencies?: boolean | undefined;
|
||||
checkJs?: boolean | undefined;
|
||||
customConditions?: string[] | undefined;
|
||||
composite?: boolean | undefined;
|
||||
emitDeclarationOnly?: boolean | undefined;
|
||||
emitBOM?: boolean | undefined;
|
||||
emitDecoratorMetadata?: boolean | undefined;
|
||||
declaration?: boolean | undefined;
|
||||
declarationDir?: string | undefined;
|
||||
declarationMap?: boolean | undefined;
|
||||
deduplicatePackages?: boolean | undefined;
|
||||
disableSizeLimit?: boolean | undefined;
|
||||
disableSourceOfProjectReferenceRedirect?: boolean | undefined;
|
||||
disableSolutionSearching?: boolean | undefined;
|
||||
disableReferencedProjectLoad?: boolean | undefined;
|
||||
erasableSyntaxOnly?: boolean | undefined;
|
||||
exactOptionalPropertyTypes?: boolean | undefined;
|
||||
experimentalDecorators?: boolean | undefined;
|
||||
forceConsistentCasingInFileNames?: boolean | undefined;
|
||||
isolatedModules?: boolean | undefined;
|
||||
isolatedDeclarations?: boolean | undefined;
|
||||
ignoreConfig?: boolean | undefined;
|
||||
ignoreDeprecations?: string | undefined;
|
||||
importHelpers?: boolean | undefined;
|
||||
inlineSourceMap?: boolean | undefined;
|
||||
inlineSources?: boolean | undefined;
|
||||
init?: boolean | undefined;
|
||||
incremental?: boolean | undefined;
|
||||
jsx?: JsxEmit | undefined;
|
||||
jsxFactory?: string | undefined;
|
||||
jsxFragmentFactory?: string | undefined;
|
||||
jsxImportSource?: string | undefined;
|
||||
lib?: string[] | undefined;
|
||||
libReplacement?: boolean | undefined;
|
||||
locale?: string | undefined;
|
||||
mapRoot?: string | undefined;
|
||||
module?: ModuleKind | undefined;
|
||||
moduleResolution?: ModuleResolutionKind | undefined;
|
||||
moduleSuffixes?: string[] | undefined;
|
||||
moduleDetection?: ModuleDetectionKind | undefined;
|
||||
newLine?: NewLineKind | undefined;
|
||||
noEmit?: boolean | undefined;
|
||||
noCheck?: boolean | undefined;
|
||||
noErrorTruncation?: boolean | undefined;
|
||||
noFallthroughCasesInSwitch?: boolean | undefined;
|
||||
noImplicitAny?: boolean | undefined;
|
||||
noImplicitThis?: boolean | undefined;
|
||||
noImplicitReturns?: boolean | undefined;
|
||||
noEmitHelpers?: boolean | undefined;
|
||||
noLib?: boolean | undefined;
|
||||
noPropertyAccessFromIndexSignature?: boolean | undefined;
|
||||
noUncheckedIndexedAccess?: boolean | undefined;
|
||||
noEmitOnError?: boolean | undefined;
|
||||
noUnusedLocals?: boolean | undefined;
|
||||
noUnusedParameters?: boolean | undefined;
|
||||
noResolve?: boolean | undefined;
|
||||
noImplicitOverride?: boolean | undefined;
|
||||
noUncheckedSideEffectImports?: boolean | undefined;
|
||||
outDir?: string | undefined;
|
||||
paths?: Record<string, string[]> | undefined;
|
||||
preserveConstEnums?: boolean | undefined;
|
||||
preserveSymlinks?: boolean | undefined;
|
||||
project?: string | undefined;
|
||||
resolveJsonModule?: boolean | undefined;
|
||||
resolvePackageJsonExports?: boolean | undefined;
|
||||
resolvePackageJsonImports?: boolean | undefined;
|
||||
removeComments?: boolean | undefined;
|
||||
rewriteRelativeImportExtensions?: boolean | undefined;
|
||||
reactNamespace?: string | undefined;
|
||||
rootDir?: string | undefined;
|
||||
rootDirs?: string[] | undefined;
|
||||
skipLibCheck?: boolean | undefined;
|
||||
stableTypeOrdering?: boolean | undefined;
|
||||
strict?: boolean | undefined;
|
||||
strictBindCallApply?: boolean | undefined;
|
||||
strictBuiltinIteratorReturn?: boolean | undefined;
|
||||
strictFunctionTypes?: boolean | undefined;
|
||||
strictNullChecks?: boolean | undefined;
|
||||
strictPropertyInitialization?: boolean | undefined;
|
||||
stripInternal?: boolean | undefined;
|
||||
skipDefaultLibCheck?: boolean | undefined;
|
||||
sourceMap?: boolean | undefined;
|
||||
sourceRoot?: string | undefined;
|
||||
suppressOutputPathCheck?: boolean | undefined;
|
||||
target?: ScriptTarget | undefined;
|
||||
traceResolution?: boolean | undefined;
|
||||
tsBuildInfoFile?: string | undefined;
|
||||
typeRoots?: string[] | undefined;
|
||||
types?: string[] | undefined;
|
||||
useDefineForClassFields?: boolean | undefined;
|
||||
useUnknownInCatchVariables?: boolean | undefined;
|
||||
verbatimModuleSyntax?: boolean | undefined;
|
||||
maxNodeModuleJsDepth?: number | undefined;
|
||||
/** Internal fields */
|
||||
configFilePath?: string;
|
||||
configFilePath?: string | undefined;
|
||||
}
|
||||
|
||||
export interface ProjectReference {
|
||||
@@ -1390,34 +1390,34 @@ export interface ProjectReference {
|
||||
}
|
||||
|
||||
export interface TypeAcquisition {
|
||||
enable?: boolean;
|
||||
include?: string[];
|
||||
exclude?: string[];
|
||||
disableFilenameBasedTypeAcquisition?: boolean;
|
||||
enable?: boolean | undefined;
|
||||
include?: string[] | undefined;
|
||||
exclude?: string[] | undefined;
|
||||
disableFilenameBasedTypeAcquisition?: boolean | undefined;
|
||||
}
|
||||
|
||||
export interface TranspileOptions {
|
||||
compilerOptions?: CompilerOptions;
|
||||
fileName?: string;
|
||||
reportDiagnostics?: boolean;
|
||||
compilerOptions?: CompilerOptions | undefined;
|
||||
fileName?: string | undefined;
|
||||
reportDiagnostics?: boolean | undefined;
|
||||
}
|
||||
|
||||
export interface ImportAdderAction {
|
||||
kind: "importSymbol";
|
||||
symbol?: number;
|
||||
isValidTypeOnlyUseSite?: boolean;
|
||||
symbol?: number | undefined;
|
||||
isValidTypeOnlyUseSite?: boolean | undefined;
|
||||
}
|
||||
|
||||
/** CompletionEntryResponse represents a single completion item. */
|
||||
export interface CompletionEntryResponse {
|
||||
name: string;
|
||||
kind?: number;
|
||||
sortText?: string;
|
||||
insertText?: string;
|
||||
filterText?: string;
|
||||
detail?: string;
|
||||
labelDetails?: CompletionEntryLabelDetailsResponse;
|
||||
symbol?: SymbolResponse;
|
||||
kind?: number | undefined;
|
||||
sortText?: string | undefined;
|
||||
insertText?: string | undefined;
|
||||
filterText?: string | undefined;
|
||||
detail?: string | undefined;
|
||||
labelDetails?: CompletionEntryLabelDetailsResponse | undefined;
|
||||
symbol?: SymbolResponse | undefined;
|
||||
}
|
||||
|
||||
export interface DiagnosticPositionResponse {
|
||||
@@ -1433,7 +1433,7 @@ export interface DiagnosticSourceLineResponse {
|
||||
export interface EmitOutputFile {
|
||||
fileName: string;
|
||||
text: string;
|
||||
sourceFileName?: string;
|
||||
sourceFileName?: string | undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1456,19 +1456,19 @@ export interface RequestSymlink {
|
||||
* Host routes the target through the host filesystem. This is the only way a
|
||||
* full filesystem can access paths not supplied in the request filesystem.
|
||||
*/
|
||||
host?: boolean;
|
||||
host?: boolean | undefined;
|
||||
}
|
||||
|
||||
/** ProjectFileChanges describes what source files changed within a single project. */
|
||||
export interface ProjectFileChanges {
|
||||
/** ChangedFiles lists source file paths whose content differs. */
|
||||
changedFiles?: string[];
|
||||
changedFiles?: string[] | undefined;
|
||||
/** DeletedFiles lists source file paths removed from the project's program. */
|
||||
deletedFiles?: string[];
|
||||
deletedFiles?: string[] | undefined;
|
||||
}
|
||||
|
||||
/** CompletionEntryLabelDetailsResponse holds additional label display text for a completion entry. */
|
||||
export interface CompletionEntryLabelDetailsResponse {
|
||||
detail?: string;
|
||||
description?: string;
|
||||
detail?: string | undefined;
|
||||
description?: string | undefined;
|
||||
}
|
||||
@@ -115,7 +115,7 @@ export function toUpdateSnapshotRequest(params?: UpdateSnapshotParams, snapshot?
|
||||
: openProjects;
|
||||
return {
|
||||
...rest,
|
||||
...(snapshot !== undefined ? { snapshot } : {}),
|
||||
...(mergedOpenProjects !== undefined ? { openProjects: mergedOpenProjects } : {}),
|
||||
snapshot,
|
||||
openProjects: mergedOpenProjects,
|
||||
};
|
||||
}
|
||||
@@ -235,8 +235,8 @@ export interface TranspileOptions {
|
||||
|
||||
export interface TranspileOutput {
|
||||
outputText: string;
|
||||
diagnostics?: readonly Diagnostic[];
|
||||
sourceMapText?: string;
|
||||
diagnostics?: readonly Diagnostic[] | undefined;
|
||||
sourceMapText?: string | undefined;
|
||||
}
|
||||
|
||||
export { all, type AllAPIRequestGenerator, type AnyAPIRequestGenerator, type APIRequestGenerator, defer, type DeferredAPIRequestGenerator, type ExecutedGeneratorsResults } from "./generatorSupport.ts";
|
||||
@@ -879,8 +879,8 @@ export class API<FromLSP extends boolean = false> implements FormatDiagnosticsHo
|
||||
const data: CreateProgramResponse = owner.client.apiRequest("createProgram", {
|
||||
rootFiles,
|
||||
createProgramOptions,
|
||||
...(oldProgram ? { oldProgram: { snapshot: oldProgram.snapshotId, project: oldProgram.getProject().id } } : {}),
|
||||
...(fileChanges ? { fileChanges } : {}),
|
||||
oldProgram: oldProgram ? { snapshot: oldProgram.snapshotId, project: oldProgram.getProject().id } : undefined,
|
||||
fileChanges,
|
||||
});
|
||||
if (!data.project) {
|
||||
throw new Error("createProgram did not return a project");
|
||||
@@ -914,8 +914,8 @@ export class API<FromLSP extends boolean = false> implements FormatDiagnosticsHo
|
||||
const data: CreateProgramResponse = yield* apiRequest("createProgram", {
|
||||
rootFiles,
|
||||
createProgramOptions,
|
||||
...(oldProgram ? { oldProgram: { snapshot: oldProgram.snapshotId, project: oldProgram.getProject().id } } : {}),
|
||||
...(fileChanges ? { fileChanges } : {}),
|
||||
oldProgram: oldProgram ? { snapshot: oldProgram.snapshotId, project: oldProgram.getProject().id } : undefined,
|
||||
fileChanges,
|
||||
});
|
||||
if (!data.project) {
|
||||
throw new Error("createProgram did not return a project");
|
||||
@@ -2088,8 +2088,8 @@ export class LanguageService {
|
||||
project: owner.project.id,
|
||||
file: document,
|
||||
position,
|
||||
...(options?.triggerCharacter !== undefined ? { triggerCharacter: options.triggerCharacter } : {}),
|
||||
...(options?.includeSymbol !== undefined ? { includeSymbol: options.includeSymbol } : {}),
|
||||
triggerCharacter: options?.triggerCharacter,
|
||||
includeSymbol: options?.includeSymbol,
|
||||
});
|
||||
if (!data) return undefined;
|
||||
return {
|
||||
@@ -2106,8 +2106,8 @@ export class LanguageService {
|
||||
project: owner.project.id,
|
||||
file: document,
|
||||
position,
|
||||
...(options?.triggerCharacter !== undefined ? { triggerCharacter: options.triggerCharacter } : {}),
|
||||
...(options?.includeSymbol !== undefined ? { includeSymbol: options.includeSymbol } : {}),
|
||||
triggerCharacter: options?.triggerCharacter,
|
||||
includeSymbol: options?.includeSymbol,
|
||||
});
|
||||
if (!data) return undefined;
|
||||
return {
|
||||
@@ -2523,7 +2523,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = owner.client.apiRequest("getSyntacticDiagnostics", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
},
|
||||
@@ -2534,7 +2534,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = yield* apiRequest("getSyntacticDiagnostics", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
},
|
||||
@@ -2560,7 +2560,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = owner.client.apiRequest("getBindDiagnostics", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
},
|
||||
@@ -2571,7 +2571,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = yield* apiRequest("getBindDiagnostics", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
},
|
||||
@@ -2597,7 +2597,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = owner.client.apiRequest("getSemanticDiagnostics", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
},
|
||||
@@ -2608,7 +2608,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = yield* apiRequest("getSemanticDiagnostics", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
},
|
||||
@@ -2634,7 +2634,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = owner.client.apiRequest("getSuggestionDiagnostics", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
},
|
||||
@@ -2645,7 +2645,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = yield* apiRequest("getSuggestionDiagnostics", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
},
|
||||
@@ -2671,7 +2671,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = owner.client.apiRequest("getDeclarationDiagnostics", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
},
|
||||
@@ -2682,7 +2682,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const data = yield* apiRequest("getDeclarationDiagnostics", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(files !== undefined ? { files } : {}),
|
||||
files,
|
||||
});
|
||||
return data ?? [];
|
||||
},
|
||||
@@ -2790,7 +2790,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const response = owner.client.apiRequest("emit", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(emitOnly !== undefined ? { emitOnly } : {}),
|
||||
emitOnly,
|
||||
});
|
||||
const fileSystem = response.emittedFilesContents.length
|
||||
? {
|
||||
@@ -2809,7 +2809,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const response = yield* apiRequest("emit", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(emitOnly !== undefined ? { emitOnly } : {}),
|
||||
emitOnly,
|
||||
});
|
||||
const fileSystem = response.emittedFilesContents.length
|
||||
? {
|
||||
@@ -2842,7 +2842,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const response = owner.client.apiRequest("emitToString", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(emitOnly !== undefined ? { emitOnly } : {}),
|
||||
emitOnly,
|
||||
});
|
||||
return toEmitOutput(response);
|
||||
},
|
||||
@@ -2850,7 +2850,7 @@ export class Program implements FormatDiagnosticsHost {
|
||||
const response = yield* apiRequest("emitToString", {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
...(emitOnly !== undefined ? { emitOnly } : {}),
|
||||
emitOnly,
|
||||
});
|
||||
return toEmitOutput(response);
|
||||
},
|
||||
@@ -3465,14 +3465,10 @@ export class Checker {
|
||||
project: owner.project.id,
|
||||
name,
|
||||
meaning,
|
||||
...(isNode ? { location: getNodeId(location as Node) } : {}),
|
||||
...(!isNode && location
|
||||
? {
|
||||
file: (location as DocumentPosition).document,
|
||||
position: (location as DocumentPosition).position,
|
||||
}
|
||||
: {}),
|
||||
...(excludeGlobals !== undefined ? { excludeGlobals } : {}),
|
||||
location: isNode ? getNodeId(location as Node) : undefined,
|
||||
file: !isNode && location ? (location as DocumentPosition).document : undefined,
|
||||
position: !isNode && location ? (location as DocumentPosition).position : undefined,
|
||||
excludeGlobals,
|
||||
});
|
||||
return data ? owner.objectRegistry.getOrCreateSymbol(data) : undefined;
|
||||
},
|
||||
@@ -3484,14 +3480,10 @@ export class Checker {
|
||||
project: owner.project.id,
|
||||
name,
|
||||
meaning,
|
||||
...(isNode ? { location: getNodeId(location as Node) } : {}),
|
||||
...(!isNode && location
|
||||
? {
|
||||
file: (location as DocumentPosition).document,
|
||||
position: (location as DocumentPosition).position,
|
||||
}
|
||||
: {}),
|
||||
...(excludeGlobals !== undefined ? { excludeGlobals } : {}),
|
||||
location: isNode ? getNodeId(location as Node) : undefined,
|
||||
file: !isNode && location ? (location as DocumentPosition).document : undefined,
|
||||
position: !isNode && location ? (location as DocumentPosition).position : undefined,
|
||||
excludeGlobals,
|
||||
});
|
||||
return data ? owner.objectRegistry.getOrCreateSymbol(data) : undefined;
|
||||
},
|
||||
@@ -3516,12 +3508,9 @@ export class Checker {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
meaning,
|
||||
...(isNode
|
||||
? { location: getNodeId(location as Node) }
|
||||
: {
|
||||
file: (location as DocumentPosition).document,
|
||||
position: (location as DocumentPosition).position,
|
||||
}),
|
||||
location: isNode ? getNodeId(location as Node) : undefined,
|
||||
file: isNode ? undefined : (location as DocumentPosition).document,
|
||||
position: isNode ? undefined : (location as DocumentPosition).position,
|
||||
});
|
||||
return data ? data.map(d => owner.objectRegistry.getOrCreateSymbol(d)) : [];
|
||||
},
|
||||
@@ -3532,12 +3521,9 @@ export class Checker {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
meaning,
|
||||
...(isNode
|
||||
? { location: getNodeId(location as Node) }
|
||||
: {
|
||||
file: (location as DocumentPosition).document,
|
||||
position: (location as DocumentPosition).position,
|
||||
}),
|
||||
location: isNode ? getNodeId(location as Node) : undefined,
|
||||
file: isNode ? undefined : (location as DocumentPosition).document,
|
||||
position: isNode ? undefined : (location as DocumentPosition).position,
|
||||
});
|
||||
return data ? data.map(d => owner.objectRegistry.getOrCreateSymbol(d)) : [];
|
||||
},
|
||||
@@ -4075,8 +4061,8 @@ export class Checker {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
type: type.id,
|
||||
...(enclosingDeclaration ? { location: getNodeId(enclosingDeclaration) } : {}),
|
||||
...(flags !== undefined ? { flags } : {}),
|
||||
location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
|
||||
flags,
|
||||
});
|
||||
if (!binaryData) return undefined;
|
||||
return decodeNode(binaryData) as TypeNode;
|
||||
@@ -4086,8 +4072,8 @@ export class Checker {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
type: type.id,
|
||||
...(enclosingDeclaration ? { location: getNodeId(enclosingDeclaration) } : {}),
|
||||
...(flags !== undefined ? { flags } : {}),
|
||||
location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
|
||||
flags,
|
||||
});
|
||||
if (!binaryData) return undefined;
|
||||
return decodeNode(binaryData) as TypeNode;
|
||||
@@ -4109,8 +4095,8 @@ export class Checker {
|
||||
project: owner.project.id,
|
||||
signature: signature.id,
|
||||
kind,
|
||||
...(enclosingDeclaration ? { location: getNodeId(enclosingDeclaration) } : {}),
|
||||
...(flags !== undefined ? { flags } : {}),
|
||||
location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
|
||||
flags,
|
||||
});
|
||||
if (!binaryData) return undefined;
|
||||
return decodeNode(binaryData) as Node;
|
||||
@@ -4121,8 +4107,8 @@ export class Checker {
|
||||
project: owner.project.id,
|
||||
signature: signature.id,
|
||||
kind,
|
||||
...(enclosingDeclaration ? { location: getNodeId(enclosingDeclaration) } : {}),
|
||||
...(flags !== undefined ? { flags } : {}),
|
||||
location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
|
||||
flags,
|
||||
});
|
||||
if (!binaryData) return undefined;
|
||||
return decodeNode(binaryData) as Node;
|
||||
@@ -4143,8 +4129,8 @@ export class Checker {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
type: type.id,
|
||||
...(enclosingDeclaration ? { location: getNodeId(enclosingDeclaration) } : {}),
|
||||
...(flags !== undefined ? { flags } : {}),
|
||||
location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
|
||||
flags,
|
||||
});
|
||||
if (typeof result !== "string") throw new TypeError("typeToString returned a non-string result");
|
||||
return result;
|
||||
@@ -4154,8 +4140,8 @@ export class Checker {
|
||||
snapshot: owner.snapshotId,
|
||||
project: owner.project.id,
|
||||
type: type.id,
|
||||
...(enclosingDeclaration ? { location: getNodeId(enclosingDeclaration) } : {}),
|
||||
...(flags !== undefined ? { flags } : {}),
|
||||
location: enclosingDeclaration ? getNodeId(enclosingDeclaration) : undefined,
|
||||
flags,
|
||||
});
|
||||
if (typeof result !== "string") throw new TypeError("typeToString returned a non-string result");
|
||||
return result;
|
||||
@@ -5065,9 +5051,9 @@ export class Emitter {
|
||||
const base64 = uint8ArrayToBase64(encoded);
|
||||
return owner.client.apiRequest("printNode", {
|
||||
data: base64,
|
||||
...(options.preserveSourceNewlines !== undefined ? { preserveSourceNewlines: options.preserveSourceNewlines } : {}),
|
||||
...(options.neverAsciiEscape !== undefined ? { neverAsciiEscape: options.neverAsciiEscape } : {}),
|
||||
...(options.terminateUnterminatedLiterals !== undefined ? { terminateUnterminatedLiterals: options.terminateUnterminatedLiterals } : {}),
|
||||
preserveSourceNewlines: options.preserveSourceNewlines,
|
||||
neverAsciiEscape: options.neverAsciiEscape,
|
||||
terminateUnterminatedLiterals: options.terminateUnterminatedLiterals,
|
||||
});
|
||||
},
|
||||
function* (node: Node, options: PrintNodeOptions = {}): Generator<ProtocolRequest, string, ProtocolResponse["result"]> {
|
||||
@@ -5075,9 +5061,9 @@ export class Emitter {
|
||||
const base64 = uint8ArrayToBase64(encoded);
|
||||
return yield* apiRequest("printNode", {
|
||||
data: base64,
|
||||
...(options.preserveSourceNewlines !== undefined ? { preserveSourceNewlines: options.preserveSourceNewlines } : {}),
|
||||
...(options.neverAsciiEscape !== undefined ? { neverAsciiEscape: options.neverAsciiEscape } : {}),
|
||||
...(options.terminateUnterminatedLiterals !== undefined ? { terminateUnterminatedLiterals: options.terminateUnterminatedLiterals } : {}),
|
||||
preserveSourceNewlines: options.preserveSourceNewlines,
|
||||
neverAsciiEscape: options.neverAsciiEscape,
|
||||
terminateUnterminatedLiterals: options.terminateUnterminatedLiterals,
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
@@ -570,6 +570,9 @@ func (r *typeRenderer) inlineStruct(structType *types.Struct) string {
|
||||
continue
|
||||
}
|
||||
fieldType := r.typeString(structType.Field(i).Type(), !optional && !nonnil)
|
||||
if optional {
|
||||
fieldType += " | undefined"
|
||||
}
|
||||
doc := r.docs[structType.Field(i)]
|
||||
multiline = multiline || doc != ""
|
||||
fields = append(fields, fmt.Sprintf("%s%s%s: %s", inlineDoc(doc), propertyName(field), optionalMarker(optional), fieldType))
|
||||
@@ -613,6 +616,9 @@ func (r *typeRenderer) declarations() (string, error) {
|
||||
if isParams && isArrayType(structType.Field(i).Type()) {
|
||||
fieldType = "readonly " + fieldType
|
||||
}
|
||||
if optional {
|
||||
fieldType += " | undefined"
|
||||
}
|
||||
writeDoc(&out, " ", r.docs[structType.Field(i)])
|
||||
fmt.Fprintf(&out, " %s%s: %s;\n", propertyName(field), optionalMarker(optional), fieldType)
|
||||
}
|
||||
|
||||
@@ -31,23 +31,23 @@ func TestGenerate(t *testing.T) {
|
||||
`export type DocumentIdentifier = string | { uri: string; };`,
|
||||
`export interface ReleaseParams`,
|
||||
`export interface UpdateSnapshotParams`,
|
||||
`openProjects?: readonly DocumentIdentifier[];`,
|
||||
`openProjects?: readonly DocumentIdentifier[] | undefined;`,
|
||||
`snapshot: number;`,
|
||||
`file: DocumentIdentifier;`,
|
||||
`jsx?: JsxEmit;`,
|
||||
`module?: ModuleKind;`,
|
||||
`moduleResolution?: ModuleResolutionKind;`,
|
||||
`moduleDetection?: ModuleDetectionKind;`,
|
||||
`newLine?: NewLineKind;`,
|
||||
`paths?: Record<string, string[]>;`,
|
||||
`target?: ScriptTarget;`,
|
||||
`jsx?: JsxEmit | undefined;`,
|
||||
`module?: ModuleKind | undefined;`,
|
||||
`moduleResolution?: ModuleResolutionKind | undefined;`,
|
||||
`moduleDetection?: ModuleDetectionKind | undefined;`,
|
||||
`newLine?: NewLineKind | undefined;`,
|
||||
`paths?: Record<string, string[]> | undefined;`,
|
||||
`target?: ScriptTarget | undefined;`,
|
||||
`/** InitializeResponse is returned by the initialize method. */
|
||||
export interface InitializeResponse`,
|
||||
`/** UseCaseSensitiveFileNames indicates whether the host file system is case-sensitive. */
|
||||
useCaseSensitiveFileNames: boolean;`,
|
||||
`/** CompilerOptions contains the compiler options exposed by the API. */
|
||||
export interface CompilerOptions`,
|
||||
`projectReferences?: ProjectReference[];`,
|
||||
`projectReferences?: ProjectReference[] | undefined;`,
|
||||
`errors: DiagnosticResponse[];`,
|
||||
`getSymbolsAtPositions: APIMethod<GetSymbolsAtPositionsParams, SymbolResponse[]>;`,
|
||||
`getContextualType: APIMethod<GetContextualTypeParams, TypeResponse | null>;`,
|
||||
|
||||
Reference in new issue
Block a user