typescript 4.7.0-dev.20220223 → 4.7.0-dev.20220226

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/tsserver.js CHANGED
@@ -100,7 +100,7 @@ var ts;
100
100
  // The following is baselined as a literal template type without intervention
101
101
  /** The version of the TypeScript compiler release */
102
102
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
103
- ts.version = ts.versionMajorMinor + ".0-dev.20220223";
103
+ ts.version = ts.versionMajorMinor + ".0-dev.20220226";
104
104
  /* @internal */
105
105
  var Comparison;
106
106
  (function (Comparison) {
@@ -27190,6 +27190,19 @@ var ts;
27190
27190
  return node;
27191
27191
  }
27192
27192
  ts.ignoreSourceNewlines = ignoreSourceNewlines;
27193
+ /* @internal */
27194
+ function setTypeNode(node, type) {
27195
+ var emitNode = getOrCreateEmitNode(node);
27196
+ emitNode.typeNode = type;
27197
+ return node;
27198
+ }
27199
+ ts.setTypeNode = setTypeNode;
27200
+ /* @internal */
27201
+ function getTypeNode(node) {
27202
+ var _a;
27203
+ return (_a = node.emitNode) === null || _a === void 0 ? void 0 : _a.typeNode;
27204
+ }
27205
+ ts.getTypeNode = getTypeNode;
27193
27206
  })(ts || (ts = {}));
27194
27207
  /* @internal */
27195
27208
  var ts;
@@ -33460,10 +33473,10 @@ var ts;
33460
33473
  setDecoratorContext(/*val*/ false);
33461
33474
  }
33462
33475
  var pos = getNodePos();
33463
- var expr = parseAssignmentExpressionOrHigher();
33476
+ var expr = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
33464
33477
  var operatorToken;
33465
33478
  while ((operatorToken = parseOptionalToken(27 /* CommaToken */))) {
33466
- expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher(), pos);
33479
+ expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false), pos);
33467
33480
  }
33468
33481
  if (saveDecoratorContext) {
33469
33482
  setDecoratorContext(/*val*/ true);
@@ -33471,9 +33484,9 @@ var ts;
33471
33484
  return expr;
33472
33485
  }
33473
33486
  function parseInitializer() {
33474
- return parseOptional(63 /* EqualsToken */) ? parseAssignmentExpressionOrHigher() : undefined;
33487
+ return parseOptional(63 /* EqualsToken */) ? parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false) : undefined;
33475
33488
  }
33476
- function parseAssignmentExpressionOrHigher() {
33489
+ function parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction) {
33477
33490
  // AssignmentExpression[in,yield]:
33478
33491
  // 1) ConditionalExpression[?in,?yield]
33479
33492
  // 2) LeftHandSideExpression = AssignmentExpression[?in,?yield]
@@ -33499,7 +33512,7 @@ var ts;
33499
33512
  // If we do successfully parse arrow-function, we must *not* recurse for productions 1, 2 or 3. An ArrowFunction is
33500
33513
  // not a LeftHandSideExpression, nor does it start a ConditionalExpression. So we are done
33501
33514
  // with AssignmentExpression if we see one.
33502
- var arrowExpression = tryParseParenthesizedArrowFunctionExpression() || tryParseAsyncSimpleArrowFunctionExpression();
33515
+ var arrowExpression = tryParseParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) || tryParseAsyncSimpleArrowFunctionExpression(disallowReturnTypeInArrowFunction);
33503
33516
  if (arrowExpression) {
33504
33517
  return arrowExpression;
33505
33518
  }
@@ -33518,7 +33531,7 @@ var ts;
33518
33531
  // parameter ('x => ...') above. We handle it here by checking if the parsed expression was a single
33519
33532
  // identifier and the current token is an arrow.
33520
33533
  if (expr.kind === 79 /* Identifier */ && token() === 38 /* EqualsGreaterThanToken */) {
33521
- return parseSimpleArrowFunctionExpression(pos, expr, /*asyncModifier*/ undefined);
33534
+ return parseSimpleArrowFunctionExpression(pos, expr, disallowReturnTypeInArrowFunction, /*asyncModifier*/ undefined);
33522
33535
  }
33523
33536
  // Now see if we might be in cases '2' or '3'.
33524
33537
  // If the expression was a LHS expression, and we have an assignment operator, then
@@ -33527,7 +33540,7 @@ var ts;
33527
33540
  // Note: we call reScanGreaterToken so that we get an appropriately merged token
33528
33541
  // for cases like `> > =` becoming `>>=`
33529
33542
  if (ts.isLeftHandSideExpression(expr) && ts.isAssignmentOperator(reScanGreaterToken())) {
33530
- return makeBinaryExpression(expr, parseTokenNode(), parseAssignmentExpressionOrHigher(), pos);
33543
+ return makeBinaryExpression(expr, parseTokenNode(), parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction), pos);
33531
33544
  }
33532
33545
  // It wasn't an assignment or a lambda. This is a conditional expression:
33533
33546
  return parseConditionalExpressionRest(expr, pos);
@@ -33570,7 +33583,7 @@ var ts;
33570
33583
  nextToken();
33571
33584
  if (!scanner.hasPrecedingLineBreak() &&
33572
33585
  (token() === 41 /* AsteriskToken */ || isStartOfExpression())) {
33573
- return finishNode(factory.createYieldExpression(parseOptionalToken(41 /* AsteriskToken */), parseAssignmentExpressionOrHigher()), pos);
33586
+ return finishNode(factory.createYieldExpression(parseOptionalToken(41 /* AsteriskToken */), parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false)), pos);
33574
33587
  }
33575
33588
  else {
33576
33589
  // if the next token is not on the same line as yield. or we don't have an '*' or
@@ -33578,7 +33591,7 @@ var ts;
33578
33591
  return finishNode(factory.createYieldExpression(/*asteriskToken*/ undefined, /*expression*/ undefined), pos);
33579
33592
  }
33580
33593
  }
33581
- function parseSimpleArrowFunctionExpression(pos, identifier, asyncModifier) {
33594
+ function parseSimpleArrowFunctionExpression(pos, identifier, disallowReturnTypeInArrowFunction, asyncModifier) {
33582
33595
  ts.Debug.assert(token() === 38 /* EqualsGreaterThanToken */, "parseSimpleArrowFunctionExpression should only have been called if we had a =>");
33583
33596
  var parameter = factory.createParameterDeclaration(
33584
33597
  /*decorators*/ undefined,
@@ -33590,11 +33603,11 @@ var ts;
33590
33603
  finishNode(parameter, identifier.pos);
33591
33604
  var parameters = createNodeArray([parameter], parameter.pos, parameter.end);
33592
33605
  var equalsGreaterThanToken = parseExpectedToken(38 /* EqualsGreaterThanToken */);
33593
- var body = parseArrowFunctionExpressionBody(/*isAsync*/ !!asyncModifier);
33606
+ var body = parseArrowFunctionExpressionBody(/*isAsync*/ !!asyncModifier, disallowReturnTypeInArrowFunction);
33594
33607
  var node = factory.createArrowFunction(asyncModifier, /*typeParameters*/ undefined, parameters, /*type*/ undefined, equalsGreaterThanToken, body);
33595
33608
  return addJSDocComment(finishNode(node, pos));
33596
33609
  }
33597
- function tryParseParenthesizedArrowFunctionExpression() {
33610
+ function tryParseParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
33598
33611
  var triState = isParenthesizedArrowFunctionExpression();
33599
33612
  if (triState === 0 /* False */) {
33600
33613
  // It's definitely not a parenthesized arrow function expression.
@@ -33605,8 +33618,8 @@ var ts;
33605
33618
  // it out, but don't allow any ambiguity, and return 'undefined' if this could be an
33606
33619
  // expression instead.
33607
33620
  return triState === 1 /* True */ ?
33608
- parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ true) :
33609
- tryParse(parsePossibleParenthesizedArrowFunctionExpression);
33621
+ parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ true, /*disallowReturnTypeInArrowFunction*/ false) :
33622
+ tryParse(function () { return parsePossibleParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction); });
33610
33623
  }
33611
33624
  // True -> We definitely expect a parenthesized arrow function here.
33612
33625
  // False -> There *cannot* be a parenthesized arrow function here.
@@ -33736,25 +33749,25 @@ var ts;
33736
33749
  return 2 /* Unknown */;
33737
33750
  }
33738
33751
  }
33739
- function parsePossibleParenthesizedArrowFunctionExpression() {
33752
+ function parsePossibleParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
33740
33753
  var tokenPos = scanner.getTokenPos();
33741
33754
  if (notParenthesizedArrow === null || notParenthesizedArrow === void 0 ? void 0 : notParenthesizedArrow.has(tokenPos)) {
33742
33755
  return undefined;
33743
33756
  }
33744
- var result = parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ false);
33757
+ var result = parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ false, disallowReturnTypeInArrowFunction);
33745
33758
  if (!result) {
33746
33759
  (notParenthesizedArrow || (notParenthesizedArrow = new ts.Set())).add(tokenPos);
33747
33760
  }
33748
33761
  return result;
33749
33762
  }
33750
- function tryParseAsyncSimpleArrowFunctionExpression() {
33763
+ function tryParseAsyncSimpleArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
33751
33764
  // We do a check here so that we won't be doing unnecessarily call to "lookAhead"
33752
33765
  if (token() === 131 /* AsyncKeyword */) {
33753
33766
  if (lookAhead(isUnParenthesizedAsyncArrowFunctionWorker) === 1 /* True */) {
33754
33767
  var pos = getNodePos();
33755
33768
  var asyncModifier = parseModifiersForArrowFunction();
33756
33769
  var expr = parseBinaryExpressionOrHigher(0 /* Lowest */);
33757
- return parseSimpleArrowFunctionExpression(pos, expr, asyncModifier);
33770
+ return parseSimpleArrowFunctionExpression(pos, expr, disallowReturnTypeInArrowFunction, asyncModifier);
33758
33771
  }
33759
33772
  }
33760
33773
  return undefined;
@@ -33778,7 +33791,7 @@ var ts;
33778
33791
  }
33779
33792
  return 0 /* False */;
33780
33793
  }
33781
- function parseParenthesizedArrowFunctionExpression(allowAmbiguity) {
33794
+ function parseParenthesizedArrowFunctionExpression(allowAmbiguity, disallowReturnTypeInArrowFunction) {
33782
33795
  var pos = getNodePos();
33783
33796
  var hasJSDoc = hasPrecedingJSDocComment();
33784
33797
  var modifiers = parseModifiersForArrowFunction();
@@ -33804,6 +33817,23 @@ var ts;
33804
33817
  return undefined;
33805
33818
  }
33806
33819
  }
33820
+ // Given:
33821
+ // x ? y => ({ y }) : z => ({ z })
33822
+ // We try to parse the body of the first arrow function by looking at:
33823
+ // ({ y }) : z => ({ z })
33824
+ // This is a valid arrow function with "z" as the return type.
33825
+ //
33826
+ // But, if we're in the true side of a conditional expression, this colon
33827
+ // terminates the expression, so we cannot allow a return type if we aren't
33828
+ // certain whether or not the preceding text was parsed as a parameter list.
33829
+ //
33830
+ // For example,
33831
+ // a() ? (b: number, c?: string): void => d() : e
33832
+ // is determined by isParenthesizedArrowFunctionExpression to unambiguously
33833
+ // be an arrow expression, so we allow a return type.
33834
+ if (disallowReturnTypeInArrowFunction && token() === 58 /* ColonToken */) {
33835
+ return undefined;
33836
+ }
33807
33837
  var type = parseReturnType(58 /* ColonToken */, /*isType*/ false);
33808
33838
  if (type && !allowAmbiguity && typeHasArrowFunctionBlockingParseError(type)) {
33809
33839
  return undefined;
@@ -33832,12 +33862,12 @@ var ts;
33832
33862
  var lastToken = token();
33833
33863
  var equalsGreaterThanToken = parseExpectedToken(38 /* EqualsGreaterThanToken */);
33834
33864
  var body = (lastToken === 38 /* EqualsGreaterThanToken */ || lastToken === 18 /* OpenBraceToken */)
33835
- ? parseArrowFunctionExpressionBody(ts.some(modifiers, ts.isAsyncModifier))
33865
+ ? parseArrowFunctionExpressionBody(ts.some(modifiers, ts.isAsyncModifier), disallowReturnTypeInArrowFunction)
33836
33866
  : parseIdentifier();
33837
33867
  var node = factory.createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body);
33838
33868
  return withJSDoc(finishNode(node, pos), hasJSDoc);
33839
33869
  }
33840
- function parseArrowFunctionExpressionBody(isAsync) {
33870
+ function parseArrowFunctionExpressionBody(isAsync, disallowReturnTypeInArrowFunction) {
33841
33871
  if (token() === 18 /* OpenBraceToken */) {
33842
33872
  return parseFunctionBlock(isAsync ? 2 /* Await */ : 0 /* None */);
33843
33873
  }
@@ -33865,8 +33895,8 @@ var ts;
33865
33895
  var savedTopLevel = topLevel;
33866
33896
  topLevel = false;
33867
33897
  var node = isAsync
33868
- ? doInAwaitContext(parseAssignmentExpressionOrHigher)
33869
- : doOutsideOfAwaitContext(parseAssignmentExpressionOrHigher);
33898
+ ? doInAwaitContext(function () { return parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction); })
33899
+ : doOutsideOfAwaitContext(function () { return parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction); });
33870
33900
  topLevel = savedTopLevel;
33871
33901
  return node;
33872
33902
  }
@@ -33879,8 +33909,8 @@ var ts;
33879
33909
  // Note: we explicitly 'allowIn' in the whenTrue part of the condition expression, and
33880
33910
  // we do not that for the 'whenFalse' part.
33881
33911
  var colonToken;
33882
- return finishNode(factory.createConditionalExpression(leftOperand, questionToken, doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher), colonToken = parseExpectedToken(58 /* ColonToken */), ts.nodeIsPresent(colonToken)
33883
- ? parseAssignmentExpressionOrHigher()
33912
+ return finishNode(factory.createConditionalExpression(leftOperand, questionToken, doOutsideOfContext(disallowInAndDecoratorContext, function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ true); }), colonToken = parseExpectedToken(58 /* ColonToken */), ts.nodeIsPresent(colonToken)
33913
+ ? parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ true)
33884
33914
  : createMissingNode(79 /* Identifier */, /*reportAtCurrentPosition*/ false, ts.Diagnostics._0_expected, ts.tokenToString(58 /* ColonToken */))), pos);
33885
33915
  }
33886
33916
  function parseBinaryExpressionOrHigher(precedence) {
@@ -34796,13 +34826,13 @@ var ts;
34796
34826
  function parseSpreadElement() {
34797
34827
  var pos = getNodePos();
34798
34828
  parseExpected(25 /* DotDotDotToken */);
34799
- var expression = parseAssignmentExpressionOrHigher();
34829
+ var expression = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
34800
34830
  return finishNode(factory.createSpreadElement(expression), pos);
34801
34831
  }
34802
34832
  function parseArgumentOrArrayLiteralElement() {
34803
34833
  return token() === 25 /* DotDotDotToken */ ? parseSpreadElement() :
34804
34834
  token() === 27 /* CommaToken */ ? finishNode(factory.createOmittedExpression(), getNodePos()) :
34805
- parseAssignmentExpressionOrHigher();
34835
+ parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
34806
34836
  }
34807
34837
  function parseArgumentExpression() {
34808
34838
  return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement);
@@ -34819,7 +34849,7 @@ var ts;
34819
34849
  var pos = getNodePos();
34820
34850
  var hasJSDoc = hasPrecedingJSDocComment();
34821
34851
  if (parseOptionalToken(25 /* DotDotDotToken */)) {
34822
- var expression = parseAssignmentExpressionOrHigher();
34852
+ var expression = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
34823
34853
  return withJSDoc(finishNode(factory.createSpreadAssignment(expression), pos), hasJSDoc);
34824
34854
  }
34825
34855
  var decorators = parseDecorators();
@@ -34848,7 +34878,7 @@ var ts;
34848
34878
  var isShorthandPropertyAssignment = tokenIsIdentifier && (token() !== 58 /* ColonToken */);
34849
34879
  if (isShorthandPropertyAssignment) {
34850
34880
  var equalsToken = parseOptionalToken(63 /* EqualsToken */);
34851
- var objectAssignmentInitializer = equalsToken ? allowInAnd(parseAssignmentExpressionOrHigher) : undefined;
34881
+ var objectAssignmentInitializer = equalsToken ? allowInAnd(function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false); }) : undefined;
34852
34882
  node = factory.createShorthandPropertyAssignment(name, objectAssignmentInitializer);
34853
34883
  // Save equals token for error reporting.
34854
34884
  // TODO(rbuckton): Consider manufacturing this when we need to report an error as it is otherwise not useful.
@@ -34856,7 +34886,7 @@ var ts;
34856
34886
  }
34857
34887
  else {
34858
34888
  parseExpected(58 /* ColonToken */);
34859
- var initializer = allowInAnd(parseAssignmentExpressionOrHigher);
34889
+ var initializer = allowInAnd(function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false); });
34860
34890
  node = factory.createPropertyAssignment(name, initializer);
34861
34891
  }
34862
34892
  // Decorators, Modifiers, questionToken, and exclamationToken are not supported by property assignments and are reported in the grammar checker
@@ -35036,7 +35066,7 @@ var ts;
35036
35066
  }
35037
35067
  var node;
35038
35068
  if (awaitToken ? parseExpected(159 /* OfKeyword */) : parseOptional(159 /* OfKeyword */)) {
35039
- var expression = allowInAnd(parseAssignmentExpressionOrHigher);
35069
+ var expression = allowInAnd(function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false); });
35040
35070
  parseExpected(21 /* CloseParenToken */);
35041
35071
  node = factory.createForOfStatement(awaitToken, initializer, expression, parseStatement());
35042
35072
  }
@@ -36203,7 +36233,7 @@ var ts;
36203
36233
  var pos = getNodePos();
36204
36234
  var name = ts.tokenIsIdentifierOrKeyword(token()) ? parseIdentifierName() : parseLiteralLikeNode(10 /* StringLiteral */);
36205
36235
  parseExpected(58 /* ColonToken */);
36206
- var value = parseAssignmentExpressionOrHigher();
36236
+ var value = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
36207
36237
  return finishNode(factory.createAssertEntry(name, value), pos);
36208
36238
  }
36209
36239
  function parseAssertClause() {
@@ -36440,7 +36470,7 @@ var ts;
36440
36470
  else {
36441
36471
  parseExpected(88 /* DefaultKeyword */);
36442
36472
  }
36443
- var expression = parseAssignmentExpressionOrHigher();
36473
+ var expression = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
36444
36474
  parseSemicolon();
36445
36475
  setAwaitContext(savedAwaitContext);
36446
36476
  var node = factory.createExportAssignment(decorators, modifiers, isExportEquals, expression);
@@ -91620,9 +91650,13 @@ var ts;
91620
91650
  }
91621
91651
  }
91622
91652
  function visitVariableDeclaration(node) {
91623
- return factory.updateVariableDeclaration(node, ts.visitNode(node.name, visitor, ts.isBindingName),
91653
+ var updated = factory.updateVariableDeclaration(node, ts.visitNode(node.name, visitor, ts.isBindingName),
91624
91654
  /*exclamationToken*/ undefined,
91625
91655
  /*type*/ undefined, ts.visitNode(node.initializer, visitor, ts.isExpression));
91656
+ if (node.type) {
91657
+ ts.setTypeNode(updated.name, node.type);
91658
+ }
91659
+ return updated;
91626
91660
  }
91627
91661
  function visitParenthesizedExpression(node) {
91628
91662
  var innerExpression = ts.skipOuterExpressions(node.expression, ~6 /* Assertions */);
@@ -110954,10 +110988,11 @@ var ts;
110954
110988
  // Declarations
110955
110989
  //
110956
110990
  function emitVariableDeclaration(node) {
110991
+ var _a, _b, _c, _d, _e;
110957
110992
  emit(node.name);
110958
110993
  emit(node.exclamationToken);
110959
110994
  emitTypeAnnotation(node.type);
110960
- emitInitializer(node.initializer, node.type ? node.type.end : node.name.end, node, parenthesizer.parenthesizeExpressionForDisallowedComma);
110995
+ emitInitializer(node.initializer, (_e = (_b = (_a = node.type) === null || _a === void 0 ? void 0 : _a.end) !== null && _b !== void 0 ? _b : (_d = (_c = node.name.emitNode) === null || _c === void 0 ? void 0 : _c.typeNode) === null || _d === void 0 ? void 0 : _d.end) !== null && _e !== void 0 ? _e : node.name.end, node, parenthesizer.parenthesizeExpressionForDisallowedComma);
110961
110996
  }
110962
110997
  function emitVariableDeclarationList(node) {
110963
110998
  writeKeyword(ts.isLet(node) ? "let" : ts.isVarConst(node) ? "const" : "var");
@@ -112939,6 +112974,10 @@ var ts;
112939
112974
  commentsDisabled = false;
112940
112975
  }
112941
112976
  emitTrailingCommentsOfNode(node, emitFlags, commentRange.pos, commentRange.end, savedContainerPos, savedContainerEnd, savedDeclarationListContainerEnd);
112977
+ var typeNode = ts.getTypeNode(node);
112978
+ if (typeNode) {
112979
+ emitTrailingCommentsOfNode(node, emitFlags, typeNode.pos, typeNode.end, savedContainerPos, savedContainerEnd, savedDeclarationListContainerEnd);
112980
+ }
112942
112981
  }
112943
112982
  function emitLeadingCommentsOfNode(node, emitFlags, pos, end) {
112944
112983
  enterComment();
@@ -134888,6 +134927,9 @@ var ts;
134888
134927
  // *don’t* include readonly member modifiers.
134889
134928
  return getAllReferencesForKeyword(sourceFiles, node.kind, cancellationToken, node.kind === 144 /* ReadonlyKeyword */ ? isReadonlyTypeOperator : undefined);
134890
134929
  }
134930
+ if (ts.isImportMeta(node.parent) && node.parent.name === node) {
134931
+ return getAllReferencesForImportMeta(sourceFiles, cancellationToken);
134932
+ }
134891
134933
  if (ts.isStaticModifier(node) && ts.isClassStaticBlockDeclaration(node.parent)) {
134892
134934
  return [{ definition: { type: 2 /* Keyword */, node: node }, references: [nodeEntry(node)] }];
134893
134935
  }
@@ -135369,6 +135411,18 @@ var ts;
135369
135411
  return false;
135370
135412
  }
135371
135413
  }
135414
+ function getAllReferencesForImportMeta(sourceFiles, cancellationToken) {
135415
+ var references = ts.flatMap(sourceFiles, function (sourceFile) {
135416
+ cancellationToken.throwIfCancellationRequested();
135417
+ return ts.mapDefined(getPossibleSymbolReferenceNodes(sourceFile, "meta", sourceFile), function (node) {
135418
+ var parent = node.parent;
135419
+ if (ts.isImportMeta(parent)) {
135420
+ return nodeEntry(parent);
135421
+ }
135422
+ });
135423
+ });
135424
+ return references.length ? [{ definition: { type: 2 /* Keyword */, node: references[0].node }, references: references }] : undefined;
135425
+ }
135372
135426
  function getAllReferencesForKeyword(sourceFiles, keywordKind, cancellationToken, filter) {
135373
135427
  var references = ts.flatMap(sourceFiles, function (sourceFile) {
135374
135428
  cancellationToken.throwIfCancellationRequested();
@@ -137081,6 +137135,9 @@ var ts;
137081
137135
  if (node === sourceFile) {
137082
137136
  return undefined;
137083
137137
  }
137138
+ if (ts.isImportMeta(node.parent) && node.parent.name === node) {
137139
+ return definitionFromType(typeChecker.getTypeAtLocation(node.parent), typeChecker, node.parent);
137140
+ }
137084
137141
  var symbol = getSymbol(node, typeChecker);
137085
137142
  if (!symbol)
137086
137143
  return undefined;
@@ -162209,6 +162266,9 @@ var ts;
162209
162266
  if (ts.isNamedTupleMember(node.parent) && node.pos === node.parent.pos) {
162210
162267
  return node.parent;
162211
162268
  }
162269
+ if (ts.isImportMeta(node.parent) && node.parent.name === node) {
162270
+ return node.parent;
162271
+ }
162212
162272
  return node;
162213
162273
  }
162214
162274
  function shouldGetType(sourceFile, node, position) {
@@ -162224,6 +162284,8 @@ var ts;
162224
162284
  case 106 /* SuperKeyword */:
162225
162285
  case 196 /* NamedTupleMember */:
162226
162286
  return true;
162287
+ case 230 /* MetaProperty */:
162288
+ return ts.isImportMeta(node);
162227
162289
  default:
162228
162290
  return false;
162229
162291
  }
@@ -2015,6 +2015,12 @@ declare namespace ts {
2015
2015
  path: string;
2016
2016
  name?: string;
2017
2017
  }
2018
+ /**
2019
+ * Subset of properties from SourceFile that are used in multiple utility functions
2020
+ */
2021
+ export interface SourceFileLike {
2022
+ readonly text: string;
2023
+ }
2018
2024
  export interface SourceFile extends Declaration {
2019
2025
  readonly kind: SyntaxKind.SourceFile;
2020
2026
  readonly statements: NodeArray<Statement>;