typescript 4.8.0-dev.20220630 → 4.8.0-dev.20220701

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/tsc.js CHANGED
@@ -69,7 +69,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
69
69
  var ts;
70
70
  (function (ts) {
71
71
  ts.versionMajorMinor = "4.8";
72
- ts.version = ts.versionMajorMinor + ".0-dev.20220630";
72
+ ts.version = ts.versionMajorMinor + ".0-dev.20220701";
73
73
  var NativeCollections;
74
74
  (function (NativeCollections) {
75
75
  var globals = typeof globalThis !== "undefined" ? globalThis :
@@ -39826,6 +39826,24 @@ var ts;
39826
39826
  var Symbol = ts.objectAllocator.getSymbolConstructor();
39827
39827
  var Type = ts.objectAllocator.getTypeConstructor();
39828
39828
  var Signature = ts.objectAllocator.getSignatureConstructor();
39829
+ var DebugTypeMapper = (function () {
39830
+ function DebugTypeMapper() {
39831
+ }
39832
+ DebugTypeMapper.prototype.__debugToString = function () {
39833
+ var _a;
39834
+ ts.Debug.type(this);
39835
+ switch (this.kind) {
39836
+ case 3: return ((_a = this.debugInfo) === null || _a === void 0 ? void 0 : _a.call(this)) || "(function mapper)";
39837
+ case 0: return this.source.__debugTypeToString() + " -> " + this.target.__debugTypeToString();
39838
+ case 1: return ts.zipWith(this.sources, this.targets || ts.map(this.sources, function () { return anyType; }), function (s, t) { return s.__debugTypeToString() + " -> " + t.__debugTypeToString(); }).join(", ");
39839
+ case 2: return ts.zipWith(this.sources, this.targets, function (s, t) { return s.__debugTypeToString() + " -> " + t().__debugTypeToString(); }).join(", ");
39840
+ case 5:
39841
+ case 4: return "m1: " + this.mapper1.__debugToString().split("\n").join("\n ") + "\nm2: " + this.mapper2.__debugToString().split("\n").join("\n ");
39842
+ default: return ts.Debug.assertNever(this);
39843
+ }
39844
+ };
39845
+ return DebugTypeMapper;
39846
+ }());
39829
39847
  var typeCount = 0;
39830
39848
  var symbolCount = 0;
39831
39849
  var enumCount = 0;
@@ -40273,10 +40291,23 @@ var ts;
40273
40291
  var numberOrBigIntType = getUnionType([numberType, bigintType]);
40274
40292
  var templateConstraintType = getUnionType([stringType, numberType, booleanType, bigintType, nullType, undefinedType]);
40275
40293
  var numericStringType = getTemplateLiteralType(["", ""], [numberType]);
40276
- var restrictiveMapper = makeFunctionTypeMapper(function (t) { return t.flags & 262144 ? getRestrictiveTypeParameter(t) : t; });
40277
- var permissiveMapper = makeFunctionTypeMapper(function (t) { return t.flags & 262144 ? wildcardType : t; });
40294
+ var restrictiveMapper = makeFunctionTypeMapper(function (t) { return t.flags & 262144 ? getRestrictiveTypeParameter(t) : t; }, function () { return "(restrictive mapper)"; });
40295
+ var permissiveMapper = makeFunctionTypeMapper(function (t) { return t.flags & 262144 ? wildcardType : t; }, function () { return "(permissive mapper)"; });
40278
40296
  var uniqueLiteralType = createIntrinsicType(131072, "never");
40279
- var uniqueLiteralMapper = makeFunctionTypeMapper(function (t) { return t.flags & 262144 ? uniqueLiteralType : t; });
40297
+ var uniqueLiteralMapper = makeFunctionTypeMapper(function (t) { return t.flags & 262144 ? uniqueLiteralType : t; }, function () { return "(unique literal mapper)"; });
40298
+ var outofbandVarianceMarkerHandler;
40299
+ var reportUnreliableMapper = makeFunctionTypeMapper(function (t) {
40300
+ if (outofbandVarianceMarkerHandler && (t === markerSuperType || t === markerSubType || t === markerOtherType)) {
40301
+ outofbandVarianceMarkerHandler(true);
40302
+ }
40303
+ return t;
40304
+ }, function () { return "(unmeasurable reporter)"; });
40305
+ var reportUnmeasurableMapper = makeFunctionTypeMapper(function (t) {
40306
+ if (outofbandVarianceMarkerHandler && (t === markerSuperType || t === markerSubType || t === markerOtherType)) {
40307
+ outofbandVarianceMarkerHandler(false);
40308
+ }
40309
+ return t;
40310
+ }, function () { return "(unreliable reporter)"; });
40280
40311
  var emptyObjectType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, ts.emptyArray);
40281
40312
  var emptyJsxObjectType = createAnonymousType(undefined, emptySymbols, ts.emptyArray, ts.emptyArray, ts.emptyArray);
40282
40313
  emptyJsxObjectType.objectFlags |= 2048;
@@ -40425,7 +40456,6 @@ var ts;
40425
40456
  var typeofType = createTypeofType();
40426
40457
  var _jsxNamespace;
40427
40458
  var _jsxFactoryEntity;
40428
- var outofbandVarianceMarkerHandler;
40429
40459
  var subtypeRelation = new ts.Map();
40430
40460
  var strictSubtypeRelation = new ts.Map();
40431
40461
  var assignableRelation = new ts.Map();
@@ -43721,7 +43751,7 @@ var ts;
43721
43751
  var name = typeParameterToName(newParam, context);
43722
43752
  var newTypeVariable = ts.factory.createTypeReferenceNode(name);
43723
43753
  context.approximateLength += 37;
43724
- var newMapper = prependTypeMapping(type.root.checkType, newParam, type.combinedMapper || type.mapper);
43754
+ var newMapper = prependTypeMapping(type.root.checkType, newParam, type.mapper);
43725
43755
  var saveInferTypeParameters_1 = context.inferTypeParameters;
43726
43756
  context.inferTypeParameters = type.root.inferTypeParameters;
43727
43757
  var extendsTypeNode_1 = typeToTypeNodeHelper(instantiateType(type.root.extendsType, newMapper), context);
@@ -50145,19 +50175,20 @@ var ts;
50145
50175
  var _a;
50146
50176
  var inferences;
50147
50177
  if ((_a = typeParameter.symbol) === null || _a === void 0 ? void 0 : _a.declarations) {
50148
- for (var _i = 0, _b = typeParameter.symbol.declarations; _i < _b.length; _i++) {
50149
- var declaration = _b[_i];
50178
+ var _loop_15 = function (declaration) {
50150
50179
  if (declaration.parent.kind === 190) {
50151
50180
  var _c = ts.walkUpParenthesizedTypesAndGetParentAndChild(declaration.parent.parent), _d = _c[0], childTypeParameter = _d === void 0 ? declaration.parent : _d, grandParent = _c[1];
50152
50181
  if (grandParent.kind === 178 && !omitTypeReferences) {
50153
- var typeReference = grandParent;
50154
- var typeParameters = getTypeParametersForTypeReference(typeReference);
50155
- if (typeParameters) {
50156
- var index = typeReference.typeArguments.indexOf(childTypeParameter);
50157
- if (index < typeParameters.length) {
50158
- var declaredConstraint = getConstraintOfTypeParameter(typeParameters[index]);
50182
+ var typeReference_1 = grandParent;
50183
+ var typeParameters_1 = getTypeParametersForTypeReference(typeReference_1);
50184
+ if (typeParameters_1) {
50185
+ var index = typeReference_1.typeArguments.indexOf(childTypeParameter);
50186
+ if (index < typeParameters_1.length) {
50187
+ var declaredConstraint = getConstraintOfTypeParameter(typeParameters_1[index]);
50159
50188
  if (declaredConstraint) {
50160
- var mapper = createTypeMapper(typeParameters, getEffectiveTypeArguments(typeReference, typeParameters));
50189
+ var mapper = makeDeferredTypeMapper(typeParameters_1, typeParameters_1.map(function (_, index) { return function () {
50190
+ return getEffectiveTypeArgumentAtIndex(typeReference_1, typeParameters_1, index);
50191
+ }; }));
50161
50192
  var constraint = instantiateType(declaredConstraint, mapper);
50162
50193
  if (constraint !== typeParameter) {
50163
50194
  inferences = ts.append(inferences, constraint);
@@ -50186,6 +50217,10 @@ var ts;
50186
50217
  inferences = ts.append(inferences, instantiateType(nodeType, makeUnaryTypeMapper(getDeclaredTypeOfTypeParameter(getSymbolOfNode(checkMappedType_1.typeParameter)), checkMappedType_1.typeParameter.constraint ? getTypeFromTypeNode(checkMappedType_1.typeParameter.constraint) : keyofConstraintType)));
50187
50218
  }
50188
50219
  }
50220
+ };
50221
+ for (var _i = 0, _b = typeParameter.symbol.declarations; _i < _b.length; _i++) {
50222
+ var declaration = _b[_i];
50223
+ _loop_15(declaration);
50189
50224
  }
50190
50225
  }
50191
50226
  return inferences && getIntersectionType(inferences);
@@ -50993,7 +51028,7 @@ var ts;
50993
51028
  var lastRequiredIndex = -1;
50994
51029
  var firstRestIndex = -1;
50995
51030
  var lastOptionalOrRestIndex = -1;
50996
- var _loop_15 = function (i) {
51031
+ var _loop_16 = function (i) {
50997
51032
  var type = elementTypes[i];
50998
51033
  var flags = target.elementFlags[i];
50999
51034
  if (flags & 8) {
@@ -51019,7 +51054,7 @@ var ts;
51019
51054
  }
51020
51055
  };
51021
51056
  for (var i = 0; i < elementTypes.length; i++) {
51022
- var state_4 = _loop_15(i);
51057
+ var state_4 = _loop_16(i);
51023
51058
  if (typeof state_4 === "object")
51024
51059
  return state_4.value;
51025
51060
  }
@@ -51196,7 +51231,7 @@ var ts;
51196
51231
  var templates = ts.filter(types, isPatternLiteralType);
51197
51232
  if (templates.length) {
51198
51233
  var i = types.length;
51199
- var _loop_16 = function () {
51234
+ var _loop_17 = function () {
51200
51235
  i--;
51201
51236
  var t = types[i];
51202
51237
  if (t.flags & 128 && ts.some(templates, function (template) { return isTypeMatchedByTemplateLiteralType(t, template); })) {
@@ -51204,7 +51239,7 @@ var ts;
51204
51239
  }
51205
51240
  };
51206
51241
  while (i > 0) {
51207
- _loop_16();
51242
+ _loop_17();
51208
51243
  }
51209
51244
  }
51210
51245
  }
@@ -51274,14 +51309,14 @@ var ts;
51274
51309
  var namedUnions = [];
51275
51310
  addNamedUnions(namedUnions, types);
51276
51311
  var reducedTypes = [];
51277
- var _loop_17 = function (t) {
51312
+ var _loop_18 = function (t) {
51278
51313
  if (!ts.some(namedUnions, function (union) { return containsType(union.types, t); })) {
51279
51314
  reducedTypes.push(t);
51280
51315
  }
51281
51316
  };
51282
51317
  for (var _i = 0, typeSet_1 = typeSet; _i < typeSet_1.length; _i++) {
51283
51318
  var t = typeSet_1[_i];
51284
- _loop_17(t);
51319
+ _loop_18(t);
51285
51320
  }
51286
51321
  if (!aliasSymbol && namedUnions.length === 1 && reducedTypes.length === 0) {
51287
51322
  return namedUnions[0];
@@ -52357,7 +52392,7 @@ var ts;
52357
52392
  var result;
52358
52393
  var extraTypes;
52359
52394
  var tailCount = 0;
52360
- var _loop_18 = function () {
52395
+ var _loop_19 = function () {
52361
52396
  if (tailCount === 1000) {
52362
52397
  error(currentNode, ts.Diagnostics.Type_instantiation_is_excessively_deep_and_possibly_infinite);
52363
52398
  result = errorType;
@@ -52431,7 +52466,7 @@ var ts;
52431
52466
  return "break";
52432
52467
  };
52433
52468
  while (true) {
52434
- var state_5 = _loop_18();
52469
+ var state_5 = _loop_19();
52435
52470
  if (typeof state_5 === "object")
52436
52471
  return state_5.value;
52437
52472
  if (state_5 === "break")
@@ -53032,7 +53067,7 @@ var ts;
53032
53067
  switch (mapper.kind) {
53033
53068
  case 0:
53034
53069
  return type === mapper.source ? mapper.target : type;
53035
- case 1:
53070
+ case 1: {
53036
53071
  var sources = mapper.sources;
53037
53072
  var targets = mapper.targets;
53038
53073
  for (var i = 0; i < sources.length; i++) {
@@ -53041,43 +53076,64 @@ var ts;
53041
53076
  }
53042
53077
  }
53043
53078
  return type;
53044
- case 2:
53045
- return mapper.func(type);
53079
+ }
53080
+ case 2: {
53081
+ var sources = mapper.sources;
53082
+ var targets = mapper.targets;
53083
+ for (var i = 0; i < sources.length; i++) {
53084
+ if (type === sources[i]) {
53085
+ return targets[i]();
53086
+ }
53087
+ }
53088
+ return type;
53089
+ }
53046
53090
  case 3:
53091
+ return mapper.func(type);
53047
53092
  case 4:
53093
+ case 5:
53048
53094
  var t1 = getMappedType(type, mapper.mapper1);
53049
- return t1 !== type && mapper.kind === 3 ? instantiateType(t1, mapper.mapper2) : getMappedType(t1, mapper.mapper2);
53095
+ return t1 !== type && mapper.kind === 4 ? instantiateType(t1, mapper.mapper2) : getMappedType(t1, mapper.mapper2);
53096
+ }
53097
+ }
53098
+ function attachDebugPrototypeIfDebug(mapper) {
53099
+ if (ts.Debug.isDebugging) {
53100
+ return Object.setPrototypeOf(mapper, DebugTypeMapper.prototype);
53050
53101
  }
53102
+ return mapper;
53051
53103
  }
53052
53104
  function makeUnaryTypeMapper(source, target) {
53053
- return { kind: 0, source: source, target: target };
53105
+ return attachDebugPrototypeIfDebug({ kind: 0, source: source, target: target });
53054
53106
  }
53055
53107
  function makeArrayTypeMapper(sources, targets) {
53056
- return { kind: 1, sources: sources, targets: targets };
53108
+ return attachDebugPrototypeIfDebug({ kind: 1, sources: sources, targets: targets });
53057
53109
  }
53058
- function makeFunctionTypeMapper(func) {
53059
- return { kind: 2, func: func };
53110
+ function makeFunctionTypeMapper(func, debugInfo) {
53111
+ return attachDebugPrototypeIfDebug({ kind: 3, func: func, debugInfo: ts.Debug.isDebugging ? debugInfo : undefined });
53112
+ }
53113
+ function makeDeferredTypeMapper(sources, targets) {
53114
+ return attachDebugPrototypeIfDebug({ kind: 2, sources: sources, targets: targets });
53060
53115
  }
53061
53116
  function makeCompositeTypeMapper(kind, mapper1, mapper2) {
53062
- return { kind: kind, mapper1: mapper1, mapper2: mapper2 };
53117
+ return attachDebugPrototypeIfDebug({ kind: kind, mapper1: mapper1, mapper2: mapper2 });
53063
53118
  }
53064
53119
  function createTypeEraser(sources) {
53065
53120
  return createTypeMapper(sources, undefined);
53066
53121
  }
53067
53122
  function createBackreferenceMapper(context, index) {
53068
- return makeFunctionTypeMapper(function (t) { return ts.findIndex(context.inferences, function (info) { return info.typeParameter === t; }) >= index ? unknownType : t; });
53123
+ var forwardInferences = context.inferences.slice(index);
53124
+ return createTypeMapper(ts.map(forwardInferences, function (i) { return i.typeParameter; }), ts.map(forwardInferences, function () { return unknownType; }));
53069
53125
  }
53070
53126
  function combineTypeMappers(mapper1, mapper2) {
53071
- return mapper1 ? makeCompositeTypeMapper(3, mapper1, mapper2) : mapper2;
53127
+ return mapper1 ? makeCompositeTypeMapper(4, mapper1, mapper2) : mapper2;
53072
53128
  }
53073
53129
  function mergeTypeMappers(mapper1, mapper2) {
53074
- return mapper1 ? makeCompositeTypeMapper(4, mapper1, mapper2) : mapper2;
53130
+ return mapper1 ? makeCompositeTypeMapper(5, mapper1, mapper2) : mapper2;
53075
53131
  }
53076
53132
  function prependTypeMapping(source, target, mapper) {
53077
- return !mapper ? makeUnaryTypeMapper(source, target) : makeCompositeTypeMapper(4, makeUnaryTypeMapper(source, target), mapper);
53133
+ return !mapper ? makeUnaryTypeMapper(source, target) : makeCompositeTypeMapper(5, makeUnaryTypeMapper(source, target), mapper);
53078
53134
  }
53079
53135
  function appendTypeMapping(mapper, source, target) {
53080
- return !mapper ? makeUnaryTypeMapper(source, target) : makeCompositeTypeMapper(4, mapper, makeUnaryTypeMapper(source, target));
53136
+ return !mapper ? makeUnaryTypeMapper(source, target) : makeCompositeTypeMapper(5, mapper, makeUnaryTypeMapper(source, target));
53081
53137
  }
53082
53138
  function getRestrictiveTypeParameter(tp) {
53083
53139
  return tp.constraint === unknownType ? tp : tp.restrictiveInstantiation || (tp.restrictiveInstantiation = createTypeParameter(tp.symbol),
@@ -54757,7 +54813,7 @@ var ts;
54757
54813
  reducedTarget = findMatchingDiscriminantType(source, target, isRelatedTo) || filterPrimitivesIfContainsNonPrimitive(target);
54758
54814
  checkTypes = reducedTarget.flags & 1048576 ? reducedTarget.types : [reducedTarget];
54759
54815
  }
54760
- var _loop_19 = function (prop) {
54816
+ var _loop_20 = function (prop) {
54761
54817
  if (shouldCheckAsExcessProperty(prop, source.symbol) && !isIgnoredJsxProperty(source, prop)) {
54762
54818
  if (!isKnownProperty(reducedTarget, prop.escapedName, isComparingJsxAttributes)) {
54763
54819
  if (reportErrors) {
@@ -54810,7 +54866,7 @@ var ts;
54810
54866
  };
54811
54867
  for (var _i = 0, _b = getPropertiesOfType(source); _i < _b.length; _i++) {
54812
54868
  var prop = _b[_i];
54813
- var state_6 = _loop_19(prop);
54869
+ var state_6 = _loop_20(prop);
54814
54870
  if (typeof state_6 === "object")
54815
54871
  return state_6.value;
54816
54872
  }
@@ -54998,10 +55054,10 @@ var ts;
54998
55054
  if (outofbandVarianceMarkerHandler) {
54999
55055
  var saved = entry & 24;
55000
55056
  if (saved & 8) {
55001
- instantiateType(source, makeFunctionTypeMapper(reportUnmeasurableMarkers));
55057
+ instantiateType(source, reportUnmeasurableMapper);
55002
55058
  }
55003
55059
  if (saved & 16) {
55004
- instantiateType(source, makeFunctionTypeMapper(reportUnreliableMarkers));
55060
+ instantiateType(source, reportUnreliableMapper);
55005
55061
  }
55006
55062
  }
55007
55063
  return entry & 1 ? -1 : 0;
@@ -55338,7 +55394,7 @@ var ts;
55338
55394
  if (relation === comparableRelation) {
55339
55395
  return templateLiteralTypesDefinitelyUnrelated(source, target) ? 0 : -1;
55340
55396
  }
55341
- instantiateType(source, makeFunctionTypeMapper(reportUnreliableMarkers));
55397
+ instantiateType(source, reportUnreliableMapper);
55342
55398
  }
55343
55399
  if (isTypeMatchedByTemplateLiteralType(source, target)) {
55344
55400
  return -1;
@@ -55550,25 +55606,13 @@ var ts;
55550
55606
  }
55551
55607
  }
55552
55608
  }
55553
- function reportUnmeasurableMarkers(p) {
55554
- if (outofbandVarianceMarkerHandler && (p === markerSuperType || p === markerSubType || p === markerOtherType)) {
55555
- outofbandVarianceMarkerHandler(false);
55556
- }
55557
- return p;
55558
- }
55559
- function reportUnreliableMarkers(p) {
55560
- if (outofbandVarianceMarkerHandler && (p === markerSuperType || p === markerSubType || p === markerOtherType)) {
55561
- outofbandVarianceMarkerHandler(true);
55562
- }
55563
- return p;
55564
- }
55565
55609
  function mappedTypeRelatedTo(source, target, reportErrors) {
55566
55610
  var modifiersRelated = relation === comparableRelation || (relation === identityRelation ? getMappedTypeModifiers(source) === getMappedTypeModifiers(target) :
55567
55611
  getCombinedMappedTypeOptionality(source) <= getCombinedMappedTypeOptionality(target));
55568
55612
  if (modifiersRelated) {
55569
55613
  var result_10;
55570
55614
  var targetConstraint = getConstraintTypeFromMappedType(target);
55571
- var sourceConstraint = instantiateType(getConstraintTypeFromMappedType(source), makeFunctionTypeMapper(getCombinedMappedTypeOptionality(source) < 0 ? reportUnmeasurableMarkers : reportUnreliableMarkers));
55615
+ var sourceConstraint = instantiateType(getConstraintTypeFromMappedType(source), getCombinedMappedTypeOptionality(source) < 0 ? reportUnmeasurableMapper : reportUnreliableMapper);
55572
55616
  if (result_10 = isRelatedTo(targetConstraint, sourceConstraint, 3, reportErrors)) {
55573
55617
  var mapper = createTypeMapper([getTypeParameterFromMappedType(source)], [getTypeParameterFromMappedType(target)]);
55574
55618
  if (instantiateType(getNameTypeFromMappedType(source), mapper) === instantiateType(getNameTypeFromMappedType(target), mapper)) {
@@ -55604,11 +55648,11 @@ var ts;
55604
55648
  }
55605
55649
  var discriminantCombinations = ts.cartesianProduct(sourceDiscriminantTypes);
55606
55650
  var matchingTypes = [];
55607
- var _loop_20 = function (combination) {
55651
+ var _loop_21 = function (combination) {
55608
55652
  var hasMatch = false;
55609
55653
  outer: for (var _c = 0, _d = target.types; _c < _d.length; _c++) {
55610
55654
  var type = _d[_c];
55611
- var _loop_21 = function (i) {
55655
+ var _loop_22 = function (i) {
55612
55656
  var sourceProperty = sourcePropertiesFiltered[i];
55613
55657
  var targetProperty = getPropertyOfType(type, sourceProperty.escapedName);
55614
55658
  if (!targetProperty)
@@ -55621,7 +55665,7 @@ var ts;
55621
55665
  }
55622
55666
  };
55623
55667
  for (var i = 0; i < sourcePropertiesFiltered.length; i++) {
55624
- var state_8 = _loop_21(i);
55668
+ var state_8 = _loop_22(i);
55625
55669
  switch (state_8) {
55626
55670
  case "continue-outer": continue outer;
55627
55671
  }
@@ -55635,7 +55679,7 @@ var ts;
55635
55679
  };
55636
55680
  for (var _a = 0, discriminantCombinations_1 = discriminantCombinations; _a < discriminantCombinations_1.length; _a++) {
55637
55681
  var combination = discriminantCombinations_1[_a];
55638
- var state_7 = _loop_20(combination);
55682
+ var state_7 = _loop_21(combination);
55639
55683
  if (typeof state_7 === "object")
55640
55684
  return state_7.value;
55641
55685
  }
@@ -56041,7 +56085,7 @@ var ts;
56041
56085
  return function (source, target) { return reportIncompatibleError(ts.Diagnostics.Construct_signature_return_types_0_and_1_are_incompatible, typeToString(source), typeToString(target)); };
56042
56086
  }
56043
56087
  function signatureRelatedTo(source, target, erase, reportErrors, incompatibleReporter) {
56044
- return compareSignaturesRelated(erase ? getErasedSignature(source) : source, erase ? getErasedSignature(target) : target, relation === strictSubtypeRelation ? 8 : 0, reportErrors, reportError, incompatibleReporter, isRelatedToWorker, makeFunctionTypeMapper(reportUnreliableMarkers));
56088
+ return compareSignaturesRelated(erase ? getErasedSignature(source) : source, erase ? getErasedSignature(target) : target, relation === strictSubtypeRelation ? 8 : 0, reportErrors, reportError, incompatibleReporter, isRelatedToWorker, reportUnreliableMapper);
56045
56089
  }
56046
56090
  function signaturesIdenticalTo(source, target, kind) {
56047
56091
  var sourceSignatures = getSignaturesOfType(source, kind);
@@ -56279,7 +56323,7 @@ var ts;
56279
56323
  ts.tracing === null || ts.tracing === void 0 ? void 0 : ts.tracing.push("checkTypes", "getVariancesWorker", { arity: typeParameters.length, id: getTypeId(getDeclaredTypeOfSymbol(symbol)) });
56280
56324
  links.variances = ts.emptyArray;
56281
56325
  var variances = [];
56282
- var _loop_22 = function (tp) {
56326
+ var _loop_23 = function (tp) {
56283
56327
  var modifiers = getVarianceModifiers(tp);
56284
56328
  var variance = modifiers & 65536 ?
56285
56329
  modifiers & 32768 ? 0 : 1 :
@@ -56308,9 +56352,9 @@ var ts;
56308
56352
  }
56309
56353
  variances.push(variance);
56310
56354
  };
56311
- for (var _i = 0, typeParameters_1 = typeParameters; _i < typeParameters_1.length; _i++) {
56312
- var tp = typeParameters_1[_i];
56313
- _loop_22(tp);
56355
+ for (var _i = 0, typeParameters_2 = typeParameters; _i < typeParameters_2.length; _i++) {
56356
+ var tp = typeParameters_2[_i];
56357
+ _loop_23(tp);
56314
56358
  }
56315
56359
  links.variances = variances;
56316
56360
  ts.tracing === null || ts.tracing === void 0 ? void 0 : ts.tracing.pop({ variances: variances.map(ts.Debug.formatVariance) });
@@ -57178,25 +57222,27 @@ var ts;
57178
57222
  signature: signature,
57179
57223
  flags: flags,
57180
57224
  compareTypes: compareTypes,
57181
- mapper: makeFunctionTypeMapper(function (t) { return mapToInferredType(context, t, true); }),
57182
- nonFixingMapper: makeFunctionTypeMapper(function (t) { return mapToInferredType(context, t, false); }),
57225
+ mapper: reportUnmeasurableMapper,
57226
+ nonFixingMapper: reportUnmeasurableMapper,
57183
57227
  };
57228
+ context.mapper = makeFixingMapperForContext(context);
57229
+ context.nonFixingMapper = makeNonFixingMapperForContext(context);
57184
57230
  return context;
57185
57231
  }
57186
- function mapToInferredType(context, t, fix) {
57187
- var inferences = context.inferences;
57188
- for (var i = 0; i < inferences.length; i++) {
57189
- var inference = inferences[i];
57190
- if (t === inference.typeParameter) {
57191
- if (fix && !inference.isFixed) {
57192
- inferFromIntraExpressionSites(context);
57193
- clearCachedInferences(inferences);
57194
- inference.isFixed = true;
57195
- }
57196
- return getInferredType(context, i);
57232
+ function makeFixingMapperForContext(context) {
57233
+ return makeDeferredTypeMapper(ts.map(context.inferences, function (i) { return i.typeParameter; }), ts.map(context.inferences, function (inference, i) { return function () {
57234
+ if (!inference.isFixed) {
57235
+ inferFromIntraExpressionSites(context);
57236
+ clearCachedInferences(context.inferences);
57237
+ inference.isFixed = true;
57197
57238
  }
57198
- }
57199
- return t;
57239
+ return getInferredType(context, i);
57240
+ }; }));
57241
+ }
57242
+ function makeNonFixingMapperForContext(context) {
57243
+ return makeDeferredTypeMapper(ts.map(context.inferences, function (i) { return i.typeParameter; }), ts.map(context.inferences, function (_, i) { return function () {
57244
+ return getInferredType(context, i);
57245
+ }; }));
57200
57246
  }
57201
57247
  function clearCachedInferences(inferences) {
57202
57248
  for (var _i = 0, inferences_1 = inferences; _i < inferences_1.length; _i++) {
@@ -57946,7 +57992,7 @@ var ts;
57946
57992
  var matches = inferTypesFromTemplateLiteralType(source, target);
57947
57993
  var types = target.types;
57948
57994
  if (matches || ts.every(target.texts, function (s) { return s.length === 0; })) {
57949
- var _loop_23 = function (i) {
57995
+ var _loop_24 = function (i) {
57950
57996
  var source_1 = matches ? matches[i] : neverType;
57951
57997
  var target_3 = types[i];
57952
57998
  if (source_1.flags & 128 && target_3.flags & 8650752) {
@@ -57990,7 +58036,7 @@ var ts;
57990
58036
  inferFromTypes(source_1, target_3);
57991
58037
  };
57992
58038
  for (var i = 0; i < types.length; i++) {
57993
- _loop_23(i);
58039
+ _loop_24(i);
57994
58040
  }
57995
58041
  }
57996
58042
  }
@@ -58460,7 +58506,7 @@ var ts;
58460
58506
  function mapTypesByKeyProperty(types, name) {
58461
58507
  var map = new ts.Map();
58462
58508
  var count = 0;
58463
- var _loop_24 = function (type) {
58509
+ var _loop_25 = function (type) {
58464
58510
  if (type.flags & (524288 | 2097152 | 58982400)) {
58465
58511
  var discriminant = getTypeOfPropertyOfType(type, name);
58466
58512
  if (discriminant) {
@@ -58486,7 +58532,7 @@ var ts;
58486
58532
  };
58487
58533
  for (var _i = 0, types_15 = types; _i < types_15.length; _i++) {
58488
58534
  var type = types_15[_i];
58489
- var state_9 = _loop_24(type);
58535
+ var state_9 = _loop_25(type);
58490
58536
  if (typeof state_9 === "object")
58491
58537
  return state_9.value;
58492
58538
  }
@@ -63895,7 +63941,7 @@ var ts;
63895
63941
  var spreadIndex = getSpreadArgumentIndex(args);
63896
63942
  if (spreadIndex >= 0) {
63897
63943
  var effectiveArgs_1 = args.slice(0, spreadIndex);
63898
- var _loop_25 = function (i) {
63944
+ var _loop_26 = function (i) {
63899
63945
  var arg = args[i];
63900
63946
  var spreadType = arg.kind === 225 && (flowLoopCount ? checkExpression(arg.expression) : checkExpressionCached(arg.expression));
63901
63947
  if (spreadType && isTupleType(spreadType)) {
@@ -63911,7 +63957,7 @@ var ts;
63911
63957
  }
63912
63958
  };
63913
63959
  for (var i = spreadIndex; i < args.length; i++) {
63914
- _loop_25(i);
63960
+ _loop_26(i);
63915
63961
  }
63916
63962
  return effectiveArgs_1;
63917
63963
  }
@@ -64161,7 +64207,7 @@ var ts;
64161
64207
  var min_3 = Number.MAX_VALUE;
64162
64208
  var minIndex = 0;
64163
64209
  var i_1 = 0;
64164
- var _loop_26 = function (c) {
64210
+ var _loop_27 = function (c) {
64165
64211
  var chain_2 = function () { return ts.chainDiagnosticMessages(undefined, ts.Diagnostics.Overload_0_of_1_2_gave_the_following_error, i_1 + 1, candidates.length, signatureToString(c)); };
64166
64212
  var diags_2 = getSignatureApplicabilityError(node, args, c, assignableRelation, 0, true, chain_2);
64167
64213
  if (diags_2) {
@@ -64179,7 +64225,7 @@ var ts;
64179
64225
  };
64180
64226
  for (var _a = 0, candidatesForArgumentError_1 = candidatesForArgumentError; _a < candidatesForArgumentError_1.length; _a++) {
64181
64227
  var c = candidatesForArgumentError_1[_a];
64182
- _loop_26(c);
64228
+ _loop_27(c);
64183
64229
  }
64184
64230
  var diags_3 = max > 1 ? allDiagnostics[minIndex] : ts.flatten(allDiagnostics);
64185
64231
  ts.Debug.assert(diags_3.length > 0, "No errors reported for 3 or fewer overload signatures");
@@ -64322,7 +64368,7 @@ var ts;
64322
64368
  }
64323
64369
  var _a = ts.minAndMax(candidates, getNumNonRestParameters), minArgumentCount = _a.min, maxNonRestParam = _a.max;
64324
64370
  var parameters = [];
64325
- var _loop_27 = function (i) {
64371
+ var _loop_28 = function (i) {
64326
64372
  var symbols = ts.mapDefined(candidates, function (s) { return signatureHasRestParameter(s) ?
64327
64373
  i < s.parameters.length - 1 ? s.parameters[i] : ts.last(s.parameters) :
64328
64374
  i < s.parameters.length ? s.parameters[i] : undefined; });
@@ -64330,7 +64376,7 @@ var ts;
64330
64376
  parameters.push(createCombinedSymbolFromTypes(symbols, ts.mapDefined(candidates, function (candidate) { return tryGetTypeAtPosition(candidate, i); })));
64331
64377
  };
64332
64378
  for (var i = 0; i < maxNonRestParam; i++) {
64333
- _loop_27(i);
64379
+ _loop_28(i);
64334
64380
  }
64335
64381
  var restParameterSymbols = ts.mapDefined(candidates, function (c) { return signatureHasRestParameter(c) ? ts.last(c.parameters) : undefined; });
64336
64382
  var flags = 0;
@@ -67307,8 +67353,8 @@ var ts;
67307
67353
  var result = [];
67308
67354
  var oldTypeParameters;
67309
67355
  var newTypeParameters;
67310
- for (var _i = 0, typeParameters_2 = typeParameters; _i < typeParameters_2.length; _i++) {
67311
- var tp = typeParameters_2[_i];
67356
+ for (var _i = 0, typeParameters_3 = typeParameters; _i < typeParameters_3.length; _i++) {
67357
+ var tp = typeParameters_3[_i];
67312
67358
  var name = tp.symbol.escapedName;
67313
67359
  if (hasTypeParameterByName(context.inferredTypeParameters, name) || hasTypeParameterByName(result, name)) {
67314
67360
  var newName = getUniqueTypeParameterName(ts.concatenate(context.inferredTypeParameters, result), name);
@@ -67918,7 +67964,7 @@ var ts;
67918
67964
  var indexSymbol = getIndexSymbol(getSymbolOfNode(node));
67919
67965
  if (indexSymbol === null || indexSymbol === void 0 ? void 0 : indexSymbol.declarations) {
67920
67966
  var indexSignatureMap_1 = new ts.Map();
67921
- var _loop_28 = function (declaration) {
67967
+ var _loop_29 = function (declaration) {
67922
67968
  if (declaration.parameters.length === 1 && declaration.parameters[0].type) {
67923
67969
  forEachType(getTypeFromTypeNode(declaration.parameters[0].type), function (type) {
67924
67970
  var entry = indexSignatureMap_1.get(getTypeId(type));
@@ -67933,7 +67979,7 @@ var ts;
67933
67979
  };
67934
67980
  for (var _i = 0, _a = indexSymbol.declarations; _i < _a.length; _i++) {
67935
67981
  var declaration = _a[_i];
67936
- _loop_28(declaration);
67982
+ _loop_29(declaration);
67937
67983
  }
67938
67984
  indexSignatureMap_1.forEach(function (entry) {
67939
67985
  if (entry.declarations.length > 1) {
@@ -68125,6 +68171,12 @@ var ts;
68125
68171
  function checkMissingDeclaration(node) {
68126
68172
  checkDecorators(node);
68127
68173
  }
68174
+ function getEffectiveTypeArgumentAtIndex(node, typeParameters, index) {
68175
+ if (index < typeParameters.length) {
68176
+ return getTypeFromTypeNode(node.typeArguments[index]);
68177
+ }
68178
+ return getEffectiveTypeArguments(node, typeParameters)[index];
68179
+ }
68128
68180
  function getEffectiveTypeArguments(node, typeParameters) {
68129
68181
  return fillMissingTypeArguments(ts.map(node.typeArguments, getTypeFromTypeNode), typeParameters, getMinTypeArgumentCount(typeParameters), ts.isInJSFile(node));
68130
68182
  }
@@ -69332,8 +69384,8 @@ var ts;
69332
69384
  return;
69333
69385
  var typeParameters = ts.getEffectiveTypeParameterDeclarations(node);
69334
69386
  var seenParentsWithEveryUnused = new ts.Set();
69335
- for (var _i = 0, typeParameters_3 = typeParameters; _i < typeParameters_3.length; _i++) {
69336
- var typeParameter = typeParameters_3[_i];
69387
+ for (var _i = 0, typeParameters_4 = typeParameters; _i < typeParameters_4.length; _i++) {
69388
+ var typeParameter = typeParameters_4[_i];
69337
69389
  if (!isTypeParameterUnused(typeParameter))
69338
69390
  continue;
69339
69391
  var name = ts.idText(typeParameter.name);
@@ -70797,7 +70849,7 @@ var ts;
70797
70849
  var interfaceDeclaration = ts.getObjectFlags(type) & 2 ? ts.getDeclarationOfKind(type.symbol, 258) : undefined;
70798
70850
  var localPropDeclaration = declaration && declaration.kind === 221 ||
70799
70851
  name && name.kind === 162 || getParentOfSymbol(prop) === type.symbol ? declaration : undefined;
70800
- var _loop_29 = function (info) {
70852
+ var _loop_30 = function (info) {
70801
70853
  var localIndexDeclaration = info.declaration && getParentOfSymbol(getSymbolOfNode(info.declaration)) === type.symbol ? info.declaration : undefined;
70802
70854
  var errorNode = localPropDeclaration || localIndexDeclaration ||
70803
70855
  (interfaceDeclaration && !ts.some(getBaseTypes(type), function (base) { return !!getPropertyOfObjectType(base, prop.escapedName) && !!getIndexTypeOfType(base, info.keyType); }) ? interfaceDeclaration : undefined);
@@ -70807,7 +70859,7 @@ var ts;
70807
70859
  };
70808
70860
  for (var _i = 0, indexInfos_9 = indexInfos; _i < indexInfos_9.length; _i++) {
70809
70861
  var info = indexInfos_9[_i];
70810
- _loop_29(info);
70862
+ _loop_30(info);
70811
70863
  }
70812
70864
  }
70813
70865
  function checkIndexConstraintForIndexSignature(type, checkInfo) {
@@ -70815,7 +70867,7 @@ var ts;
70815
70867
  var indexInfos = getApplicableIndexInfos(type, checkInfo.keyType);
70816
70868
  var interfaceDeclaration = ts.getObjectFlags(type) & 2 ? ts.getDeclarationOfKind(type.symbol, 258) : undefined;
70817
70869
  var localCheckDeclaration = declaration && getParentOfSymbol(getSymbolOfNode(declaration)) === type.symbol ? declaration : undefined;
70818
- var _loop_30 = function (info) {
70870
+ var _loop_31 = function (info) {
70819
70871
  if (info === checkInfo)
70820
70872
  return "continue";
70821
70873
  var localIndexDeclaration = info.declaration && getParentOfSymbol(getSymbolOfNode(info.declaration)) === type.symbol ? info.declaration : undefined;
@@ -70827,7 +70879,7 @@ var ts;
70827
70879
  };
70828
70880
  for (var _i = 0, indexInfos_10 = indexInfos; _i < indexInfos_10.length; _i++) {
70829
70881
  var info = indexInfos_10[_i];
70830
- _loop_30(info);
70882
+ _loop_31(info);
70831
70883
  }
70832
70884
  }
70833
70885
  function checkTypeNameIsReserved(name, message) {
@@ -71122,7 +71174,7 @@ var ts;
71122
71174
  var baseTypes = baseTypeNode && getBaseTypes(type);
71123
71175
  var baseWithThis = (baseTypes === null || baseTypes === void 0 ? void 0 : baseTypes.length) ? getTypeWithThisArgument(ts.first(baseTypes), type.thisType) : undefined;
71124
71176
  var baseStaticType = getBaseConstructorTypeOfClass(type);
71125
- var _loop_31 = function (member) {
71177
+ var _loop_32 = function (member) {
71126
71178
  if (ts.hasAmbientModifier(member)) {
71127
71179
  return "continue";
71128
71180
  }
@@ -71137,7 +71189,7 @@ var ts;
71137
71189
  };
71138
71190
  for (var _i = 0, _a = node.members; _i < _a.length; _i++) {
71139
71191
  var member = _a[_i];
71140
- _loop_31(member);
71192
+ _loop_32(member);
71141
71193
  }
71142
71194
  }
71143
71195
  function checkExistingMemberForOverrideModifier(node, staticType, baseStaticType, baseWithThis, type, typeWithThis, member, memberIsParameterProperty, reportErrors) {
@@ -71212,7 +71264,7 @@ var ts;
71212
71264
  }
71213
71265
  function issueMemberSpecificError(node, typeWithThis, baseWithThis, broadDiag) {
71214
71266
  var issuedMemberError = false;
71215
- var _loop_32 = function (member) {
71267
+ var _loop_33 = function (member) {
71216
71268
  if (ts.isStatic(member)) {
71217
71269
  return "continue";
71218
71270
  }
@@ -71230,7 +71282,7 @@ var ts;
71230
71282
  };
71231
71283
  for (var _i = 0, _a = node.members; _i < _a.length; _i++) {
71232
71284
  var member = _a[_i];
71233
- _loop_32(member);
71285
+ _loop_33(member);
71234
71286
  }
71235
71287
  if (!issuedMemberError) {
71236
71288
  checkTypeAssignableTo(typeWithThis, baseWithThis, node.name || node, broadDiag);
@@ -71277,7 +71329,7 @@ var ts;
71277
71329
  function checkKindsOfPropertyMemberOverrides(type, baseType) {
71278
71330
  var _a, _b, _c, _d;
71279
71331
  var baseProperties = getPropertiesOfType(baseType);
71280
- var _loop_33 = function (baseProperty) {
71332
+ var _loop_34 = function (baseProperty) {
71281
71333
  var base = getTargetSymbol(baseProperty);
71282
71334
  if (base.flags & 4194304) {
71283
71335
  return "continue";
@@ -71375,7 +71427,7 @@ var ts;
71375
71427
  };
71376
71428
  basePropertyCheck: for (var _i = 0, baseProperties_1 = baseProperties; _i < baseProperties_1.length; _i++) {
71377
71429
  var baseProperty = baseProperties_1[_i];
71378
- var state_10 = _loop_33(baseProperty);
71430
+ var state_10 = _loop_34(baseProperty);
71379
71431
  switch (state_10) {
71380
71432
  case "continue-basePropertyCheck": continue basePropertyCheck;
71381
71433
  }
@@ -91847,7 +91899,6 @@ var ts;
91847
91899
  newBuildInfo.program = buildInfo.program;
91848
91900
  if (newBuildInfo.program && changedDtsText !== undefined && config.options.composite) {
91849
91901
  newBuildInfo.program.outSignature = ts.computeSignature(changedDtsText, createHash, changedDtsData);
91850
- newBuildInfo.program.dtsChangeTime = ts.getCurrentTime(host).getTime();
91851
91902
  }
91852
91903
  var _a = buildInfo.bundle, js = _a.js, dts = _a.dts, sourceFiles = _a.sourceFiles;
91853
91904
  newBuildInfo.bundle.js.sources = js.sources;
@@ -100225,7 +100276,7 @@ var ts;
100225
100276
  state.outSignature = oldState === null || oldState === void 0 ? void 0 : oldState.outSignature;
100226
100277
  }
100227
100278
  state.changedFilesSet = new ts.Set();
100228
- state.dtsChangeTime = compilerOptions.composite ? oldState === null || oldState === void 0 ? void 0 : oldState.dtsChangeTime : undefined;
100279
+ state.latestChangedDtsFile = compilerOptions.composite ? oldState === null || oldState === void 0 ? void 0 : oldState.latestChangedDtsFile : undefined;
100229
100280
  var useOldState = ts.BuilderState.canReuseOldState(state.referencedMap, oldState);
100230
100281
  var oldCompilerOptions = useOldState ? oldState.compilerOptions : undefined;
100231
100282
  var canCopySemanticDiagnostics = useOldState && oldState.semanticDiagnosticsPerFile && !!state.semanticDiagnosticsPerFile &&
@@ -100332,7 +100383,7 @@ var ts;
100332
100383
  programEmitComplete: state.programEmitComplete,
100333
100384
  emitSignatures: state.emitSignatures && new ts.Map(state.emitSignatures),
100334
100385
  outSignature: state.outSignature,
100335
- dtsChangeTime: state.dtsChangeTime,
100386
+ latestChangedDtsFile: state.latestChangedDtsFile,
100336
100387
  hasChangedEmitSignature: state.hasChangedEmitSignature,
100337
100388
  changedFilesSet: outFilePath ? new ts.Set(state.changedFilesSet) : undefined,
100338
100389
  };
@@ -100345,7 +100396,7 @@ var ts;
100345
100396
  state.programEmitComplete = savedEmitState.programEmitComplete;
100346
100397
  state.emitSignatures = savedEmitState.emitSignatures;
100347
100398
  state.outSignature = savedEmitState.outSignature;
100348
- state.dtsChangeTime = savedEmitState.dtsChangeTime;
100399
+ state.latestChangedDtsFile = savedEmitState.latestChangedDtsFile;
100349
100400
  state.hasChangedEmitSignature = savedEmitState.hasChangedEmitSignature;
100350
100401
  if (savedEmitState.changedFilesSet)
100351
100402
  state.changedFilesSet = savedEmitState.changedFilesSet;
@@ -100575,13 +100626,13 @@ var ts;
100575
100626
  return !!ts.outFile(info.options || {});
100576
100627
  }
100577
100628
  ts.isProgramBundleEmitBuildInfo = isProgramBundleEmitBuildInfo;
100578
- function getProgramBuildInfo(state, getCanonicalFileName, host) {
100629
+ function getProgramBuildInfo(state, getCanonicalFileName) {
100579
100630
  var outFilePath = ts.outFile(state.compilerOptions);
100580
100631
  if (outFilePath && !state.compilerOptions.composite)
100581
100632
  return;
100582
100633
  var currentDirectory = ts.Debug.checkDefined(state.program).getCurrentDirectory();
100583
100634
  var buildInfoDirectory = ts.getDirectoryPath(ts.getNormalizedAbsolutePath(ts.getTsBuildInfoEmitOutputFilePath(state.compilerOptions), currentDirectory));
100584
- state.dtsChangeTime = state.hasChangedEmitSignature ? ts.getCurrentTime(host).getTime() : state.dtsChangeTime;
100635
+ var latestChangedDtsFile = state.latestChangedDtsFile ? relativeToBuildInfoEnsuringAbsolutePath(state.latestChangedDtsFile) : undefined;
100585
100636
  if (outFilePath) {
100586
100637
  var fileNames_1 = [];
100587
100638
  var fileInfos_1 = [];
@@ -100597,7 +100648,7 @@ var ts;
100597
100648
  fileInfos: fileInfos_1,
100598
100649
  options: convertToProgramBuildInfoCompilerOptions(state.compilerOptions, "affectsBundleEmitBuildInfo"),
100599
100650
  outSignature: state.outSignature,
100600
- dtsChangeTime: state.dtsChangeTime,
100651
+ latestChangedDtsFile: latestChangedDtsFile,
100601
100652
  };
100602
100653
  return result_15;
100603
100654
  }
@@ -100692,7 +100743,7 @@ var ts;
100692
100743
  affectedFilesPendingEmit: affectedFilesPendingEmit,
100693
100744
  changeFileSet: changeFileSet,
100694
100745
  emitSignatures: emitSignatures,
100695
- dtsChangeTime: state.dtsChangeTime,
100746
+ latestChangedDtsFile: latestChangedDtsFile,
100696
100747
  };
100697
100748
  return result;
100698
100749
  function relativeToBuildInfoEnsuringAbsolutePath(path) {
@@ -100850,7 +100901,7 @@ var ts;
100850
100901
  var getCanonicalFileName = ts.createGetCanonicalFileName(host.useCaseSensitiveFileNames());
100851
100902
  var computeHash = ts.maybeBind(host, host.createHash);
100852
100903
  var state = createBuilderProgramState(newProgram, getCanonicalFileName, oldState, host.disableUseFileVersionAsSignature);
100853
- newProgram.getProgramBuildInfo = function () { return getProgramBuildInfo(state, getCanonicalFileName, host); };
100904
+ newProgram.getProgramBuildInfo = function () { return getProgramBuildInfo(state, getCanonicalFileName); };
100854
100905
  newProgram = undefined;
100855
100906
  oldProgram = undefined;
100856
100907
  oldState = undefined;
@@ -100859,6 +100910,7 @@ var ts;
100859
100910
  builderProgram.getState = getState;
100860
100911
  builderProgram.saveEmitState = function () { return backupBuilderProgramEmitState(state); };
100861
100912
  builderProgram.restoreEmitState = function (saved) { return restoreBuilderProgramEmitState(state, saved); };
100913
+ builderProgram.hasChangedEmitSignature = function () { return !!state.hasChangedEmitSignature; };
100862
100914
  builderProgram.getAllDependencies = function (sourceFile) { return ts.BuilderState.getAllDependencies(state, ts.Debug.checkDefined(state.program), sourceFile); };
100863
100915
  builderProgram.getSemanticDiagnostics = getSemanticDiagnostics;
100864
100916
  builderProgram.emit = emit;
@@ -100947,18 +100999,20 @@ var ts;
100947
100999
  var filePath = sourceFiles[0].resolvedPath;
100948
101000
  var oldSignature = (_f = state.emitSignatures) === null || _f === void 0 ? void 0 : _f.get(filePath);
100949
101001
  emitSignature !== null && emitSignature !== void 0 ? emitSignature : (emitSignature = computeSignature(text, computeHash, data));
100950
- if (emitSignature !== oldSignature) {
100951
- ((_g = state.emitSignatures) !== null && _g !== void 0 ? _g : (state.emitSignatures = new ts.Map())).set(filePath, emitSignature);
100952
- state.hasChangedEmitSignature = true;
100953
- }
101002
+ if (emitSignature === oldSignature)
101003
+ return;
101004
+ ((_g = state.emitSignatures) !== null && _g !== void 0 ? _g : (state.emitSignatures = new ts.Map())).set(filePath, emitSignature);
101005
+ state.hasChangedEmitSignature = true;
101006
+ state.latestChangedDtsFile = fileName;
100954
101007
  }
100955
101008
  }
100956
101009
  else if (state.compilerOptions.composite) {
100957
101010
  var newSignature = computeSignature(text, computeHash, data);
100958
- if (newSignature !== state.outSignature) {
100959
- state.outSignature = newSignature;
100960
- state.hasChangedEmitSignature = true;
100961
- }
101011
+ if (newSignature === state.outSignature)
101012
+ return;
101013
+ state.outSignature = newSignature;
101014
+ state.hasChangedEmitSignature = true;
101015
+ state.latestChangedDtsFile = fileName;
100962
101016
  }
100963
101017
  }
100964
101018
  if (writeFile)
@@ -101079,11 +101133,12 @@ var ts;
101079
101133
  var state;
101080
101134
  var filePaths;
101081
101135
  var filePathsSetList;
101136
+ var latestChangedDtsFile = program.latestChangedDtsFile ? toAbsolutePath(program.latestChangedDtsFile) : undefined;
101082
101137
  if (isProgramBundleEmitBuildInfo(program)) {
101083
101138
  state = {
101084
101139
  fileInfos: new ts.Map(),
101085
101140
  compilerOptions: program.options ? ts.convertToOptionsWithAbsolutePaths(program.options, toAbsolutePath) : {},
101086
- dtsChangeTime: program.dtsChangeTime,
101141
+ latestChangedDtsFile: latestChangedDtsFile,
101087
101142
  outSignature: program.outSignature,
101088
101143
  };
101089
101144
  }
@@ -101116,7 +101171,7 @@ var ts;
101116
101171
  affectedFilesPendingEmitKind: program.affectedFilesPendingEmit && ts.arrayToMap(program.affectedFilesPendingEmit, function (value) { return toFilePath(value[0]); }, function (value) { return value[1]; }),
101117
101172
  affectedFilesPendingEmitIndex: program.affectedFilesPendingEmit && 0,
101118
101173
  changedFilesSet: new ts.Set(ts.map(program.changeFileSet, toFilePath)),
101119
- dtsChangeTime: program.dtsChangeTime,
101174
+ latestChangedDtsFile: latestChangedDtsFile,
101120
101175
  emitSignatures: (emitSignatures_1 === null || emitSignatures_1 === void 0 ? void 0 : emitSignatures_1.size) ? emitSignatures_1 : undefined,
101121
101176
  };
101122
101177
  }
@@ -101143,6 +101198,7 @@ var ts;
101143
101198
  getSemanticDiagnosticsOfNextAffectedFile: ts.notImplemented,
101144
101199
  emitBuildInfo: ts.notImplemented,
101145
101200
  close: ts.noop,
101201
+ hasChangedEmitSignature: ts.returnFalse,
101146
101202
  };
101147
101203
  function toPath(path) {
101148
101204
  return ts.toPath(path, buildInfoDirectory, getCanonicalFileName);
@@ -102283,7 +102339,7 @@ var ts;
102283
102339
  importedFileFromNodeModules = importedFileFromNodeModules || isInNodeModules;
102284
102340
  });
102285
102341
  var sortedPaths = [];
102286
- var _loop_34 = function (directory) {
102342
+ var _loop_35 = function (directory) {
102287
102343
  var directoryStart = ts.ensureTrailingDirectorySeparator(directory);
102288
102344
  var pathsInDirectory;
102289
102345
  allFileNames.forEach(function (_a, fileName) {
@@ -102307,7 +102363,7 @@ var ts;
102307
102363
  };
102308
102364
  var out_directory_1;
102309
102365
  for (var directory = ts.getDirectoryPath(importingFileName); allFileNames.size !== 0;) {
102310
- var state_11 = _loop_34(directory);
102366
+ var state_11 = _loop_35(directory);
102311
102367
  directory = out_directory_1;
102312
102368
  if (state_11 === "break")
102313
102369
  break;
@@ -103080,7 +103136,6 @@ var ts;
103080
103136
  readDirectory: ts.maybeBind(host, host.readDirectory),
103081
103137
  disableUseFileVersionAsSignature: host.disableUseFileVersionAsSignature,
103082
103138
  storeFilesChangingSignatureDuringEmit: host.storeFilesChangingSignatureDuringEmit,
103083
- now: ts.maybeBind(host, host.now),
103084
103139
  };
103085
103140
  function writeFile(fileName, text, writeByteOrderMark, onError) {
103086
103141
  try {
@@ -103219,7 +103274,6 @@ var ts;
103219
103274
  host.createHash = ts.maybeBind(system, system.createHash);
103220
103275
  host.disableUseFileVersionAsSignature = system.disableUseFileVersionAsSignature;
103221
103276
  host.storeFilesChangingSignatureDuringEmit = system.storeFilesChangingSignatureDuringEmit;
103222
- host.now = ts.maybeBind(system, system.now);
103223
103277
  ts.setGetSourceFileAsHashVersioned(host, system);
103224
103278
  ts.changeCompilerHostLikeToUseCache(host, function (fileName) { return ts.toPath(fileName, host.getCurrentDirectory(), host.getCanonicalFileName); });
103225
103279
  return host;
@@ -104443,8 +104497,7 @@ var ts;
104443
104497
  };
104444
104498
  }
104445
104499
  var host = state.host, compilerHost = state.compilerHost;
104446
- var resultFlags = BuildResultFlags.DeclarationOutputUnchanged;
104447
- var existingBuildInfo = ((_d = state.buildInfoCache.get(projectPath)) === null || _d === void 0 ? void 0 : _d.buildInfo) || undefined;
104500
+ var resultFlags = ((_d = program.hasChangedEmitSignature) === null || _d === void 0 ? void 0 : _d.call(program)) ? BuildResultFlags.None : BuildResultFlags.DeclarationOutputUnchanged;
104448
104501
  var emitterDiagnostics = ts.createDiagnosticCollection();
104449
104502
  var emittedOutputs = new ts.Map();
104450
104503
  var options = program.getCompilerOptions();
@@ -104452,16 +104505,11 @@ var ts;
104452
104505
  var outputTimeStampMap;
104453
104506
  var now;
104454
104507
  outputFiles.forEach(function (_a) {
104455
- var _b, _c;
104456
104508
  var name = _a.name, text = _a.text, writeByteOrderMark = _a.writeByteOrderMark, buildInfo = _a.buildInfo;
104457
104509
  var path = toPath(state, name);
104458
104510
  emittedOutputs.set(toPath(state, name), name);
104459
- if (buildInfo) {
104460
- setBuildInfo(state, buildInfo, projectPath, options);
104461
- if (((_b = buildInfo.program) === null || _b === void 0 ? void 0 : _b.dtsChangeTime) !== ((_c = existingBuildInfo === null || existingBuildInfo === void 0 ? void 0 : existingBuildInfo.program) === null || _c === void 0 ? void 0 : _c.dtsChangeTime)) {
104462
- resultFlags &= ~BuildResultFlags.DeclarationOutputUnchanged;
104463
- }
104464
- }
104511
+ if (buildInfo)
104512
+ setBuildInfo(state, buildInfo, projectPath, options, resultFlags);
104465
104513
  ts.writeFile(writeFileCallback ? { writeFile: writeFileCallback } : compilerHost, emitterDiagnostics, name, text, writeByteOrderMark);
104466
104514
  if (!isIncremental && state.watch) {
104467
104515
  (outputTimeStampMap || (outputTimeStampMap = getOutputTimeStampMap(state, projectPath))).set(path, now || (now = getCurrentTime(state.host)));
@@ -104475,7 +104523,7 @@ var ts;
104475
104523
  ts.Debug.assert(step === BuildStep.EmitBuildInfo);
104476
104524
  var emitResult = program.emitBuildInfo(function (name, text, writeByteOrderMark, onError, sourceFiles, data) {
104477
104525
  if (data === null || data === void 0 ? void 0 : data.buildInfo)
104478
- setBuildInfo(state, data.buildInfo, projectPath, program.getCompilerOptions());
104526
+ setBuildInfo(state, data.buildInfo, projectPath, program.getCompilerOptions(), BuildResultFlags.DeclarationOutputUnchanged);
104479
104527
  if (writeFileCallback)
104480
104528
  writeFileCallback(name, text, writeByteOrderMark, onError, sourceFiles, data);
104481
104529
  else
@@ -104507,7 +104555,6 @@ var ts;
104507
104555
  state.diagnostics.delete(projectPath);
104508
104556
  state.projectStatus.set(projectPath, {
104509
104557
  type: ts.UpToDateStatusType.UpToDate,
104510
- newestDeclarationFileContentChangedTime: getDtsChangeTime(state, config.options, projectPath),
104511
104558
  oldestOutputFileName: oldestOutputFileName
104512
104559
  });
104513
104560
  afterProgramDone(state, program, config);
@@ -104547,10 +104594,10 @@ var ts;
104547
104594
  var name = _a.name, text = _a.text, writeByteOrderMark = _a.writeByteOrderMark, buildInfo = _a.buildInfo;
104548
104595
  emittedOutputs.set(toPath(state, name), name);
104549
104596
  if (buildInfo) {
104550
- setBuildInfo(state, buildInfo, projectPath, config.options);
104551
- if (((_b = buildInfo.program) === null || _b === void 0 ? void 0 : _b.dtsChangeTime) !== ((_c = existingBuildInfo.program) === null || _c === void 0 ? void 0 : _c.dtsChangeTime)) {
104597
+ if (((_b = buildInfo.program) === null || _b === void 0 ? void 0 : _b.outSignature) !== ((_c = existingBuildInfo.program) === null || _c === void 0 ? void 0 : _c.outSignature)) {
104552
104598
  resultFlags &= ~BuildResultFlags.DeclarationOutputUnchanged;
104553
104599
  }
104600
+ setBuildInfo(state, buildInfo, projectPath, config.options, resultFlags);
104554
104601
  }
104555
104602
  ts.writeFile(writeFileCallback ? { writeFile: writeFileCallback } : compilerHost, emitterDiagnostics, name, text, writeByteOrderMark);
104556
104603
  });
@@ -104799,15 +104846,23 @@ var ts;
104799
104846
  state.outputTimeStamps.set(resolvedConfigFilePath, result = new ts.Map());
104800
104847
  return result;
104801
104848
  }
104802
- function setBuildInfo(state, buildInfo, resolvedConfigPath, options) {
104849
+ function setBuildInfo(state, buildInfo, resolvedConfigPath, options, resultFlags) {
104803
104850
  var buildInfoPath = ts.getTsBuildInfoEmitOutputFilePath(options);
104804
104851
  var existing = getBuildInfoCacheEntry(state, buildInfoPath, resolvedConfigPath);
104852
+ var modifiedTime = getCurrentTime(state.host);
104805
104853
  if (existing) {
104806
104854
  existing.buildInfo = buildInfo;
104807
- existing.modifiedTime = getCurrentTime(state.host);
104855
+ existing.modifiedTime = modifiedTime;
104856
+ if (!(resultFlags & BuildResultFlags.DeclarationOutputUnchanged))
104857
+ existing.latestChangedDtsTime = modifiedTime;
104808
104858
  }
104809
104859
  else {
104810
- state.buildInfoCache.set(resolvedConfigPath, { path: toPath(state, buildInfoPath), buildInfo: buildInfo, modifiedTime: getCurrentTime(state.host) });
104860
+ state.buildInfoCache.set(resolvedConfigPath, {
104861
+ path: toPath(state, buildInfoPath),
104862
+ buildInfo: buildInfo,
104863
+ modifiedTime: modifiedTime,
104864
+ latestChangedDtsTime: resultFlags & BuildResultFlags.DeclarationOutputUnchanged ? undefined : modifiedTime,
104865
+ });
104811
104866
  }
104812
104867
  }
104813
104868
  function getBuildInfoCacheEntry(state, buildInfoPath, resolvedConfigPath) {
@@ -104838,7 +104893,7 @@ var ts;
104838
104893
  }
104839
104894
  }
104840
104895
  function getUpToDateStatusWorker(state, project, resolvedPath) {
104841
- var _a, _b, _c;
104896
+ var _a, _b;
104842
104897
  if (!project.fileNames.length && !ts.canJsonReportNoInputFiles(project.raw)) {
104843
104898
  return {
104844
104899
  type: ts.UpToDateStatusType.ContainerOnly
@@ -104848,8 +104903,8 @@ var ts;
104848
104903
  var force = !!state.options.force;
104849
104904
  if (project.projectReferences) {
104850
104905
  state.projectStatus.set(resolvedPath, { type: ts.UpToDateStatusType.ComputingUpstream });
104851
- for (var _i = 0, _d = project.projectReferences; _i < _d.length; _i++) {
104852
- var ref = _d[_i];
104906
+ for (var _i = 0, _c = project.projectReferences; _i < _c.length; _i++) {
104907
+ var ref = _c[_i];
104853
104908
  var resolvedRef = ts.resolveProjectReferencePath(ref);
104854
104909
  var resolvedRefPath = toResolvedConfigFilePath(state, resolvedRef);
104855
104910
  var resolvedConfig = parseConfigFile(state, resolvedRef, resolvedRefPath);
@@ -104885,7 +104940,6 @@ var ts;
104885
104940
  var buildInfoTime;
104886
104941
  var buildInfoProgram;
104887
104942
  var buildInfoVersionMap;
104888
- var newestDeclarationFileContentChangedTime;
104889
104943
  if (buildInfoPath) {
104890
104944
  var buildInfoCacheEntry_1 = getBuildInfoCacheEntry(state, buildInfoPath, resolvedPath);
104891
104945
  buildInfoTime = (buildInfoCacheEntry_1 === null || buildInfoCacheEntry_1 === void 0 ? void 0 : buildInfoCacheEntry_1.modifiedTime) || ts.getModifiedTime(host, buildInfoPath);
@@ -104921,13 +104975,12 @@ var ts;
104921
104975
  }
104922
104976
  oldestOutputFileTime = buildInfoTime;
104923
104977
  oldestOutputFileName = buildInfoPath;
104924
- newestDeclarationFileContentChangedTime = ((_c = buildInfo.program) === null || _c === void 0 ? void 0 : _c.dtsChangeTime) ? new Date(buildInfo.program.dtsChangeTime) : undefined;
104925
104978
  }
104926
104979
  var newestInputFileName = undefined;
104927
104980
  var newestInputFileTime = minimumDate;
104928
104981
  var pseudoInputUpToDate = false;
104929
- for (var _e = 0, _f = project.fileNames; _e < _f.length; _e++) {
104930
- var inputFile = _f[_e];
104982
+ for (var _d = 0, _e = project.fileNames; _d < _e.length; _d++) {
104983
+ var inputFile = _e[_d];
104931
104984
  var inputTime = getModifiedTime(state, inputFile);
104932
104985
  if (inputTime === ts.missingFileModifiedTime) {
104933
104986
  return {
@@ -104963,8 +105016,8 @@ var ts;
104963
105016
  if (!buildInfoPath) {
104964
105017
  var outputs = ts.getAllProjectOutputs(project, !host.useCaseSensitiveFileNames());
104965
105018
  var outputTimeStampMap = getOutputTimeStampMap(state, resolvedPath);
104966
- for (var _g = 0, outputs_1 = outputs; _g < outputs_1.length; _g++) {
104967
- var output = outputs_1[_g];
105019
+ for (var _f = 0, outputs_1 = outputs; _f < outputs_1.length; _f++) {
105020
+ var output = outputs_1[_f];
104968
105021
  var path = toPath(state, output);
104969
105022
  var outputTime = outputTimeStampMap === null || outputTimeStampMap === void 0 ? void 0 : outputTimeStampMap.get(path);
104970
105023
  if (!outputTime) {
@@ -104997,8 +105050,8 @@ var ts;
104997
105050
  var usesPrepend = false;
104998
105051
  var upstreamChangedProject;
104999
105052
  if (referenceStatuses) {
105000
- for (var _h = 0, referenceStatuses_1 = referenceStatuses; _h < referenceStatuses_1.length; _h++) {
105001
- var _j = referenceStatuses_1[_h], ref = _j.ref, refStatus = _j.refStatus, resolvedConfig = _j.resolvedConfig, resolvedRefPath = _j.resolvedRefPath;
105053
+ for (var _g = 0, referenceStatuses_1 = referenceStatuses; _g < referenceStatuses_1.length; _g++) {
105054
+ var _h = referenceStatuses_1[_g], ref = _h.ref, refStatus = _h.refStatus, resolvedConfig = _h.resolvedConfig, resolvedRefPath = _h.resolvedRefPath;
105002
105055
  usesPrepend = usesPrepend || !!(ref.prepend);
105003
105056
  if (refStatus.newestInputFileTime && refStatus.newestInputFileTime <= oldestOutputFileTime) {
105004
105057
  continue;
@@ -105010,7 +105063,8 @@ var ts;
105010
105063
  newerProjectName: ref.path
105011
105064
  };
105012
105065
  }
105013
- if (refStatus.newestDeclarationFileContentChangedTime && refStatus.newestDeclarationFileContentChangedTime <= oldestOutputFileTime) {
105066
+ var newestDeclarationFileContentChangedTime = getLatestChangedDtsTime(state, resolvedConfig.options, resolvedRefPath);
105067
+ if (newestDeclarationFileContentChangedTime && newestDeclarationFileContentChangedTime <= oldestOutputFileTime) {
105014
105068
  pseudoUpToDate = true;
105015
105069
  upstreamChangedProject = ref.path;
105016
105070
  continue;
@@ -105048,7 +105102,6 @@ var ts;
105048
105102
  pseudoInputUpToDate ?
105049
105103
  ts.UpToDateStatusType.UpToDateWithInputFileText :
105050
105104
  ts.UpToDateStatusType.UpToDate,
105051
- newestDeclarationFileContentChangedTime: newestDeclarationFileContentChangedTime,
105052
105105
  newestInputFileTime: newestInputFileTime,
105053
105106
  newestInputFileName: newestInputFileName,
105054
105107
  oldestOutputFileName: oldestOutputFileName
@@ -105127,13 +105180,17 @@ var ts;
105127
105180
  outputTimeStampMap.delete(key);
105128
105181
  });
105129
105182
  }
105130
- function getDtsChangeTime(state, options, resolvedConfigPath) {
105131
- var _a;
105183
+ function getLatestChangedDtsTime(state, options, resolvedConfigPath) {
105132
105184
  if (!options.composite)
105133
105185
  return undefined;
105134
- var buildInfoPath = ts.getTsBuildInfoEmitOutputFilePath(options);
105135
- var buildInfo = getBuildInfo(state, buildInfoPath, resolvedConfigPath, undefined);
105136
- return ((_a = buildInfo === null || buildInfo === void 0 ? void 0 : buildInfo.program) === null || _a === void 0 ? void 0 : _a.dtsChangeTime) ? new Date(buildInfo.program.dtsChangeTime) : undefined;
105186
+ var entry = ts.Debug.checkDefined(state.buildInfoCache.get(resolvedConfigPath));
105187
+ if (entry.latestChangedDtsTime !== undefined)
105188
+ return entry.latestChangedDtsTime || undefined;
105189
+ var latestChangedDtsTime = entry.buildInfo && entry.buildInfo.program && entry.buildInfo.program.latestChangedDtsFile ?
105190
+ state.host.getModifiedTime(ts.getNormalizedAbsolutePath(entry.buildInfo.program.latestChangedDtsFile, ts.getDirectoryPath(entry.path))) :
105191
+ undefined;
105192
+ entry.latestChangedDtsTime = latestChangedDtsTime || false;
105193
+ return latestChangedDtsTime;
105137
105194
  }
105138
105195
  function updateOutputTimestamps(state, proj, resolvedPath) {
105139
105196
  if (state.options.dry) {
@@ -105142,7 +105199,6 @@ var ts;
105142
105199
  updateOutputTimestampsWorker(state, proj, resolvedPath, ts.Diagnostics.Updating_output_timestamps_of_project_0);
105143
105200
  state.projectStatus.set(resolvedPath, {
105144
105201
  type: ts.UpToDateStatusType.UpToDate,
105145
- newestDeclarationFileContentChangedTime: getDtsChangeTime(state, proj.options, resolvedPath),
105146
105202
  oldestOutputFileName: ts.getFirstProjectOutput(proj, !state.host.useCaseSensitiveFileNames())
105147
105203
  });
105148
105204
  }