Files

Return to Package Diff Home.
Brought to you by Intrinsic.

Package Diff: typescript @ 3.4.3 .. 3.4.5

lib/tsc.js

@@ -60,7 +60,7 @@
var ts;
(function (ts) {
ts.versionMajorMinor = "3.4";
- ts.version = ts.versionMajorMinor + ".3";
+ ts.version = ts.versionMajorMinor + ".5";
})(ts || (ts = {}));
(function (ts) {
ts.emptyArray = [];
@@ -9899,7 +9899,7 @@
}
ts.getClassLikeDeclarationOfSymbol = getClassLikeDeclarationOfSymbol;
function getObjectFlags(type) {
- return type.flags & 3768320 ? type.objectFlags : 0;
+ return type.flags & 3899392 ? type.objectFlags : 0;
}
ts.getObjectFlags = getObjectFlags;
function typeHasCallOrConstructSignatures(type, checker) {
@@ -25788,10 +25788,10 @@
var wildcardType = createIntrinsicType(1, "any");
var errorType = createIntrinsicType(1, "error");
var unknownType = createIntrinsicType(2, "unknown");
- var undefinedType = createNullableType(32768, "undefined", 0);
- var undefinedWideningType = strictNullChecks ? undefinedType : createNullableType(32768, "undefined", 131072);
- var nullType = createNullableType(65536, "null", 0);
- var nullWideningType = strictNullChecks ? nullType : createNullableType(65536, "null", 131072);
+ var undefinedType = createIntrinsicType(32768, "undefined");
+ var undefinedWideningType = strictNullChecks ? undefinedType : createIntrinsicType(32768, "undefined", 131072);
+ var nullType = createIntrinsicType(65536, "null");
+ var nullWideningType = strictNullChecks ? nullType : createIntrinsicType(65536, "null", 131072);
var stringType = createIntrinsicType(4, "string");
var numberType = createIntrinsicType(8, "number");
var bigintType = createIntrinsicType(64, "bigint");
@@ -25815,6 +25815,7 @@
var voidType = createIntrinsicType(16384, "void");
var neverType = createIntrinsicType(131072, "never");
var silentNeverType = createIntrinsicType(131072, "never");
+ var nonInferrableType = createIntrinsicType(131072, "never", 524288);
var implicitNeverType = createIntrinsicType(131072, "never");
var nonPrimitiveType = createIntrinsicType(67108864, "object");
var stringNumberSymbolType = getUnionType([stringType, numberType, esSymbolType]);
@@ -27542,13 +27543,10 @@
result.id = typeCount;
return result;
}
- function createIntrinsicType(kind, intrinsicName) {
+ function createIntrinsicType(kind, intrinsicName, objectFlags) {
+ if (objectFlags === void 0) { objectFlags = 0; }
var type = createType(kind);
type.intrinsicName = intrinsicName;
- return type;
- }
- function createNullableType(kind, intrinsicName, objectFlags) {
- var type = createIntrinsicType(kind, intrinsicName);
type.objectFlags = objectFlags;
return type;
}
@@ -33598,7 +33596,7 @@
return newResult;
}
function getConditionalTypeWorker(root, mapper, checkType, extendsType, trueType, falseType) {
- if (falseType.flags & 131072 && isTypeIdenticalTo(getActualTypeVariable(trueType), getActualTypeVariable(checkType))) {
+ if (falseType.flags & 131072 && getActualTypeVariable(trueType) === getActualTypeVariable(checkType)) {
if (checkType.flags & 1 || isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) {
return trueType;
}
@@ -33606,7 +33604,7 @@
return neverType;
}
}
- else if (trueType.flags & 131072 && isTypeIdenticalTo(getActualTypeVariable(falseType), getActualTypeVariable(checkType))) {
+ else if (trueType.flags & 131072 && getActualTypeVariable(falseType) === getActualTypeVariable(checkType)) {
if (!(checkType.flags & 1) && isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) {
return neverType;
}
@@ -36898,7 +36896,7 @@
var stringIndexInfo = getIndexInfoOfType(type, 0);
var numberIndexInfo = getIndexInfoOfType(type, 1);
var result = createAnonymousType(type.symbol, members, ts.emptyArray, ts.emptyArray, stringIndexInfo && createIndexInfo(getWidenedType(stringIndexInfo.type), stringIndexInfo.isReadonly), numberIndexInfo && createIndexInfo(getWidenedType(numberIndexInfo.type), numberIndexInfo.isReadonly));
- result.objectFlags |= (ts.getObjectFlags(type) & 16384);
+ result.objectFlags |= (ts.getObjectFlags(type) & (16384 | 524288));
return result;
}
function getWidenedType(type) {
@@ -37172,16 +37170,9 @@
return type;
}
function createReverseMappedType(source, target, constraint) {
- var properties = getPropertiesOfType(source);
- if (properties.length === 0 && !getIndexInfoOfType(source, 0)) {
+ if (ts.getObjectFlags(source) & 524288 || getPropertiesOfType(source).length === 0 && !getIndexInfoOfType(source, 0)) {
return undefined;
}
- for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) {
- var prop = properties_3[_i];
- if (ts.getObjectFlags(getTypeOfSymbol(prop)) & 524288) {
- return undefined;
- }
- }
if (isArrayType(source)) {
return createArrayType(inferReverseMappedType(source.typeArguments[0], target, constraint), isReadonlyArrayType(source));
}
@@ -37208,16 +37199,16 @@
return getTypeFromInference(inference);
}
function getUnmatchedProperties(source, target, requireOptionalProperties, matchDiscriminantProperties) {
- var properties, _i, properties_4, targetProp, sourceProp, targetType, sourceType;
+ var properties, _i, properties_3, targetProp, sourceProp, targetType, sourceType;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
properties = target.flags & 2097152 ? getPropertiesOfUnionOrIntersectionType(target) : getPropertiesOfObjectType(target);
- _i = 0, properties_4 = properties;
+ _i = 0, properties_3 = properties;
_a.label = 1;
case 1:
- if (!(_i < properties_4.length)) return [3, 6];
- targetProp = properties_4[_i];
+ if (!(_i < properties_3.length)) return [3, 6];
+ targetProp = properties_3[_i];
if (!(requireOptionalProperties || !(targetProp.flags & 16777216))) return [3, 5];
sourceProp = getPropertyOfType(source, targetProp.escapedName);
if (!!sourceProp) return [3, 3];
@@ -37410,20 +37401,32 @@
inferFromTypes(source, target.falseType);
}
else if (target.flags & 3145728) {
+ var typeVariableCount = 0;
for (var _d = 0, _e = target.types; _d < _e.length; _d++) {
var t = _e[_d];
- var savePriority = priority;
if (getInferenceInfoForType(t)) {
- priority |= 1;
+ typeVariableCount++;
+ }
+ else {
+ inferFromTypes(source, t);
+ }
}
+ if (target.flags & 1048576 ? typeVariableCount !== 0 : typeVariableCount === 1) {
+ var savePriority = priority;
+ priority |= 1;
+ for (var _f = 0, _g = target.types; _f < _g.length; _f++) {
+ var t = _g[_f];
+ if (getInferenceInfoForType(t)) {
inferFromTypes(source, t);
+ }
+ }
priority = savePriority;
}
}
else if (source.flags & 1048576) {
var sourceTypes = source.types;
- for (var _f = 0, sourceTypes_3 = sourceTypes; _f < sourceTypes_3.length; _f++) {
- var sourceType = sourceTypes_3[_f];
+ for (var _h = 0, sourceTypes_3 = sourceTypes; _h < sourceTypes_3.length; _h++) {
+ var sourceType = sourceTypes_3[_h];
inferFromTypes(sourceType, target);
}
}
@@ -37573,8 +37576,8 @@
}
}
var properties = getPropertiesOfObjectType(target);
- for (var _i = 0, properties_5 = properties; _i < properties_5.length; _i++) {
- var targetProp = properties_5[_i];
+ for (var _i = 0, properties_4 = properties; _i < properties_4.length; _i++) {
+ var targetProp = properties_4[_i];
var sourceProp = getPropertyOfType(source, targetProp.escapedName);
if (sourceProp) {
inferFromTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp));
@@ -41924,7 +41927,7 @@
spanArray = ts.createNodeArray(args);
if (hasSpreadArgument && argCount) {
var nextArg = ts.elementAt(args, getSpreadArgumentIndex(args) + 1) || undefined;
- spanArray = ts.createNodeArray(args.slice(max > argCount && nextArg ? args.indexOf(nextArg) : max));
+ spanArray = ts.createNodeArray(args.slice(max > argCount && nextArg ? args.indexOf(nextArg) : Math.min(max, args.length - 1)));
}
}
else {
@@ -42581,7 +42584,7 @@
checkGrammarArguments(node.arguments);
var signature = getResolvedSignature(node, undefined, checkMode);
if (signature === resolvingSignature) {
- return silentNeverType;
+ return nonInferrableType;
}
if (node.expression.kind === 98) {
return voidType;
@@ -43570,8 +43573,8 @@
if (strictNullChecks && properties.length === 0) {
return checkNonNullType(sourceType, node);
}
- for (var _i = 0, properties_6 = properties; _i < properties_6.length; _i++) {
- var p = properties_6[_i];
+ for (var _i = 0, properties_5 = properties; _i < properties_5.length; _i++) {
+ var p = properties_5[_i];
checkObjectLiteralDestructuringPropertyAssignment(sourceType, p, properties, rightIsThis);
}
return sourceType;
@@ -47214,8 +47217,8 @@
for (var _i = 0, baseTypes_2 = baseTypes; _i < baseTypes_2.length; _i++) {
var base = baseTypes_2[_i];
var properties = getPropertiesOfType(getTypeWithThisArgument(base, type.thisType));
- for (var _a = 0, properties_7 = properties; _a < properties_7.length; _a++) {
- var prop = properties_7[_a];
+ for (var _a = 0, properties_6 = properties; _a < properties_6.length; _a++) {
+ var prop = properties_6[_a];
var existing = seen.get(prop.escapedName);
if (!existing) {
seen.set(prop.escapedName, { prop: prop, containingType: base });
@@ -49380,7 +49383,7 @@
if (autoArrayType === emptyObjectType) {
autoArrayType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
}
- globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray", 1);
+ globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray", 1) || globalArrayType;
anyReadonlyArrayType = globalReadonlyArrayType ? createTypeFromGenericGlobalType(globalReadonlyArrayType, [anyType]) : anyArrayType;
globalThisType = getGlobalTypeOrUndefined("ThisType", 1);
if (augmentations) {
@@ -53915,27 +53918,27 @@
function createExpressionForAccessorDeclaration(properties, property, receiver, multiLine) {
var _a = ts.getAllAccessorDeclarations(properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor;
if (property === firstAccessor) {
- var properties_8 = [];
+ var properties_7 = [];
if (getAccessor) {
var getterFunction = ts.createFunctionExpression(getAccessor.modifiers, undefined, undefined, undefined, getAccessor.parameters, undefined, getAccessor.body);
ts.setTextRange(getterFunction, getAccessor);
ts.setOriginalNode(getterFunction, getAccessor);
var getter = ts.createPropertyAssignment("get", getterFunction);
- properties_8.push(getter);
+ properties_7.push(getter);
}
if (setAccessor) {
var setterFunction = ts.createFunctionExpression(setAccessor.modifiers, undefined, undefined, undefined, setAccessor.parameters, undefined, setAccessor.body);
ts.setTextRange(setterFunction, setAccessor);
ts.setOriginalNode(setterFunction, setAccessor);
var setter = ts.createPropertyAssignment("set", setterFunction);
- properties_8.push(setter);
+ properties_7.push(setter);
}
- properties_8.push(ts.createPropertyAssignment("enumerable", ts.createTrue()));
- properties_8.push(ts.createPropertyAssignment("configurable", ts.createTrue()));
+ properties_7.push(ts.createPropertyAssignment("enumerable", ts.createTrue()));
+ properties_7.push(ts.createPropertyAssignment("configurable", ts.createTrue()));
var expression = ts.setTextRange(ts.createCall(ts.createPropertyAccess(ts.createIdentifier("Object"), "defineProperty"), undefined, [
receiver,
createExpressionForPropertyName(property.name),
- ts.createObjectLiteral(properties_8, multiLine)
+ ts.createObjectLiteral(properties_7, multiLine)
]), firstAccessor);
return ts.aggregateTransformFlags(expression);
}
@@ -57301,8 +57304,8 @@
&& member.initializer !== undefined;
}
function addInitializedPropertyStatements(statements, properties, receiver) {
- for (var _i = 0, properties_9 = properties; _i < properties_9.length; _i++) {
- var property = properties_9[_i];
+ for (var _i = 0, properties_8 = properties; _i < properties_8.length; _i++) {
+ var property = properties_8[_i];
var statement = ts.createExpressionStatement(transformInitializedProperty(property, receiver));
ts.setSourceMapRange(statement, ts.moveRangePastModifiers(property));
ts.setCommentRange(statement, property);
@@ -57312,8 +57315,8 @@
}
function generateInitializedPropertyExpressions(properties, receiver) {
var expressions = [];
- for (var _i = 0, properties_10 = properties; _i < properties_10.length; _i++) {
- var property = properties_10[_i];
+ for (var _i = 0, properties_9 = properties; _i < properties_9.length; _i++) {
+ var property = properties_9[_i];
var expression = transformInitializedProperty(property, receiver);
ts.startOnNewLine(expression);
ts.setSourceMapRange(expression, ts.moveRangePastModifiers(property));

lib/tsserver.js

@@ -85,7 +85,7 @@
// If changing the text in this section, be sure to test `configureNightly` too.
ts.versionMajorMinor = "3.4";
/** The version of the TypeScript compiler release */
- ts.version = ts.versionMajorMinor + ".3";
+ ts.version = ts.versionMajorMinor + ".5";
})(ts || (ts = {}));
(function (ts) {
/* @internal */
@@ -3490,7 +3490,7 @@
TypeFlags[TypeFlags["Instantiable"] = 63176704] = "Instantiable";
TypeFlags[TypeFlags["StructuredOrInstantiable"] = 66846720] = "StructuredOrInstantiable";
/* @internal */
- TypeFlags[TypeFlags["ObjectFlagsType"] = 3768320] = "ObjectFlagsType";
+ TypeFlags[TypeFlags["ObjectFlagsType"] = 3899392] = "ObjectFlagsType";
// 'Narrowable' types are types where narrowing actually narrows.
// This *should* be every type other than null, undefined, void, and never
TypeFlags[TypeFlags["Narrowable"] = 133970943] = "Narrowable";
@@ -3538,7 +3538,7 @@
/* @internal */
ObjectFlags[ObjectFlags["ContainsObjectLiteral"] = 262144] = "ContainsObjectLiteral";
/* @internal */
- ObjectFlags[ObjectFlags["ContainsAnyFunctionType"] = 524288] = "ContainsAnyFunctionType";
+ ObjectFlags[ObjectFlags["NonInferrableType"] = 524288] = "NonInferrableType";
ObjectFlags[ObjectFlags["ClassOrInterface"] = 3] = "ClassOrInterface";
/* @internal */
ObjectFlags[ObjectFlags["RequiresWidening"] = 393216] = "RequiresWidening";
@@ -12614,7 +12614,7 @@
}
ts.getClassLikeDeclarationOfSymbol = getClassLikeDeclarationOfSymbol;
function getObjectFlags(type) {
- return type.flags & 3768320 /* ObjectFlagsType */ ? type.objectFlags : 0;
+ return type.flags & 3899392 /* ObjectFlagsType */ ? type.objectFlags : 0;
}
ts.getObjectFlags = getObjectFlags;
function typeHasCallOrConstructSignatures(type, checker) {
@@ -31471,10 +31471,10 @@
var wildcardType = createIntrinsicType(1 /* Any */, "any");
var errorType = createIntrinsicType(1 /* Any */, "error");
var unknownType = createIntrinsicType(2 /* Unknown */, "unknown");
- var undefinedType = createNullableType(32768 /* Undefined */, "undefined", 0);
- var undefinedWideningType = strictNullChecks ? undefinedType : createNullableType(32768 /* Undefined */, "undefined", 131072 /* ContainsWideningType */);
- var nullType = createNullableType(65536 /* Null */, "null", 0);
- var nullWideningType = strictNullChecks ? nullType : createNullableType(65536 /* Null */, "null", 131072 /* ContainsWideningType */);
+ var undefinedType = createIntrinsicType(32768 /* Undefined */, "undefined");
+ var undefinedWideningType = strictNullChecks ? undefinedType : createIntrinsicType(32768 /* Undefined */, "undefined", 131072 /* ContainsWideningType */);
+ var nullType = createIntrinsicType(65536 /* Null */, "null");
+ var nullWideningType = strictNullChecks ? nullType : createIntrinsicType(65536 /* Null */, "null", 131072 /* ContainsWideningType */);
var stringType = createIntrinsicType(4 /* String */, "string");
var numberType = createIntrinsicType(8 /* Number */, "number");
var bigintType = createIntrinsicType(64 /* BigInt */, "bigint");
@@ -31500,6 +31500,7 @@
var voidType = createIntrinsicType(16384 /* Void */, "void");
var neverType = createIntrinsicType(131072 /* Never */, "never");
var silentNeverType = createIntrinsicType(131072 /* Never */, "never");
+ var nonInferrableType = createIntrinsicType(131072 /* Never */, "never", 524288 /* NonInferrableType */);
var implicitNeverType = createIntrinsicType(131072 /* Never */, "never");
var nonPrimitiveType = createIntrinsicType(67108864 /* NonPrimitive */, "object");
var stringNumberSymbolType = getUnionType([stringType, numberType, esSymbolType]);
@@ -31516,7 +31517,7 @@
var anyFunctionType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
// The anyFunctionType contains the anyFunctionType by definition. The flag is further propagated
// in getPropagatingFlagsOfTypes, and it is checked in inferFromTypes.
- anyFunctionType.objectFlags |= 524288 /* ContainsAnyFunctionType */;
+ anyFunctionType.objectFlags |= 524288 /* NonInferrableType */;
var noConstraintType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
var circularConstraintType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
var resolvingDefaultType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
@@ -33618,13 +33619,10 @@
result.id = typeCount;
return result;
}
- function createIntrinsicType(kind, intrinsicName) {
+ function createIntrinsicType(kind, intrinsicName, objectFlags) {
+ if (objectFlags === void 0) { objectFlags = 0; }
var type = createType(kind);
type.intrinsicName = intrinsicName;
- return type;
- }
- function createNullableType(kind, intrinsicName, objectFlags) {
- var type = createIntrinsicType(kind, intrinsicName);
type.objectFlags = objectFlags;
return type;
}
@@ -40457,7 +40455,7 @@
}
function getConditionalTypeWorker(root, mapper, checkType, extendsType, trueType, falseType) {
// Simplifications for types of the form `T extends U ? T : never` and `T extends U ? never : T`.
- if (falseType.flags & 131072 /* Never */ && isTypeIdenticalTo(getActualTypeVariable(trueType), getActualTypeVariable(checkType))) {
+ if (falseType.flags & 131072 /* Never */ && getActualTypeVariable(trueType) === getActualTypeVariable(checkType)) {
if (checkType.flags & 1 /* Any */ || isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) { // Always true
return trueType;
}
@@ -40465,7 +40463,7 @@
return neverType;
}
}
- else if (trueType.flags & 131072 /* Never */ && isTypeIdenticalTo(getActualTypeVariable(falseType), getActualTypeVariable(checkType))) {
+ else if (trueType.flags & 131072 /* Never */ && getActualTypeVariable(falseType) === getActualTypeVariable(checkType)) {
if (!(checkType.flags & 1 /* Any */) && isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) { // Always true
return neverType;
}
@@ -44212,7 +44210,7 @@
var stringIndexInfo = getIndexInfoOfType(type, 0 /* String */);
var numberIndexInfo = getIndexInfoOfType(type, 1 /* Number */);
var result = createAnonymousType(type.symbol, members, ts.emptyArray, ts.emptyArray, stringIndexInfo && createIndexInfo(getWidenedType(stringIndexInfo.type), stringIndexInfo.isReadonly), numberIndexInfo && createIndexInfo(getWidenedType(numberIndexInfo.type), numberIndexInfo.isReadonly));
- result.objectFlags |= (ts.getObjectFlags(type) & 16384 /* JSLiteral */); // Retain js literal flag through widening
+ result.objectFlags |= (ts.getObjectFlags(type) & (16384 /* JSLiteral */ | 524288 /* NonInferrableType */)); // Retain js literal flag through widening
return result;
}
function getWidenedType(type) {
@@ -44513,18 +44511,11 @@
return type;
}
function createReverseMappedType(source, target, constraint) {
- var properties = getPropertiesOfType(source);
- if (properties.length === 0 && !getIndexInfoOfType(source, 0 /* String */)) {
- return undefined;
- }
// If any property contains context sensitive functions that have been skipped, the source type
// is incomplete and we can't infer a meaningful input type.
- for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) {
- var prop = properties_3[_i];
- if (ts.getObjectFlags(getTypeOfSymbol(prop)) & 524288 /* ContainsAnyFunctionType */) {
+ if (ts.getObjectFlags(source) & 524288 /* NonInferrableType */ || getPropertiesOfType(source).length === 0 && !getIndexInfoOfType(source, 0 /* String */)) {
return undefined;
}
- }
// For arrays and tuples we infer new arrays and tuples where the reverse mapping has been
// applied to the element type(s).
if (isArrayType(source)) {
@@ -44555,16 +44546,16 @@
return getTypeFromInference(inference);
}
function getUnmatchedProperties(source, target, requireOptionalProperties, matchDiscriminantProperties) {
- var properties, _i, properties_4, targetProp, sourceProp, targetType, sourceType;
+ var properties, _i, properties_3, targetProp, sourceProp, targetType, sourceType;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
properties = target.flags & 2097152 /* Intersection */ ? getPropertiesOfUnionOrIntersectionType(target) : getPropertiesOfObjectType(target);
- _i = 0, properties_4 = properties;
+ _i = 0, properties_3 = properties;
_a.label = 1;
case 1:
- if (!(_i < properties_4.length)) return [3 /*break*/, 6];
- targetProp = properties_4[_i];
+ if (!(_i < properties_3.length)) return [3 /*break*/, 6];
+ targetProp = properties_3[_i];
if (!(requireOptionalProperties || !(targetProp.flags & 16777216 /* Optional */))) return [3 /*break*/, 5];
sourceProp = getPropertyOfType(source, targetProp.escapedName);
if (!!sourceProp) return [3 /*break*/, 3];
@@ -44688,7 +44679,7 @@
// not contain anyFunctionType when we come back to this argument for its second round
// of inference. Also, we exclude inferences for silentNeverType (which is used as a wildcard
// when constructing types from type parameters that had no inference candidates).
- if (ts.getObjectFlags(source) & 524288 /* ContainsAnyFunctionType */ || source === silentNeverType || (priority & 8 /* ReturnType */ && (source === autoType || source === autoArrayType))) {
+ if (ts.getObjectFlags(source) & 524288 /* NonInferrableType */ || source === silentNeverType || (priority & 8 /* ReturnType */ && (source === autoType || source === autoArrayType))) {
return;
}
var inference = getInferenceInfoForType(target);
@@ -44788,24 +44779,40 @@
inferFromTypes(source, target.falseType);
}
else if (target.flags & 3145728 /* UnionOrIntersection */) {
+ // We infer from types that are not naked type variables first so that inferences we
+ // make from nested naked type variables and given slightly higher priority by virtue
+ // of being first in the candidates array.
+ var typeVariableCount = 0;
for (var _d = 0, _e = target.types; _d < _e.length; _d++) {
var t = _e[_d];
- var savePriority = priority;
+ if (getInferenceInfoForType(t)) {
+ typeVariableCount++;
+ }
+ else {
+ inferFromTypes(source, t);
+ }
+ }
// Inferences directly to naked type variables are given lower priority as they are
// less specific. For example, when inferring from Promise<string> to T | Promise<T>,
- // we want to infer string for T, not Promise<string> | string.
- if (getInferenceInfoForType(t)) {
+ // we want to infer string for T, not Promise<string> | string. For intersection types
+ // we only infer to single naked type variables.
+ if (target.flags & 1048576 /* Union */ ? typeVariableCount !== 0 : typeVariableCount === 1) {
+ var savePriority = priority;
priority |= 1 /* NakedTypeVariable */;
- }
+ for (var _f = 0, _g = target.types; _f < _g.length; _f++) {
+ var t = _g[_f];
+ if (getInferenceInfoForType(t)) {
inferFromTypes(source, t);
+ }
+ }
priority = savePriority;
}
}
else if (source.flags & 1048576 /* Union */) {
// Source is a union or intersection type, infer from each constituent type
var sourceTypes = source.types;
- for (var _f = 0, sourceTypes_3 = sourceTypes; _f < sourceTypes_3.length; _f++) {
- var sourceType = sourceTypes_3[_f];
+ for (var _h = 0, sourceTypes_3 = sourceTypes; _h < sourceTypes_3.length; _h++) {
+ var sourceType = sourceTypes_3[_h];
inferFromTypes(sourceType, target);
}
}
@@ -44984,8 +44991,8 @@
}
}
var properties = getPropertiesOfObjectType(target);
- for (var _i = 0, properties_5 = properties; _i < properties_5.length; _i++) {
- var targetProp = properties_5[_i];
+ for (var _i = 0, properties_4 = properties; _i < properties_4.length; _i++) {
+ var targetProp = properties_4[_i];
var sourceProp = getPropertyOfType(source, targetProp.escapedName);
if (sourceProp) {
inferFromTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp));
@@ -44998,7 +45005,7 @@
var sourceLen = sourceSignatures.length;
var targetLen = targetSignatures.length;
var len = sourceLen < targetLen ? sourceLen : targetLen;
- var skipParameters = !!(ts.getObjectFlags(source) & 524288 /* ContainsAnyFunctionType */);
+ var skipParameters = !!(ts.getObjectFlags(source) & 524288 /* NonInferrableType */);
for (var i = 0; i < len; i++) {
inferFromSignature(getBaseSignature(sourceSignatures[sourceLen - len + i]), getBaseSignature(targetSignatures[targetLen - len + i]), skipParameters);
}
@@ -50158,7 +50165,7 @@
spanArray = ts.createNodeArray(args);
if (hasSpreadArgument && argCount) {
var nextArg = ts.elementAt(args, getSpreadArgumentIndex(args) + 1) || undefined;
- spanArray = ts.createNodeArray(args.slice(max > argCount && nextArg ? args.indexOf(nextArg) : max));
+ spanArray = ts.createNodeArray(args.slice(max > argCount && nextArg ? args.indexOf(nextArg) : Math.min(max, args.length - 1)));
}
}
else {
@@ -50579,7 +50586,7 @@
// returns a function type, we choose to defer processing. This narrowly permits function composition
// operators to flow inferences through return types, but otherwise processes calls right away. We
// use the resolvingSignature singleton to indicate that we deferred processing. This result will be
- // propagated out and eventually turned into silentNeverType (a type that is assignable to anything and
+ // propagated out and eventually turned into nonInferrableType (a type that is assignable to anything and
// from which we never make inferences).
if (checkMode & 8 /* SkipGenericFunctions */ && !node.typeArguments && callSignatures.some(isGenericFunctionReturningFunction)) {
skippedGenericFunction(node, checkMode);
@@ -51002,8 +51009,8 @@
var signature = getResolvedSignature(node, /*candidatesOutArray*/ undefined, checkMode);
if (signature === resolvingSignature) {
// CheckMode.SkipGenericFunctions is enabled and this is a call to a generic function that
- // returns a function type. We defer checking and return anyFunctionType.
- return silentNeverType;
+ // returns a function type. We defer checking and return nonInferrableType.
+ return nonInferrableType;
}
if (node.expression.kind === 98 /* SuperKeyword */) {
return voidType;
@@ -51742,7 +51749,7 @@
var returnType = getReturnTypeFromBody(node, checkMode);
var returnOnlySignature = createSignature(undefined, undefined, undefined, ts.emptyArray, returnType, /*resolvedTypePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasLiteralTypes*/ false);
var returnOnlyType = createAnonymousType(node.symbol, emptySymbols, [returnOnlySignature], ts.emptyArray, undefined, undefined);
- returnOnlyType.objectFlags |= 524288 /* ContainsAnyFunctionType */;
+ returnOnlyType.objectFlags |= 524288 /* NonInferrableType */;
return links_1.contextFreeType = returnOnlyType;
}
return anyFunctionType;
@@ -52124,8 +52131,8 @@
if (strictNullChecks && properties.length === 0) {
return checkNonNullType(sourceType, node);
}
- for (var _i = 0, properties_6 = properties; _i < properties_6.length; _i++) {
- var p = properties_6[_i];
+ for (var _i = 0, properties_5 = properties; _i < properties_5.length; _i++) {
+ var p = properties_5[_i];
checkObjectLiteralDestructuringPropertyAssignment(sourceType, p, properties, rightIsThis);
}
return sourceType;
@@ -56483,8 +56490,8 @@
for (var _i = 0, baseTypes_2 = baseTypes; _i < baseTypes_2.length; _i++) {
var base = baseTypes_2[_i];
var properties = getPropertiesOfType(getTypeWithThisArgument(base, type.thisType));
- for (var _a = 0, properties_7 = properties; _a < properties_7.length; _a++) {
- var prop = properties_7[_a];
+ for (var _a = 0, properties_6 = properties; _a < properties_6.length; _a++) {
+ var prop = properties_6[_a];
var existing = seen.get(prop.escapedName);
if (!existing) {
seen.set(prop.escapedName, { prop: prop, containingType: base });
@@ -58931,7 +58938,7 @@
// autoArrayType is used as a marker, so even if global Array type is not defined, it needs to be a unique type
autoArrayType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
}
- globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray", /*arity*/ 1);
+ globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray", /*arity*/ 1) || globalArrayType;
anyReadonlyArrayType = globalReadonlyArrayType ? createTypeFromGenericGlobalType(globalReadonlyArrayType, [anyType]) : anyArrayType;
globalThisType = getGlobalTypeOrUndefined("ThisType", /*arity*/ 1);
if (augmentations) {
@@ -63754,7 +63761,7 @@
function createExpressionForAccessorDeclaration(properties, property, receiver, multiLine) {
var _a = ts.getAllAccessorDeclarations(properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor;
if (property === firstAccessor) {
- var properties_8 = [];
+ var properties_7 = [];
if (getAccessor) {
var getterFunction = ts.createFunctionExpression(getAccessor.modifiers,
/*asteriskToken*/ undefined,
@@ -63765,7 +63772,7 @@
ts.setTextRange(getterFunction, getAccessor);
ts.setOriginalNode(getterFunction, getAccessor);
var getter = ts.createPropertyAssignment("get", getterFunction);
- properties_8.push(getter);
+ properties_7.push(getter);
}
if (setAccessor) {
var setterFunction = ts.createFunctionExpression(setAccessor.modifiers,
@@ -63777,15 +63784,15 @@
ts.setTextRange(setterFunction, setAccessor);
ts.setOriginalNode(setterFunction, setAccessor);
var setter = ts.createPropertyAssignment("set", setterFunction);
- properties_8.push(setter);
+ properties_7.push(setter);
}
- properties_8.push(ts.createPropertyAssignment("enumerable", ts.createTrue()));
- properties_8.push(ts.createPropertyAssignment("configurable", ts.createTrue()));
+ properties_7.push(ts.createPropertyAssignment("enumerable", ts.createTrue()));
+ properties_7.push(ts.createPropertyAssignment("configurable", ts.createTrue()));
var expression = ts.setTextRange(ts.createCall(ts.createPropertyAccess(ts.createIdentifier("Object"), "defineProperty"),
/*typeArguments*/ undefined, [
receiver,
createExpressionForPropertyName(property.name),
- ts.createObjectLiteral(properties_8, multiLine)
+ ts.createObjectLiteral(properties_7, multiLine)
]),
/*location*/ firstAccessor);
return ts.aggregateTransformFlags(expression);
@@ -68269,8 +68276,8 @@
* @param receiver The receiver on which each property should be assigned.
*/
function addInitializedPropertyStatements(statements, properties, receiver) {
- for (var _i = 0, properties_9 = properties; _i < properties_9.length; _i++) {
- var property = properties_9[_i];
+ for (var _i = 0, properties_8 = properties; _i < properties_8.length; _i++) {
+ var property = properties_8[_i];
var statement = ts.createExpressionStatement(transformInitializedProperty(property, receiver));
ts.setSourceMapRange(statement, ts.moveRangePastModifiers(property));
ts.setCommentRange(statement, property);
@@ -68286,8 +68293,8 @@
*/
function generateInitializedPropertyExpressions(properties, receiver) {
var expressions = [];
- for (var _i = 0, properties_10 = properties; _i < properties_10.length; _i++) {
- var property = properties_10[_i];
+ for (var _i = 0, properties_9 = properties; _i < properties_9.length; _i++) {
+ var property = properties_9[_i];
var expression = transformInitializedProperty(property, receiver);
ts.startOnNewLine(expression);
ts.setSourceMapRange(expression, ts.moveRangePastModifiers(property));
@@ -123097,6 +123104,11 @@
* typingsInstaller will run the command with `${npmLocation} install ...`.
*/
Arguments.NpmLocation = "--npmLocation";
+ /**
+ * Flag indicating that the typings installer should try to validate the default npm location.
+ * If the default npm is not found when this flag is enabled, fallback to `npm install`
+ */
+ Arguments.ValidateDefaultNpmLocation = "--validateDefaultNpmLocation";
})(Arguments = server.Arguments || (server.Arguments = {}));
function hasArgument(argumentName) {
return ts.sys.args.indexOf(argumentName) >= 0;
@@ -131455,7 +131467,7 @@
return Logger;
}());
var NodeTypingsInstaller = /** @class */ (function () {
- function NodeTypingsInstaller(telemetryEnabled, logger, host, globalTypingsCacheLocation, typingSafeListLocation, typesMapLocation, npmLocation, event) {
+ function NodeTypingsInstaller(telemetryEnabled, logger, host, globalTypingsCacheLocation, typingSafeListLocation, typesMapLocation, npmLocation, validateDefaultNpmLocation, event) {
this.telemetryEnabled = telemetryEnabled;
this.logger = logger;
this.host = host;
@@ -131463,6 +131475,7 @@
this.typingSafeListLocation = typingSafeListLocation;
this.typesMapLocation = typesMapLocation;
this.npmLocation = npmLocation;
+ this.validateDefaultNpmLocation = validateDefaultNpmLocation;
this.event = event;
this.activeRequestCount = 0;
this.requestQueue = [];
@@ -131519,6 +131532,9 @@
if (this.npmLocation) {
args.push(server.Arguments.NpmLocation, this.npmLocation);
}
+ if (this.validateDefaultNpmLocation) {
+ args.push(server.Arguments.ValidateDefaultNpmLocation);
+ }
var execArgv = [];
for (var _i = 0, _a = process.execArgv; _i < _a.length; _i++) {
var arg = _a[_i];
@@ -131703,7 +131719,7 @@
var host = sys;
var typingsInstaller = disableAutomaticTypingAcquisition
? undefined
- : new NodeTypingsInstaller(telemetryEnabled, logger, host, getGlobalTypingsCacheLocation(), typingSafeListLocation, typesMapLocation, npmLocation, event);
+ : new NodeTypingsInstaller(telemetryEnabled, logger, host, getGlobalTypingsCacheLocation(), typingSafeListLocation, typesMapLocation, npmLocation, validateDefaultNpmLocation, event);
_this = _super.call(this, {
host: host,
cancellationToken: cancellationToken,
@@ -132098,6 +132114,7 @@
var typingSafeListLocation = server.findArgument(server.Arguments.TypingSafeListLocation); // TODO: GH#18217
var typesMapLocation = server.findArgument(server.Arguments.TypesMapLocation) || ts.combinePaths(ts.getDirectoryPath(sys.getExecutingFilePath()), "typesMap.json");
var npmLocation = server.findArgument(server.Arguments.NpmLocation);
+ var validateDefaultNpmLocation = server.hasArgument(server.Arguments.ValidateDefaultNpmLocation);
function parseStringArray(argName) {
var arg = server.findArgument(argName);
if (arg === undefined) {

lib/tsserverlibrary.js

@@ -84,7 +84,7 @@
// If changing the text in this section, be sure to test `configureNightly` too.
ts.versionMajorMinor = "3.4";
/** The version of the TypeScript compiler release */
- ts.version = ts.versionMajorMinor + ".3";
+ ts.version = ts.versionMajorMinor + ".5";
})(ts || (ts = {}));
(function (ts) {
/* @internal */
@@ -3489,7 +3489,7 @@
TypeFlags[TypeFlags["Instantiable"] = 63176704] = "Instantiable";
TypeFlags[TypeFlags["StructuredOrInstantiable"] = 66846720] = "StructuredOrInstantiable";
/* @internal */
- TypeFlags[TypeFlags["ObjectFlagsType"] = 3768320] = "ObjectFlagsType";
+ TypeFlags[TypeFlags["ObjectFlagsType"] = 3899392] = "ObjectFlagsType";
// 'Narrowable' types are types where narrowing actually narrows.
// This *should* be every type other than null, undefined, void, and never
TypeFlags[TypeFlags["Narrowable"] = 133970943] = "Narrowable";
@@ -3537,7 +3537,7 @@
/* @internal */
ObjectFlags[ObjectFlags["ContainsObjectLiteral"] = 262144] = "ContainsObjectLiteral";
/* @internal */
- ObjectFlags[ObjectFlags["ContainsAnyFunctionType"] = 524288] = "ContainsAnyFunctionType";
+ ObjectFlags[ObjectFlags["NonInferrableType"] = 524288] = "NonInferrableType";
ObjectFlags[ObjectFlags["ClassOrInterface"] = 3] = "ClassOrInterface";
/* @internal */
ObjectFlags[ObjectFlags["RequiresWidening"] = 393216] = "RequiresWidening";
@@ -12613,7 +12613,7 @@
}
ts.getClassLikeDeclarationOfSymbol = getClassLikeDeclarationOfSymbol;
function getObjectFlags(type) {
- return type.flags & 3768320 /* ObjectFlagsType */ ? type.objectFlags : 0;
+ return type.flags & 3899392 /* ObjectFlagsType */ ? type.objectFlags : 0;
}
ts.getObjectFlags = getObjectFlags;
function typeHasCallOrConstructSignatures(type, checker) {
@@ -31470,10 +31470,10 @@
var wildcardType = createIntrinsicType(1 /* Any */, "any");
var errorType = createIntrinsicType(1 /* Any */, "error");
var unknownType = createIntrinsicType(2 /* Unknown */, "unknown");
- var undefinedType = createNullableType(32768 /* Undefined */, "undefined", 0);
- var undefinedWideningType = strictNullChecks ? undefinedType : createNullableType(32768 /* Undefined */, "undefined", 131072 /* ContainsWideningType */);
- var nullType = createNullableType(65536 /* Null */, "null", 0);
- var nullWideningType = strictNullChecks ? nullType : createNullableType(65536 /* Null */, "null", 131072 /* ContainsWideningType */);
+ var undefinedType = createIntrinsicType(32768 /* Undefined */, "undefined");
+ var undefinedWideningType = strictNullChecks ? undefinedType : createIntrinsicType(32768 /* Undefined */, "undefined", 131072 /* ContainsWideningType */);
+ var nullType = createIntrinsicType(65536 /* Null */, "null");
+ var nullWideningType = strictNullChecks ? nullType : createIntrinsicType(65536 /* Null */, "null", 131072 /* ContainsWideningType */);
var stringType = createIntrinsicType(4 /* String */, "string");
var numberType = createIntrinsicType(8 /* Number */, "number");
var bigintType = createIntrinsicType(64 /* BigInt */, "bigint");
@@ -31499,6 +31499,7 @@
var voidType = createIntrinsicType(16384 /* Void */, "void");
var neverType = createIntrinsicType(131072 /* Never */, "never");
var silentNeverType = createIntrinsicType(131072 /* Never */, "never");
+ var nonInferrableType = createIntrinsicType(131072 /* Never */, "never", 524288 /* NonInferrableType */);
var implicitNeverType = createIntrinsicType(131072 /* Never */, "never");
var nonPrimitiveType = createIntrinsicType(67108864 /* NonPrimitive */, "object");
var stringNumberSymbolType = getUnionType([stringType, numberType, esSymbolType]);
@@ -31515,7 +31516,7 @@
var anyFunctionType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
// The anyFunctionType contains the anyFunctionType by definition. The flag is further propagated
// in getPropagatingFlagsOfTypes, and it is checked in inferFromTypes.
- anyFunctionType.objectFlags |= 524288 /* ContainsAnyFunctionType */;
+ anyFunctionType.objectFlags |= 524288 /* NonInferrableType */;
var noConstraintType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
var circularConstraintType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
var resolvingDefaultType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
@@ -33617,13 +33618,10 @@
result.id = typeCount;
return result;
}
- function createIntrinsicType(kind, intrinsicName) {
+ function createIntrinsicType(kind, intrinsicName, objectFlags) {
+ if (objectFlags === void 0) { objectFlags = 0; }
var type = createType(kind);
type.intrinsicName = intrinsicName;
- return type;
- }
- function createNullableType(kind, intrinsicName, objectFlags) {
- var type = createIntrinsicType(kind, intrinsicName);
type.objectFlags = objectFlags;
return type;
}
@@ -40456,7 +40454,7 @@
}
function getConditionalTypeWorker(root, mapper, checkType, extendsType, trueType, falseType) {
// Simplifications for types of the form `T extends U ? T : never` and `T extends U ? never : T`.
- if (falseType.flags & 131072 /* Never */ && isTypeIdenticalTo(getActualTypeVariable(trueType), getActualTypeVariable(checkType))) {
+ if (falseType.flags & 131072 /* Never */ && getActualTypeVariable(trueType) === getActualTypeVariable(checkType)) {
if (checkType.flags & 1 /* Any */ || isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) { // Always true
return trueType;
}
@@ -40464,7 +40462,7 @@
return neverType;
}
}
- else if (trueType.flags & 131072 /* Never */ && isTypeIdenticalTo(getActualTypeVariable(falseType), getActualTypeVariable(checkType))) {
+ else if (trueType.flags & 131072 /* Never */ && getActualTypeVariable(falseType) === getActualTypeVariable(checkType)) {
if (!(checkType.flags & 1 /* Any */) && isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) { // Always true
return neverType;
}
@@ -44211,7 +44209,7 @@
var stringIndexInfo = getIndexInfoOfType(type, 0 /* String */);
var numberIndexInfo = getIndexInfoOfType(type, 1 /* Number */);
var result = createAnonymousType(type.symbol, members, ts.emptyArray, ts.emptyArray, stringIndexInfo && createIndexInfo(getWidenedType(stringIndexInfo.type), stringIndexInfo.isReadonly), numberIndexInfo && createIndexInfo(getWidenedType(numberIndexInfo.type), numberIndexInfo.isReadonly));
- result.objectFlags |= (ts.getObjectFlags(type) & 16384 /* JSLiteral */); // Retain js literal flag through widening
+ result.objectFlags |= (ts.getObjectFlags(type) & (16384 /* JSLiteral */ | 524288 /* NonInferrableType */)); // Retain js literal flag through widening
return result;
}
function getWidenedType(type) {
@@ -44512,18 +44510,11 @@
return type;
}
function createReverseMappedType(source, target, constraint) {
- var properties = getPropertiesOfType(source);
- if (properties.length === 0 && !getIndexInfoOfType(source, 0 /* String */)) {
- return undefined;
- }
// If any property contains context sensitive functions that have been skipped, the source type
// is incomplete and we can't infer a meaningful input type.
- for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) {
- var prop = properties_3[_i];
- if (ts.getObjectFlags(getTypeOfSymbol(prop)) & 524288 /* ContainsAnyFunctionType */) {
+ if (ts.getObjectFlags(source) & 524288 /* NonInferrableType */ || getPropertiesOfType(source).length === 0 && !getIndexInfoOfType(source, 0 /* String */)) {
return undefined;
}
- }
// For arrays and tuples we infer new arrays and tuples where the reverse mapping has been
// applied to the element type(s).
if (isArrayType(source)) {
@@ -44554,16 +44545,16 @@
return getTypeFromInference(inference);
}
function getUnmatchedProperties(source, target, requireOptionalProperties, matchDiscriminantProperties) {
- var properties, _i, properties_4, targetProp, sourceProp, targetType, sourceType;
+ var properties, _i, properties_3, targetProp, sourceProp, targetType, sourceType;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
properties = target.flags & 2097152 /* Intersection */ ? getPropertiesOfUnionOrIntersectionType(target) : getPropertiesOfObjectType(target);
- _i = 0, properties_4 = properties;
+ _i = 0, properties_3 = properties;
_a.label = 1;
case 1:
- if (!(_i < properties_4.length)) return [3 /*break*/, 6];
- targetProp = properties_4[_i];
+ if (!(_i < properties_3.length)) return [3 /*break*/, 6];
+ targetProp = properties_3[_i];
if (!(requireOptionalProperties || !(targetProp.flags & 16777216 /* Optional */))) return [3 /*break*/, 5];
sourceProp = getPropertyOfType(source, targetProp.escapedName);
if (!!sourceProp) return [3 /*break*/, 3];
@@ -44687,7 +44678,7 @@
// not contain anyFunctionType when we come back to this argument for its second round
// of inference. Also, we exclude inferences for silentNeverType (which is used as a wildcard
// when constructing types from type parameters that had no inference candidates).
- if (ts.getObjectFlags(source) & 524288 /* ContainsAnyFunctionType */ || source === silentNeverType || (priority & 8 /* ReturnType */ && (source === autoType || source === autoArrayType))) {
+ if (ts.getObjectFlags(source) & 524288 /* NonInferrableType */ || source === silentNeverType || (priority & 8 /* ReturnType */ && (source === autoType || source === autoArrayType))) {
return;
}
var inference = getInferenceInfoForType(target);
@@ -44787,24 +44778,40 @@
inferFromTypes(source, target.falseType);
}
else if (target.flags & 3145728 /* UnionOrIntersection */) {
+ // We infer from types that are not naked type variables first so that inferences we
+ // make from nested naked type variables and given slightly higher priority by virtue
+ // of being first in the candidates array.
+ var typeVariableCount = 0;
for (var _d = 0, _e = target.types; _d < _e.length; _d++) {
var t = _e[_d];
- var savePriority = priority;
+ if (getInferenceInfoForType(t)) {
+ typeVariableCount++;
+ }
+ else {
+ inferFromTypes(source, t);
+ }
+ }
// Inferences directly to naked type variables are given lower priority as they are
// less specific. For example, when inferring from Promise<string> to T | Promise<T>,
- // we want to infer string for T, not Promise<string> | string.
- if (getInferenceInfoForType(t)) {
+ // we want to infer string for T, not Promise<string> | string. For intersection types
+ // we only infer to single naked type variables.
+ if (target.flags & 1048576 /* Union */ ? typeVariableCount !== 0 : typeVariableCount === 1) {
+ var savePriority = priority;
priority |= 1 /* NakedTypeVariable */;
- }
+ for (var _f = 0, _g = target.types; _f < _g.length; _f++) {
+ var t = _g[_f];
+ if (getInferenceInfoForType(t)) {
inferFromTypes(source, t);
+ }
+ }
priority = savePriority;
}
}
else if (source.flags & 1048576 /* Union */) {
// Source is a union or intersection type, infer from each constituent type
var sourceTypes = source.types;
- for (var _f = 0, sourceTypes_3 = sourceTypes; _f < sourceTypes_3.length; _f++) {
- var sourceType = sourceTypes_3[_f];
+ for (var _h = 0, sourceTypes_3 = sourceTypes; _h < sourceTypes_3.length; _h++) {
+ var sourceType = sourceTypes_3[_h];
inferFromTypes(sourceType, target);
}
}
@@ -44983,8 +44990,8 @@
}
}
var properties = getPropertiesOfObjectType(target);
- for (var _i = 0, properties_5 = properties; _i < properties_5.length; _i++) {
- var targetProp = properties_5[_i];
+ for (var _i = 0, properties_4 = properties; _i < properties_4.length; _i++) {
+ var targetProp = properties_4[_i];
var sourceProp = getPropertyOfType(source, targetProp.escapedName);
if (sourceProp) {
inferFromTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp));
@@ -44997,7 +45004,7 @@
var sourceLen = sourceSignatures.length;
var targetLen = targetSignatures.length;
var len = sourceLen < targetLen ? sourceLen : targetLen;
- var skipParameters = !!(ts.getObjectFlags(source) & 524288 /* ContainsAnyFunctionType */);
+ var skipParameters = !!(ts.getObjectFlags(source) & 524288 /* NonInferrableType */);
for (var i = 0; i < len; i++) {
inferFromSignature(getBaseSignature(sourceSignatures[sourceLen - len + i]), getBaseSignature(targetSignatures[targetLen - len + i]), skipParameters);
}
@@ -50157,7 +50164,7 @@
spanArray = ts.createNodeArray(args);
if (hasSpreadArgument && argCount) {
var nextArg = ts.elementAt(args, getSpreadArgumentIndex(args) + 1) || undefined;
- spanArray = ts.createNodeArray(args.slice(max > argCount && nextArg ? args.indexOf(nextArg) : max));
+ spanArray = ts.createNodeArray(args.slice(max > argCount && nextArg ? args.indexOf(nextArg) : Math.min(max, args.length - 1)));
}
}
else {
@@ -50578,7 +50585,7 @@
// returns a function type, we choose to defer processing. This narrowly permits function composition
// operators to flow inferences through return types, but otherwise processes calls right away. We
// use the resolvingSignature singleton to indicate that we deferred processing. This result will be
- // propagated out and eventually turned into silentNeverType (a type that is assignable to anything and
+ // propagated out and eventually turned into nonInferrableType (a type that is assignable to anything and
// from which we never make inferences).
if (checkMode & 8 /* SkipGenericFunctions */ && !node.typeArguments && callSignatures.some(isGenericFunctionReturningFunction)) {
skippedGenericFunction(node, checkMode);
@@ -51001,8 +51008,8 @@
var signature = getResolvedSignature(node, /*candidatesOutArray*/ undefined, checkMode);
if (signature === resolvingSignature) {
// CheckMode.SkipGenericFunctions is enabled and this is a call to a generic function that
- // returns a function type. We defer checking and return anyFunctionType.
- return silentNeverType;
+ // returns a function type. We defer checking and return nonInferrableType.
+ return nonInferrableType;
}
if (node.expression.kind === 98 /* SuperKeyword */) {
return voidType;
@@ -51741,7 +51748,7 @@
var returnType = getReturnTypeFromBody(node, checkMode);
var returnOnlySignature = createSignature(undefined, undefined, undefined, ts.emptyArray, returnType, /*resolvedTypePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasLiteralTypes*/ false);
var returnOnlyType = createAnonymousType(node.symbol, emptySymbols, [returnOnlySignature], ts.emptyArray, undefined, undefined);
- returnOnlyType.objectFlags |= 524288 /* ContainsAnyFunctionType */;
+ returnOnlyType.objectFlags |= 524288 /* NonInferrableType */;
return links_1.contextFreeType = returnOnlyType;
}
return anyFunctionType;
@@ -52123,8 +52130,8 @@
if (strictNullChecks && properties.length === 0) {
return checkNonNullType(sourceType, node);
}
- for (var _i = 0, properties_6 = properties; _i < properties_6.length; _i++) {
- var p = properties_6[_i];
+ for (var _i = 0, properties_5 = properties; _i < properties_5.length; _i++) {
+ var p = properties_5[_i];
checkObjectLiteralDestructuringPropertyAssignment(sourceType, p, properties, rightIsThis);
}
return sourceType;
@@ -56482,8 +56489,8 @@
for (var _i = 0, baseTypes_2 = baseTypes; _i < baseTypes_2.length; _i++) {
var base = baseTypes_2[_i];
var properties = getPropertiesOfType(getTypeWithThisArgument(base, type.thisType));
- for (var _a = 0, properties_7 = properties; _a < properties_7.length; _a++) {
- var prop = properties_7[_a];
+ for (var _a = 0, properties_6 = properties; _a < properties_6.length; _a++) {
+ var prop = properties_6[_a];
var existing = seen.get(prop.escapedName);
if (!existing) {
seen.set(prop.escapedName, { prop: prop, containingType: base });
@@ -58930,7 +58937,7 @@
// autoArrayType is used as a marker, so even if global Array type is not defined, it needs to be a unique type
autoArrayType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
}
- globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray", /*arity*/ 1);
+ globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray", /*arity*/ 1) || globalArrayType;
anyReadonlyArrayType = globalReadonlyArrayType ? createTypeFromGenericGlobalType(globalReadonlyArrayType, [anyType]) : anyArrayType;
globalThisType = getGlobalTypeOrUndefined("ThisType", /*arity*/ 1);
if (augmentations) {
@@ -63753,7 +63760,7 @@
function createExpressionForAccessorDeclaration(properties, property, receiver, multiLine) {
var _a = ts.getAllAccessorDeclarations(properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor;
if (property === firstAccessor) {
- var properties_8 = [];
+ var properties_7 = [];
if (getAccessor) {
var getterFunction = ts.createFunctionExpression(getAccessor.modifiers,
/*asteriskToken*/ undefined,
@@ -63764,7 +63771,7 @@
ts.setTextRange(getterFunction, getAccessor);
ts.setOriginalNode(getterFunction, getAccessor);
var getter = ts.createPropertyAssignment("get", getterFunction);
- properties_8.push(getter);
+ properties_7.push(getter);
}
if (setAccessor) {
var setterFunction = ts.createFunctionExpression(setAccessor.modifiers,
@@ -63776,15 +63783,15 @@
ts.setTextRange(setterFunction, setAccessor);
ts.setOriginalNode(setterFunction, setAccessor);
var setter = ts.createPropertyAssignment("set", setterFunction);
- properties_8.push(setter);
+ properties_7.push(setter);
}
- properties_8.push(ts.createPropertyAssignment("enumerable", ts.createTrue()));
- properties_8.push(ts.createPropertyAssignment("configurable", ts.createTrue()));
+ properties_7.push(ts.createPropertyAssignment("enumerable", ts.createTrue()));
+ properties_7.push(ts.createPropertyAssignment("configurable", ts.createTrue()));
var expression = ts.setTextRange(ts.createCall(ts.createPropertyAccess(ts.createIdentifier("Object"), "defineProperty"),
/*typeArguments*/ undefined, [
receiver,
createExpressionForPropertyName(property.name),
- ts.createObjectLiteral(properties_8, multiLine)
+ ts.createObjectLiteral(properties_7, multiLine)
]),
/*location*/ firstAccessor);
return ts.aggregateTransformFlags(expression);
@@ -68268,8 +68275,8 @@
* @param receiver The receiver on which each property should be assigned.
*/
function addInitializedPropertyStatements(statements, properties, receiver) {
- for (var _i = 0, properties_9 = properties; _i < properties_9.length; _i++) {
- var property = properties_9[_i];
+ for (var _i = 0, properties_8 = properties; _i < properties_8.length; _i++) {
+ var property = properties_8[_i];
var statement = ts.createExpressionStatement(transformInitializedProperty(property, receiver));
ts.setSourceMapRange(statement, ts.moveRangePastModifiers(property));
ts.setCommentRange(statement, property);
@@ -68285,8 +68292,8 @@
*/
function generateInitializedPropertyExpressions(properties, receiver) {
var expressions = [];
- for (var _i = 0, properties_10 = properties; _i < properties_10.length; _i++) {
- var property = properties_10[_i];
+ for (var _i = 0, properties_9 = properties; _i < properties_9.length; _i++) {
+ var property = properties_9[_i];
var expression = transformInitializedProperty(property, receiver);
ts.startOnNewLine(expression);
ts.setSourceMapRange(expression, ts.moveRangePastModifiers(property));
@@ -94846,6 +94853,11 @@
* typingsInstaller will run the command with `${npmLocation} install ...`.
*/
Arguments.NpmLocation = "--npmLocation";
+ /**
+ * Flag indicating that the typings installer should try to validate the default npm location.
+ * If the default npm is not found when this flag is enabled, fallback to `npm install`
+ */
+ Arguments.ValidateDefaultNpmLocation = "--validateDefaultNpmLocation";
})(Arguments = server.Arguments || (server.Arguments = {}));
function hasArgument(argumentName) {
return ts.sys.args.indexOf(argumentName) >= 0;

lib/typescript.js

@@ -75,7 +75,7 @@
// If changing the text in this section, be sure to test `configureNightly` too.
ts.versionMajorMinor = "3.4";
/** The version of the TypeScript compiler release */
- ts.version = ts.versionMajorMinor + ".3";
+ ts.version = ts.versionMajorMinor + ".5";
})(ts || (ts = {}));
(function (ts) {
/* @internal */
@@ -3480,7 +3480,7 @@
TypeFlags[TypeFlags["Instantiable"] = 63176704] = "Instantiable";
TypeFlags[TypeFlags["StructuredOrInstantiable"] = 66846720] = "StructuredOrInstantiable";
/* @internal */
- TypeFlags[TypeFlags["ObjectFlagsType"] = 3768320] = "ObjectFlagsType";
+ TypeFlags[TypeFlags["ObjectFlagsType"] = 3899392] = "ObjectFlagsType";
// 'Narrowable' types are types where narrowing actually narrows.
// This *should* be every type other than null, undefined, void, and never
TypeFlags[TypeFlags["Narrowable"] = 133970943] = "Narrowable";
@@ -3528,7 +3528,7 @@
/* @internal */
ObjectFlags[ObjectFlags["ContainsObjectLiteral"] = 262144] = "ContainsObjectLiteral";
/* @internal */
- ObjectFlags[ObjectFlags["ContainsAnyFunctionType"] = 524288] = "ContainsAnyFunctionType";
+ ObjectFlags[ObjectFlags["NonInferrableType"] = 524288] = "NonInferrableType";
ObjectFlags[ObjectFlags["ClassOrInterface"] = 3] = "ClassOrInterface";
/* @internal */
ObjectFlags[ObjectFlags["RequiresWidening"] = 393216] = "RequiresWidening";
@@ -12604,7 +12604,7 @@
}
ts.getClassLikeDeclarationOfSymbol = getClassLikeDeclarationOfSymbol;
function getObjectFlags(type) {
- return type.flags & 3768320 /* ObjectFlagsType */ ? type.objectFlags : 0;
+ return type.flags & 3899392 /* ObjectFlagsType */ ? type.objectFlags : 0;
}
ts.getObjectFlags = getObjectFlags;
function typeHasCallOrConstructSignatures(type, checker) {
@@ -31461,10 +31461,10 @@
var wildcardType = createIntrinsicType(1 /* Any */, "any");
var errorType = createIntrinsicType(1 /* Any */, "error");
var unknownType = createIntrinsicType(2 /* Unknown */, "unknown");
- var undefinedType = createNullableType(32768 /* Undefined */, "undefined", 0);
- var undefinedWideningType = strictNullChecks ? undefinedType : createNullableType(32768 /* Undefined */, "undefined", 131072 /* ContainsWideningType */);
- var nullType = createNullableType(65536 /* Null */, "null", 0);
- var nullWideningType = strictNullChecks ? nullType : createNullableType(65536 /* Null */, "null", 131072 /* ContainsWideningType */);
+ var undefinedType = createIntrinsicType(32768 /* Undefined */, "undefined");
+ var undefinedWideningType = strictNullChecks ? undefinedType : createIntrinsicType(32768 /* Undefined */, "undefined", 131072 /* ContainsWideningType */);
+ var nullType = createIntrinsicType(65536 /* Null */, "null");
+ var nullWideningType = strictNullChecks ? nullType : createIntrinsicType(65536 /* Null */, "null", 131072 /* ContainsWideningType */);
var stringType = createIntrinsicType(4 /* String */, "string");
var numberType = createIntrinsicType(8 /* Number */, "number");
var bigintType = createIntrinsicType(64 /* BigInt */, "bigint");
@@ -31490,6 +31490,7 @@
var voidType = createIntrinsicType(16384 /* Void */, "void");
var neverType = createIntrinsicType(131072 /* Never */, "never");
var silentNeverType = createIntrinsicType(131072 /* Never */, "never");
+ var nonInferrableType = createIntrinsicType(131072 /* Never */, "never", 524288 /* NonInferrableType */);
var implicitNeverType = createIntrinsicType(131072 /* Never */, "never");
var nonPrimitiveType = createIntrinsicType(67108864 /* NonPrimitive */, "object");
var stringNumberSymbolType = getUnionType([stringType, numberType, esSymbolType]);
@@ -31506,7 +31507,7 @@
var anyFunctionType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
// The anyFunctionType contains the anyFunctionType by definition. The flag is further propagated
// in getPropagatingFlagsOfTypes, and it is checked in inferFromTypes.
- anyFunctionType.objectFlags |= 524288 /* ContainsAnyFunctionType */;
+ anyFunctionType.objectFlags |= 524288 /* NonInferrableType */;
var noConstraintType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
var circularConstraintType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
var resolvingDefaultType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
@@ -33608,13 +33609,10 @@
result.id = typeCount;
return result;
}
- function createIntrinsicType(kind, intrinsicName) {
+ function createIntrinsicType(kind, intrinsicName, objectFlags) {
+ if (objectFlags === void 0) { objectFlags = 0; }
var type = createType(kind);
type.intrinsicName = intrinsicName;
- return type;
- }
- function createNullableType(kind, intrinsicName, objectFlags) {
- var type = createIntrinsicType(kind, intrinsicName);
type.objectFlags = objectFlags;
return type;
}
@@ -40447,7 +40445,7 @@
}
function getConditionalTypeWorker(root, mapper, checkType, extendsType, trueType, falseType) {
// Simplifications for types of the form `T extends U ? T : never` and `T extends U ? never : T`.
- if (falseType.flags & 131072 /* Never */ && isTypeIdenticalTo(getActualTypeVariable(trueType), getActualTypeVariable(checkType))) {
+ if (falseType.flags & 131072 /* Never */ && getActualTypeVariable(trueType) === getActualTypeVariable(checkType)) {
if (checkType.flags & 1 /* Any */ || isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) { // Always true
return trueType;
}
@@ -40455,7 +40453,7 @@
return neverType;
}
}
- else if (trueType.flags & 131072 /* Never */ && isTypeIdenticalTo(getActualTypeVariable(falseType), getActualTypeVariable(checkType))) {
+ else if (trueType.flags & 131072 /* Never */ && getActualTypeVariable(falseType) === getActualTypeVariable(checkType)) {
if (!(checkType.flags & 1 /* Any */) && isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) { // Always true
return neverType;
}
@@ -44202,7 +44200,7 @@
var stringIndexInfo = getIndexInfoOfType(type, 0 /* String */);
var numberIndexInfo = getIndexInfoOfType(type, 1 /* Number */);
var result = createAnonymousType(type.symbol, members, ts.emptyArray, ts.emptyArray, stringIndexInfo && createIndexInfo(getWidenedType(stringIndexInfo.type), stringIndexInfo.isReadonly), numberIndexInfo && createIndexInfo(getWidenedType(numberIndexInfo.type), numberIndexInfo.isReadonly));
- result.objectFlags |= (ts.getObjectFlags(type) & 16384 /* JSLiteral */); // Retain js literal flag through widening
+ result.objectFlags |= (ts.getObjectFlags(type) & (16384 /* JSLiteral */ | 524288 /* NonInferrableType */)); // Retain js literal flag through widening
return result;
}
function getWidenedType(type) {
@@ -44503,18 +44501,11 @@
return type;
}
function createReverseMappedType(source, target, constraint) {
- var properties = getPropertiesOfType(source);
- if (properties.length === 0 && !getIndexInfoOfType(source, 0 /* String */)) {
- return undefined;
- }
// If any property contains context sensitive functions that have been skipped, the source type
// is incomplete and we can't infer a meaningful input type.
- for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) {
- var prop = properties_3[_i];
- if (ts.getObjectFlags(getTypeOfSymbol(prop)) & 524288 /* ContainsAnyFunctionType */) {
+ if (ts.getObjectFlags(source) & 524288 /* NonInferrableType */ || getPropertiesOfType(source).length === 0 && !getIndexInfoOfType(source, 0 /* String */)) {
return undefined;
}
- }
// For arrays and tuples we infer new arrays and tuples where the reverse mapping has been
// applied to the element type(s).
if (isArrayType(source)) {
@@ -44545,16 +44536,16 @@
return getTypeFromInference(inference);
}
function getUnmatchedProperties(source, target, requireOptionalProperties, matchDiscriminantProperties) {
- var properties, _i, properties_4, targetProp, sourceProp, targetType, sourceType;
+ var properties, _i, properties_3, targetProp, sourceProp, targetType, sourceType;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
properties = target.flags & 2097152 /* Intersection */ ? getPropertiesOfUnionOrIntersectionType(target) : getPropertiesOfObjectType(target);
- _i = 0, properties_4 = properties;
+ _i = 0, properties_3 = properties;
_a.label = 1;
case 1:
- if (!(_i < properties_4.length)) return [3 /*break*/, 6];
- targetProp = properties_4[_i];
+ if (!(_i < properties_3.length)) return [3 /*break*/, 6];
+ targetProp = properties_3[_i];
if (!(requireOptionalProperties || !(targetProp.flags & 16777216 /* Optional */))) return [3 /*break*/, 5];
sourceProp = getPropertyOfType(source, targetProp.escapedName);
if (!!sourceProp) return [3 /*break*/, 3];
@@ -44678,7 +44669,7 @@
// not contain anyFunctionType when we come back to this argument for its second round
// of inference. Also, we exclude inferences for silentNeverType (which is used as a wildcard
// when constructing types from type parameters that had no inference candidates).
- if (ts.getObjectFlags(source) & 524288 /* ContainsAnyFunctionType */ || source === silentNeverType || (priority & 8 /* ReturnType */ && (source === autoType || source === autoArrayType))) {
+ if (ts.getObjectFlags(source) & 524288 /* NonInferrableType */ || source === silentNeverType || (priority & 8 /* ReturnType */ && (source === autoType || source === autoArrayType))) {
return;
}
var inference = getInferenceInfoForType(target);
@@ -44778,24 +44769,40 @@
inferFromTypes(source, target.falseType);
}
else if (target.flags & 3145728 /* UnionOrIntersection */) {
+ // We infer from types that are not naked type variables first so that inferences we
+ // make from nested naked type variables and given slightly higher priority by virtue
+ // of being first in the candidates array.
+ var typeVariableCount = 0;
for (var _d = 0, _e = target.types; _d < _e.length; _d++) {
var t = _e[_d];
- var savePriority = priority;
+ if (getInferenceInfoForType(t)) {
+ typeVariableCount++;
+ }
+ else {
+ inferFromTypes(source, t);
+ }
+ }
// Inferences directly to naked type variables are given lower priority as they are
// less specific. For example, when inferring from Promise<string> to T | Promise<T>,
- // we want to infer string for T, not Promise<string> | string.
- if (getInferenceInfoForType(t)) {
+ // we want to infer string for T, not Promise<string> | string. For intersection types
+ // we only infer to single naked type variables.
+ if (target.flags & 1048576 /* Union */ ? typeVariableCount !== 0 : typeVariableCount === 1) {
+ var savePriority = priority;
priority |= 1 /* NakedTypeVariable */;
- }
+ for (var _f = 0, _g = target.types; _f < _g.length; _f++) {
+ var t = _g[_f];
+ if (getInferenceInfoForType(t)) {
inferFromTypes(source, t);
+ }
+ }
priority = savePriority;
}
}
else if (source.flags & 1048576 /* Union */) {
// Source is a union or intersection type, infer from each constituent type
var sourceTypes = source.types;
- for (var _f = 0, sourceTypes_3 = sourceTypes; _f < sourceTypes_3.length; _f++) {
- var sourceType = sourceTypes_3[_f];
+ for (var _h = 0, sourceTypes_3 = sourceTypes; _h < sourceTypes_3.length; _h++) {
+ var sourceType = sourceTypes_3[_h];
inferFromTypes(sourceType, target);
}
}
@@ -44974,8 +44981,8 @@
}
}
var properties = getPropertiesOfObjectType(target);
- for (var _i = 0, properties_5 = properties; _i < properties_5.length; _i++) {
- var targetProp = properties_5[_i];
+ for (var _i = 0, properties_4 = properties; _i < properties_4.length; _i++) {
+ var targetProp = properties_4[_i];
var sourceProp = getPropertyOfType(source, targetProp.escapedName);
if (sourceProp) {
inferFromTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp));
@@ -44988,7 +44995,7 @@
var sourceLen = sourceSignatures.length;
var targetLen = targetSignatures.length;
var len = sourceLen < targetLen ? sourceLen : targetLen;
- var skipParameters = !!(ts.getObjectFlags(source) & 524288 /* ContainsAnyFunctionType */);
+ var skipParameters = !!(ts.getObjectFlags(source) & 524288 /* NonInferrableType */);
for (var i = 0; i < len; i++) {
inferFromSignature(getBaseSignature(sourceSignatures[sourceLen - len + i]), getBaseSignature(targetSignatures[targetLen - len + i]), skipParameters);
}
@@ -50148,7 +50155,7 @@
spanArray = ts.createNodeArray(args);
if (hasSpreadArgument && argCount) {
var nextArg = ts.elementAt(args, getSpreadArgumentIndex(args) + 1) || undefined;
- spanArray = ts.createNodeArray(args.slice(max > argCount && nextArg ? args.indexOf(nextArg) : max));
+ spanArray = ts.createNodeArray(args.slice(max > argCount && nextArg ? args.indexOf(nextArg) : Math.min(max, args.length - 1)));
}
}
else {
@@ -50569,7 +50576,7 @@
// returns a function type, we choose to defer processing. This narrowly permits function composition
// operators to flow inferences through return types, but otherwise processes calls right away. We
// use the resolvingSignature singleton to indicate that we deferred processing. This result will be
- // propagated out and eventually turned into silentNeverType (a type that is assignable to anything and
+ // propagated out and eventually turned into nonInferrableType (a type that is assignable to anything and
// from which we never make inferences).
if (checkMode & 8 /* SkipGenericFunctions */ && !node.typeArguments && callSignatures.some(isGenericFunctionReturningFunction)) {
skippedGenericFunction(node, checkMode);
@@ -50992,8 +50999,8 @@
var signature = getResolvedSignature(node, /*candidatesOutArray*/ undefined, checkMode);
if (signature === resolvingSignature) {
// CheckMode.SkipGenericFunctions is enabled and this is a call to a generic function that
- // returns a function type. We defer checking and return anyFunctionType.
- return silentNeverType;
+ // returns a function type. We defer checking and return nonInferrableType.
+ return nonInferrableType;
}
if (node.expression.kind === 98 /* SuperKeyword */) {
return voidType;
@@ -51732,7 +51739,7 @@
var returnType = getReturnTypeFromBody(node, checkMode);
var returnOnlySignature = createSignature(undefined, undefined, undefined, ts.emptyArray, returnType, /*resolvedTypePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasLiteralTypes*/ false);
var returnOnlyType = createAnonymousType(node.symbol, emptySymbols, [returnOnlySignature], ts.emptyArray, undefined, undefined);
- returnOnlyType.objectFlags |= 524288 /* ContainsAnyFunctionType */;
+ returnOnlyType.objectFlags |= 524288 /* NonInferrableType */;
return links_1.contextFreeType = returnOnlyType;
}
return anyFunctionType;
@@ -52114,8 +52121,8 @@
if (strictNullChecks && properties.length === 0) {
return checkNonNullType(sourceType, node);
}
- for (var _i = 0, properties_6 = properties; _i < properties_6.length; _i++) {
- var p = properties_6[_i];
+ for (var _i = 0, properties_5 = properties; _i < properties_5.length; _i++) {
+ var p = properties_5[_i];
checkObjectLiteralDestructuringPropertyAssignment(sourceType, p, properties, rightIsThis);
}
return sourceType;
@@ -56473,8 +56480,8 @@
for (var _i = 0, baseTypes_2 = baseTypes; _i < baseTypes_2.length; _i++) {
var base = baseTypes_2[_i];
var properties = getPropertiesOfType(getTypeWithThisArgument(base, type.thisType));
- for (var _a = 0, properties_7 = properties; _a < properties_7.length; _a++) {
- var prop = properties_7[_a];
+ for (var _a = 0, properties_6 = properties; _a < properties_6.length; _a++) {
+ var prop = properties_6[_a];
var existing = seen.get(prop.escapedName);
if (!existing) {
seen.set(prop.escapedName, { prop: prop, containingType: base });
@@ -58921,7 +58928,7 @@
// autoArrayType is used as a marker, so even if global Array type is not defined, it needs to be a unique type
autoArrayType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
}
- globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray", /*arity*/ 1);
+ globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray", /*arity*/ 1) || globalArrayType;
anyReadonlyArrayType = globalReadonlyArrayType ? createTypeFromGenericGlobalType(globalReadonlyArrayType, [anyType]) : anyArrayType;
globalThisType = getGlobalTypeOrUndefined("ThisType", /*arity*/ 1);
if (augmentations) {
@@ -63744,7 +63751,7 @@
function createExpressionForAccessorDeclaration(properties, property, receiver, multiLine) {
var _a = ts.getAllAccessorDeclarations(properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor;
if (property === firstAccessor) {
- var properties_8 = [];
+ var properties_7 = [];
if (getAccessor) {
var getterFunction = ts.createFunctionExpression(getAccessor.modifiers,
/*asteriskToken*/ undefined,
@@ -63755,7 +63762,7 @@
ts.setTextRange(getterFunction, getAccessor);
ts.setOriginalNode(getterFunction, getAccessor);
var getter = ts.createPropertyAssignment("get", getterFunction);
- properties_8.push(getter);
+ properties_7.push(getter);
}
if (setAccessor) {
var setterFunction = ts.createFunctionExpression(setAccessor.modifiers,
@@ -63767,15 +63774,15 @@
ts.setTextRange(setterFunction, setAccessor);
ts.setOriginalNode(setterFunction, setAccessor);
var setter = ts.createPropertyAssignment("set", setterFunction);
- properties_8.push(setter);
+ properties_7.push(setter);
}
- properties_8.push(ts.createPropertyAssignment("enumerable", ts.createTrue()));
- properties_8.push(ts.createPropertyAssignment("configurable", ts.createTrue()));
+ properties_7.push(ts.createPropertyAssignment("enumerable", ts.createTrue()));
+ properties_7.push(ts.createPropertyAssignment("configurable", ts.createTrue()));
var expression = ts.setTextRange(ts.createCall(ts.createPropertyAccess(ts.createIdentifier("Object"), "defineProperty"),
/*typeArguments*/ undefined, [
receiver,
createExpressionForPropertyName(property.name),
- ts.createObjectLiteral(properties_8, multiLine)
+ ts.createObjectLiteral(properties_7, multiLine)
]),
/*location*/ firstAccessor);
return ts.aggregateTransformFlags(expression);
@@ -68259,8 +68266,8 @@
* @param receiver The receiver on which each property should be assigned.
*/
function addInitializedPropertyStatements(statements, properties, receiver) {
- for (var _i = 0, properties_9 = properties; _i < properties_9.length; _i++) {
- var property = properties_9[_i];
+ for (var _i = 0, properties_8 = properties; _i < properties_8.length; _i++) {
+ var property = properties_8[_i];
var statement = ts.createExpressionStatement(transformInitializedProperty(property, receiver));
ts.setSourceMapRange(statement, ts.moveRangePastModifiers(property));
ts.setCommentRange(statement, property);
@@ -68276,8 +68283,8 @@
*/
function generateInitializedPropertyExpressions(properties, receiver) {
var expressions = [];
- for (var _i = 0, properties_10 = properties; _i < properties_10.length; _i++) {
- var property = properties_10[_i];
+ for (var _i = 0, properties_9 = properties; _i < properties_9.length; _i++) {
+ var property = properties_9[_i];
var expression = transformInitializedProperty(property, receiver);
ts.startOnNewLine(expression);
ts.setSourceMapRange(expression, ts.moveRangePastModifiers(property));
@@ -94837,6 +94844,11 @@
* typingsInstaller will run the command with `${npmLocation} install ...`.
*/
Arguments.NpmLocation = "--npmLocation";
+ /**
+ * Flag indicating that the typings installer should try to validate the default npm location.
+ * If the default npm is not found when this flag is enabled, fallback to `npm install`
+ */
+ Arguments.ValidateDefaultNpmLocation = "--validateDefaultNpmLocation";
})(Arguments = server.Arguments || (server.Arguments = {}));
function hasArgument(argumentName) {
return ts.sys.args.indexOf(argumentName) >= 0;

lib/typescriptServices.js

@@ -75,7 +75,7 @@
// If changing the text in this section, be sure to test `configureNightly` too.
ts.versionMajorMinor = "3.4";
/** The version of the TypeScript compiler release */
- ts.version = ts.versionMajorMinor + ".3";
+ ts.version = ts.versionMajorMinor + ".5";
})(ts || (ts = {}));
(function (ts) {
/* @internal */
@@ -3480,7 +3480,7 @@
TypeFlags[TypeFlags["Instantiable"] = 63176704] = "Instantiable";
TypeFlags[TypeFlags["StructuredOrInstantiable"] = 66846720] = "StructuredOrInstantiable";
/* @internal */
- TypeFlags[TypeFlags["ObjectFlagsType"] = 3768320] = "ObjectFlagsType";
+ TypeFlags[TypeFlags["ObjectFlagsType"] = 3899392] = "ObjectFlagsType";
// 'Narrowable' types are types where narrowing actually narrows.
// This *should* be every type other than null, undefined, void, and never
TypeFlags[TypeFlags["Narrowable"] = 133970943] = "Narrowable";
@@ -3528,7 +3528,7 @@
/* @internal */
ObjectFlags[ObjectFlags["ContainsObjectLiteral"] = 262144] = "ContainsObjectLiteral";
/* @internal */
- ObjectFlags[ObjectFlags["ContainsAnyFunctionType"] = 524288] = "ContainsAnyFunctionType";
+ ObjectFlags[ObjectFlags["NonInferrableType"] = 524288] = "NonInferrableType";
ObjectFlags[ObjectFlags["ClassOrInterface"] = 3] = "ClassOrInterface";
/* @internal */
ObjectFlags[ObjectFlags["RequiresWidening"] = 393216] = "RequiresWidening";
@@ -12604,7 +12604,7 @@
}
ts.getClassLikeDeclarationOfSymbol = getClassLikeDeclarationOfSymbol;
function getObjectFlags(type) {
- return type.flags & 3768320 /* ObjectFlagsType */ ? type.objectFlags : 0;
+ return type.flags & 3899392 /* ObjectFlagsType */ ? type.objectFlags : 0;
}
ts.getObjectFlags = getObjectFlags;
function typeHasCallOrConstructSignatures(type, checker) {
@@ -31461,10 +31461,10 @@
var wildcardType = createIntrinsicType(1 /* Any */, "any");
var errorType = createIntrinsicType(1 /* Any */, "error");
var unknownType = createIntrinsicType(2 /* Unknown */, "unknown");
- var undefinedType = createNullableType(32768 /* Undefined */, "undefined", 0);
- var undefinedWideningType = strictNullChecks ? undefinedType : createNullableType(32768 /* Undefined */, "undefined", 131072 /* ContainsWideningType */);
- var nullType = createNullableType(65536 /* Null */, "null", 0);
- var nullWideningType = strictNullChecks ? nullType : createNullableType(65536 /* Null */, "null", 131072 /* ContainsWideningType */);
+ var undefinedType = createIntrinsicType(32768 /* Undefined */, "undefined");
+ var undefinedWideningType = strictNullChecks ? undefinedType : createIntrinsicType(32768 /* Undefined */, "undefined", 131072 /* ContainsWideningType */);
+ var nullType = createIntrinsicType(65536 /* Null */, "null");
+ var nullWideningType = strictNullChecks ? nullType : createIntrinsicType(65536 /* Null */, "null", 131072 /* ContainsWideningType */);
var stringType = createIntrinsicType(4 /* String */, "string");
var numberType = createIntrinsicType(8 /* Number */, "number");
var bigintType = createIntrinsicType(64 /* BigInt */, "bigint");
@@ -31490,6 +31490,7 @@
var voidType = createIntrinsicType(16384 /* Void */, "void");
var neverType = createIntrinsicType(131072 /* Never */, "never");
var silentNeverType = createIntrinsicType(131072 /* Never */, "never");
+ var nonInferrableType = createIntrinsicType(131072 /* Never */, "never", 524288 /* NonInferrableType */);
var implicitNeverType = createIntrinsicType(131072 /* Never */, "never");
var nonPrimitiveType = createIntrinsicType(67108864 /* NonPrimitive */, "object");
var stringNumberSymbolType = getUnionType([stringType, numberType, esSymbolType]);
@@ -31506,7 +31507,7 @@
var anyFunctionType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
// The anyFunctionType contains the anyFunctionType by definition. The flag is further propagated
// in getPropagatingFlagsOfTypes, and it is checked in inferFromTypes.
- anyFunctionType.objectFlags |= 524288 /* ContainsAnyFunctionType */;
+ anyFunctionType.objectFlags |= 524288 /* NonInferrableType */;
var noConstraintType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
var circularConstraintType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
var resolvingDefaultType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
@@ -33608,13 +33609,10 @@
result.id = typeCount;
return result;
}
- function createIntrinsicType(kind, intrinsicName) {
+ function createIntrinsicType(kind, intrinsicName, objectFlags) {
+ if (objectFlags === void 0) { objectFlags = 0; }
var type = createType(kind);
type.intrinsicName = intrinsicName;
- return type;
- }
- function createNullableType(kind, intrinsicName, objectFlags) {
- var type = createIntrinsicType(kind, intrinsicName);
type.objectFlags = objectFlags;
return type;
}
@@ -40447,7 +40445,7 @@
}
function getConditionalTypeWorker(root, mapper, checkType, extendsType, trueType, falseType) {
// Simplifications for types of the form `T extends U ? T : never` and `T extends U ? never : T`.
- if (falseType.flags & 131072 /* Never */ && isTypeIdenticalTo(getActualTypeVariable(trueType), getActualTypeVariable(checkType))) {
+ if (falseType.flags & 131072 /* Never */ && getActualTypeVariable(trueType) === getActualTypeVariable(checkType)) {
if (checkType.flags & 1 /* Any */ || isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) { // Always true
return trueType;
}
@@ -40455,7 +40453,7 @@
return neverType;
}
}
- else if (trueType.flags & 131072 /* Never */ && isTypeIdenticalTo(getActualTypeVariable(falseType), getActualTypeVariable(checkType))) {
+ else if (trueType.flags & 131072 /* Never */ && getActualTypeVariable(falseType) === getActualTypeVariable(checkType)) {
if (!(checkType.flags & 1 /* Any */) && isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) { // Always true
return neverType;
}
@@ -44202,7 +44200,7 @@
var stringIndexInfo = getIndexInfoOfType(type, 0 /* String */);
var numberIndexInfo = getIndexInfoOfType(type, 1 /* Number */);
var result = createAnonymousType(type.symbol, members, ts.emptyArray, ts.emptyArray, stringIndexInfo && createIndexInfo(getWidenedType(stringIndexInfo.type), stringIndexInfo.isReadonly), numberIndexInfo && createIndexInfo(getWidenedType(numberIndexInfo.type), numberIndexInfo.isReadonly));
- result.objectFlags |= (ts.getObjectFlags(type) & 16384 /* JSLiteral */); // Retain js literal flag through widening
+ result.objectFlags |= (ts.getObjectFlags(type) & (16384 /* JSLiteral */ | 524288 /* NonInferrableType */)); // Retain js literal flag through widening
return result;
}
function getWidenedType(type) {
@@ -44503,18 +44501,11 @@
return type;
}
function createReverseMappedType(source, target, constraint) {
- var properties = getPropertiesOfType(source);
- if (properties.length === 0 && !getIndexInfoOfType(source, 0 /* String */)) {
- return undefined;
- }
// If any property contains context sensitive functions that have been skipped, the source type
// is incomplete and we can't infer a meaningful input type.
- for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) {
- var prop = properties_3[_i];
- if (ts.getObjectFlags(getTypeOfSymbol(prop)) & 524288 /* ContainsAnyFunctionType */) {
+ if (ts.getObjectFlags(source) & 524288 /* NonInferrableType */ || getPropertiesOfType(source).length === 0 && !getIndexInfoOfType(source, 0 /* String */)) {
return undefined;
}
- }
// For arrays and tuples we infer new arrays and tuples where the reverse mapping has been
// applied to the element type(s).
if (isArrayType(source)) {
@@ -44545,16 +44536,16 @@
return getTypeFromInference(inference);
}
function getUnmatchedProperties(source, target, requireOptionalProperties, matchDiscriminantProperties) {
- var properties, _i, properties_4, targetProp, sourceProp, targetType, sourceType;
+ var properties, _i, properties_3, targetProp, sourceProp, targetType, sourceType;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
properties = target.flags & 2097152 /* Intersection */ ? getPropertiesOfUnionOrIntersectionType(target) : getPropertiesOfObjectType(target);
- _i = 0, properties_4 = properties;
+ _i = 0, properties_3 = properties;
_a.label = 1;
case 1:
- if (!(_i < properties_4.length)) return [3 /*break*/, 6];
- targetProp = properties_4[_i];
+ if (!(_i < properties_3.length)) return [3 /*break*/, 6];
+ targetProp = properties_3[_i];
if (!(requireOptionalProperties || !(targetProp.flags & 16777216 /* Optional */))) return [3 /*break*/, 5];
sourceProp = getPropertyOfType(source, targetProp.escapedName);
if (!!sourceProp) return [3 /*break*/, 3];
@@ -44678,7 +44669,7 @@
// not contain anyFunctionType when we come back to this argument for its second round
// of inference. Also, we exclude inferences for silentNeverType (which is used as a wildcard
// when constructing types from type parameters that had no inference candidates).
- if (ts.getObjectFlags(source) & 524288 /* ContainsAnyFunctionType */ || source === silentNeverType || (priority & 8 /* ReturnType */ && (source === autoType || source === autoArrayType))) {
+ if (ts.getObjectFlags(source) & 524288 /* NonInferrableType */ || source === silentNeverType || (priority & 8 /* ReturnType */ && (source === autoType || source === autoArrayType))) {
return;
}
var inference = getInferenceInfoForType(target);
@@ -44778,24 +44769,40 @@
inferFromTypes(source, target.falseType);
}
else if (target.flags & 3145728 /* UnionOrIntersection */) {
+ // We infer from types that are not naked type variables first so that inferences we
+ // make from nested naked type variables and given slightly higher priority by virtue
+ // of being first in the candidates array.
+ var typeVariableCount = 0;
for (var _d = 0, _e = target.types; _d < _e.length; _d++) {
var t = _e[_d];
- var savePriority = priority;
+ if (getInferenceInfoForType(t)) {
+ typeVariableCount++;
+ }
+ else {
+ inferFromTypes(source, t);
+ }
+ }
// Inferences directly to naked type variables are given lower priority as they are
// less specific. For example, when inferring from Promise<string> to T | Promise<T>,
- // we want to infer string for T, not Promise<string> | string.
- if (getInferenceInfoForType(t)) {
+ // we want to infer string for T, not Promise<string> | string. For intersection types
+ // we only infer to single naked type variables.
+ if (target.flags & 1048576 /* Union */ ? typeVariableCount !== 0 : typeVariableCount === 1) {
+ var savePriority = priority;
priority |= 1 /* NakedTypeVariable */;
- }
+ for (var _f = 0, _g = target.types; _f < _g.length; _f++) {
+ var t = _g[_f];
+ if (getInferenceInfoForType(t)) {
inferFromTypes(source, t);
+ }
+ }
priority = savePriority;
}
}
else if (source.flags & 1048576 /* Union */) {
// Source is a union or intersection type, infer from each constituent type
var sourceTypes = source.types;
- for (var _f = 0, sourceTypes_3 = sourceTypes; _f < sourceTypes_3.length; _f++) {
- var sourceType = sourceTypes_3[_f];
+ for (var _h = 0, sourceTypes_3 = sourceTypes; _h < sourceTypes_3.length; _h++) {
+ var sourceType = sourceTypes_3[_h];
inferFromTypes(sourceType, target);
}
}
@@ -44974,8 +44981,8 @@
}
}
var properties = getPropertiesOfObjectType(target);
- for (var _i = 0, properties_5 = properties; _i < properties_5.length; _i++) {
- var targetProp = properties_5[_i];
+ for (var _i = 0, properties_4 = properties; _i < properties_4.length; _i++) {
+ var targetProp = properties_4[_i];
var sourceProp = getPropertyOfType(source, targetProp.escapedName);
if (sourceProp) {
inferFromTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp));
@@ -44988,7 +44995,7 @@
var sourceLen = sourceSignatures.length;
var targetLen = targetSignatures.length;
var len = sourceLen < targetLen ? sourceLen : targetLen;
- var skipParameters = !!(ts.getObjectFlags(source) & 524288 /* ContainsAnyFunctionType */);
+ var skipParameters = !!(ts.getObjectFlags(source) & 524288 /* NonInferrableType */);
for (var i = 0; i < len; i++) {
inferFromSignature(getBaseSignature(sourceSignatures[sourceLen - len + i]), getBaseSignature(targetSignatures[targetLen - len + i]), skipParameters);
}
@@ -50148,7 +50155,7 @@
spanArray = ts.createNodeArray(args);
if (hasSpreadArgument && argCount) {
var nextArg = ts.elementAt(args, getSpreadArgumentIndex(args) + 1) || undefined;
- spanArray = ts.createNodeArray(args.slice(max > argCount && nextArg ? args.indexOf(nextArg) : max));
+ spanArray = ts.createNodeArray(args.slice(max > argCount && nextArg ? args.indexOf(nextArg) : Math.min(max, args.length - 1)));
}
}
else {
@@ -50569,7 +50576,7 @@
// returns a function type, we choose to defer processing. This narrowly permits function composition
// operators to flow inferences through return types, but otherwise processes calls right away. We
// use the resolvingSignature singleton to indicate that we deferred processing. This result will be
- // propagated out and eventually turned into silentNeverType (a type that is assignable to anything and
+ // propagated out and eventually turned into nonInferrableType (a type that is assignable to anything and
// from which we never make inferences).
if (checkMode & 8 /* SkipGenericFunctions */ && !node.typeArguments && callSignatures.some(isGenericFunctionReturningFunction)) {
skippedGenericFunction(node, checkMode);
@@ -50992,8 +50999,8 @@
var signature = getResolvedSignature(node, /*candidatesOutArray*/ undefined, checkMode);
if (signature === resolvingSignature) {
// CheckMode.SkipGenericFunctions is enabled and this is a call to a generic function that
- // returns a function type. We defer checking and return anyFunctionType.
- return silentNeverType;
+ // returns a function type. We defer checking and return nonInferrableType.
+ return nonInferrableType;
}
if (node.expression.kind === 98 /* SuperKeyword */) {
return voidType;
@@ -51732,7 +51739,7 @@
var returnType = getReturnTypeFromBody(node, checkMode);
var returnOnlySignature = createSignature(undefined, undefined, undefined, ts.emptyArray, returnType, /*resolvedTypePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasLiteralTypes*/ false);
var returnOnlyType = createAnonymousType(node.symbol, emptySymbols, [returnOnlySignature], ts.emptyArray, undefined, undefined);
- returnOnlyType.objectFlags |= 524288 /* ContainsAnyFunctionType */;
+ returnOnlyType.objectFlags |= 524288 /* NonInferrableType */;
return links_1.contextFreeType = returnOnlyType;
}
return anyFunctionType;
@@ -52114,8 +52121,8 @@
if (strictNullChecks && properties.length === 0) {
return checkNonNullType(sourceType, node);
}
- for (var _i = 0, properties_6 = properties; _i < properties_6.length; _i++) {
- var p = properties_6[_i];
+ for (var _i = 0, properties_5 = properties; _i < properties_5.length; _i++) {
+ var p = properties_5[_i];
checkObjectLiteralDestructuringPropertyAssignment(sourceType, p, properties, rightIsThis);
}
return sourceType;
@@ -56473,8 +56480,8 @@
for (var _i = 0, baseTypes_2 = baseTypes; _i < baseTypes_2.length; _i++) {
var base = baseTypes_2[_i];
var properties = getPropertiesOfType(getTypeWithThisArgument(base, type.thisType));
- for (var _a = 0, properties_7 = properties; _a < properties_7.length; _a++) {
- var prop = properties_7[_a];
+ for (var _a = 0, properties_6 = properties; _a < properties_6.length; _a++) {
+ var prop = properties_6[_a];
var existing = seen.get(prop.escapedName);
if (!existing) {
seen.set(prop.escapedName, { prop: prop, containingType: base });
@@ -58921,7 +58928,7 @@
// autoArrayType is used as a marker, so even if global Array type is not defined, it needs to be a unique type
autoArrayType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
}
- globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray", /*arity*/ 1);
+ globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray", /*arity*/ 1) || globalArrayType;
anyReadonlyArrayType = globalReadonlyArrayType ? createTypeFromGenericGlobalType(globalReadonlyArrayType, [anyType]) : anyArrayType;
globalThisType = getGlobalTypeOrUndefined("ThisType", /*arity*/ 1);
if (augmentations) {
@@ -63744,7 +63751,7 @@
function createExpressionForAccessorDeclaration(properties, property, receiver, multiLine) {
var _a = ts.getAllAccessorDeclarations(properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor;
if (property === firstAccessor) {
- var properties_8 = [];
+ var properties_7 = [];
if (getAccessor) {
var getterFunction = ts.createFunctionExpression(getAccessor.modifiers,
/*asteriskToken*/ undefined,
@@ -63755,7 +63762,7 @@
ts.setTextRange(getterFunction, getAccessor);
ts.setOriginalNode(getterFunction, getAccessor);
var getter = ts.createPropertyAssignment("get", getterFunction);
- properties_8.push(getter);
+ properties_7.push(getter);
}
if (setAccessor) {
var setterFunction = ts.createFunctionExpression(setAccessor.modifiers,
@@ -63767,15 +63774,15 @@
ts.setTextRange(setterFunction, setAccessor);
ts.setOriginalNode(setterFunction, setAccessor);
var setter = ts.createPropertyAssignment("set", setterFunction);
- properties_8.push(setter);
+ properties_7.push(setter);
}
- properties_8.push(ts.createPropertyAssignment("enumerable", ts.createTrue()));
- properties_8.push(ts.createPropertyAssignment("configurable", ts.createTrue()));
+ properties_7.push(ts.createPropertyAssignment("enumerable", ts.createTrue()));
+ properties_7.push(ts.createPropertyAssignment("configurable", ts.createTrue()));
var expression = ts.setTextRange(ts.createCall(ts.createPropertyAccess(ts.createIdentifier("Object"), "defineProperty"),
/*typeArguments*/ undefined, [
receiver,
createExpressionForPropertyName(property.name),
- ts.createObjectLiteral(properties_8, multiLine)
+ ts.createObjectLiteral(properties_7, multiLine)
]),
/*location*/ firstAccessor);
return ts.aggregateTransformFlags(expression);
@@ -68259,8 +68266,8 @@
* @param receiver The receiver on which each property should be assigned.
*/
function addInitializedPropertyStatements(statements, properties, receiver) {
- for (var _i = 0, properties_9 = properties; _i < properties_9.length; _i++) {
- var property = properties_9[_i];
+ for (var _i = 0, properties_8 = properties; _i < properties_8.length; _i++) {
+ var property = properties_8[_i];
var statement = ts.createExpressionStatement(transformInitializedProperty(property, receiver));
ts.setSourceMapRange(statement, ts.moveRangePastModifiers(property));
ts.setCommentRange(statement, property);
@@ -68276,8 +68283,8 @@
*/
function generateInitializedPropertyExpressions(properties, receiver) {
var expressions = [];
- for (var _i = 0, properties_10 = properties; _i < properties_10.length; _i++) {
- var property = properties_10[_i];
+ for (var _i = 0, properties_9 = properties; _i < properties_9.length; _i++) {
+ var property = properties_9[_i];
var expression = transformInitializedProperty(property, receiver);
ts.startOnNewLine(expression);
ts.setSourceMapRange(expression, ts.moveRangePastModifiers(property));
@@ -94837,6 +94844,11 @@
* typingsInstaller will run the command with `${npmLocation} install ...`.
*/
Arguments.NpmLocation = "--npmLocation";
+ /**
+ * Flag indicating that the typings installer should try to validate the default npm location.
+ * If the default npm is not found when this flag is enabled, fallback to `npm install`
+ */
+ Arguments.ValidateDefaultNpmLocation = "--validateDefaultNpmLocation";
})(Arguments = server.Arguments || (server.Arguments = {}));
function hasArgument(argumentName) {
return ts.sys.args.indexOf(argumentName) >= 0;

lib/typingsInstaller.js

@@ -76,7 +76,7 @@
// If changing the text in this section, be sure to test `configureNightly` too.
ts.versionMajorMinor = "3.4";
/** The version of the TypeScript compiler release */
- ts.version = ts.versionMajorMinor + ".3";
+ ts.version = ts.versionMajorMinor + ".5";
})(ts || (ts = {}));
(function (ts) {
/* @internal */
@@ -3481,7 +3481,7 @@
TypeFlags[TypeFlags["Instantiable"] = 63176704] = "Instantiable";
TypeFlags[TypeFlags["StructuredOrInstantiable"] = 66846720] = "StructuredOrInstantiable";
/* @internal */
- TypeFlags[TypeFlags["ObjectFlagsType"] = 3768320] = "ObjectFlagsType";
+ TypeFlags[TypeFlags["ObjectFlagsType"] = 3899392] = "ObjectFlagsType";
// 'Narrowable' types are types where narrowing actually narrows.
// This *should* be every type other than null, undefined, void, and never
TypeFlags[TypeFlags["Narrowable"] = 133970943] = "Narrowable";
@@ -3529,7 +3529,7 @@
/* @internal */
ObjectFlags[ObjectFlags["ContainsObjectLiteral"] = 262144] = "ContainsObjectLiteral";
/* @internal */
- ObjectFlags[ObjectFlags["ContainsAnyFunctionType"] = 524288] = "ContainsAnyFunctionType";
+ ObjectFlags[ObjectFlags["NonInferrableType"] = 524288] = "NonInferrableType";
ObjectFlags[ObjectFlags["ClassOrInterface"] = 3] = "ClassOrInterface";
/* @internal */
ObjectFlags[ObjectFlags["RequiresWidening"] = 393216] = "RequiresWidening";
@@ -12605,7 +12605,7 @@
}
ts.getClassLikeDeclarationOfSymbol = getClassLikeDeclarationOfSymbol;
function getObjectFlags(type) {
- return type.flags & 3768320 /* ObjectFlagsType */ ? type.objectFlags : 0;
+ return type.flags & 3899392 /* ObjectFlagsType */ ? type.objectFlags : 0;
}
ts.getObjectFlags = getObjectFlags;
function typeHasCallOrConstructSignatures(type, checker) {
@@ -31462,10 +31462,10 @@
var wildcardType = createIntrinsicType(1 /* Any */, "any");
var errorType = createIntrinsicType(1 /* Any */, "error");
var unknownType = createIntrinsicType(2 /* Unknown */, "unknown");
- var undefinedType = createNullableType(32768 /* Undefined */, "undefined", 0);
- var undefinedWideningType = strictNullChecks ? undefinedType : createNullableType(32768 /* Undefined */, "undefined", 131072 /* ContainsWideningType */);
- var nullType = createNullableType(65536 /* Null */, "null", 0);
- var nullWideningType = strictNullChecks ? nullType : createNullableType(65536 /* Null */, "null", 131072 /* ContainsWideningType */);
+ var undefinedType = createIntrinsicType(32768 /* Undefined */, "undefined");
+ var undefinedWideningType = strictNullChecks ? undefinedType : createIntrinsicType(32768 /* Undefined */, "undefined", 131072 /* ContainsWideningType */);
+ var nullType = createIntrinsicType(65536 /* Null */, "null");
+ var nullWideningType = strictNullChecks ? nullType : createIntrinsicType(65536 /* Null */, "null", 131072 /* ContainsWideningType */);
var stringType = createIntrinsicType(4 /* String */, "string");
var numberType = createIntrinsicType(8 /* Number */, "number");
var bigintType = createIntrinsicType(64 /* BigInt */, "bigint");
@@ -31491,6 +31491,7 @@
var voidType = createIntrinsicType(16384 /* Void */, "void");
var neverType = createIntrinsicType(131072 /* Never */, "never");
var silentNeverType = createIntrinsicType(131072 /* Never */, "never");
+ var nonInferrableType = createIntrinsicType(131072 /* Never */, "never", 524288 /* NonInferrableType */);
var implicitNeverType = createIntrinsicType(131072 /* Never */, "never");
var nonPrimitiveType = createIntrinsicType(67108864 /* NonPrimitive */, "object");
var stringNumberSymbolType = getUnionType([stringType, numberType, esSymbolType]);
@@ -31507,7 +31508,7 @@
var anyFunctionType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
// The anyFunctionType contains the anyFunctionType by definition. The flag is further propagated
// in getPropagatingFlagsOfTypes, and it is checked in inferFromTypes.
- anyFunctionType.objectFlags |= 524288 /* ContainsAnyFunctionType */;
+ anyFunctionType.objectFlags |= 524288 /* NonInferrableType */;
var noConstraintType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
var circularConstraintType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
var resolvingDefaultType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
@@ -33609,13 +33610,10 @@
result.id = typeCount;
return result;
}
- function createIntrinsicType(kind, intrinsicName) {
+ function createIntrinsicType(kind, intrinsicName, objectFlags) {
+ if (objectFlags === void 0) { objectFlags = 0; }
var type = createType(kind);
type.intrinsicName = intrinsicName;
- return type;
- }
- function createNullableType(kind, intrinsicName, objectFlags) {
- var type = createIntrinsicType(kind, intrinsicName);
type.objectFlags = objectFlags;
return type;
}
@@ -40448,7 +40446,7 @@
}
function getConditionalTypeWorker(root, mapper, checkType, extendsType, trueType, falseType) {
// Simplifications for types of the form `T extends U ? T : never` and `T extends U ? never : T`.
- if (falseType.flags & 131072 /* Never */ && isTypeIdenticalTo(getActualTypeVariable(trueType), getActualTypeVariable(checkType))) {
+ if (falseType.flags & 131072 /* Never */ && getActualTypeVariable(trueType) === getActualTypeVariable(checkType)) {
if (checkType.flags & 1 /* Any */ || isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) { // Always true
return trueType;
}
@@ -40456,7 +40454,7 @@
return neverType;
}
}
- else if (trueType.flags & 131072 /* Never */ && isTypeIdenticalTo(getActualTypeVariable(falseType), getActualTypeVariable(checkType))) {
+ else if (trueType.flags & 131072 /* Never */ && getActualTypeVariable(falseType) === getActualTypeVariable(checkType)) {
if (!(checkType.flags & 1 /* Any */) && isTypeAssignableTo(getRestrictiveInstantiation(checkType), getRestrictiveInstantiation(extendsType))) { // Always true
return neverType;
}
@@ -44203,7 +44201,7 @@
var stringIndexInfo = getIndexInfoOfType(type, 0 /* String */);
var numberIndexInfo = getIndexInfoOfType(type, 1 /* Number */);
var result = createAnonymousType(type.symbol, members, ts.emptyArray, ts.emptyArray, stringIndexInfo && createIndexInfo(getWidenedType(stringIndexInfo.type), stringIndexInfo.isReadonly), numberIndexInfo && createIndexInfo(getWidenedType(numberIndexInfo.type), numberIndexInfo.isReadonly));
- result.objectFlags |= (ts.getObjectFlags(type) & 16384 /* JSLiteral */); // Retain js literal flag through widening
+ result.objectFlags |= (ts.getObjectFlags(type) & (16384 /* JSLiteral */ | 524288 /* NonInferrableType */)); // Retain js literal flag through widening
return result;
}
function getWidenedType(type) {
@@ -44504,18 +44502,11 @@
return type;
}
function createReverseMappedType(source, target, constraint) {
- var properties = getPropertiesOfType(source);
- if (properties.length === 0 && !getIndexInfoOfType(source, 0 /* String */)) {
- return undefined;
- }
// If any property contains context sensitive functions that have been skipped, the source type
// is incomplete and we can't infer a meaningful input type.
- for (var _i = 0, properties_3 = properties; _i < properties_3.length; _i++) {
- var prop = properties_3[_i];
- if (ts.getObjectFlags(getTypeOfSymbol(prop)) & 524288 /* ContainsAnyFunctionType */) {
+ if (ts.getObjectFlags(source) & 524288 /* NonInferrableType */ || getPropertiesOfType(source).length === 0 && !getIndexInfoOfType(source, 0 /* String */)) {
return undefined;
}
- }
// For arrays and tuples we infer new arrays and tuples where the reverse mapping has been
// applied to the element type(s).
if (isArrayType(source)) {
@@ -44546,16 +44537,16 @@
return getTypeFromInference(inference);
}
function getUnmatchedProperties(source, target, requireOptionalProperties, matchDiscriminantProperties) {
- var properties, _i, properties_4, targetProp, sourceProp, targetType, sourceType;
+ var properties, _i, properties_3, targetProp, sourceProp, targetType, sourceType;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
properties = target.flags & 2097152 /* Intersection */ ? getPropertiesOfUnionOrIntersectionType(target) : getPropertiesOfObjectType(target);
- _i = 0, properties_4 = properties;
+ _i = 0, properties_3 = properties;
_a.label = 1;
case 1:
- if (!(_i < properties_4.length)) return [3 /*break*/, 6];
- targetProp = properties_4[_i];
+ if (!(_i < properties_3.length)) return [3 /*break*/, 6];
+ targetProp = properties_3[_i];
if (!(requireOptionalProperties || !(targetProp.flags & 16777216 /* Optional */))) return [3 /*break*/, 5];
sourceProp = getPropertyOfType(source, targetProp.escapedName);
if (!!sourceProp) return [3 /*break*/, 3];
@@ -44679,7 +44670,7 @@
// not contain anyFunctionType when we come back to this argument for its second round
// of inference. Also, we exclude inferences for silentNeverType (which is used as a wildcard
// when constructing types from type parameters that had no inference candidates).
- if (ts.getObjectFlags(source) & 524288 /* ContainsAnyFunctionType */ || source === silentNeverType || (priority & 8 /* ReturnType */ && (source === autoType || source === autoArrayType))) {
+ if (ts.getObjectFlags(source) & 524288 /* NonInferrableType */ || source === silentNeverType || (priority & 8 /* ReturnType */ && (source === autoType || source === autoArrayType))) {
return;
}
var inference = getInferenceInfoForType(target);
@@ -44779,24 +44770,40 @@
inferFromTypes(source, target.falseType);
}
else if (target.flags & 3145728 /* UnionOrIntersection */) {
+ // We infer from types that are not naked type variables first so that inferences we
+ // make from nested naked type variables and given slightly higher priority by virtue
+ // of being first in the candidates array.
+ var typeVariableCount = 0;
for (var _d = 0, _e = target.types; _d < _e.length; _d++) {
var t = _e[_d];
- var savePriority = priority;
+ if (getInferenceInfoForType(t)) {
+ typeVariableCount++;
+ }
+ else {
+ inferFromTypes(source, t);
+ }
+ }
// Inferences directly to naked type variables are given lower priority as they are
// less specific. For example, when inferring from Promise<string> to T | Promise<T>,
- // we want to infer string for T, not Promise<string> | string.
- if (getInferenceInfoForType(t)) {
+ // we want to infer string for T, not Promise<string> | string. For intersection types
+ // we only infer to single naked type variables.
+ if (target.flags & 1048576 /* Union */ ? typeVariableCount !== 0 : typeVariableCount === 1) {
+ var savePriority = priority;
priority |= 1 /* NakedTypeVariable */;
- }
+ for (var _f = 0, _g = target.types; _f < _g.length; _f++) {
+ var t = _g[_f];
+ if (getInferenceInfoForType(t)) {
inferFromTypes(source, t);
+ }
+ }
priority = savePriority;
}
}
else if (source.flags & 1048576 /* Union */) {
// Source is a union or intersection type, infer from each constituent type
var sourceTypes = source.types;
- for (var _f = 0, sourceTypes_3 = sourceTypes; _f < sourceTypes_3.length; _f++) {
- var sourceType = sourceTypes_3[_f];
+ for (var _h = 0, sourceTypes_3 = sourceTypes; _h < sourceTypes_3.length; _h++) {
+ var sourceType = sourceTypes_3[_h];
inferFromTypes(sourceType, target);
}
}
@@ -44975,8 +44982,8 @@
}
}
var properties = getPropertiesOfObjectType(target);
- for (var _i = 0, properties_5 = properties; _i < properties_5.length; _i++) {
- var targetProp = properties_5[_i];
+ for (var _i = 0, properties_4 = properties; _i < properties_4.length; _i++) {
+ var targetProp = properties_4[_i];
var sourceProp = getPropertyOfType(source, targetProp.escapedName);
if (sourceProp) {
inferFromTypes(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp));
@@ -44989,7 +44996,7 @@
var sourceLen = sourceSignatures.length;
var targetLen = targetSignatures.length;
var len = sourceLen < targetLen ? sourceLen : targetLen;
- var skipParameters = !!(ts.getObjectFlags(source) & 524288 /* ContainsAnyFunctionType */);
+ var skipParameters = !!(ts.getObjectFlags(source) & 524288 /* NonInferrableType */);
for (var i = 0; i < len; i++) {
inferFromSignature(getBaseSignature(sourceSignatures[sourceLen - len + i]), getBaseSignature(targetSignatures[targetLen - len + i]), skipParameters);
}
@@ -50149,7 +50156,7 @@
spanArray = ts.createNodeArray(args);
if (hasSpreadArgument && argCount) {
var nextArg = ts.elementAt(args, getSpreadArgumentIndex(args) + 1) || undefined;
- spanArray = ts.createNodeArray(args.slice(max > argCount && nextArg ? args.indexOf(nextArg) : max));
+ spanArray = ts.createNodeArray(args.slice(max > argCount && nextArg ? args.indexOf(nextArg) : Math.min(max, args.length - 1)));
}
}
else {
@@ -50570,7 +50577,7 @@
// returns a function type, we choose to defer processing. This narrowly permits function composition
// operators to flow inferences through return types, but otherwise processes calls right away. We
// use the resolvingSignature singleton to indicate that we deferred processing. This result will be
- // propagated out and eventually turned into silentNeverType (a type that is assignable to anything and
+ // propagated out and eventually turned into nonInferrableType (a type that is assignable to anything and
// from which we never make inferences).
if (checkMode & 8 /* SkipGenericFunctions */ && !node.typeArguments && callSignatures.some(isGenericFunctionReturningFunction)) {
skippedGenericFunction(node, checkMode);
@@ -50993,8 +51000,8 @@
var signature = getResolvedSignature(node, /*candidatesOutArray*/ undefined, checkMode);
if (signature === resolvingSignature) {
// CheckMode.SkipGenericFunctions is enabled and this is a call to a generic function that
- // returns a function type. We defer checking and return anyFunctionType.
- return silentNeverType;
+ // returns a function type. We defer checking and return nonInferrableType.
+ return nonInferrableType;
}
if (node.expression.kind === 98 /* SuperKeyword */) {
return voidType;
@@ -51733,7 +51740,7 @@
var returnType = getReturnTypeFromBody(node, checkMode);
var returnOnlySignature = createSignature(undefined, undefined, undefined, ts.emptyArray, returnType, /*resolvedTypePredicate*/ undefined, 0, /*hasRestParameter*/ false, /*hasLiteralTypes*/ false);
var returnOnlyType = createAnonymousType(node.symbol, emptySymbols, [returnOnlySignature], ts.emptyArray, undefined, undefined);
- returnOnlyType.objectFlags |= 524288 /* ContainsAnyFunctionType */;
+ returnOnlyType.objectFlags |= 524288 /* NonInferrableType */;
return links_1.contextFreeType = returnOnlyType;
}
return anyFunctionType;
@@ -52115,8 +52122,8 @@
if (strictNullChecks && properties.length === 0) {
return checkNonNullType(sourceType, node);
}
- for (var _i = 0, properties_6 = properties; _i < properties_6.length; _i++) {
- var p = properties_6[_i];
+ for (var _i = 0, properties_5 = properties; _i < properties_5.length; _i++) {
+ var p = properties_5[_i];
checkObjectLiteralDestructuringPropertyAssignment(sourceType, p, properties, rightIsThis);
}
return sourceType;
@@ -56474,8 +56481,8 @@
for (var _i = 0, baseTypes_2 = baseTypes; _i < baseTypes_2.length; _i++) {
var base = baseTypes_2[_i];
var properties = getPropertiesOfType(getTypeWithThisArgument(base, type.thisType));
- for (var _a = 0, properties_7 = properties; _a < properties_7.length; _a++) {
- var prop = properties_7[_a];
+ for (var _a = 0, properties_6 = properties; _a < properties_6.length; _a++) {
+ var prop = properties_6[_a];
var existing = seen.get(prop.escapedName);
if (!existing) {
seen.set(prop.escapedName, { prop: prop, containingType: base });
@@ -58922,7 +58929,7 @@
// autoArrayType is used as a marker, so even if global Array type is not defined, it needs to be a unique type
autoArrayType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, undefined, undefined);
}
- globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray", /*arity*/ 1);
+ globalReadonlyArrayType = getGlobalTypeOrUndefined("ReadonlyArray", /*arity*/ 1) || globalArrayType;
anyReadonlyArrayType = globalReadonlyArrayType ? createTypeFromGenericGlobalType(globalReadonlyArrayType, [anyType]) : anyArrayType;
globalThisType = getGlobalTypeOrUndefined("ThisType", /*arity*/ 1);
if (augmentations) {
@@ -63745,7 +63752,7 @@
function createExpressionForAccessorDeclaration(properties, property, receiver, multiLine) {
var _a = ts.getAllAccessorDeclarations(properties, property), firstAccessor = _a.firstAccessor, getAccessor = _a.getAccessor, setAccessor = _a.setAccessor;
if (property === firstAccessor) {
- var properties_8 = [];
+ var properties_7 = [];
if (getAccessor) {
var getterFunction = ts.createFunctionExpression(getAccessor.modifiers,
/*asteriskToken*/ undefined,
@@ -63756,7 +63763,7 @@
ts.setTextRange(getterFunction, getAccessor);
ts.setOriginalNode(getterFunction, getAccessor);
var getter = ts.createPropertyAssignment("get", getterFunction);
- properties_8.push(getter);
+ properties_7.push(getter);
}
if (setAccessor) {
var setterFunction = ts.createFunctionExpression(setAccessor.modifiers,
@@ -63768,15 +63775,15 @@
ts.setTextRange(setterFunction, setAccessor);
ts.setOriginalNode(setterFunction, setAccessor);
var setter = ts.createPropertyAssignment("set", setterFunction);
- properties_8.push(setter);
+ properties_7.push(setter);
}
- properties_8.push(ts.createPropertyAssignment("enumerable", ts.createTrue()));
- properties_8.push(ts.createPropertyAssignment("configurable", ts.createTrue()));
+ properties_7.push(ts.createPropertyAssignment("enumerable", ts.createTrue()));
+ properties_7.push(ts.createPropertyAssignment("configurable", ts.createTrue()));
var expression = ts.setTextRange(ts.createCall(ts.createPropertyAccess(ts.createIdentifier("Object"), "defineProperty"),
/*typeArguments*/ undefined, [
receiver,
createExpressionForPropertyName(property.name),
- ts.createObjectLiteral(properties_8, multiLine)
+ ts.createObjectLiteral(properties_7, multiLine)
]),
/*location*/ firstAccessor);
return ts.aggregateTransformFlags(expression);
@@ -68260,8 +68267,8 @@
* @param receiver The receiver on which each property should be assigned.
*/
function addInitializedPropertyStatements(statements, properties, receiver) {
- for (var _i = 0, properties_9 = properties; _i < properties_9.length; _i++) {
- var property = properties_9[_i];
+ for (var _i = 0, properties_8 = properties; _i < properties_8.length; _i++) {
+ var property = properties_8[_i];
var statement = ts.createExpressionStatement(transformInitializedProperty(property, receiver));
ts.setSourceMapRange(statement, ts.moveRangePastModifiers(property));
ts.setCommentRange(statement, property);
@@ -68277,8 +68284,8 @@
*/
function generateInitializedPropertyExpressions(properties, receiver) {
var expressions = [];
- for (var _i = 0, properties_10 = properties; _i < properties_10.length; _i++) {
- var property = properties_10[_i];
+ for (var _i = 0, properties_9 = properties; _i < properties_9.length; _i++) {
+ var property = properties_9[_i];
var expression = transformInitializedProperty(property, receiver);
ts.startOnNewLine(expression);
ts.setSourceMapRange(expression, ts.moveRangePastModifiers(property));
@@ -94838,6 +94845,11 @@
* typingsInstaller will run the command with `${npmLocation} install ...`.
*/
Arguments.NpmLocation = "--npmLocation";
+ /**
+ * Flag indicating that the typings installer should try to validate the default npm location.
+ * If the default npm is not found when this flag is enabled, fallback to `npm install`
+ */
+ Arguments.ValidateDefaultNpmLocation = "--validateDefaultNpmLocation";
})(Arguments = server.Arguments || (server.Arguments = {}));
function hasArgument(argumentName) {
return ts.sys.args.indexOf(argumentName) >= 0;
@@ -95656,13 +95668,17 @@
}
return FileLog;
}());
- function getDefaultNPMLocation(processName) {
+ function getDefaultNPMLocation(processName, validateDefaultNpmLocation, host) {
if (path.basename(processName).indexOf("node") === 0) {
- return "\"" + path.join(path.dirname(process.argv[0]), "npm") + "\"";
+ var npmPath = path.join(path.dirname(process.argv[0]), "npm");
+ if (!validateDefaultNpmLocation) {
+ return npmPath;
+ }
+ if (host.fileExists(npmPath)) {
+ return "\"" + npmPath + "\"";
}
- else {
- return "npm";
}
+ return "npm";
}
function loadTypesRegistryFile(typesRegistryFilePath, host, log) {
if (!host.fileExists(typesRegistryFilePath)) {
@@ -95688,15 +95704,16 @@
}
var NodeTypingsInstaller = (function (_super) {
__extends(NodeTypingsInstaller, _super);
- function NodeTypingsInstaller(globalTypingsCacheLocation, typingSafeListLocation, typesMapLocation, npmLocation, throttleLimit, log) {
+ function NodeTypingsInstaller(globalTypingsCacheLocation, typingSafeListLocation, typesMapLocation, npmLocation, validateDefaultNpmLocation, throttleLimit, log) {
var _this = _super.call(this, ts.sys, globalTypingsCacheLocation, typingSafeListLocation ? ts.toPath(typingSafeListLocation, "", ts.createGetCanonicalFileName(ts.sys.useCaseSensitiveFileNames)) : ts.toPath("typingSafeList.json", __dirname, ts.createGetCanonicalFileName(ts.sys.useCaseSensitiveFileNames)), typesMapLocation ? ts.toPath(typesMapLocation, "", ts.createGetCanonicalFileName(ts.sys.useCaseSensitiveFileNames)) : ts.toPath("typesMap.json", __dirname, ts.createGetCanonicalFileName(ts.sys.useCaseSensitiveFileNames)), throttleLimit, log) || this;
- _this.npmPath = npmLocation !== undefined ? npmLocation : getDefaultNPMLocation(process.argv[0]);
+ _this.npmPath = npmLocation !== undefined ? npmLocation : getDefaultNPMLocation(process.argv[0], validateDefaultNpmLocation, _this.installTypingHost);
if (ts.stringContains(_this.npmPath, " ") && _this.npmPath[0] !== "\"") {
_this.npmPath = "\"" + _this.npmPath + "\"";
}
if (_this.log.isEnabled()) {
_this.log.writeLine("Process id: " + process.pid);
_this.log.writeLine("NPM location: " + _this.npmPath + " (explicit '" + server.Arguments.NpmLocation + "' " + (npmLocation === undefined ? "not " : "") + " provided)");
+ _this.log.writeLine("validateDefaultNpmLocation: " + validateDefaultNpmLocation);
}
(_this.nodeExecSync = require("child_process").execSync);
_this.ensurePackageDirectoryExists(globalTypingsCacheLocation);
@@ -95823,6 +95840,7 @@
var typingSafeListLocation = server.findArgument(server.Arguments.TypingSafeListLocation);
var typesMapLocation = server.findArgument(server.Arguments.TypesMapLocation);
var npmLocation = server.findArgument(server.Arguments.NpmLocation);
+ var validateDefaultNpmLocation = server.hasArgument(server.Arguments.ValidateDefaultNpmLocation);
var log = new FileLog(logFilePath);
if (log.isEnabled()) {
process.on("uncaughtException", function (e) {
@@ -95835,7 +95853,7 @@
}
process.exit(0);
});
- var installer = new NodeTypingsInstaller(globalTypingsCacheLocation, typingSafeListLocation, typesMapLocation, npmLocation, 5, log);
+ var installer = new NodeTypingsInstaller(globalTypingsCacheLocation, typingSafeListLocation, typesMapLocation, npmLocation, validateDefaultNpmLocation, 5, log);
installer.listen();
function indent(newline, str) {
return newline + " " + str.replace(/\r?\n/, newline + " ");

package.json

@@ -2,7 +2,7 @@
"name": "typescript",
"author": "Microsoft Corp.",
"homepage": "https://www.typescriptlang.org/",
- "version": "3.4.3",
+ "version": "3.4.5",
"license": "Apache-2.0",
"description": "TypeScript is a language for application scale JavaScript development",
"keywords": [