Shorten more internal names to JS or TS (#27080)
This commit is contained in:
parent
2b0e9e686b
commit
64d0e0d448
|
@ -2219,7 +2219,7 @@ namespace ts {
|
||||||
const sourceFile = resolvedModule && !resolutionDiagnostic && host.getSourceFile(resolvedModule.resolvedFileName);
|
const sourceFile = resolvedModule && !resolutionDiagnostic && host.getSourceFile(resolvedModule.resolvedFileName);
|
||||||
if (sourceFile) {
|
if (sourceFile) {
|
||||||
if (sourceFile.symbol) {
|
if (sourceFile.symbol) {
|
||||||
if (resolvedModule.isExternalLibraryImport && !extensionIsTypeScript(resolvedModule.extension)) {
|
if (resolvedModule.isExternalLibraryImport && !extensionIsTS(resolvedModule.extension)) {
|
||||||
errorOnImplicitAnyModule(/*isError*/ false, errorNode, resolvedModule, moduleReference);
|
errorOnImplicitAnyModule(/*isError*/ false, errorNode, resolvedModule, moduleReference);
|
||||||
}
|
}
|
||||||
// merged symbol is module declaration symbol combined with all augmentations
|
// merged symbol is module declaration symbol combined with all augmentations
|
||||||
|
@ -2240,7 +2240,7 @@ namespace ts {
|
||||||
}
|
}
|
||||||
|
|
||||||
// May be an untyped module. If so, ignore resolutionDiagnostic.
|
// May be an untyped module. If so, ignore resolutionDiagnostic.
|
||||||
if (resolvedModule && !resolutionExtensionIsTypeScriptOrJson(resolvedModule.extension) && resolutionDiagnostic === undefined || resolutionDiagnostic === Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type) {
|
if (resolvedModule && !resolutionExtensionIsTSOrJson(resolvedModule.extension) && resolutionDiagnostic === undefined || resolutionDiagnostic === Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type) {
|
||||||
if (isForAugmentation) {
|
if (isForAugmentation) {
|
||||||
const diag = Diagnostics.Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augmented;
|
const diag = Diagnostics.Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augmented;
|
||||||
error(errorNode, diag, moduleReference, resolvedModule.resolvedFileName);
|
error(errorNode, diag, moduleReference, resolvedModule.resolvedFileName);
|
||||||
|
@ -2273,7 +2273,7 @@ namespace ts {
|
||||||
error(errorNode, resolutionDiagnostic, moduleReference, resolvedModule.resolvedFileName);
|
error(errorNode, resolutionDiagnostic, moduleReference, resolvedModule.resolvedFileName);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const tsExtension = tryExtractTypeScriptExtension(moduleReference);
|
const tsExtension = tryExtractTSExtension(moduleReference);
|
||||||
if (tsExtension) {
|
if (tsExtension) {
|
||||||
const diag = Diagnostics.An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead;
|
const diag = Diagnostics.An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead;
|
||||||
error(errorNode, diag, tsExtension, removeExtension(moduleReference, tsExtension));
|
error(errorNode, diag, tsExtension, removeExtension(moduleReference, tsExtension));
|
||||||
|
@ -3351,7 +3351,7 @@ namespace ts {
|
||||||
if (symbol) {
|
if (symbol) {
|
||||||
const isConstructorObject = getObjectFlags(type) & ObjectFlags.Anonymous && type.symbol && type.symbol.flags & SymbolFlags.Class;
|
const isConstructorObject = getObjectFlags(type) & ObjectFlags.Anonymous && type.symbol && type.symbol.flags & SymbolFlags.Class;
|
||||||
id = (isConstructorObject ? "+" : "") + getSymbolId(symbol);
|
id = (isConstructorObject ? "+" : "") + getSymbolId(symbol);
|
||||||
if (isJavascriptConstructor(symbol.valueDeclaration)) {
|
if (isJSConstructor(symbol.valueDeclaration)) {
|
||||||
// Instance and static types share the same symbol; only add 'typeof' for the static side.
|
// Instance and static types share the same symbol; only add 'typeof' for the static side.
|
||||||
const isInstanceType = type === getInferredClassType(symbol) ? SymbolFlags.Type : SymbolFlags.Value;
|
const isInstanceType = type === getInferredClassType(symbol) ? SymbolFlags.Type : SymbolFlags.Value;
|
||||||
return symbolToTypeNode(symbol, context, isInstanceType);
|
return symbolToTypeNode(symbol, context, isInstanceType);
|
||||||
|
@ -5563,7 +5563,7 @@ namespace ts {
|
||||||
const constraint = getBaseConstraintOfType(type);
|
const constraint = getBaseConstraintOfType(type);
|
||||||
return !!constraint && isValidBaseType(constraint) && isMixinConstructorType(constraint);
|
return !!constraint && isValidBaseType(constraint) && isMixinConstructorType(constraint);
|
||||||
}
|
}
|
||||||
return isJavascriptConstructorType(type);
|
return isJSConstructorType(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBaseTypeNodeOfClass(type: InterfaceType): ExpressionWithTypeArguments | undefined {
|
function getBaseTypeNodeOfClass(type: InterfaceType): ExpressionWithTypeArguments | undefined {
|
||||||
|
@ -5573,7 +5573,7 @@ namespace ts {
|
||||||
function getConstructorsForTypeArguments(type: Type, typeArgumentNodes: ReadonlyArray<TypeNode> | undefined, location: Node): ReadonlyArray<Signature> {
|
function getConstructorsForTypeArguments(type: Type, typeArgumentNodes: ReadonlyArray<TypeNode> | undefined, location: Node): ReadonlyArray<Signature> {
|
||||||
const typeArgCount = length(typeArgumentNodes);
|
const typeArgCount = length(typeArgumentNodes);
|
||||||
const isJavascript = isInJSFile(location);
|
const isJavascript = isInJSFile(location);
|
||||||
if (isJavascriptConstructorType(type) && !typeArgCount) {
|
if (isJSConstructorType(type) && !typeArgCount) {
|
||||||
return getSignaturesOfType(type, SignatureKind.Call);
|
return getSignaturesOfType(type, SignatureKind.Call);
|
||||||
}
|
}
|
||||||
return filter(getSignaturesOfType(type, SignatureKind.Construct),
|
return filter(getSignaturesOfType(type, SignatureKind.Construct),
|
||||||
|
@ -5668,8 +5668,8 @@ namespace ts {
|
||||||
else if (baseConstructorType.flags & TypeFlags.Any) {
|
else if (baseConstructorType.flags & TypeFlags.Any) {
|
||||||
baseType = baseConstructorType;
|
baseType = baseConstructorType;
|
||||||
}
|
}
|
||||||
else if (isJavascriptConstructorType(baseConstructorType) && !baseTypeNode.typeArguments) {
|
else if (isJSConstructorType(baseConstructorType) && !baseTypeNode.typeArguments) {
|
||||||
baseType = getJavascriptClassType(baseConstructorType.symbol) || anyType;
|
baseType = getJSClassType(baseConstructorType.symbol) || anyType;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// The class derives from a "class-like" constructor function, check that we have at least one construct signature
|
// The class derives from a "class-like" constructor function, check that we have at least one construct signature
|
||||||
|
@ -10176,7 +10176,7 @@ namespace ts {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let outerTypeParameters = getOuterTypeParameters(declaration, /*includeThisTypes*/ true);
|
let outerTypeParameters = getOuterTypeParameters(declaration, /*includeThisTypes*/ true);
|
||||||
if (isJavascriptConstructor(declaration)) {
|
if (isJSConstructor(declaration)) {
|
||||||
const templateTagParameters = getTypeParametersFromDeclaration(declaration as DeclarationWithTypeParameters);
|
const templateTagParameters = getTypeParametersFromDeclaration(declaration as DeclarationWithTypeParameters);
|
||||||
outerTypeParameters = addRange(outerTypeParameters, templateTagParameters);
|
outerTypeParameters = addRange(outerTypeParameters, templateTagParameters);
|
||||||
}
|
}
|
||||||
|
@ -10862,13 +10862,13 @@ namespace ts {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ignoreReturnTypes) {
|
if (!ignoreReturnTypes) {
|
||||||
const targetReturnType = (target.declaration && isJavascriptConstructor(target.declaration)) ?
|
const targetReturnType = (target.declaration && isJSConstructor(target.declaration)) ?
|
||||||
getJavascriptClassType(target.declaration.symbol)! : getReturnTypeOfSignature(target);
|
getJSClassType(target.declaration.symbol)! : getReturnTypeOfSignature(target);
|
||||||
if (targetReturnType === voidType) {
|
if (targetReturnType === voidType) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
const sourceReturnType = (source.declaration && isJavascriptConstructor(source.declaration)) ?
|
const sourceReturnType = (source.declaration && isJSConstructor(source.declaration)) ?
|
||||||
getJavascriptClassType(source.declaration.symbol)! : getReturnTypeOfSignature(source);
|
getJSClassType(source.declaration.symbol)! : getReturnTypeOfSignature(source);
|
||||||
|
|
||||||
// The following block preserves behavior forbidding boolean returning functions from being assignable to type guard returning functions
|
// The following block preserves behavior forbidding boolean returning functions from being assignable to type guard returning functions
|
||||||
const targetTypePredicate = getTypePredicateOfSignature(target);
|
const targetTypePredicate = getTypePredicateOfSignature(target);
|
||||||
|
@ -12132,8 +12132,8 @@ namespace ts {
|
||||||
return Ternary.True;
|
return Ternary.True;
|
||||||
}
|
}
|
||||||
|
|
||||||
const sourceIsJSConstructor = source.symbol && isJavascriptConstructor(source.symbol.valueDeclaration);
|
const sourceIsJSConstructor = source.symbol && isJSConstructor(source.symbol.valueDeclaration);
|
||||||
const targetIsJSConstructor = target.symbol && isJavascriptConstructor(target.symbol.valueDeclaration);
|
const targetIsJSConstructor = target.symbol && isJSConstructor(target.symbol.valueDeclaration);
|
||||||
|
|
||||||
const sourceSignatures = getSignaturesOfType(source, (sourceIsJSConstructor && kind === SignatureKind.Construct) ?
|
const sourceSignatures = getSignaturesOfType(source, (sourceIsJSConstructor && kind === SignatureKind.Construct) ?
|
||||||
SignatureKind.Call : kind);
|
SignatureKind.Call : kind);
|
||||||
|
@ -15821,7 +15821,7 @@ namespace ts {
|
||||||
if (isInJS && className) {
|
if (isInJS && className) {
|
||||||
const classSymbol = checkExpression(className).symbol;
|
const classSymbol = checkExpression(className).symbol;
|
||||||
if (classSymbol && classSymbol.members && (classSymbol.flags & SymbolFlags.Function)) {
|
if (classSymbol && classSymbol.members && (classSymbol.flags & SymbolFlags.Function)) {
|
||||||
const classType = getJavascriptClassType(classSymbol);
|
const classType = getJSClassType(classSymbol);
|
||||||
if (classType) {
|
if (classType) {
|
||||||
return getFlowTypeOfReference(node, classType);
|
return getFlowTypeOfReference(node, classType);
|
||||||
}
|
}
|
||||||
|
@ -15834,7 +15834,7 @@ namespace ts {
|
||||||
else if (isInJS &&
|
else if (isInJS &&
|
||||||
(container.kind === SyntaxKind.FunctionExpression || container.kind === SyntaxKind.FunctionDeclaration) &&
|
(container.kind === SyntaxKind.FunctionExpression || container.kind === SyntaxKind.FunctionDeclaration) &&
|
||||||
getJSDocClassTag(container)) {
|
getJSDocClassTag(container)) {
|
||||||
const classType = getJavascriptClassType(container.symbol);
|
const classType = getJSClassType(container.symbol);
|
||||||
if (classType) {
|
if (classType) {
|
||||||
return getFlowTypeOfReference(node, classType);
|
return getFlowTypeOfReference(node, classType);
|
||||||
}
|
}
|
||||||
|
@ -19851,7 +19851,7 @@ namespace ts {
|
||||||
if (callSignatures.length) {
|
if (callSignatures.length) {
|
||||||
const signature = resolveCall(node, callSignatures, candidatesOutArray, isForSignatureHelp);
|
const signature = resolveCall(node, callSignatures, candidatesOutArray, isForSignatureHelp);
|
||||||
if (!noImplicitAny) {
|
if (!noImplicitAny) {
|
||||||
if (signature.declaration && !isJavascriptConstructor(signature.declaration) && getReturnTypeOfSignature(signature) !== voidType) {
|
if (signature.declaration && !isJSConstructor(signature.declaration) && getReturnTypeOfSignature(signature) !== voidType) {
|
||||||
error(node, Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword);
|
error(node, Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword);
|
||||||
}
|
}
|
||||||
if (getThisTypeOfSignature(signature) === voidType) {
|
if (getThisTypeOfSignature(signature) === voidType) {
|
||||||
|
@ -20134,7 +20134,7 @@ namespace ts {
|
||||||
* Indicates whether a declaration can be treated as a constructor in a JavaScript
|
* Indicates whether a declaration can be treated as a constructor in a JavaScript
|
||||||
* file.
|
* file.
|
||||||
*/
|
*/
|
||||||
function isJavascriptConstructor(node: Declaration | undefined): boolean {
|
function isJSConstructor(node: Declaration | undefined): boolean {
|
||||||
if (node && isInJSFile(node)) {
|
if (node && isInJSFile(node)) {
|
||||||
// If the node has a @class tag, treat it like a constructor.
|
// If the node has a @class tag, treat it like a constructor.
|
||||||
if (getJSDocClassTag(node)) return true;
|
if (getJSDocClassTag(node)) return true;
|
||||||
|
@ -20150,22 +20150,22 @@ namespace ts {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function isJavascriptConstructorType(type: Type) {
|
function isJSConstructorType(type: Type) {
|
||||||
if (type.flags & TypeFlags.Object) {
|
if (type.flags & TypeFlags.Object) {
|
||||||
const resolved = resolveStructuredTypeMembers(<ObjectType>type);
|
const resolved = resolveStructuredTypeMembers(<ObjectType>type);
|
||||||
return resolved.callSignatures.length === 1 && isJavascriptConstructor(resolved.callSignatures[0].declaration);
|
return resolved.callSignatures.length === 1 && isJSConstructor(resolved.callSignatures[0].declaration);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getJavascriptClassType(symbol: Symbol): Type | undefined {
|
function getJSClassType(symbol: Symbol): Type | undefined {
|
||||||
let inferred: Type | undefined;
|
let inferred: Type | undefined;
|
||||||
if (isJavascriptConstructor(symbol.valueDeclaration)) {
|
if (isJSConstructor(symbol.valueDeclaration)) {
|
||||||
inferred = getInferredClassType(symbol);
|
inferred = getInferredClassType(symbol);
|
||||||
}
|
}
|
||||||
const assigned = getAssignedClassType(symbol);
|
const assigned = getAssignedClassType(symbol);
|
||||||
const valueType = getTypeOfSymbol(symbol);
|
const valueType = getTypeOfSymbol(symbol);
|
||||||
if (valueType.symbol && !isInferredClassType(valueType) && isJavascriptConstructor(valueType.symbol.valueDeclaration)) {
|
if (valueType.symbol && !isInferredClassType(valueType) && isJSConstructor(valueType.symbol.valueDeclaration)) {
|
||||||
inferred = getInferredClassType(valueType.symbol);
|
inferred = getInferredClassType(valueType.symbol);
|
||||||
}
|
}
|
||||||
return assigned && inferred ?
|
return assigned && inferred ?
|
||||||
|
@ -20180,14 +20180,14 @@ namespace ts {
|
||||||
isBinaryExpression(decl.parent) && getSymbolOfNode(decl.parent.left) ||
|
isBinaryExpression(decl.parent) && getSymbolOfNode(decl.parent.left) ||
|
||||||
isVariableDeclaration(decl.parent) && getSymbolOfNode(decl.parent));
|
isVariableDeclaration(decl.parent) && getSymbolOfNode(decl.parent));
|
||||||
if (assignmentSymbol) {
|
if (assignmentSymbol) {
|
||||||
const prototype = forEach(assignmentSymbol.declarations, getAssignedJavascriptPrototype);
|
const prototype = forEach(assignmentSymbol.declarations, getAssignedJSPrototype);
|
||||||
if (prototype) {
|
if (prototype) {
|
||||||
return checkExpression(prototype);
|
return checkExpression(prototype);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAssignedJavascriptPrototype(node: Node) {
|
function getAssignedJSPrototype(node: Node) {
|
||||||
if (!node.parent) {
|
if (!node.parent) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -20248,7 +20248,7 @@ namespace ts {
|
||||||
if (!funcSymbol && node.expression.kind === SyntaxKind.Identifier) {
|
if (!funcSymbol && node.expression.kind === SyntaxKind.Identifier) {
|
||||||
funcSymbol = getResolvedSymbol(node.expression as Identifier);
|
funcSymbol = getResolvedSymbol(node.expression as Identifier);
|
||||||
}
|
}
|
||||||
const type = funcSymbol && getJavascriptClassType(funcSymbol);
|
const type = funcSymbol && getJSClassType(funcSymbol);
|
||||||
if (type) {
|
if (type) {
|
||||||
return signature.target ? instantiateType(type, signature.mapper) : type;
|
return signature.target ? instantiateType(type, signature.mapper) : type;
|
||||||
}
|
}
|
||||||
|
@ -20897,7 +20897,7 @@ namespace ts {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
if (strictNullChecks && aggregatedTypes.length && hasReturnWithNoExpression &&
|
if (strictNullChecks && aggregatedTypes.length && hasReturnWithNoExpression &&
|
||||||
!(isJavascriptConstructor(func) && aggregatedTypes.some(t => t.symbol === func.symbol))) {
|
!(isJSConstructor(func) && aggregatedTypes.some(t => t.symbol === func.symbol))) {
|
||||||
// Javascript "callable constructors", containing eg `if (!(this instanceof A)) return new A()` should not add undefined
|
// Javascript "callable constructors", containing eg `if (!(this instanceof A)) return new A()` should not add undefined
|
||||||
pushIfUnique(aggregatedTypes, undefinedType);
|
pushIfUnique(aggregatedTypes, undefinedType);
|
||||||
}
|
}
|
||||||
|
@ -25811,7 +25811,7 @@ namespace ts {
|
||||||
// that the base type is a class or interface type (and not, for example, an anonymous object type).
|
// that the base type is a class or interface type (and not, for example, an anonymous object type).
|
||||||
// (Javascript constructor functions have this property trivially true since their return type is ignored.)
|
// (Javascript constructor functions have this property trivially true since their return type is ignored.)
|
||||||
const constructors = getInstantiatedConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments, baseTypeNode);
|
const constructors = getInstantiatedConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments, baseTypeNode);
|
||||||
if (forEach(constructors, sig => !isJavascriptConstructor(sig.declaration) && getReturnTypeOfSignature(sig) !== baseType)) {
|
if (forEach(constructors, sig => !isJSConstructor(sig.declaration) && getReturnTypeOfSignature(sig) !== baseType)) {
|
||||||
error(baseTypeNode.expression, Diagnostics.Base_constructors_must_all_have_the_same_return_type);
|
error(baseTypeNode.expression, Diagnostics.Base_constructors_must_all_have_the_same_return_type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -192,7 +192,7 @@ namespace ts {
|
||||||
}
|
}
|
||||||
const sourceFiles = isSourceFile(sourceFileOrBundle) ? [sourceFileOrBundle] : sourceFileOrBundle.sourceFiles;
|
const sourceFiles = isSourceFile(sourceFileOrBundle) ? [sourceFileOrBundle] : sourceFileOrBundle.sourceFiles;
|
||||||
// Setup and perform the transformation to retrieve declarations from the input files
|
// Setup and perform the transformation to retrieve declarations from the input files
|
||||||
const nonJsFiles = filter(sourceFiles, isSourceFileNotJavascript);
|
const nonJsFiles = filter(sourceFiles, isSourceFileNotJS);
|
||||||
const inputListOrBundle = (compilerOptions.outFile || compilerOptions.out) ? [createBundle(nonJsFiles, !isSourceFile(sourceFileOrBundle) ? sourceFileOrBundle.prepends : undefined)] : nonJsFiles;
|
const inputListOrBundle = (compilerOptions.outFile || compilerOptions.out) ? [createBundle(nonJsFiles, !isSourceFile(sourceFileOrBundle) ? sourceFileOrBundle.prepends : undefined)] : nonJsFiles;
|
||||||
if (emitOnlyDtsFiles && !getEmitDeclarations(compilerOptions)) {
|
if (emitOnlyDtsFiles && !getEmitDeclarations(compilerOptions)) {
|
||||||
// Checker wont collect the linked aliases since thats only done when declaration is enabled.
|
// Checker wont collect the linked aliases since thats only done when declaration is enabled.
|
||||||
|
|
|
@ -74,7 +74,7 @@ namespace ts {
|
||||||
if (!resolved) {
|
if (!resolved) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
Debug.assert(extensionIsTypeScript(resolved.extension));
|
Debug.assert(extensionIsTS(resolved.extension));
|
||||||
return { fileName: resolved.path, packageId: resolved.packageId };
|
return { fileName: resolved.path, packageId: resolved.packageId };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -778,7 +778,7 @@ namespace ts {
|
||||||
* Throws an error if the module can't be resolved.
|
* Throws an error if the module can't be resolved.
|
||||||
*/
|
*/
|
||||||
/* @internal */
|
/* @internal */
|
||||||
export function resolveJavascriptModule(moduleName: string, initialDir: string, host: ModuleResolutionHost): string {
|
export function resolveJSModule(moduleName: string, initialDir: string, host: ModuleResolutionHost): string {
|
||||||
const { resolvedModule, failedLookupLocations } =
|
const { resolvedModule, failedLookupLocations } =
|
||||||
nodeModuleNameResolverWorker(moduleName, initialDir, { moduleResolution: ModuleResolutionKind.NodeJs, allowJs: true }, host, /*cache*/ undefined, /*jsOnly*/ true);
|
nodeModuleNameResolverWorker(moduleName, initialDir, { moduleResolution: ModuleResolutionKind.NodeJs, allowJs: true }, host, /*cache*/ undefined, /*jsOnly*/ true);
|
||||||
if (!resolvedModule) {
|
if (!resolvedModule) {
|
||||||
|
@ -958,7 +958,7 @@ namespace ts {
|
||||||
|
|
||||||
// If that didn't work, try stripping a ".js" or ".jsx" extension and replacing it with a TypeScript one;
|
// If that didn't work, try stripping a ".js" or ".jsx" extension and replacing it with a TypeScript one;
|
||||||
// e.g. "./foo.js" can be matched by "./foo.ts" or "./foo.d.ts"
|
// e.g. "./foo.js" can be matched by "./foo.ts" or "./foo.d.ts"
|
||||||
if (hasJavascriptFileExtension(candidate)) {
|
if (hasJSFileExtension(candidate)) {
|
||||||
const extensionless = removeFileExtension(candidate);
|
const extensionless = removeFileExtension(candidate);
|
||||||
if (state.traceEnabled) {
|
if (state.traceEnabled) {
|
||||||
const extension = candidate.substring(extensionless.length);
|
const extension = candidate.substring(extensionless.length);
|
||||||
|
@ -1052,7 +1052,7 @@ namespace ts {
|
||||||
const jsPath = readPackageJsonMainField(packageJsonContent, packageDirectory, state);
|
const jsPath = readPackageJsonMainField(packageJsonContent, packageDirectory, state);
|
||||||
if (typeof jsPath === "string" && jsPath.length > packageDirectory.length) {
|
if (typeof jsPath === "string" && jsPath.length > packageDirectory.length) {
|
||||||
const potentialSubModule = jsPath.substring(packageDirectory.length + 1);
|
const potentialSubModule = jsPath.substring(packageDirectory.length + 1);
|
||||||
subModuleName = (forEach(supportedJavascriptExtensions, extension =>
|
subModuleName = (forEach(supportedJSExtensions, extension =>
|
||||||
tryRemoveExtension(potentialSubModule, extension)) || potentialSubModule) + Extension.Dts;
|
tryRemoveExtension(potentialSubModule, extension)) || potentialSubModule) + Extension.Dts;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace ts.moduleSpecifiers {
|
||||||
function getPreferencesForUpdate(compilerOptions: CompilerOptions, oldImportSpecifier: string): Preferences {
|
function getPreferencesForUpdate(compilerOptions: CompilerOptions, oldImportSpecifier: string): Preferences {
|
||||||
return {
|
return {
|
||||||
relativePreference: isExternalModuleNameRelative(oldImportSpecifier) ? RelativePreference.Relative : RelativePreference.NonRelative,
|
relativePreference: isExternalModuleNameRelative(oldImportSpecifier) ? RelativePreference.Relative : RelativePreference.NonRelative,
|
||||||
ending: hasJavascriptOrJsonFileExtension(oldImportSpecifier) ? Ending.JsExtension
|
ending: hasJSOrJsonFileExtension(oldImportSpecifier) ? Ending.JsExtension
|
||||||
: getEmitModuleResolutionKind(compilerOptions) !== ModuleResolutionKind.NodeJs || endsWith(oldImportSpecifier, "index") ? Ending.Index : Ending.Minimal,
|
: getEmitModuleResolutionKind(compilerOptions) !== ModuleResolutionKind.NodeJs || endsWith(oldImportSpecifier, "index") ? Ending.Index : Ending.Minimal,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ namespace ts.moduleSpecifiers {
|
||||||
}
|
}
|
||||||
|
|
||||||
function usesJsExtensionOnImports({ imports }: SourceFile): boolean {
|
function usesJsExtensionOnImports({ imports }: SourceFile): boolean {
|
||||||
return firstDefined(imports, ({ text }) => pathIsRelative(text) ? hasJavascriptOrJsonFileExtension(text) : undefined) || false;
|
return firstDefined(imports, ({ text }) => pathIsRelative(text) ? hasJSOrJsonFileExtension(text) : undefined) || false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function stringsEqual(a: string, b: string, getCanonicalFileName: GetCanonicalFileName): boolean {
|
function stringsEqual(a: string, b: string, getCanonicalFileName: GetCanonicalFileName): boolean {
|
||||||
|
@ -415,13 +415,13 @@ namespace ts.moduleSpecifiers {
|
||||||
case Ending.Index:
|
case Ending.Index:
|
||||||
return noExtension;
|
return noExtension;
|
||||||
case Ending.JsExtension:
|
case Ending.JsExtension:
|
||||||
return noExtension + getJavascriptExtensionForFile(fileName, options);
|
return noExtension + getJSExtensionForFile(fileName, options);
|
||||||
default:
|
default:
|
||||||
return Debug.assertNever(ending);
|
return Debug.assertNever(ending);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getJavascriptExtensionForFile(fileName: string, options: CompilerOptions): Extension {
|
function getJSExtensionForFile(fileName: string, options: CompilerOptions): Extension {
|
||||||
const ext = extensionFromPath(fileName);
|
const ext = extensionFromPath(fileName);
|
||||||
switch (ext) {
|
switch (ext) {
|
||||||
case Extension.Ts:
|
case Extension.Ts:
|
||||||
|
|
|
@ -1440,7 +1440,7 @@ namespace ts {
|
||||||
// constructs from within a JavaScript file as syntactic errors.
|
// constructs from within a JavaScript file as syntactic errors.
|
||||||
if (isSourceFileJS(sourceFile)) {
|
if (isSourceFileJS(sourceFile)) {
|
||||||
if (!sourceFile.additionalSyntacticDiagnostics) {
|
if (!sourceFile.additionalSyntacticDiagnostics) {
|
||||||
sourceFile.additionalSyntacticDiagnostics = getJavascriptSyntacticDiagnosticsForFile(sourceFile);
|
sourceFile.additionalSyntacticDiagnostics = getJSSyntacticDiagnosticsForFile(sourceFile);
|
||||||
}
|
}
|
||||||
return concatenate(sourceFile.additionalSyntacticDiagnostics, sourceFile.parseDiagnostics);
|
return concatenate(sourceFile.additionalSyntacticDiagnostics, sourceFile.parseDiagnostics);
|
||||||
}
|
}
|
||||||
|
@ -1538,7 +1538,7 @@ namespace ts {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getJavascriptSyntacticDiagnosticsForFile(sourceFile: SourceFile): DiagnosticWithLocation[] {
|
function getJSSyntacticDiagnosticsForFile(sourceFile: SourceFile): DiagnosticWithLocation[] {
|
||||||
return runWithCancellationToken(() => {
|
return runWithCancellationToken(() => {
|
||||||
const diagnostics: DiagnosticWithLocation[] = [];
|
const diagnostics: DiagnosticWithLocation[] = [];
|
||||||
let parent: Node = sourceFile;
|
let parent: Node = sourceFile;
|
||||||
|
@ -2273,7 +2273,7 @@ namespace ts {
|
||||||
}
|
}
|
||||||
|
|
||||||
const isFromNodeModulesSearch = resolution.isExternalLibraryImport;
|
const isFromNodeModulesSearch = resolution.isExternalLibraryImport;
|
||||||
const isJsFile = !resolutionExtensionIsTypeScriptOrJson(resolution.extension);
|
const isJsFile = !resolutionExtensionIsTSOrJson(resolution.extension);
|
||||||
const isJsFileFromNodeModules = isFromNodeModulesSearch && isJsFile;
|
const isJsFileFromNodeModules = isFromNodeModulesSearch && isJsFile;
|
||||||
const resolvedFileName = resolution.resolvedFileName;
|
const resolvedFileName = resolution.resolvedFileName;
|
||||||
|
|
||||||
|
@ -2794,7 +2794,7 @@ namespace ts {
|
||||||
return containsPath(options.outDir, filePath, currentDirectory, !host.useCaseSensitiveFileNames());
|
return containsPath(options.outDir, filePath, currentDirectory, !host.useCaseSensitiveFileNames());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fileExtensionIsOneOf(filePath, supportedJavascriptExtensions) || fileExtensionIs(filePath, Extension.Dts)) {
|
if (fileExtensionIsOneOf(filePath, supportedJSExtensions) || fileExtensionIs(filePath, Extension.Dts)) {
|
||||||
// Otherwise just check if sourceFile with the name exists
|
// Otherwise just check if sourceFile with the name exists
|
||||||
const filePathWithoutExtension = removeFileExtension(filePath);
|
const filePathWithoutExtension = removeFileExtension(filePath);
|
||||||
return !!getSourceFileByPath((filePathWithoutExtension + Extension.Ts) as Path) ||
|
return !!getSourceFileByPath((filePathWithoutExtension + Extension.Ts) as Path) ||
|
||||||
|
|
|
@ -226,7 +226,7 @@ namespace ts {
|
||||||
|
|
||||||
// otherwise try to load typings from @types
|
// otherwise try to load typings from @types
|
||||||
const globalCache = resolutionHost.getGlobalCache();
|
const globalCache = resolutionHost.getGlobalCache();
|
||||||
if (globalCache !== undefined && !isExternalModuleNameRelative(moduleName) && !(primaryResult.resolvedModule && extensionIsTypeScript(primaryResult.resolvedModule.extension))) {
|
if (globalCache !== undefined && !isExternalModuleNameRelative(moduleName) && !(primaryResult.resolvedModule && extensionIsTS(primaryResult.resolvedModule.extension))) {
|
||||||
// create different collection of failed lookup locations for second pass
|
// create different collection of failed lookup locations for second pass
|
||||||
// if it will fail and we've already found something during the first pass - we don't want to pollute its results
|
// if it will fail and we've already found something during the first pass - we don't want to pollute its results
|
||||||
const { resolvedModule, failedLookupLocations } = loadModuleFromGlobalCache(moduleName, resolutionHost.projectName, compilerOptions, host, globalCache);
|
const { resolvedModule, failedLookupLocations } = loadModuleFromGlobalCache(moduleName, resolutionHost.projectName, compilerOptions, host, globalCache);
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace ts {
|
||||||
return []; // No declaration diagnostics for js for now
|
return []; // No declaration diagnostics for js for now
|
||||||
}
|
}
|
||||||
const compilerOptions = host.getCompilerOptions();
|
const compilerOptions = host.getCompilerOptions();
|
||||||
const result = transformNodes(resolver, host, compilerOptions, file ? [file] : filter(host.getSourceFiles(), isSourceFileNotJavascript), [transformDeclarations], /*allowDtsFiles*/ false);
|
const result = transformNodes(resolver, host, compilerOptions, file ? [file] : filter(host.getSourceFiles(), isSourceFileNotJS), [transformDeclarations], /*allowDtsFiles*/ false);
|
||||||
return result.diagnostics;
|
return result.diagnostics;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -302,7 +302,7 @@ namespace ts {
|
||||||
return changeExtension(outputPath, Extension.Dts);
|
return changeExtension(outputPath, Extension.Dts);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getOutputJavascriptFileName(inputFileName: string, configFile: ParsedCommandLine) {
|
function getOutputJSFileName(inputFileName: string, configFile: ParsedCommandLine) {
|
||||||
const relativePath = getRelativePathFromDirectory(rootDirOfOptions(configFile.options, configFile.options.configFilePath!), inputFileName, /*ignoreCase*/ true);
|
const relativePath = getRelativePathFromDirectory(rootDirOfOptions(configFile.options, configFile.options.configFilePath!), inputFileName, /*ignoreCase*/ true);
|
||||||
const outputPath = resolvePath(configFile.options.outDir || getDirectoryPath(configFile.options.configFilePath!), relativePath);
|
const outputPath = resolvePath(configFile.options.outDir || getDirectoryPath(configFile.options.configFilePath!), relativePath);
|
||||||
const newExtension = fileExtensionIs(inputFileName, Extension.Json) ? Extension.Json :
|
const newExtension = fileExtensionIs(inputFileName, Extension.Json) ? Extension.Json :
|
||||||
|
@ -317,7 +317,7 @@ namespace ts {
|
||||||
}
|
}
|
||||||
|
|
||||||
const outputs: string[] = [];
|
const outputs: string[] = [];
|
||||||
const js = getOutputJavascriptFileName(inputFileName, configFile);
|
const js = getOutputJSFileName(inputFileName, configFile);
|
||||||
outputs.push(js);
|
outputs.push(js);
|
||||||
if (configFile.options.sourceMap) {
|
if (configFile.options.sourceMap) {
|
||||||
outputs.push(`${js}.map`);
|
outputs.push(`${js}.map`);
|
||||||
|
|
|
@ -1682,7 +1682,7 @@ namespace ts {
|
||||||
return isInJSFile(file);
|
return isInJSFile(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isSourceFileNotJavascript(file: SourceFile): boolean {
|
export function isSourceFileNotJS(file: SourceFile): boolean {
|
||||||
return !isInJSFile(file);
|
return !isInJSFile(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3818,8 +3818,8 @@ namespace ts {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Return ".ts", ".d.ts", or ".tsx", if that is the extension. */
|
/** Return ".ts", ".d.ts", or ".tsx", if that is the extension. */
|
||||||
export function tryExtractTypeScriptExtension(fileName: string): string | undefined {
|
export function tryExtractTSExtension(fileName: string): string | undefined {
|
||||||
return find(supportedTypescriptExtensionsForExtractExtension, extension => fileExtensionIs(fileName, extension));
|
return find(supportedTSExtensionsForExtractExtension, extension => fileExtensionIs(fileName, extension));
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Replace each instance of non-ascii characters by one, two, three, or four escape sequences
|
* Replace each instance of non-ascii characters by one, two, three, or four escape sequences
|
||||||
|
@ -8010,42 +8010,42 @@ namespace ts {
|
||||||
/**
|
/**
|
||||||
* List of supported extensions in order of file resolution precedence.
|
* List of supported extensions in order of file resolution precedence.
|
||||||
*/
|
*/
|
||||||
export const supportedTypescriptExtensions: ReadonlyArray<Extension> = [Extension.Ts, Extension.Tsx, Extension.Dts];
|
export const supportedTSExtensions: ReadonlyArray<Extension> = [Extension.Ts, Extension.Tsx, Extension.Dts];
|
||||||
/** Must have ".d.ts" first because if ".ts" goes first, that will be detected as the extension instead of ".d.ts". */
|
/** Must have ".d.ts" first because if ".ts" goes first, that will be detected as the extension instead of ".d.ts". */
|
||||||
export const supportedTypescriptExtensionsForExtractExtension: ReadonlyArray<Extension> = [Extension.Dts, Extension.Ts, Extension.Tsx];
|
export const supportedTSExtensionsForExtractExtension: ReadonlyArray<Extension> = [Extension.Dts, Extension.Ts, Extension.Tsx];
|
||||||
export const supportedJavascriptExtensions: ReadonlyArray<Extension> = [Extension.Js, Extension.Jsx];
|
export const supportedJSExtensions: ReadonlyArray<Extension> = [Extension.Js, Extension.Jsx];
|
||||||
export const supportedJavascriptAndJsonExtensions: ReadonlyArray<Extension> = [Extension.Js, Extension.Jsx, Extension.Json];
|
export const supportedJSAndJsonExtensions: ReadonlyArray<Extension> = [Extension.Js, Extension.Jsx, Extension.Json];
|
||||||
const allSupportedExtensions: ReadonlyArray<Extension> = [...supportedTypescriptExtensions, ...supportedJavascriptExtensions];
|
const allSupportedExtensions: ReadonlyArray<Extension> = [...supportedTSExtensions, ...supportedJSExtensions];
|
||||||
|
|
||||||
export function getSupportedExtensions(options?: CompilerOptions, extraFileExtensions?: ReadonlyArray<FileExtensionInfo>): ReadonlyArray<string> {
|
export function getSupportedExtensions(options?: CompilerOptions, extraFileExtensions?: ReadonlyArray<FileExtensionInfo>): ReadonlyArray<string> {
|
||||||
const needJsExtensions = options && options.allowJs;
|
const needJsExtensions = options && options.allowJs;
|
||||||
|
|
||||||
if (!extraFileExtensions || extraFileExtensions.length === 0) {
|
if (!extraFileExtensions || extraFileExtensions.length === 0) {
|
||||||
return needJsExtensions ? allSupportedExtensions : supportedTypescriptExtensions;
|
return needJsExtensions ? allSupportedExtensions : supportedTSExtensions;
|
||||||
}
|
}
|
||||||
|
|
||||||
const extensions = [
|
const extensions = [
|
||||||
...needJsExtensions ? allSupportedExtensions : supportedTypescriptExtensions,
|
...needJsExtensions ? allSupportedExtensions : supportedTSExtensions,
|
||||||
...mapDefined(extraFileExtensions, x => x.scriptKind === ScriptKind.Deferred || needJsExtensions && isJavascriptLike(x.scriptKind) ? x.extension : undefined)
|
...mapDefined(extraFileExtensions, x => x.scriptKind === ScriptKind.Deferred || needJsExtensions && isJSLike(x.scriptKind) ? x.extension : undefined)
|
||||||
];
|
];
|
||||||
|
|
||||||
return deduplicate<string>(extensions, equateStringsCaseSensitive, compareStringsCaseSensitive);
|
return deduplicate<string>(extensions, equateStringsCaseSensitive, compareStringsCaseSensitive);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isJavascriptLike(scriptKind: ScriptKind | undefined): boolean {
|
function isJSLike(scriptKind: ScriptKind | undefined): boolean {
|
||||||
return scriptKind === ScriptKind.JS || scriptKind === ScriptKind.JSX;
|
return scriptKind === ScriptKind.JS || scriptKind === ScriptKind.JSX;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function hasJavascriptFileExtension(fileName: string): boolean {
|
export function hasJSFileExtension(fileName: string): boolean {
|
||||||
return some(supportedJavascriptExtensions, extension => fileExtensionIs(fileName, extension));
|
return some(supportedJSExtensions, extension => fileExtensionIs(fileName, extension));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function hasJavascriptOrJsonFileExtension(fileName: string): boolean {
|
export function hasJSOrJsonFileExtension(fileName: string): boolean {
|
||||||
return supportedJavascriptAndJsonExtensions.some(ext => fileExtensionIs(fileName, ext));
|
return supportedJSAndJsonExtensions.some(ext => fileExtensionIs(fileName, ext));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function hasTypescriptFileExtension(fileName: string): boolean {
|
export function hasTSFileExtension(fileName: string): boolean {
|
||||||
return some(supportedTypescriptExtensions, extension => fileExtensionIs(fileName, extension));
|
return some(supportedTSExtensions, extension => fileExtensionIs(fileName, extension));
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isSupportedSourceFileName(fileName: string, compilerOptions?: CompilerOptions, extraFileExtensions?: ReadonlyArray<FileExtensionInfo>) {
|
export function isSupportedSourceFileName(fileName: string, compilerOptions?: CompilerOptions, extraFileExtensions?: ReadonlyArray<FileExtensionInfo>) {
|
||||||
|
@ -8181,12 +8181,12 @@ namespace ts {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** True if an extension is one of the supported TypeScript extensions. */
|
/** True if an extension is one of the supported TypeScript extensions. */
|
||||||
export function extensionIsTypeScript(ext: Extension): boolean {
|
export function extensionIsTS(ext: Extension): boolean {
|
||||||
return ext === Extension.Ts || ext === Extension.Tsx || ext === Extension.Dts;
|
return ext === Extension.Ts || ext === Extension.Tsx || ext === Extension.Dts;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function resolutionExtensionIsTypeScriptOrJson(ext: Extension) {
|
export function resolutionExtensionIsTSOrJson(ext: Extension) {
|
||||||
return extensionIsTypeScript(ext) || ext === Extension.Json;
|
return extensionIsTS(ext) || ext === Extension.Json;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -593,7 +593,7 @@ namespace FourSlash {
|
||||||
public verifyNoErrors() {
|
public verifyNoErrors() {
|
||||||
ts.forEachKey(this.inputFiles, fileName => {
|
ts.forEachKey(this.inputFiles, fileName => {
|
||||||
if (!ts.isAnySupportedFileExtension(fileName)
|
if (!ts.isAnySupportedFileExtension(fileName)
|
||||||
|| !this.getProgram().getCompilerOptions().allowJs && !ts.extensionIsTypeScript(ts.extensionFromPath(fileName))) return;
|
|| !this.getProgram().getCompilerOptions().allowJs && !ts.extensionIsTS(ts.extensionFromPath(fileName))) return;
|
||||||
const errors = this.getDiagnostics(fileName).filter(e => e.category !== ts.DiagnosticCategory.Suggestion);
|
const errors = this.getDiagnostics(fileName).filter(e => e.category !== ts.DiagnosticCategory.Suggestion);
|
||||||
if (errors.length) {
|
if (errors.length) {
|
||||||
this.printErrorLog(/*expectErrors*/ false, errors);
|
this.printErrorLog(/*expectErrors*/ false, errors);
|
||||||
|
|
|
@ -268,7 +268,7 @@ namespace Harness.LanguageService {
|
||||||
getHost(): LanguageServiceAdapterHost { return this.host; }
|
getHost(): LanguageServiceAdapterHost { return this.host; }
|
||||||
getLanguageService(): ts.LanguageService { return ts.createLanguageService(this.host); }
|
getLanguageService(): ts.LanguageService { return ts.createLanguageService(this.host); }
|
||||||
getClassifier(): ts.Classifier { return ts.createClassifier(); }
|
getClassifier(): ts.Classifier { return ts.createClassifier(); }
|
||||||
getPreProcessedFileInfo(fileName: string, fileContents: string): ts.PreProcessedFileInfo { return ts.preProcessFile(fileContents, /* readImportFiles */ true, ts.hasJavascriptFileExtension(fileName)); }
|
getPreProcessedFileInfo(fileName: string, fileContents: string): ts.PreProcessedFileInfo { return ts.preProcessFile(fileContents, /* readImportFiles */ true, ts.hasJSFileExtension(fileName)); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Shim adapter
|
/// Shim adapter
|
||||||
|
|
|
@ -21,8 +21,8 @@ namespace vpath {
|
||||||
export import relative = ts.getRelativePathFromDirectory;
|
export import relative = ts.getRelativePathFromDirectory;
|
||||||
export import beneath = ts.containsPath;
|
export import beneath = ts.containsPath;
|
||||||
export import changeExtension = ts.changeAnyExtension;
|
export import changeExtension = ts.changeAnyExtension;
|
||||||
export import isTypeScript = ts.hasTypescriptFileExtension;
|
export import isTypeScript = ts.hasTSFileExtension;
|
||||||
export import isJavaScript = ts.hasJavascriptFileExtension;
|
export import isJavaScript = ts.hasJSFileExtension;
|
||||||
|
|
||||||
const invalidRootComponentRegExp = /^(?!(\/|\/\/\w+\/|[a-zA-Z]:\/?|)$)/;
|
const invalidRootComponentRegExp = /^(?!(\/|\/\/\w+\/|[a-zA-Z]:\/?|)$)/;
|
||||||
const invalidNavigableComponentRegExp = /[:*?"<>|]/;
|
const invalidNavigableComponentRegExp = /[:*?"<>|]/;
|
||||||
|
|
|
@ -122,7 +122,7 @@ namespace ts.JsTyping {
|
||||||
// Only infer typings for .js and .jsx files
|
// Only infer typings for .js and .jsx files
|
||||||
fileNames = mapDefined(fileNames, fileName => {
|
fileNames = mapDefined(fileNames, fileName => {
|
||||||
const path = normalizePath(fileName);
|
const path = normalizePath(fileName);
|
||||||
if (hasJavascriptFileExtension(path)) {
|
if (hasJSFileExtension(path)) {
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -218,7 +218,7 @@ namespace ts.JsTyping {
|
||||||
*/
|
*/
|
||||||
function getTypingNamesFromSourceFileNames(fileNames: string[]) {
|
function getTypingNamesFromSourceFileNames(fileNames: string[]) {
|
||||||
const fromFileNames = mapDefined(fileNames, j => {
|
const fromFileNames = mapDefined(fileNames, j => {
|
||||||
if (!hasJavascriptFileExtension(j)) return undefined;
|
if (!hasJSFileExtension(j)) return undefined;
|
||||||
|
|
||||||
const inferredTypingName = removeFileExtension(getBaseFileName(j.toLowerCase()));
|
const inferredTypingName = removeFileExtension(getBaseFileName(j.toLowerCase()));
|
||||||
const cleanedTypingName = removeMinAndVersionNumbers(inferredTypingName);
|
const cleanedTypingName = removeMinAndVersionNumbers(inferredTypingName);
|
||||||
|
|
|
@ -1447,14 +1447,14 @@ namespace ts.server {
|
||||||
|
|
||||||
for (const f of fileNames) {
|
for (const f of fileNames) {
|
||||||
const fileName = propertyReader.getFileName(f);
|
const fileName = propertyReader.getFileName(f);
|
||||||
if (hasTypescriptFileExtension(fileName)) {
|
if (hasTSFileExtension(fileName)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
totalNonTsFileSize += this.host.getFileSize(fileName);
|
totalNonTsFileSize += this.host.getFileSize(fileName);
|
||||||
|
|
||||||
if (totalNonTsFileSize > maxProgramSizeForNonTsFiles || totalNonTsFileSize > availableSpace) {
|
if (totalNonTsFileSize > maxProgramSizeForNonTsFiles || totalNonTsFileSize > availableSpace) {
|
||||||
this.logger.info(getExceedLimitMessage({ propertyReader, hasTypescriptFileExtension, host: this.host }, totalNonTsFileSize));
|
this.logger.info(getExceedLimitMessage({ propertyReader, hasTSFileExtension, host: this.host }, totalNonTsFileSize));
|
||||||
// Keep the size as zero since it's disabled
|
// Keep the size as zero since it's disabled
|
||||||
return fileName;
|
return fileName;
|
||||||
}
|
}
|
||||||
|
@ -1464,14 +1464,14 @@ namespace ts.server {
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
function getExceedLimitMessage(context: { propertyReader: FilePropertyReader<any>, hasTypescriptFileExtension: (filename: string) => boolean, host: ServerHost }, totalNonTsFileSize: number) {
|
function getExceedLimitMessage(context: { propertyReader: FilePropertyReader<any>, hasTSFileExtension: (filename: string) => boolean, host: ServerHost }, totalNonTsFileSize: number) {
|
||||||
const files = getTop5LargestFiles(context);
|
const files = getTop5LargestFiles(context);
|
||||||
|
|
||||||
return `Non TS file size exceeded limit (${totalNonTsFileSize}). Largest files: ${files.map(file => `${file.name}:${file.size}`).join(", ")}`;
|
return `Non TS file size exceeded limit (${totalNonTsFileSize}). Largest files: ${files.map(file => `${file.name}:${file.size}`).join(", ")}`;
|
||||||
}
|
}
|
||||||
function getTop5LargestFiles({ propertyReader, hasTypescriptFileExtension, host }: { propertyReader: FilePropertyReader<any>, hasTypescriptFileExtension: (filename: string) => boolean, host: ServerHost }) {
|
function getTop5LargestFiles({ propertyReader, hasTSFileExtension, host }: { propertyReader: FilePropertyReader<any>, hasTSFileExtension: (filename: string) => boolean, host: ServerHost }) {
|
||||||
return fileNames.map(f => propertyReader.getFileName(f))
|
return fileNames.map(f => propertyReader.getFileName(f))
|
||||||
.filter(name => hasTypescriptFileExtension(name))
|
.filter(name => hasTSFileExtension(name))
|
||||||
.map(name => ({ name, size: host.getFileSize!(name) })) // TODO: GH#18217
|
.map(name => ({ name, size: host.getFileSize!(name) })) // TODO: GH#18217
|
||||||
.sort((a, b) => b.size - a.size)
|
.sort((a, b) => b.size - a.size)
|
||||||
.slice(0, 5);
|
.slice(0, 5);
|
||||||
|
|
|
@ -167,7 +167,7 @@ namespace ts.server {
|
||||||
const fileName = tempFileName || this.fileName;
|
const fileName = tempFileName || this.fileName;
|
||||||
const getText = () => text === undefined ? (text = this.host.readFile(fileName) || "") : text;
|
const getText = () => text === undefined ? (text = this.host.readFile(fileName) || "") : text;
|
||||||
// Only non typescript files have size limitation
|
// Only non typescript files have size limitation
|
||||||
if (!hasTypescriptFileExtension(this.fileName)) {
|
if (!hasTSFileExtension(this.fileName)) {
|
||||||
const fileSize = this.host.getFileSize ? this.host.getFileSize(fileName) : getText().length;
|
const fileSize = this.host.getFileSize ? this.host.getFileSize(fileName) : getText().length;
|
||||||
if (fileSize > maxFileSize) {
|
if (fileSize > maxFileSize) {
|
||||||
Debug.assert(!!this.info.containingProjects.length);
|
Debug.assert(!!this.info.containingProjects.length);
|
||||||
|
|
|
@ -312,7 +312,7 @@ namespace ts.JsDoc {
|
||||||
const preamble = "/**" + newLine + indentationStr + " * ";
|
const preamble = "/**" + newLine + indentationStr + " * ";
|
||||||
const result =
|
const result =
|
||||||
preamble + newLine +
|
preamble + newLine +
|
||||||
parameterDocComments(parameters, hasJavascriptFileExtension(sourceFile.fileName), indentationStr, newLine) +
|
parameterDocComments(parameters, hasJSFileExtension(sourceFile.fileName), indentationStr, newLine) +
|
||||||
indentationStr + " */" +
|
indentationStr + " */" +
|
||||||
(tokenStart === position ? newLine + indentationStr : "");
|
(tokenStart === position ? newLine + indentationStr : "");
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ namespace ts {
|
||||||
describe("Node module resolution - relative paths", () => {
|
describe("Node module resolution - relative paths", () => {
|
||||||
|
|
||||||
function testLoadAsFile(containingFileName: string, moduleFileNameNoExt: string, moduleName: string): void {
|
function testLoadAsFile(containingFileName: string, moduleFileNameNoExt: string, moduleName: string): void {
|
||||||
for (const ext of supportedTypescriptExtensions) {
|
for (const ext of supportedTSExtensions) {
|
||||||
test(ext, /*hasDirectoryExists*/ false);
|
test(ext, /*hasDirectoryExists*/ false);
|
||||||
test(ext, /*hasDirectoryExists*/ true);
|
test(ext, /*hasDirectoryExists*/ true);
|
||||||
}
|
}
|
||||||
|
@ -96,7 +96,7 @@ namespace ts {
|
||||||
|
|
||||||
const failedLookupLocations: string[] = [];
|
const failedLookupLocations: string[] = [];
|
||||||
const dir = getDirectoryPath(containingFileName);
|
const dir = getDirectoryPath(containingFileName);
|
||||||
for (const e of supportedTypescriptExtensions) {
|
for (const e of supportedTSExtensions) {
|
||||||
if (e === ext) {
|
if (e === ext) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -137,7 +137,7 @@ namespace ts {
|
||||||
const resolution = nodeModuleNameResolver(moduleName, containingFile.name, {}, createModuleResolutionHost(hasDirectoryExists, containingFile, packageJson, moduleFile));
|
const resolution = nodeModuleNameResolver(moduleName, containingFile.name, {}, createModuleResolutionHost(hasDirectoryExists, containingFile, packageJson, moduleFile));
|
||||||
checkResolvedModule(resolution.resolvedModule, createResolvedModule(moduleFile.name));
|
checkResolvedModule(resolution.resolvedModule, createResolvedModule(moduleFile.name));
|
||||||
// expect three failed lookup location - attempt to load module as file with all supported extensions
|
// expect three failed lookup location - attempt to load module as file with all supported extensions
|
||||||
assert.equal(resolution.failedLookupLocations.length, supportedTypescriptExtensions.length);
|
assert.equal(resolution.failedLookupLocations.length, supportedTSExtensions.length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -891,7 +891,7 @@ namespace ts.server {
|
||||||
|
|
||||||
sys.require = (initialDir: string, moduleName: string): RequireResult => {
|
sys.require = (initialDir: string, moduleName: string): RequireResult => {
|
||||||
try {
|
try {
|
||||||
return { module: require(resolveJavascriptModule(moduleName, initialDir, sys)), error: undefined };
|
return { module: require(resolveJSModule(moduleName, initialDir, sys)), error: undefined };
|
||||||
}
|
}
|
||||||
catch (error) {
|
catch (error) {
|
||||||
return { module: undefined, error };
|
return { module: undefined, error };
|
||||||
|
|
Loading…
Reference in a new issue