- function parseTypeArgumentsInExpression() {
- if (reScanLessThanToken() !== 29) {
- return undefined;
- }
- nextToken();
- var typeArguments = parseDelimitedList(20, parseType);
- if (!parseExpected(31)) {
- return undefined;
- }
- return typeArguments && canFollowTypeArgumentsInExpression()
- ? typeArguments
- : undefined;
- }
- function canFollowTypeArgumentsInExpression() {
- switch (token()) {
- case 20:
- case 14:
- case 15:
- case 24:
- case 21:
- case 23:
- case 58:
- case 26:
- case 57:
- case 34:
- case 36:
- case 35:
- case 37:
- case 55:
- case 56:
- case 60:
- case 52:
- case 50:
- case 51:
- case 19:
- case 1:
- return true;
- case 27:
- case 18:
- default:
- return false;
- }
- }
- function parsePrimaryExpression() {
- switch (token()) {
- case 8:
- case 9:
- case 10:
- case 14:
- return parseLiteralNode();
- case 104:
- case 102:
- case 100:
- case 106:
- case 91:
- return parseTokenNode();
- case 20:
- return parseParenthesizedExpression();
- case 22:
- return parseArrayLiteralExpression();
- case 18:
- return parseObjectLiteralExpression();
- case 126:
- if (!lookAhead(nextTokenIsFunctionKeywordOnSameLine)) {
- break;
- }
- return parseFunctionExpression();
- case 80:
- return parseClassExpression();
- case 94:
- return parseFunctionExpression();
- case 99:
- return parseNewExpressionOrNewDotTarget();
- case 43:
- case 67:
- if (reScanSlashToken() === 13) {
- return parseLiteralNode();
- }
- break;
- case 15:
- return parseTemplateExpression(false);
- }
- return parseIdentifier(ts.Diagnostics.Expression_expected);
- }
- function parseParenthesizedExpression() {
- var node = createNodeWithJSDoc(200);
- parseExpected(20);
- node.expression = allowInAnd(parseExpression);
- parseExpected(21);
- return finishNode(node);
- }
- function parseSpreadElement() {
- var node = createNode(213);
- parseExpected(25);
- node.expression = parseAssignmentExpressionOrHigher();
- return finishNode(node);
- }
- function parseArgumentOrArrayLiteralElement() {
- return token() === 25 ? parseSpreadElement() :
- token() === 27 ? createNode(215) :
- parseAssignmentExpressionOrHigher();
- }
- function parseArgumentExpression() {
- return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement);
- }
- function parseArrayLiteralExpression() {
- var node = createNode(192);
- parseExpected(22);
- if (scanner.hasPrecedingLineBreak()) {
- node.multiLine = true;
- }
- node.elements = parseDelimitedList(15, parseArgumentOrArrayLiteralElement);
- parseExpected(23);
- return finishNode(node);
- }
- function parseObjectLiteralElement() {
- var node = createNodeWithJSDoc(0);
- if (parseOptionalToken(25)) {
- node.kind = 283;
- node.expression = parseAssignmentExpressionOrHigher();
- return finishNode(node);
- }
- node.decorators = parseDecorators();
- node.modifiers = parseModifiers();
- if (parseContextualModifier(131)) {
- return parseAccessorDeclaration(node, 163);
- }
- if (parseContextualModifier(142)) {
- return parseAccessorDeclaration(node, 164);
- }
- var asteriskToken = parseOptionalToken(41);
- var tokenIsIdentifier = isIdentifier();
- node.name = parsePropertyName();
- node.questionToken = parseOptionalToken(57);
- node.exclamationToken = parseOptionalToken(53);
- if (asteriskToken || token() === 20 || token() === 29) {
- return parseMethodDeclaration(node, asteriskToken);
- }
- var isShorthandPropertyAssignment = tokenIsIdentifier && (token() !== 58);
- if (isShorthandPropertyAssignment) {
- node.kind = 282;
- var equalsToken = parseOptionalToken(62);
- if (equalsToken) {
- node.equalsToken = equalsToken;
- node.objectAssignmentInitializer = allowInAnd(parseAssignmentExpressionOrHigher);
- }
- }
- else {
- node.kind = 281;
- parseExpected(58);
- node.initializer = allowInAnd(parseAssignmentExpressionOrHigher);
- }
- return finishNode(node);
- }
- function parseObjectLiteralExpression() {
- var node = createNode(193);
- var openBracePosition = scanner.getTokenPos();
- parseExpected(18);
- if (scanner.hasPrecedingLineBreak()) {
- node.multiLine = true;
- }
- node.properties = parseDelimitedList(12, parseObjectLiteralElement, true);
- if (!parseExpected(19)) {
- var lastError = ts.lastOrUndefined(parseDiagnostics);
- if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
- ts.addRelatedInfo(lastError, ts.createFileDiagnostic(sourceFile, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
- }
- }
- return finishNode(node);
- }
- function parseFunctionExpression() {
- var saveDecoratorContext = inDecoratorContext();
- if (saveDecoratorContext) {
- setDecoratorContext(false);
- }
- var node = createNodeWithJSDoc(201);
- node.modifiers = parseModifiers();
- parseExpected(94);
- node.asteriskToken = parseOptionalToken(41);
- var isGenerator = node.asteriskToken ? 1 : 0;
- var isAsync = hasModifierOfKind(node, 126) ? 2 : 0;
- node.name =
- isGenerator && isAsync ? doInYieldAndAwaitContext(parseOptionalIdentifier) :
- isGenerator ? doInYieldContext(parseOptionalIdentifier) :
- isAsync ? doInAwaitContext(parseOptionalIdentifier) :
- parseOptionalIdentifier();
- fillSignature(58, isGenerator | isAsync, node);
- node.body = parseFunctionBlock(isGenerator | isAsync);
- if (saveDecoratorContext) {
- setDecoratorContext(true);
- }
- return finishNode(node);
- }
- function parseOptionalIdentifier() {
- return isIdentifier() ? parseIdentifier() : undefined;
- }
- function parseNewExpressionOrNewDotTarget() {
- var fullStart = scanner.getStartPos();
- parseExpected(99);
- if (parseOptional(24)) {
- var node_2 = createNode(219, fullStart);
- node_2.keywordToken = 99;
- node_2.name = parseIdentifierName();
- return finishNode(node_2);
- }
- var expression = parsePrimaryExpression();
- var typeArguments;
- while (true) {
- expression = parseMemberExpressionRest(expression, false);
- typeArguments = tryParse(parseTypeArgumentsInExpression);
- if (isTemplateStartOfTaggedTemplate()) {
- ts.Debug.assert(!!typeArguments, "Expected a type argument list; all plain tagged template starts should be consumed in 'parseMemberExpressionRest'");
- expression = parseTaggedTemplateRest(expression, undefined, typeArguments);
- typeArguments = undefined;
- }
- break;
- }
- var node = createNode(197, fullStart);
- node.expression = expression;
- node.typeArguments = typeArguments;
- if (token() === 20) {
- node.arguments = parseArgumentList();
- }
- else if (node.typeArguments) {
- parseErrorAt(fullStart, scanner.getStartPos(), ts.Diagnostics.A_new_expression_with_type_arguments_must_always_be_followed_by_a_parenthesized_argument_list);
- }
- return finishNode(node);
- }
- function parseBlock(ignoreMissingOpenBrace, diagnosticMessage) {
- var node = createNode(223);
- var openBracePosition = scanner.getTokenPos();
- if (parseExpected(18, diagnosticMessage) || ignoreMissingOpenBrace) {
- if (scanner.hasPrecedingLineBreak()) {
- node.multiLine = true;
- }
- node.statements = parseList(1, parseStatement);
- if (!parseExpected(19)) {
- var lastError = ts.lastOrUndefined(parseDiagnostics);
- if (lastError && lastError.code === ts.Diagnostics._0_expected.code) {
- ts.addRelatedInfo(lastError, ts.createFileDiagnostic(sourceFile, openBracePosition, 1, ts.Diagnostics.The_parser_expected_to_find_a_to_match_the_token_here));
- }
- }
- }
- else {
- node.statements = createMissingList();
- }
- return finishNode(node);
- }
- function parseFunctionBlock(flags, diagnosticMessage) {
- var savedYieldContext = inYieldContext();
- setYieldContext(!!(flags & 1));
- var savedAwaitContext = inAwaitContext();
- setAwaitContext(!!(flags & 2));
- var saveDecoratorContext = inDecoratorContext();
- if (saveDecoratorContext) {
- setDecoratorContext(false);
- }
- var block = parseBlock(!!(flags & 16), diagnosticMessage);
- if (saveDecoratorContext) {
- setDecoratorContext(true);
- }
- setYieldContext(savedYieldContext);
- setAwaitContext(savedAwaitContext);
- return block;
- }
- function parseEmptyStatement() {
- var node = createNode(224);
- parseExpected(26);
- return finishNode(node);
- }
- function parseIfStatement() {
- var node = createNode(227);
- parseExpected(95);
- parseExpected(20);
- node.expression = allowInAnd(parseExpression);
- parseExpected(21);
- node.thenStatement = parseStatement();
- node.elseStatement = parseOptional(87) ? parseStatement() : undefined;
- return finishNode(node);
- }
- function parseDoStatement() {
- var node = createNode(228);
- parseExpected(86);
- node.statement = parseStatement();
- parseExpected(111);
- parseExpected(20);
- node.expression = allowInAnd(parseExpression);
- parseExpected(21);
- parseOptional(26);
- return finishNode(node);
- }
- function parseWhileStatement() {
- var node = createNode(229);
- parseExpected(111);
- parseExpected(20);
- node.expression = allowInAnd(parseExpression);
- parseExpected(21);
- node.statement = parseStatement();
- return finishNode(node);
- }
- function parseForOrForInOrForOfStatement() {
- var pos = getNodePos();
- parseExpected(93);
- var awaitToken = parseOptionalToken(127);
- parseExpected(20);
- var initializer;
- if (token() !== 26) {
- if (token() === 109 || token() === 115 || token() === 81) {
- initializer = parseVariableDeclarationList(true);
- }
- else {
- initializer = disallowInAnd(parseExpression);
- }
- }
- var forOrForInOrForOfStatement;
- if (awaitToken ? parseExpected(152) : parseOptional(152)) {
- var forOfStatement = createNode(232, pos);
- forOfStatement.awaitModifier = awaitToken;
- forOfStatement.initializer = initializer;
- forOfStatement.expression = allowInAnd(parseAssignmentExpressionOrHigher);
- parseExpected(21);
- forOrForInOrForOfStatement = forOfStatement;
- }
- else if (parseOptional(97)) {
- var forInStatement = createNode(231, pos);
- forInStatement.initializer = initializer;
- forInStatement.expression = allowInAnd(parseExpression);
- parseExpected(21);
- forOrForInOrForOfStatement = forInStatement;
- }
- else {
- var forStatement = createNode(230, pos);
- forStatement.initializer = initializer;
- parseExpected(26);
- if (token() !== 26 && token() !== 21) {
- forStatement.condition = allowInAnd(parseExpression);
- }
- parseExpected(26);
- if (token() !== 21) {
- forStatement.incrementor = allowInAnd(parseExpression);
- }
- parseExpected(21);
- forOrForInOrForOfStatement = forStatement;
- }
- forOrForInOrForOfStatement.statement = parseStatement();
- return finishNode(forOrForInOrForOfStatement);
- }
- function parseBreakOrContinueStatement(kind) {
- var node = createNode(kind);
- parseExpected(kind === 234 ? 77 : 82);
- if (!canParseSemicolon()) {
- node.label = parseIdentifier();
- }
- parseSemicolon();
- return finishNode(node);
- }
- function parseReturnStatement() {
- var node = createNode(235);
- parseExpected(101);
- if (!canParseSemicolon()) {
- node.expression = allowInAnd(parseExpression);
- }
- parseSemicolon();
- return finishNode(node);
- }
- function parseWithStatement() {
- var node = createNode(236);
- parseExpected(112);
- parseExpected(20);
- node.expression = allowInAnd(parseExpression);
- parseExpected(21);
- node.statement = doInsideOfContext(16777216, parseStatement);
- return finishNode(node);
- }
- function parseCaseClause() {
- var node = createNode(277);
- parseExpected(78);
- node.expression = allowInAnd(parseExpression);
- parseExpected(58);
- node.statements = parseList(3, parseStatement);
- return finishNode(node);
- }
- function parseDefaultClause() {
- var node = createNode(278);
- parseExpected(84);
- parseExpected(58);
- node.statements = parseList(3, parseStatement);
- return finishNode(node);
- }
- function parseCaseOrDefaultClause() {
- return token() === 78 ? parseCaseClause() : parseDefaultClause();
- }
- function parseSwitchStatement() {
- var node = createNode(237);
- parseExpected(103);
- parseExpected(20);
- node.expression = allowInAnd(parseExpression);
- parseExpected(21);
- var caseBlock = createNode(251);
- parseExpected(18);
- caseBlock.clauses = parseList(2, parseCaseOrDefaultClause);
- parseExpected(19);
- node.caseBlock = finishNode(caseBlock);
- return finishNode(node);
- }
- function parseThrowStatement() {
- var node = createNode(239);
- parseExpected(105);
- node.expression = scanner.hasPrecedingLineBreak() ? undefined : allowInAnd(parseExpression);
- parseSemicolon();
- return finishNode(node);
- }
- function parseTryStatement() {
- var node = createNode(240);
- parseExpected(107);
- node.tryBlock = parseBlock(false);
- node.catchClause = token() === 79 ? parseCatchClause() : undefined;
- if (!node.catchClause || token() === 92) {
- parseExpected(92);
- node.finallyBlock = parseBlock(false);
- }
- return finishNode(node);
- }
- function parseCatchClause() {
- var result = createNode(280);
- parseExpected(79);
- if (parseOptional(20)) {
- result.variableDeclaration = parseVariableDeclaration();
- parseExpected(21);
- }
- else {
- result.variableDeclaration = undefined;
- }
- result.block = parseBlock(false);
- return finishNode(result);
- }
- function parseDebuggerStatement() {
- var node = createNode(241);
- parseExpected(83);
- parseSemicolon();
- return finishNode(node);
- }
- function parseExpressionOrLabeledStatement() {
- var node = createNodeWithJSDoc(token() === 75 ? 0 : 226);
- var expression = allowInAnd(parseExpression);
- if (expression.kind === 75 && parseOptional(58)) {
- node.kind = 238;
- node.label = expression;
- node.statement = parseStatement();
- }
- else {
- node.kind = 226;
- node.expression = expression;
- parseSemicolon();
- }
- return finishNode(node);
- }
- function nextTokenIsIdentifierOrKeywordOnSameLine() {
- nextToken();
- return ts.tokenIsIdentifierOrKeyword(token()) && !scanner.hasPrecedingLineBreak();
- }
- function nextTokenIsClassKeywordOnSameLine() {
- nextToken();
- return token() === 80 && !scanner.hasPrecedingLineBreak();
- }
- function nextTokenIsFunctionKeywordOnSameLine() {
- nextToken();
- return token() === 94 && !scanner.hasPrecedingLineBreak();
- }
- function nextTokenIsIdentifierOrKeywordOrLiteralOnSameLine() {
- nextToken();
- return (ts.tokenIsIdentifierOrKeyword(token()) || token() === 8 || token() === 9 || token() === 10) && !scanner.hasPrecedingLineBreak();
- }
- function isDeclaration() {
- while (true) {
- switch (token()) {
- case 109:
- case 115:
- case 81:
- case 94:
- case 80:
- case 88:
- return true;
- case 114:
- case 145:
- return nextTokenIsIdentifierOnSameLine();
- case 135:
- case 136:
- return nextTokenIsIdentifierOrStringLiteralOnSameLine();
- case 122:
- case 126:
- case 130:
- case 117:
- case 118:
- case 119:
- case 138:
- nextToken();
- if (scanner.hasPrecedingLineBreak()) {
- return false;
- }
- continue;
- case 150:
- nextToken();
- return token() === 18 || token() === 75 || token() === 89;
- case 96:
- nextToken();
- return token() === 10 || token() === 41 ||
- token() === 18 || ts.tokenIsIdentifierOrKeyword(token());
- case 89:
- var currentToken_1 = nextToken();
- if (currentToken_1 === 145) {
- currentToken_1 = lookAhead(nextToken);
- }
- if (currentToken_1 === 62 || currentToken_1 === 41 ||
- currentToken_1 === 18 || currentToken_1 === 84 ||
- currentToken_1 === 123) {
- return true;
- }
- continue;
- case 120:
- nextToken();
- continue;
- default:
- return false;
- }
- }
- }
- function isStartOfDeclaration() {
- return lookAhead(isDeclaration);
- }
- function isStartOfStatement() {
- switch (token()) {
- case 59:
- case 26:
- case 18:
- case 109:
- case 115:
- case 94:
- case 80:
- case 88:
- case 95:
- case 86:
- case 111:
- case 93:
- case 82:
- case 77:
- case 101:
- case 112:
- case 103:
- case 105:
- case 107:
- case 83:
- case 79:
- case 92:
- return true;
- case 96:
- return isStartOfDeclaration() || lookAhead(nextTokenIsOpenParenOrLessThanOrDot);
- case 81:
- case 89:
- return isStartOfDeclaration();
- case 126:
- case 130:
- case 114:
- case 135:
- case 136:
- case 145:
- case 150:
- return true;
- case 119:
- case 117:
- case 118:
- case 120:
- case 138:
- return isStartOfDeclaration() || !lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine);
- default:
- return isStartOfExpression();
- }
- }
- function nextTokenIsIdentifierOrStartOfDestructuring() {
- nextToken();
- return isIdentifier() || token() === 18 || token() === 22;
- }
- function isLetDeclaration() {
- return lookAhead(nextTokenIsIdentifierOrStartOfDestructuring);
- }
- function parseStatement() {
- switch (token()) {
- case 26:
- return parseEmptyStatement();
- case 18:
- return parseBlock(false);
- case 109:
- return parseVariableStatement(createNodeWithJSDoc(242));
- case 115:
- if (isLetDeclaration()) {
- return parseVariableStatement(createNodeWithJSDoc(242));
- }
- break;
- case 94:
- return parseFunctionDeclaration(createNodeWithJSDoc(244));
- case 80:
- return parseClassDeclaration(createNodeWithJSDoc(245));
- case 95:
- return parseIfStatement();
- case 86:
- return parseDoStatement();
- case 111:
- return parseWhileStatement();
- case 93:
- return parseForOrForInOrForOfStatement();
- case 82:
- return parseBreakOrContinueStatement(233);
- case 77:
- return parseBreakOrContinueStatement(234);
- case 101:
- return parseReturnStatement();
- case 112:
- return parseWithStatement();
- case 103:
- return parseSwitchStatement();
- case 105:
- return parseThrowStatement();
- case 107:
- case 79:
- case 92:
- return parseTryStatement();
- case 83:
- return parseDebuggerStatement();
- case 59:
- return parseDeclaration();
- case 126:
- case 114:
- case 145:
- case 135:
- case 136:
- case 130:
- case 81:
- case 88:
- case 89:
- case 96:
- case 117:
- case 118:
- case 119:
- case 122:
- case 120:
- case 138:
- case 150:
- if (isStartOfDeclaration()) {
- return parseDeclaration();
- }
- break;
- }
- return parseExpressionOrLabeledStatement();
- }
- function isDeclareModifier(modifier) {
- return modifier.kind === 130;
- }
- function parseDeclaration() {
- var modifiers = lookAhead(function () { return (parseDecorators(), parseModifiers()); });
- var isAmbient = ts.some(modifiers, isDeclareModifier);
- if (isAmbient) {
- var node_3 = tryReuseAmbientDeclaration();
- if (node_3) {
- return node_3;
- }
- }
- var node = createNodeWithJSDoc(0);
- node.decorators = parseDecorators();
- node.modifiers = parseModifiers();
- if (isAmbient) {
- for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) {
- var m = _a[_i];
- m.flags |= 8388608;
- }
- return doInsideOfContext(8388608, function () { return parseDeclarationWorker(node); });
- }
- else {
- return parseDeclarationWorker(node);
- }
- }
- function tryReuseAmbientDeclaration() {
- return doInsideOfContext(8388608, function () {
- var node = currentNode(parsingContext);
- if (node) {
- return consumeNode(node);
- }
- });
- }
- function parseDeclarationWorker(node) {
- switch (token()) {
- case 109:
- case 115:
- case 81:
- return parseVariableStatement(node);
- case 94:
- return parseFunctionDeclaration(node);
- case 80:
- return parseClassDeclaration(node);
- case 114:
- return parseInterfaceDeclaration(node);
- case 145:
- return parseTypeAliasDeclaration(node);
- case 88:
- return parseEnumDeclaration(node);
- case 150:
- case 135:
- case 136:
- return parseModuleDeclaration(node);
- case 96:
- return parseImportDeclarationOrImportEqualsDeclaration(node);
- case 89:
- nextToken();
- switch (token()) {
- case 84:
- case 62:
- return parseExportAssignment(node);
- case 123:
- return parseNamespaceExportDeclaration(node);
- default:
- return parseExportDeclaration(node);
- }
- default:
- if (node.decorators || node.modifiers) {
- var missing = createMissingNode(264, true, ts.Diagnostics.Declaration_expected);
- missing.pos = node.pos;
- missing.decorators = node.decorators;
- missing.modifiers = node.modifiers;
- return finishNode(missing);
- }
- return undefined;
- }
- }
- function nextTokenIsIdentifierOrStringLiteralOnSameLine() {
- nextToken();
- return !scanner.hasPrecedingLineBreak() && (isIdentifier() || token() === 10);
- }
- function parseFunctionBlockOrSemicolon(flags, diagnosticMessage) {
- if (token() !== 18 && canParseSemicolon()) {
- parseSemicolon();
- return;
- }
- return parseFunctionBlock(flags, diagnosticMessage);
- }
- function parseArrayBindingElement() {
- if (token() === 27) {
- return createNode(215);
- }
- var node = createNode(191);
- node.dotDotDotToken = parseOptionalToken(25);
- node.name = parseIdentifierOrPattern();
- node.initializer = parseInitializer();
- return finishNode(node);
- }
- function parseObjectBindingElement() {
- var node = createNode(191);
- node.dotDotDotToken = parseOptionalToken(25);
- var tokenIsIdentifier = isIdentifier();
- var propertyName = parsePropertyName();
- if (tokenIsIdentifier && token() !== 58) {
- node.name = propertyName;
- }
- else {
- parseExpected(58);
- node.propertyName = propertyName;
- node.name = parseIdentifierOrPattern();
- }
- node.initializer = parseInitializer();
- return finishNode(node);
- }
- function parseObjectBindingPattern() {
- var node = createNode(189);
- parseExpected(18);
- node.elements = parseDelimitedList(9, parseObjectBindingElement);
- parseExpected(19);
- return finishNode(node);
- }
- function parseArrayBindingPattern() {
- var node = createNode(190);
- parseExpected(22);
- node.elements = parseDelimitedList(10, parseArrayBindingElement);
- parseExpected(23);
- return finishNode(node);
- }
- function isIdentifierOrPrivateIdentifierOrPattern() {
- return token() === 18
- || token() === 22
- || token() === 76
- || isIdentifier();
- }
- function parseIdentifierOrPattern(privateIdentifierDiagnosticMessage) {
- if (token() === 22) {
- return parseArrayBindingPattern();
- }
- if (token() === 18) {
- return parseObjectBindingPattern();
- }
- return parseIdentifier(undefined, privateIdentifierDiagnosticMessage);
- }
- function parseVariableDeclarationAllowExclamation() {
- return parseVariableDeclaration(true);
- }
- function parseVariableDeclaration(allowExclamation) {
- var node = createNode(242);
- node.name = parseIdentifierOrPattern(ts.Diagnostics.Private_identifiers_are_not_allowed_in_variable_declarations);
- if (allowExclamation && node.name.kind === 75 &&
- token() === 53 && !scanner.hasPrecedingLineBreak()) {
- node.exclamationToken = parseTokenNode();
- }
- node.type = parseTypeAnnotation();
- if (!isInOrOfKeyword(token())) {
- node.initializer = parseInitializer();
- }
- return finishNode(node);
- }
- function parseVariableDeclarationList(inForStatementInitializer) {
- var node = createNode(243);
- switch (token()) {
- case 109:
- break;
- case 115:
- node.flags |= 1;
- break;
- case 81:
- node.flags |= 2;
- break;
- default:
- ts.Debug.fail();
- }
- nextToken();
- if (token() === 152 && lookAhead(canFollowContextualOfKeyword)) {
- node.declarations = createMissingList();
- }
- else {
- var savedDisallowIn = inDisallowInContext();
- setDisallowInContext(inForStatementInitializer);
- node.declarations = parseDelimitedList(8, inForStatementInitializer ? parseVariableDeclaration : parseVariableDeclarationAllowExclamation);
- setDisallowInContext(savedDisallowIn);
- }
- return finishNode(node);
- }
- function canFollowContextualOfKeyword() {
- return nextTokenIsIdentifier() && nextToken() === 21;
- }
- function parseVariableStatement(node) {
- node.kind = 225;
- node.declarationList = parseVariableDeclarationList(false);
- parseSemicolon();
- return finishNode(node);
- }
- function parseFunctionDeclaration(node) {
- node.kind = 244;
- parseExpected(94);
- node.asteriskToken = parseOptionalToken(41);
- node.name = hasModifierOfKind(node, 84) ? parseOptionalIdentifier() : parseIdentifier();
- var isGenerator = node.asteriskToken ? 1 : 0;
- var isAsync = hasModifierOfKind(node, 126) ? 2 : 0;
- fillSignature(58, isGenerator | isAsync, node);
- node.body = parseFunctionBlockOrSemicolon(isGenerator | isAsync, ts.Diagnostics.or_expected);
- return finishNode(node);
- }
- function parseConstructorName() {
- if (token() === 129) {
- return parseExpected(129);
- }
- if (token() === 10 && lookAhead(nextToken) === 20) {
- return tryParse(function () {
- var literalNode = parseLiteralNode();
- return literalNode.text === "constructor" ? literalNode : undefined;
- });
- }
- }
- function tryParseConstructorDeclaration(node) {
- return tryParse(function () {
- if (parseConstructorName()) {
- node.kind = 162;
- fillSignature(58, 0, node);
- node.body = parseFunctionBlockOrSemicolon(0, ts.Diagnostics.or_expected);
- return finishNode(node);
- }
- });
- }
- function parseMethodDeclaration(node, asteriskToken, diagnosticMessage) {
- node.kind = 161;
- node.asteriskToken = asteriskToken;
- var isGenerator = asteriskToken ? 1 : 0;
- var isAsync = hasModifierOfKind(node, 126) ? 2 : 0;
- fillSignature(58, isGenerator | isAsync, node);
- node.body = parseFunctionBlockOrSemicolon(isGenerator | isAsync, diagnosticMessage);
- return finishNode(node);
- }
- function parsePropertyDeclaration(node) {
- node.kind = 159;
- if (!node.questionToken && token() === 53 && !scanner.hasPrecedingLineBreak()) {
- node.exclamationToken = parseTokenNode();
- }
- node.type = parseTypeAnnotation();
- node.initializer = doOutsideOfContext(8192 | 32768 | 4096, parseInitializer);
- parseSemicolon();
- return finishNode(node);
- }
- function parsePropertyOrMethodDeclaration(node) {
- var asteriskToken = parseOptionalToken(41);
- node.name = parsePropertyName();
- node.questionToken = parseOptionalToken(57);
- if (asteriskToken || token() === 20 || token() === 29) {
- return parseMethodDeclaration(node, asteriskToken, ts.Diagnostics.or_expected);
- }
- return parsePropertyDeclaration(node);
- }
- function parseAccessorDeclaration(node, kind) {
- node.kind = kind;
- node.name = parsePropertyName();
- fillSignature(58, 0, node);
- node.body = parseFunctionBlockOrSemicolon(0);
- return finishNode(node);
- }
- function isClassMemberStart() {
- var idToken;
- if (token() === 59) {
- return true;
- }
- while (ts.isModifierKind(token())) {
- idToken = token();
- if (ts.isClassMemberModifier(idToken)) {
- return true;
- }
- nextToken();
- }
- if (token() === 41) {
- return true;
- }
- if (isLiteralPropertyName()) {
- idToken = token();
- nextToken();
- }
- if (token() === 22) {
- return true;
- }
- if (idToken !== undefined) {
- if (!ts.isKeyword(idToken) || idToken === 142 || idToken === 131) {
- return true;
- }
- switch (token()) {
- case 20:
- case 29:
- case 53:
- case 58:
- case 62:
- case 57:
- return true;
- default:
- return canParseSemicolon();
- }
- }
- return false;
- }
- function parseDecorators() {
- var list;
- var listPos = getNodePos();
- while (true) {
- var decoratorStart = getNodePos();
- if (!parseOptional(59)) {
- break;
- }
- var decorator = createNode(157, decoratorStart);
- decorator.expression = doInDecoratorContext(parseLeftHandSideExpressionOrHigher);
- finishNode(decorator);
- (list || (list = [])).push(decorator);
- }
- return list && createNodeArray(list, listPos);
- }
- function parseModifiers(permitInvalidConstAsModifier) {
- var list;
- var listPos = getNodePos();
- while (true) {
- var modifierStart = scanner.getStartPos();
- var modifierKind = token();
- if (token() === 81 && permitInvalidConstAsModifier) {
- if (!tryParse(nextTokenIsOnSameLineAndCanFollowModifier)) {
- break;
- }
- }
- else {
- if (!parseAnyContextualModifier()) {
- break;
- }
- }
- var modifier = finishNode(createNode(modifierKind, modifierStart));
- (list || (list = [])).push(modifier);
- }
- return list && createNodeArray(list, listPos);
- }
- function parseModifiersForArrowFunction() {
- var modifiers;
- if (token() === 126) {
- var modifierStart = scanner.getStartPos();
- var modifierKind = token();
- nextToken();
- var modifier = finishNode(createNode(modifierKind, modifierStart));
- modifiers = createNodeArray([modifier], modifierStart);
- }
- return modifiers;
- }
- function parseClassElement() {
- if (token() === 26) {
- var result = createNode(222);
- nextToken();
- return finishNode(result);
- }
- var node = createNodeWithJSDoc(0);
- node.decorators = parseDecorators();
- node.modifiers = parseModifiers(true);
- if (parseContextualModifier(131)) {
- return parseAccessorDeclaration(node, 163);
- }
- if (parseContextualModifier(142)) {
- return parseAccessorDeclaration(node, 164);
- }
- if (token() === 129 || token() === 10) {
- var constructorDeclaration = tryParseConstructorDeclaration(node);
- if (constructorDeclaration) {
- return constructorDeclaration;
- }
- }
- if (isIndexSignature()) {
- return parseIndexSignatureDeclaration(node);
- }
- if (ts.tokenIsIdentifierOrKeyword(token()) ||
- token() === 10 ||
- token() === 8 ||
- token() === 41 ||
- token() === 22) {
- var isAmbient = node.modifiers && ts.some(node.modifiers, isDeclareModifier);
- if (isAmbient) {
- for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) {
- var m = _a[_i];
- m.flags |= 8388608;
- }
- return doInsideOfContext(8388608, function () { return parsePropertyOrMethodDeclaration(node); });
- }
- else {
- return parsePropertyOrMethodDeclaration(node);
- }
- }
- if (node.decorators || node.modifiers) {
- node.name = createMissingNode(75, true, ts.Diagnostics.Declaration_expected);
- return parsePropertyDeclaration(node);
- }
- return ts.Debug.fail("Should not have attempted to parse class member declaration.");
- }
- function parseClassExpression() {
- return parseClassDeclarationOrExpression(createNodeWithJSDoc(0), 214);
- }
- function parseClassDeclaration(node) {
- return parseClassDeclarationOrExpression(node, 245);
- }
- function parseClassDeclarationOrExpression(node, kind) {
- node.kind = kind;
- parseExpected(80);
- node.name = parseNameOfClassDeclarationOrExpression();
- node.typeParameters = parseTypeParameters();
- node.heritageClauses = parseHeritageClauses();
- if (parseExpected(18)) {
- node.members = parseClassMembers();
- parseExpected(19);
- }
- else {
- node.members = createMissingList();
- }
- return finishNode(node);
- }
- function parseNameOfClassDeclarationOrExpression() {
- return isIdentifier() && !isImplementsClause()
- ? parseIdentifier()
- : undefined;
- }
- function isImplementsClause() {
- return token() === 113 && lookAhead(nextTokenIsIdentifierOrKeyword);
- }
- function parseHeritageClauses() {
- if (isHeritageClause()) {
- return parseList(22, parseHeritageClause);
- }
- return undefined;
- }
- function parseHeritageClause() {
- var tok = token();
- ts.Debug.assert(tok === 90 || tok === 113);
- var node = createNode(279);
- node.token = tok;
- nextToken();
- node.types = parseDelimitedList(7, parseExpressionWithTypeArguments);
- return finishNode(node);
- }
- function parseExpressionWithTypeArguments() {
- var node = createNode(216);
- node.expression = parseLeftHandSideExpressionOrHigher();
- node.typeArguments = tryParseTypeArguments();
- return finishNode(node);
- }
- function tryParseTypeArguments() {
- return token() === 29 ?
- parseBracketedList(20, parseType, 29, 31) : undefined;
- }
- function isHeritageClause() {
- return token() === 90 || token() === 113;
- }
- function parseClassMembers() {
- return parseList(5, parseClassElement);
- }
- function parseInterfaceDeclaration(node) {
- node.kind = 246;
- parseExpected(114);
- node.name = parseIdentifier();
- node.typeParameters = parseTypeParameters();
- node.heritageClauses = parseHeritageClauses();
- node.members = parseObjectTypeMembers();
- return finishNode(node);
- }
- function parseTypeAliasDeclaration(node) {
- node.kind = 247;
- parseExpected(145);
- node.name = parseIdentifier();
- node.typeParameters = parseTypeParameters();
- parseExpected(62);
- node.type = parseType();
- parseSemicolon();
- return finishNode(node);
- }
- function parseEnumMember() {
- var node = createNodeWithJSDoc(284);
- node.name = parsePropertyName();
- node.initializer = allowInAnd(parseInitializer);
- return finishNode(node);
- }
- function parseEnumDeclaration(node) {
- node.kind = 248;
- parseExpected(88);
- node.name = parseIdentifier();
- if (parseExpected(18)) {
- node.members = doOutsideOfYieldAndAwaitContext(function () { return parseDelimitedList(6, parseEnumMember); });
- parseExpected(19);
- }
- else {
- node.members = createMissingList();
- }
- return finishNode(node);
- }
- function parseModuleBlock() {
- var node = createNode(250);
- if (parseExpected(18)) {
- node.statements = parseList(1, parseStatement);
- parseExpected(19);
- }
- else {
- node.statements = createMissingList();
- }
- return finishNode(node);
- }
- function parseModuleOrNamespaceDeclaration(node, flags) {
- node.kind = 249;
- var namespaceFlag = flags & 16;
- node.flags |= flags;
- node.name = parseIdentifier();
- node.body = parseOptional(24)
- ? parseModuleOrNamespaceDeclaration(createNode(0), 4 | namespaceFlag)
- : parseModuleBlock();
- return finishNode(node);
- }
- function parseAmbientExternalModuleDeclaration(node) {
- node.kind = 249;
- if (token() === 150) {
- node.name = parseIdentifier();
- node.flags |= 1024;
- }
- else {
- node.name = parseLiteralNode();
- node.name.text = internIdentifier(node.name.text);
- }
- if (token() === 18) {
- node.body = parseModuleBlock();
- }
- else {
- parseSemicolon();
- }
- return finishNode(node);
- }
- function parseModuleDeclaration(node) {
- var flags = 0;
- if (token() === 150) {
- return parseAmbientExternalModuleDeclaration(node);
- }
- else if (parseOptional(136)) {
- flags |= 16;
- }
- else {
- parseExpected(135);
- if (token() === 10) {
- return parseAmbientExternalModuleDeclaration(node);
- }
- }
- return parseModuleOrNamespaceDeclaration(node, flags);
- }
- function isExternalModuleReference() {
- return token() === 139 &&
- lookAhead(nextTokenIsOpenParen);
- }
- function nextTokenIsOpenParen() {
- return nextToken() === 20;
- }
- function nextTokenIsSlash() {
- return nextToken() === 43;
- }
- function parseNamespaceExportDeclaration(node) {
- node.kind = 252;
- parseExpected(123);
- parseExpected(136);
- node.name = parseIdentifier();
- parseSemicolon();
- return finishNode(node);
- }
- function parseImportDeclarationOrImportEqualsDeclaration(node) {
- parseExpected(96);
- var afterImportPos = scanner.getStartPos();
- var identifier;
- if (isIdentifier()) {
- identifier = parseIdentifier();
- }
- var isTypeOnly = false;
- if (token() !== 149 &&
- (identifier === null || identifier === void 0 ? void 0 : identifier.escapedText) === "type" &&
- (isIdentifier() || tokenAfterImportDefinitelyProducesImportDeclaration())) {
- isTypeOnly = true;
- identifier = isIdentifier() ? parseIdentifier() : undefined;
- }
- if (identifier && !tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration()) {
- return parseImportEqualsDeclaration(node, identifier, isTypeOnly);
- }
- node.kind = 254;
- if (identifier ||
- token() === 41 ||
- token() === 18) {
- node.importClause = parseImportClause(identifier, afterImportPos, isTypeOnly);
- parseExpected(149);
- }
- node.moduleSpecifier = parseModuleSpecifier();
- parseSemicolon();
- return finishNode(node);
- }
- function tokenAfterImportDefinitelyProducesImportDeclaration() {
- return token() === 41 || token() === 18;
- }
- function tokenAfterImportedIdentifierDefinitelyProducesImportDeclaration() {
- return token() === 27 || token() === 149;
- }
- function parseImportEqualsDeclaration(node, identifier, isTypeOnly) {
- node.kind = 253;
- node.name = identifier;
- parseExpected(62);
- node.moduleReference = parseModuleReference();
- parseSemicolon();
- var finished = finishNode(node);
- if (isTypeOnly) {
- parseErrorAtRange(finished, ts.Diagnostics.Only_ECMAScript_imports_may_use_import_type);
- }
- return finished;
- }
- function parseImportClause(identifier, fullStart, isTypeOnly) {
- var importClause = createNode(255, fullStart);
- importClause.isTypeOnly = isTypeOnly;
- if (identifier) {
- importClause.name = identifier;
- }
- if (!importClause.name ||
- parseOptional(27)) {
- importClause.namedBindings = token() === 41 ? parseNamespaceImport() : parseNamedImportsOrExports(257);
- }
- return finishNode(importClause);
- }
- function parseModuleReference() {
- return isExternalModuleReference()
- ? parseExternalModuleReference()
- : parseEntityName(false);
- }
- function parseExternalModuleReference() {
- var node = createNode(265);
- parseExpected(139);
- parseExpected(20);
- node.expression = parseModuleSpecifier();
- parseExpected(21);
- return finishNode(node);
- }
- function parseModuleSpecifier() {
- if (token() === 10) {
- var result = parseLiteralNode();
- result.text = internIdentifier(result.text);
- return result;
- }
- else {
- return parseExpression();
- }
- }
- function parseNamespaceImport() {
- var namespaceImport = createNode(256);
- parseExpected(41);
- parseExpected(123);
- namespaceImport.name = parseIdentifier();
- return finishNode(namespaceImport);
- }
- function parseNamedImportsOrExports(kind) {
- var node = createNode(kind);
- node.elements = parseBracketedList(23, kind === 257 ? parseImportSpecifier : parseExportSpecifier, 18, 19);
- return finishNode(node);
- }
- function parseExportSpecifier() {
- return parseImportOrExportSpecifier(263);
- }
- function parseImportSpecifier() {
- return parseImportOrExportSpecifier(258);
- }
- function parseImportOrExportSpecifier(kind) {
- var node = createNode(kind);
- var checkIdentifierIsKeyword = ts.isKeyword(token()) && !isIdentifier();
- var checkIdentifierStart = scanner.getTokenPos();
- var checkIdentifierEnd = scanner.getTextPos();
- var identifierName = parseIdentifierName();
- if (token() === 123) {
- node.propertyName = identifierName;
- parseExpected(123);
- checkIdentifierIsKeyword = ts.isKeyword(token()) && !isIdentifier();
- checkIdentifierStart = scanner.getTokenPos();
- checkIdentifierEnd = scanner.getTextPos();
- node.name = parseIdentifierName();
- }
- else {
- node.name = identifierName;
- }
- if (kind === 258 && checkIdentifierIsKeyword) {
- parseErrorAt(checkIdentifierStart, checkIdentifierEnd, ts.Diagnostics.Identifier_expected);
- }
- return finishNode(node);
- }
- function parseNamespaceExport(pos) {
- var node = createNode(262, pos);
- node.name = parseIdentifier();
- return finishNode(node);
- }
- function parseExportDeclaration(node) {
- node.kind = 260;
- node.isTypeOnly = parseOptional(145);
- var namespaceExportPos = scanner.getStartPos();
- if (parseOptional(41)) {
- if (parseOptional(123)) {
- node.exportClause = parseNamespaceExport(namespaceExportPos);
- }
- parseExpected(149);
- node.moduleSpecifier = parseModuleSpecifier();
- }
- else {
- node.exportClause = parseNamedImportsOrExports(261);
- if (token() === 149 || (token() === 10 && !scanner.hasPrecedingLineBreak())) {
- parseExpected(149);
- node.moduleSpecifier = parseModuleSpecifier();
- }
- }
- parseSemicolon();
- return finishNode(node);
- }
- function parseExportAssignment(node) {
- node.kind = 259;
- if (parseOptional(62)) {
- node.isExportEquals = true;
- }
- else {
- parseExpected(84);
- }
- node.expression = parseAssignmentExpressionOrHigher();
- parseSemicolon();
- return finishNode(node);
- }
- function setExternalModuleIndicator(sourceFile) {
- sourceFile.externalModuleIndicator =
- ts.forEach(sourceFile.statements, isAnExternalModuleIndicatorNode) ||
- getImportMetaIfNecessary(sourceFile);
- }
- function isAnExternalModuleIndicatorNode(node) {
- return hasModifierOfKind(node, 89)
- || node.kind === 253 && node.moduleReference.kind === 265
- || node.kind === 254
- || node.kind === 259
- || node.kind === 260 ? node : undefined;
- }
- function getImportMetaIfNecessary(sourceFile) {
- return sourceFile.flags & 2097152 ?
- walkTreeForExternalModuleIndicators(sourceFile) :
- undefined;
- }
- function walkTreeForExternalModuleIndicators(node) {
- return isImportMeta(node) ? node : forEachChild(node, walkTreeForExternalModuleIndicators);
- }
- function hasModifierOfKind(node, kind) {
- return ts.some(node.modifiers, function (m) { return m.kind === kind; });
- }
- function isImportMeta(node) {
- return ts.isMetaProperty(node) && node.keywordToken === 96 && node.name.escapedText === "meta";
- }
- var JSDocParser;
- (function (JSDocParser) {
- function parseJSDocTypeExpressionForTests(content, start, length) {
- initializeState(content, 99, undefined, 1);
- sourceFile = createSourceFile("file.js", 99, 1, false);
- scanner.setText(content, start, length);
- currentToken = scanner.scan();
- var jsDocTypeExpression = parseJSDocTypeExpression();
- var diagnostics = parseDiagnostics;
- clearState();
- return jsDocTypeExpression ? { jsDocTypeExpression: jsDocTypeExpression, diagnostics: diagnostics } : undefined;
- }
- JSDocParser.parseJSDocTypeExpressionForTests = parseJSDocTypeExpressionForTests;
- function parseJSDocTypeExpression(mayOmitBraces) {
- var result = createNode(294);
- var hasBrace = (mayOmitBraces ? parseOptional : parseExpected)(18);
- result.type = doInsideOfContext(4194304, parseJSDocType);
- if (!mayOmitBraces || hasBrace) {
- parseExpectedJSDoc(19);
- }
- fixupParentReferences(result);
- return finishNode(result);
- }
- JSDocParser.parseJSDocTypeExpression = parseJSDocTypeExpression;
- function parseIsolatedJSDocComment(content, start, length) {
- initializeState(content, 99, undefined, 1);
- sourceFile = { languageVariant: 0, text: content };
- var jsDoc = doInsideOfContext(4194304, function () { return parseJSDocCommentWorker(start, length); });
- var diagnostics = parseDiagnostics;
- clearState();
- return jsDoc ? { jsDoc: jsDoc, diagnostics: diagnostics } : undefined;
- }
- JSDocParser.parseIsolatedJSDocComment = parseIsolatedJSDocComment;
- function parseJSDocComment(parent, start, length) {
- var _a;
- var saveToken = currentToken;
- var saveParseDiagnosticsLength = parseDiagnostics.length;
- var saveParseErrorBeforeNextFinishedNode = parseErrorBeforeNextFinishedNode;
- var comment = doInsideOfContext(4194304, function () { return parseJSDocCommentWorker(start, length); });
- if (comment) {
- comment.parent = parent;
- }
- if (contextFlags & 131072) {
- if (!sourceFile.jsDocDiagnostics) {
- sourceFile.jsDocDiagnostics = [];
- }
- (_a = sourceFile.jsDocDiagnostics).push.apply(_a, parseDiagnostics);
- }
- currentToken = saveToken;
- parseDiagnostics.length = saveParseDiagnosticsLength;
- parseErrorBeforeNextFinishedNode = saveParseErrorBeforeNextFinishedNode;
- return comment;
- }
- JSDocParser.parseJSDocComment = parseJSDocComment;
- function parseJSDocCommentWorker(start, length) {
- if (start === void 0) { start = 0; }
- var content = sourceText;
- var end = length === undefined ? content.length : start + length;
- length = end - start;
- ts.Debug.assert(start >= 0);
- ts.Debug.assert(start <= end);
- ts.Debug.assert(end <= content.length);
- if (!isJSDocLikeText(content, start)) {
- return undefined;
- }
- var tags;
- var tagsPos;
- var tagsEnd;
- var comments = [];
- return scanner.scanRange(start + 3, length - 5, function () {
- var state = 1;
- var margin;
- var indent = start - Math.max(content.lastIndexOf("\n", start), 0) + 4;
- function pushComment(text) {
- if (!margin) {
- margin = indent;
- }
- comments.push(text);
- indent += text.length;
- }
- nextTokenJSDoc();
- while (parseOptionalJsdoc(5))
- ;
- if (parseOptionalJsdoc(4)) {
- state = 0;
- indent = 0;
- }
- loop: while (true) {
- switch (token()) {
- case 59:
- if (state === 0 || state === 1) {
- removeTrailingWhitespace(comments);
- addTag(parseTag(indent));
- state = 0;
- margin = undefined;
- }
- else {
- pushComment(scanner.getTokenText());
- }
- break;
- case 4:
- comments.push(scanner.getTokenText());
- state = 0;
- indent = 0;
- break;
- case 41:
- var asterisk = scanner.getTokenText();
- if (state === 1 || state === 2) {
- state = 2;
- pushComment(asterisk);
- }
- else {
- state = 1;
- indent += asterisk.length;
- }
- break;
- case 5:
- var whitespace = scanner.getTokenText();
- if (state === 2) {
- comments.push(whitespace);
- }
- else if (margin !== undefined && indent + whitespace.length > margin) {
- comments.push(whitespace.slice(margin - indent - 1));
- }
- indent += whitespace.length;
- break;
- case 1:
- break loop;
- default:
- state = 2;
- pushComment(scanner.getTokenText());
- break;
- }
- nextTokenJSDoc();
- }
- removeLeadingNewlines(comments);
- removeTrailingWhitespace(comments);
- return createJSDocComment();
- });
- function removeLeadingNewlines(comments) {
- while (comments.length && (comments[0] === "\n" || comments[0] === "\r")) {
- comments.shift();
- }
- }
- function removeTrailingWhitespace(comments) {
- while (comments.length && comments[comments.length - 1].trim() === "") {
- comments.pop();
- }
- }
- function createJSDocComment() {
- var result = createNode(303, start);
- result.tags = tags && createNodeArray(tags, tagsPos, tagsEnd);
- result.comment = comments.length ? comments.join("") : undefined;
- return finishNode(result, end);
- }
- function isNextNonwhitespaceTokenEndOfFile() {
- while (true) {
- nextTokenJSDoc();
- if (token() === 1) {
- return true;
- }
- if (!(token() === 5 || token() === 4)) {
- return false;
- }
- }
- }
- function skipWhitespace() {
- if (token() === 5 || token() === 4) {
- if (lookAhead(isNextNonwhitespaceTokenEndOfFile)) {
- return;
- }
- }
- while (token() === 5 || token() === 4) {
- nextTokenJSDoc();
- }
- }
- function skipWhitespaceOrAsterisk() {
- if (token() === 5 || token() === 4) {
- if (lookAhead(isNextNonwhitespaceTokenEndOfFile)) {
- return "";
- }
- }
- var precedingLineBreak = scanner.hasPrecedingLineBreak();
- var seenLineBreak = false;
- var indentText = "";
- while ((precedingLineBreak && token() === 41) || token() === 5 || token() === 4) {
- indentText += scanner.getTokenText();
- if (token() === 4) {
- precedingLineBreak = true;
- seenLineBreak = true;
- indentText = "";
- }
- else if (token() === 41) {
- precedingLineBreak = false;
- }
- nextTokenJSDoc();
- }
- return seenLineBreak ? indentText : "";
- }
- function parseTag(margin) {
- ts.Debug.assert(token() === 59);
- var start = scanner.getTokenPos();
- nextTokenJSDoc();
- var tagName = parseJSDocIdentifierName(undefined);
- var indentText = skipWhitespaceOrAsterisk();
- var tag;
- switch (tagName.escapedText) {
- case "author":
- tag = parseAuthorTag(start, tagName, margin);
- break;
- case "implements":
- tag = parseImplementsTag(start, tagName);
- break;
- case "augments":
- case "extends":
- tag = parseAugmentsTag(start, tagName);
- break;
- case "class":
- case "constructor":
- tag = parseSimpleTag(start, 310, tagName);
- break;
- case "public":
- tag = parseSimpleTag(start, 311, tagName);
- break;
- case "private":
- tag = parseSimpleTag(start, 312, tagName);
- break;
- case "protected":
- tag = parseSimpleTag(start, 313, tagName);
- break;
- case "readonly":
- tag = parseSimpleTag(start, 314, tagName);
- break;
- case "this":
- tag = parseThisTag(start, tagName);
- break;
- case "enum":
- tag = parseEnumTag(start, tagName);
- break;
- case "arg":
- case "argument":
- case "param":
- return parseParameterOrPropertyTag(start, tagName, 2, margin);
- case "return":
- case "returns":
- tag = parseReturnTag(start, tagName);
- break;
- case "template":
- tag = parseTemplateTag(start, tagName);
- break;
- case "type":
- tag = parseTypeTag(start, tagName);
- break;
- case "typedef":
- tag = parseTypedefTag(start, tagName, margin);
- break;
- case "callback":
- tag = parseCallbackTag(start, tagName, margin);
- break;
- default:
- tag = parseUnknownTag(start, tagName);
- break;
- }
- if (!tag.comment) {
- if (!indentText) {
- margin += tag.end - tag.pos;
- }
- tag.comment = parseTagComments(margin, indentText.slice(margin));
- }
- return tag;
- }
- function parseTagComments(indent, initialMargin) {
- var comments = [];
- var state = 0;
- var margin;
- function pushComment(text) {
- if (!margin) {
- margin = indent;
- }
- comments.push(text);
- indent += text.length;
- }
- if (initialMargin !== undefined) {
- if (initialMargin !== "") {
- pushComment(initialMargin);
- }
- state = 1;
- }
- var tok = token();
- loop: while (true) {
- switch (tok) {
- case 4:
- if (state >= 1) {
- state = 0;
- comments.push(scanner.getTokenText());
- }
- indent = 0;
- break;
- case 59:
- if (state === 3) {
- comments.push(scanner.getTokenText());
- break;
- }
- scanner.setTextPos(scanner.getTextPos() - 1);
- case 1:
- break loop;
- case 5:
- if (state === 2 || state === 3) {
- pushComment(scanner.getTokenText());
- }
- else {
- var whitespace = scanner.getTokenText();
- if (margin !== undefined && indent + whitespace.length > margin) {
- comments.push(whitespace.slice(margin - indent));
- }
- indent += whitespace.length;
- }
- break;
- case 18:
- state = 2;
- if (lookAhead(function () { return nextTokenJSDoc() === 59 && ts.tokenIsIdentifierOrKeyword(nextTokenJSDoc()) && scanner.getTokenText() === "link"; })) {
- pushComment(scanner.getTokenText());
- nextTokenJSDoc();
- pushComment(scanner.getTokenText());
- nextTokenJSDoc();
- }
- pushComment(scanner.getTokenText());
- break;
- case 61:
- if (state === 3) {
- state = 2;
- }
- else {
- state = 3;
- }
- pushComment(scanner.getTokenText());
- break;
- case 41:
- if (state === 0) {
- state = 1;
- indent += 1;
- break;
- }
- default:
- if (state !== 3) {
- state = 2;
- }
- pushComment(scanner.getTokenText());
- break;
- }
- tok = nextTokenJSDoc();
- }
- removeLeadingNewlines(comments);
- removeTrailingWhitespace(comments);
- return comments.length === 0 ? undefined : comments.join("");
- }
- function parseUnknownTag(start, tagName) {
- var result = createNode(306, start);
- result.tagName = tagName;
- return finishNode(result);
- }
- function addTag(tag) {
- if (!tag) {
- return;
- }
- if (!tags) {
- tags = [tag];
- tagsPos = tag.pos;
- }
- else {
- tags.push(tag);
- }
- tagsEnd = tag.end;
- }
- function tryParseTypeExpression() {
- skipWhitespaceOrAsterisk();
- return token() === 18 ? parseJSDocTypeExpression() : undefined;
- }
- function parseBracketNameInPropertyAndParamTag() {
- var isBracketed = parseOptionalJsdoc(22);
- if (isBracketed) {
- skipWhitespace();
- }
- var isBackquoted = parseOptionalJsdoc(61);
- var name = parseJSDocEntityName();
- if (isBackquoted) {
- parseExpectedTokenJSDoc(61);
- }
- if (isBracketed) {
- skipWhitespace();
- if (parseOptionalToken(62)) {
- parseExpression();
- }
- parseExpected(23);
- }
- return { name: name, isBracketed: isBracketed };
- }
- function isObjectOrObjectArrayTypeReference(node) {
- switch (node.kind) {
- case 141:
- return true;
- case 174:
- return isObjectOrObjectArrayTypeReference(node.elementType);
- default:
- return ts.isTypeReferenceNode(node) && ts.isIdentifier(node.typeName) && node.typeName.escapedText === "Object" && !node.typeArguments;
- }
- }
- function parseParameterOrPropertyTag(start, tagName, target, indent) {
- var typeExpression = tryParseTypeExpression();
- var isNameFirst = !typeExpression;
- skipWhitespaceOrAsterisk();
- var _a = parseBracketNameInPropertyAndParamTag(), name = _a.name, isBracketed = _a.isBracketed;
- skipWhitespace();
- if (isNameFirst) {
- typeExpression = tryParseTypeExpression();
- }
- var result = target === 1 ?
- createNode(323, start) :
- createNode(317, start);
- var comment = parseTagComments(indent + scanner.getStartPos() - start);
- var nestedTypeLiteral = target !== 4 && parseNestedTypeLiteral(typeExpression, name, target, indent);
- if (nestedTypeLiteral) {
- typeExpression = nestedTypeLiteral;
- isNameFirst = true;
- }
- result.tagName = tagName;
- result.typeExpression = typeExpression;
- result.name = name;
- result.isNameFirst = isNameFirst;
- result.isBracketed = isBracketed;
- result.comment = comment;
- return finishNode(result);
- }
- function parseNestedTypeLiteral(typeExpression, name, target, indent) {
- if (typeExpression && isObjectOrObjectArrayTypeReference(typeExpression.type)) {
- var typeLiteralExpression = createNode(294, scanner.getTokenPos());
- var child = void 0;
- var jsdocTypeLiteral = void 0;
- var start_3 = scanner.getStartPos();
- var children = void 0;
- while (child = tryParse(function () { return parseChildParameterOrPropertyTag(target, indent, name); })) {
- if (child.kind === 317 || child.kind === 323) {
- children = ts.append(children, child);
- }
- }
- if (children) {
- jsdocTypeLiteral = createNode(304, start_3);
- jsdocTypeLiteral.jsDocPropertyTags = children;
- if (typeExpression.type.kind === 174) {
- jsdocTypeLiteral.isArrayType = true;
- }
- typeLiteralExpression.type = finishNode(jsdocTypeLiteral);
- return finishNode(typeLiteralExpression);
- }
- }
- }
- function parseReturnTag(start, tagName) {
- if (ts.some(tags, ts.isJSDocReturnTag)) {
- parseErrorAt(tagName.pos, scanner.getTokenPos(), ts.Diagnostics._0_tag_already_specified, tagName.escapedText);
- }
- var result = createNode(318, start);
- result.tagName = tagName;
- result.typeExpression = tryParseTypeExpression();
- return finishNode(result);
- }
- function parseTypeTag(start, tagName) {
- if (ts.some(tags, ts.isJSDocTypeTag)) {
- parseErrorAt(tagName.pos, scanner.getTokenPos(), ts.Diagnostics._0_tag_already_specified, tagName.escapedText);
- }
- var result = createNode(320, start);
- result.tagName = tagName;
- result.typeExpression = parseJSDocTypeExpression(true);
- return finishNode(result);
- }
- function parseAuthorTag(start, tagName, indent) {
- var result = createNode(309, start);
- result.tagName = tagName;
- var authorInfoWithEmail = tryParse(function () { return tryParseAuthorNameAndEmail(); });
- if (!authorInfoWithEmail) {
- return finishNode(result);
- }
- result.comment = authorInfoWithEmail;
- if (lookAhead(function () { return nextToken() !== 4; })) {
- var comment = parseTagComments(indent);
- if (comment) {
- result.comment += comment;
- }
- }
- return finishNode(result);
- }
- function tryParseAuthorNameAndEmail() {
- var comments = [];
- var seenLessThan = false;
- var seenGreaterThan = false;
- var token = scanner.getToken();
- loop: while (true) {
- switch (token) {
- case 75:
- case 5:
- case 24:
- case 59:
- comments.push(scanner.getTokenText());
- break;
- case 29:
- if (seenLessThan || seenGreaterThan) {
- return;
- }
- seenLessThan = true;
- comments.push(scanner.getTokenText());
- break;
- case 31:
- if (!seenLessThan || seenGreaterThan) {
- return;
- }
- seenGreaterThan = true;
- comments.push(scanner.getTokenText());
- scanner.setTextPos(scanner.getTokenPos() + 1);
- break loop;
- case 4:
- case 1:
- break loop;
- }
- token = nextTokenJSDoc();
- }
- if (seenLessThan && seenGreaterThan) {
- return comments.length === 0 ? undefined : comments.join("");
- }
- }
- function parseImplementsTag(start, tagName) {
- var result = createNode(308, start);
- result.tagName = tagName;
- result.class = parseExpressionWithTypeArgumentsForAugments();
- return finishNode(result);
- }
- function parseAugmentsTag(start, tagName) {
- var result = createNode(307, start);
- result.tagName = tagName;
- result.class = parseExpressionWithTypeArgumentsForAugments();
- return finishNode(result);
- }
- function parseExpressionWithTypeArgumentsForAugments() {
- var usedBrace = parseOptional(18);
- var node = createNode(216);
- node.expression = parsePropertyAccessEntityNameExpression();
- node.typeArguments = tryParseTypeArguments();
- var res = finishNode(node);
- if (usedBrace) {
- parseExpected(19);
- }
- return res;
- }
- function parsePropertyAccessEntityNameExpression() {
- var node = parseJSDocIdentifierName();
- while (parseOptional(24)) {
- var prop = createNode(194, node.pos);
- prop.expression = node;
- prop.name = parseJSDocIdentifierName();
- node = finishNode(prop);
- }
- return node;
- }
- function parseSimpleTag(start, kind, tagName) {
- var tag = createNode(kind, start);
- tag.tagName = tagName;
- return finishNode(tag);
- }
- function parseThisTag(start, tagName) {
- var tag = createNode(319, start);
- tag.tagName = tagName;
- tag.typeExpression = parseJSDocTypeExpression(true);
- skipWhitespace();
- return finishNode(tag);
- }
- function parseEnumTag(start, tagName) {
- var tag = createNode(316, start);
- tag.tagName = tagName;
- tag.typeExpression = parseJSDocTypeExpression(true);
- skipWhitespace();
- return finishNode(tag);
- }
- function parseTypedefTag(start, tagName, indent) {
- var typeExpression = tryParseTypeExpression();
- skipWhitespaceOrAsterisk();
- var typedefTag = createNode(322, start);
- typedefTag.tagName = tagName;
- typedefTag.fullName = parseJSDocTypeNameWithNamespace();
- typedefTag.name = getJSDocTypeAliasName(typedefTag.fullName);
- skipWhitespace();
- typedefTag.comment = parseTagComments(indent);
- typedefTag.typeExpression = typeExpression;
- var end;
- if (!typeExpression || isObjectOrObjectArrayTypeReference(typeExpression.type)) {
- var child = void 0;
- var jsdocTypeLiteral = void 0;
- var childTypeTag = void 0;
- while (child = tryParse(function () { return parseChildPropertyTag(indent); })) {
- if (!jsdocTypeLiteral) {
- jsdocTypeLiteral = createNode(304, start);
- }
- if (child.kind === 320) {
- if (childTypeTag) {
- break;
- }
- else {
- childTypeTag = child;
- }
- }
- else {
- jsdocTypeLiteral.jsDocPropertyTags = ts.append(jsdocTypeLiteral.jsDocPropertyTags, child);
- }
- }
- if (jsdocTypeLiteral) {
- if (typeExpression && typeExpression.type.kind === 174) {
- jsdocTypeLiteral.isArrayType = true;
- }
- typedefTag.typeExpression = childTypeTag && childTypeTag.typeExpression && !isObjectOrObjectArrayTypeReference(childTypeTag.typeExpression.type) ?
- childTypeTag.typeExpression :
- finishNode(jsdocTypeLiteral);
- end = typedefTag.typeExpression.end;
- }
- }
- return finishNode(typedefTag, end || typedefTag.comment !== undefined ? scanner.getStartPos() : (typedefTag.fullName || typedefTag.typeExpression || typedefTag.tagName).end);
- }
- function parseJSDocTypeNameWithNamespace(nested) {
- var pos = scanner.getTokenPos();
- if (!ts.tokenIsIdentifierOrKeyword(token())) {
- return undefined;
- }
- var typeNameOrNamespaceName = parseJSDocIdentifierName();
- if (parseOptional(24)) {
- var jsDocNamespaceNode = createNode(249, pos);
- if (nested) {
- jsDocNamespaceNode.flags |= 4;
- }
- jsDocNamespaceNode.name = typeNameOrNamespaceName;
- jsDocNamespaceNode.body = parseJSDocTypeNameWithNamespace(true);
- return finishNode(jsDocNamespaceNode);
- }
- if (nested) {
- typeNameOrNamespaceName.isInJSDocNamespace = true;
- }
- return typeNameOrNamespaceName;
- }
- function parseCallbackTag(start, tagName, indent) {
- var callbackTag = createNode(315, start);
- callbackTag.tagName = tagName;
- callbackTag.fullName = parseJSDocTypeNameWithNamespace();
- callbackTag.name = getJSDocTypeAliasName(callbackTag.fullName);
- skipWhitespace();
- callbackTag.comment = parseTagComments(indent);
- var child;
- var jsdocSignature = createNode(305, start);
- jsdocSignature.parameters = [];
- while (child = tryParse(function () { return parseChildParameterOrPropertyTag(4, indent); })) {
- jsdocSignature.parameters = ts.append(jsdocSignature.parameters, child);
- }
- var returnTag = tryParse(function () {
- if (parseOptionalJsdoc(59)) {
- var tag = parseTag(indent);
- if (tag && tag.kind === 318) {
- return tag;
- }
- }
- });
- if (returnTag) {
- jsdocSignature.type = returnTag;
- }
- callbackTag.typeExpression = finishNode(jsdocSignature);
- return finishNode(callbackTag);
- }
- function getJSDocTypeAliasName(fullName) {
- if (fullName) {
- var rightNode = fullName;
- while (true) {
- if (ts.isIdentifier(rightNode) || !rightNode.body) {
- return ts.isIdentifier(rightNode) ? rightNode : rightNode.name;
- }
- rightNode = rightNode.body;
- }
- }
- }
- function escapedTextsEqual(a, b) {
- while (!ts.isIdentifier(a) || !ts.isIdentifier(b)) {
- if (!ts.isIdentifier(a) && !ts.isIdentifier(b) && a.right.escapedText === b.right.escapedText) {
- a = a.left;
- b = b.left;
- }
- else {
- return false;
- }
- }
- return a.escapedText === b.escapedText;
- }
- function parseChildPropertyTag(indent) {
- return parseChildParameterOrPropertyTag(1, indent);
- }
- function parseChildParameterOrPropertyTag(target, indent, name) {
- var canParseTag = true;
- var seenAsterisk = false;
- while (true) {
- switch (nextTokenJSDoc()) {
- case 59:
- if (canParseTag) {
- var child = tryParseChildTag(target, indent);
- if (child && (child.kind === 317 || child.kind === 323) &&
- target !== 4 &&
- name && (ts.isIdentifier(child.name) || !escapedTextsEqual(name, child.name.left))) {
- return false;
- }
- return child;
- }
- seenAsterisk = false;
- break;
- case 4:
- canParseTag = true;
- seenAsterisk = false;
- break;
- case 41:
- if (seenAsterisk) {
- canParseTag = false;
- }
- seenAsterisk = true;
- break;
- case 75:
- canParseTag = false;
- break;
- case 1:
- return false;
- }
- }
- }
- function tryParseChildTag(target, indent) {
- ts.Debug.assert(token() === 59);
- var start = scanner.getStartPos();
- nextTokenJSDoc();
- var tagName = parseJSDocIdentifierName();
- skipWhitespace();
- var t;
- switch (tagName.escapedText) {
- case "type":
- return target === 1 && parseTypeTag(start, tagName);
- case "prop":
- case "property":
- t = 1;
- break;
- case "arg":
- case "argument":
- case "param":
- t = 2 | 4;
- break;
- default:
- return false;
- }
- if (!(target & t)) {
- return false;
- }
- return parseParameterOrPropertyTag(start, tagName, target, indent);
- }
- function parseTemplateTag(start, tagName) {
- var constraint;
- if (token() === 18) {
- constraint = parseJSDocTypeExpression();
- }
- var typeParameters = [];
- var typeParametersPos = getNodePos();
- do {
- skipWhitespace();
- var typeParameter = createNode(155);
- typeParameter.name = parseJSDocIdentifierName(ts.Diagnostics.Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces);
- finishNode(typeParameter);
- skipWhitespaceOrAsterisk();
- typeParameters.push(typeParameter);
- } while (parseOptionalJsdoc(27));
- var result = createNode(321, start);
- result.tagName = tagName;
- result.constraint = constraint;
- result.typeParameters = createNodeArray(typeParameters, typeParametersPos);
- finishNode(result);
- return result;
- }
- function parseOptionalJsdoc(t) {
- if (token() === t) {
- nextTokenJSDoc();
- return true;
- }
- return false;
- }
- function parseJSDocEntityName() {
- var entity = parseJSDocIdentifierName();
- if (parseOptional(22)) {
- parseExpected(23);
- }
- while (parseOptional(24)) {
- var name = parseJSDocIdentifierName();
- if (parseOptional(22)) {
- parseExpected(23);
- }
- entity = createQualifiedName(entity, name);
- }
- return entity;
- }
- function parseJSDocIdentifierName(message) {
- if (!ts.tokenIsIdentifierOrKeyword(token())) {
- return createMissingNode(75, !message, message || ts.Diagnostics.Identifier_expected);
- }
- identifierCount++;
- var pos = scanner.getTokenPos();
- var end = scanner.getTextPos();
- var result = createNode(75, pos);
- if (token() !== 75) {
- result.originalKeywordKind = token();
- }
- result.escapedText = ts.escapeLeadingUnderscores(internIdentifier(scanner.getTokenValue()));
- finishNode(result, end);
- nextTokenJSDoc();
- return result;
- }
- }
- })(JSDocParser = Parser.JSDocParser || (Parser.JSDocParser = {}));
- })(Parser || (Parser = {}));
- var IncrementalParser;
- (function (IncrementalParser) {
- function updateSourceFile(sourceFile, newText, textChangeRange, aggressiveChecks) {
- aggressiveChecks = aggressiveChecks || ts.Debug.shouldAssert(2);
- checkChangeRange(sourceFile, newText, textChangeRange, aggressiveChecks);
- if (ts.textChangeRangeIsUnchanged(textChangeRange)) {
- return sourceFile;
- }
- if (sourceFile.statements.length === 0) {
- return Parser.parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, undefined, true, sourceFile.scriptKind);
- }
- var incrementalSourceFile = sourceFile;
- ts.Debug.assert(!incrementalSourceFile.hasBeenIncrementallyParsed);
- incrementalSourceFile.hasBeenIncrementallyParsed = true;
- var oldText = sourceFile.text;
- var syntaxCursor = createSyntaxCursor(sourceFile);
- var changeRange = extendToAffectedRange(sourceFile, textChangeRange);
- checkChangeRange(sourceFile, newText, changeRange, aggressiveChecks);
- ts.Debug.assert(changeRange.span.start <= textChangeRange.span.start);
- ts.Debug.assert(ts.textSpanEnd(changeRange.span) === ts.textSpanEnd(textChangeRange.span));
- ts.Debug.assert(ts.textSpanEnd(ts.textChangeRangeNewSpan(changeRange)) === ts.textSpanEnd(ts.textChangeRangeNewSpan(textChangeRange)));
- var delta = ts.textChangeRangeNewSpan(changeRange).length - changeRange.span.length;
- updateTokenPositionsAndMarkElements(incrementalSourceFile, changeRange.span.start, ts.textSpanEnd(changeRange.span), ts.textSpanEnd(ts.textChangeRangeNewSpan(changeRange)), delta, oldText, newText, aggressiveChecks);
- var result = Parser.parseSourceFile(sourceFile.fileName, newText, sourceFile.languageVersion, syntaxCursor, true, sourceFile.scriptKind);
- result.commentDirectives = getNewCommentDirectives(sourceFile.commentDirectives, result.commentDirectives, changeRange.span.start, ts.textSpanEnd(changeRange.span), delta, oldText, newText, aggressiveChecks);
- return result;
- }
- IncrementalParser.updateSourceFile = updateSourceFile;
- function getNewCommentDirectives(oldDirectives, newDirectives, changeStart, changeRangeOldEnd, delta, oldText, newText, aggressiveChecks) {
- if (!oldDirectives)
- return newDirectives;
- var commentDirectives;
- var addedNewlyScannedDirectives = false;
- for (var _i = 0, oldDirectives_1 = oldDirectives; _i < oldDirectives_1.length; _i++) {
- var directive = oldDirectives_1[_i];
- var range = directive.range, type = directive.type;
- if (range.end < changeStart) {
- commentDirectives = ts.append(commentDirectives, directive);
- }
- else if (range.pos > changeRangeOldEnd) {
- addNewlyScannedDirectives();
- var updatedDirective = {
- range: { pos: range.pos + delta, end: range.end + delta },
- type: type
- };
- commentDirectives = ts.append(commentDirectives, updatedDirective);
- if (aggressiveChecks) {
- ts.Debug.assert(oldText.substring(range.pos, range.end) === newText.substring(updatedDirective.range.pos, updatedDirective.range.end));
- }
- }
- }
- addNewlyScannedDirectives();
- return commentDirectives;
- function addNewlyScannedDirectives() {
- if (addedNewlyScannedDirectives)
- return;
- addedNewlyScannedDirectives = true;
- if (!commentDirectives) {
- commentDirectives = newDirectives;
- }
- else if (newDirectives) {
- commentDirectives.push.apply(commentDirectives, newDirectives);
- }
- }
- }
- function moveElementEntirelyPastChangeRange(element, isArray, delta, oldText, newText, aggressiveChecks) {
- if (isArray) {
- visitArray(element);
- }
- else {
- visitNode(element);
- }
- return;
- function visitNode(node) {
- var text = "";
- if (aggressiveChecks && shouldCheckNode(node)) {
- text = oldText.substring(node.pos, node.end);
- }
- if (node._children) {
- node._children = undefined;
- }
- node.pos += delta;
- node.end += delta;
- if (aggressiveChecks && shouldCheckNode(node)) {
- ts.Debug.assert(text === newText.substring(node.pos, node.end));
- }
- forEachChild(node, visitNode, visitArray);
- if (ts.hasJSDocNodes(node)) {
- for (var _i = 0, _a = node.jsDoc; _i < _a.length; _i++) {
- var jsDocComment = _a[_i];
- visitNode(jsDocComment);
- }
- }
- checkNodePositions(node, aggressiveChecks);
- }
- function visitArray(array) {
- array._children = undefined;
- array.pos += delta;
- array.end += delta;
- for (var _i = 0, array_8 = array; _i < array_8.length; _i++) {
- var node = array_8[_i];
- visitNode(node);
- }
- }
- }
- function shouldCheckNode(node) {
- switch (node.kind) {
- case 10:
- case 8:
- case 75:
- return true;
- }
- return false;
- }
- function adjustIntersectingElement(element, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta) {
- ts.Debug.assert(element.end >= changeStart, "Adjusting an element that was entirely before the change range");
- ts.Debug.assert(element.pos <= changeRangeOldEnd, "Adjusting an element that was entirely after the change range");
- ts.Debug.assert(element.pos <= element.end);
- element.pos = Math.min(element.pos, changeRangeNewEnd);
- if (element.end >= changeRangeOldEnd) {
- element.end += delta;
- }
- else {
- element.end = Math.min(element.end, changeRangeNewEnd);
- }
- ts.Debug.assert(element.pos <= element.end);
- if (element.parent) {
- ts.Debug.assert(element.pos >= element.parent.pos);
- ts.Debug.assert(element.end <= element.parent.end);
- }
- }
- function checkNodePositions(node, aggressiveChecks) {
- if (aggressiveChecks) {
- var pos_2 = node.pos;
- var visitNode_1 = function (child) {
- ts.Debug.assert(child.pos >= pos_2);
- pos_2 = child.end;
- };
- if (ts.hasJSDocNodes(node)) {
- for (var _i = 0, _a = node.jsDoc; _i < _a.length; _i++) {
- var jsDocComment = _a[_i];
- visitNode_1(jsDocComment);
- }
- }
- forEachChild(node, visitNode_1);
- ts.Debug.assert(pos_2 <= node.end);
- }
- }
- function updateTokenPositionsAndMarkElements(sourceFile, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta, oldText, newText, aggressiveChecks) {
- visitNode(sourceFile);
- return;
- function visitNode(child) {
- ts.Debug.assert(child.pos <= child.end);
- if (child.pos > changeRangeOldEnd) {
- moveElementEntirelyPastChangeRange(child, false, delta, oldText, newText, aggressiveChecks);
- return;
- }
- var fullEnd = child.end;
- if (fullEnd >= changeStart) {
- child.intersectsChange = true;
- child._children = undefined;
- adjustIntersectingElement(child, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta);
- forEachChild(child, visitNode, visitArray);
- if (ts.hasJSDocNodes(child)) {
- for (var _i = 0, _a = child.jsDoc; _i < _a.length; _i++) {
- var jsDocComment = _a[_i];
- visitNode(jsDocComment);
- }
- }
- checkNodePositions(child, aggressiveChecks);
- return;
- }
- ts.Debug.assert(fullEnd < changeStart);
- }
- function visitArray(array) {
- ts.Debug.assert(array.pos <= array.end);
- if (array.pos > changeRangeOldEnd) {
- moveElementEntirelyPastChangeRange(array, true, delta, oldText, newText, aggressiveChecks);
- return;
- }
- var fullEnd = array.end;
- if (fullEnd >= changeStart) {
- array.intersectsChange = true;
- array._children = undefined;
- adjustIntersectingElement(array, changeStart, changeRangeOldEnd, changeRangeNewEnd, delta);
- for (var _i = 0, array_9 = array; _i < array_9.length; _i++) {
- var node = array_9[_i];
- visitNode(node);
- }
- return;
- }
- ts.Debug.assert(fullEnd < changeStart);
- }
- }
- function extendToAffectedRange(sourceFile, changeRange) {
- var maxLookahead = 1;
- var start = changeRange.span.start;
- for (var i = 0; start > 0 && i <= maxLookahead; i++) {
- var nearestNode = findNearestNodeStartingBeforeOrAtPosition(sourceFile, start);
- ts.Debug.assert(nearestNode.pos <= start);
- var position = nearestNode.pos;
- start = Math.max(0, position - 1);
- }
- var finalSpan = ts.createTextSpanFromBounds(start, ts.textSpanEnd(changeRange.span));
- var finalLength = changeRange.newLength + (changeRange.span.start - start);
- return ts.createTextChangeRange(finalSpan, finalLength);
- }
- function findNearestNodeStartingBeforeOrAtPosition(sourceFile, position) {
- var bestResult = sourceFile;
- var lastNodeEntirelyBeforePosition;
- forEachChild(sourceFile, visit);
- if (lastNodeEntirelyBeforePosition) {
- var lastChildOfLastEntireNodeBeforePosition = getLastDescendant(lastNodeEntirelyBeforePosition);
- if (lastChildOfLastEntireNodeBeforePosition.pos > bestResult.pos) {
- bestResult = lastChildOfLastEntireNodeBeforePosition;
- }
- }
- return bestResult;
- function getLastDescendant(node) {
- while (true) {
- var lastChild = ts.getLastChild(node);
- if (lastChild) {
- node = lastChild;
- }
- else {
- return node;
- }
- }
- }
- function visit(child) {
- if (ts.nodeIsMissing(child)) {
- return;
- }
- if (child.pos <= position) {
- if (child.pos >= bestResult.pos) {
- bestResult = child;
- }
- if (position < child.end) {
- forEachChild(child, visit);
- return true;
- }
- else {
- ts.Debug.assert(child.end <= position);
- lastNodeEntirelyBeforePosition = child;
- }
- }
- else {
- ts.Debug.assert(child.pos > position);
- return true;
- }
- }
- }
- function checkChangeRange(sourceFile, newText, textChangeRange, aggressiveChecks) {
- var oldText = sourceFile.text;
- if (textChangeRange) {
- ts.Debug.assert((oldText.length - textChangeRange.span.length + textChangeRange.newLength) === newText.length);
- if (aggressiveChecks || ts.Debug.shouldAssert(3)) {
- var oldTextPrefix = oldText.substr(0, textChangeRange.span.start);
- var newTextPrefix = newText.substr(0, textChangeRange.span.start);
- ts.Debug.assert(oldTextPrefix === newTextPrefix);
- var oldTextSuffix = oldText.substring(ts.textSpanEnd(textChangeRange.span), oldText.length);
- var newTextSuffix = newText.substring(ts.textSpanEnd(ts.textChangeRangeNewSpan(textChangeRange)), newText.length);
- ts.Debug.assert(oldTextSuffix === newTextSuffix);
- }
- }
- }
- function createSyntaxCursor(sourceFile) {
- var currentArray = sourceFile.statements;
- var currentArrayIndex = 0;
- ts.Debug.assert(currentArrayIndex < currentArray.length);
- var current = currentArray[currentArrayIndex];
- var lastQueriedPosition = -1;
- return {
- currentNode: function (position) {
- if (position !== lastQueriedPosition) {
- if (current && current.end === position && currentArrayIndex < (currentArray.length - 1)) {
- currentArrayIndex++;
- current = currentArray[currentArrayIndex];
- }
- if (!current || current.pos !== position) {
- findHighestListElementThatStartsAtPosition(position);
- }
- }
- lastQueriedPosition = position;
- ts.Debug.assert(!current || current.pos === position);
- return current;
- }
- };
- function findHighestListElementThatStartsAtPosition(position) {
- currentArray = undefined;
- currentArrayIndex = -1;
- current = undefined;
- forEachChild(sourceFile, visitNode, visitArray);
- return;
- function visitNode(node) {
- if (position >= node.pos && position < node.end) {
- forEachChild(node, visitNode, visitArray);
- return true;
- }
- return false;
- }
- function visitArray(array) {
- if (position >= array.pos && position < array.end) {
- for (var i = 0; i < array.length; i++) {
- var child = array[i];
- if (child) {
- if (child.pos === position) {
- currentArray = array;
- currentArrayIndex = i;
- current = child;
- return true;
- }
- else {
- if (child.pos < position && position < child.end) {
- forEachChild(child, visitNode, visitArray);
- return true;
- }
- }
- }
- }
- }
- return false;
- }
- }
- }
- })(IncrementalParser || (IncrementalParser = {}));
- function isDeclarationFileName(fileName) {
- return ts.fileExtensionIs(fileName, ".d.ts");
- }
- ts.isDeclarationFileName = isDeclarationFileName;
- function processCommentPragmas(context, sourceText) {
- var pragmas = [];
- for (var _i = 0, _a = ts.getLeadingCommentRanges(sourceText, 0) || ts.emptyArray; _i < _a.length; _i++) {
- var range = _a[_i];
- var comment = sourceText.substring(range.pos, range.end);
- extractPragmas(pragmas, range, comment);
- }
- context.pragmas = ts.createMap();
- for (var _b = 0, pragmas_1 = pragmas; _b < pragmas_1.length; _b++) {
- var pragma = pragmas_1[_b];
- if (context.pragmas.has(pragma.name)) {
- var currentValue = context.pragmas.get(pragma.name);
- if (currentValue instanceof Array) {
- currentValue.push(pragma.args);
- }
- else {
- context.pragmas.set(pragma.name, [currentValue, pragma.args]);
- }
- continue;
- }
- context.pragmas.set(pragma.name, pragma.args);
- }
- }
- ts.processCommentPragmas = processCommentPragmas;
- function processPragmasIntoFields(context, reportDiagnostic) {
- context.checkJsDirective = undefined;
- context.referencedFiles = [];
- context.typeReferenceDirectives = [];
- context.libReferenceDirectives = [];
- context.amdDependencies = [];
- context.hasNoDefaultLib = false;
- context.pragmas.forEach(function (entryOrList, key) {
- switch (key) {
- case "reference": {
- var referencedFiles_1 = context.referencedFiles;
- var typeReferenceDirectives_1 = context.typeReferenceDirectives;
- var libReferenceDirectives_1 = context.libReferenceDirectives;
- ts.forEach(ts.toArray(entryOrList), function (arg) {
- var _a = arg.arguments, types = _a.types, lib = _a.lib, path = _a.path;
- if (arg.arguments["no-default-lib"]) {
- context.hasNoDefaultLib = true;
- }
- else if (types) {
- typeReferenceDirectives_1.push({ pos: types.pos, end: types.end, fileName: types.value });
- }
- else if (lib) {
- libReferenceDirectives_1.push({ pos: lib.pos, end: lib.end, fileName: lib.value });
- }
- else if (path) {
- referencedFiles_1.push({ pos: path.pos, end: path.end, fileName: path.value });
- }
- else {
- reportDiagnostic(arg.range.pos, arg.range.end - arg.range.pos, ts.Diagnostics.Invalid_reference_directive_syntax);
- }
- });
- break;
- }
- case "amd-dependency": {
- context.amdDependencies = ts.map(ts.toArray(entryOrList), function (x) { return ({ name: x.arguments.name, path: x.arguments.path }); });
- break;
- }
- case "amd-module": {
- if (entryOrList instanceof Array) {
- for (var _i = 0, entryOrList_1 = entryOrList; _i < entryOrList_1.length; _i++) {
- var entry = entryOrList_1[_i];
- if (context.moduleName) {
- reportDiagnostic(entry.range.pos, entry.range.end - entry.range.pos, ts.Diagnostics.An_AMD_module_cannot_have_multiple_name_assignments);
- }
- context.moduleName = entry.arguments.name;
- }
- }
- else {
- context.moduleName = entryOrList.arguments.name;
- }
- break;
- }
- case "ts-nocheck":
- case "ts-check": {
- ts.forEach(ts.toArray(entryOrList), function (entry) {
- if (!context.checkJsDirective || entry.range.pos > context.checkJsDirective.pos) {
- context.checkJsDirective = {
- enabled: key === "ts-check",
- end: entry.range.end,
- pos: entry.range.pos
- };
- }
- });
- break;
- }
- case "jsx": return;
- default: ts.Debug.fail("Unhandled pragma kind");
- }
- });
- }
- ts.processPragmasIntoFields = processPragmasIntoFields;
- var namedArgRegExCache = ts.createMap();
- function getNamedArgRegEx(name) {
- if (namedArgRegExCache.has(name)) {
- return namedArgRegExCache.get(name);
- }
- var result = new RegExp("(\\s" + name + "\\s*=\\s*)('|\")(.+?)\\2", "im");
- namedArgRegExCache.set(name, result);
- return result;
- }
- var tripleSlashXMLCommentStartRegEx = /^\/\/\/\s*<(\S+)\s.*?\/>/im;
- var singleLinePragmaRegEx = /^\/\/\/?\s*@(\S+)\s*(.*)\s*$/im;
- function extractPragmas(pragmas, range, text) {
- var tripleSlash = range.kind === 2 && tripleSlashXMLCommentStartRegEx.exec(text);
- if (tripleSlash) {
- var name = tripleSlash[1].toLowerCase();
- var pragma = ts.commentPragmas[name];
- if (!pragma || !(pragma.kind & 1)) {
- return;
- }
- if (pragma.args) {
- var argument = {};
- for (var _i = 0, _a = pragma.args; _i < _a.length; _i++) {
- var arg = _a[_i];
- var matcher = getNamedArgRegEx(arg.name);
- var matchResult = matcher.exec(text);
- if (!matchResult && !arg.optional) {
- return;
- }
- else if (matchResult) {
- if (arg.captureSpan) {
- var startPos = range.pos + matchResult.index + matchResult[1].length + matchResult[2].length;
- argument[arg.name] = {
- value: matchResult[3],
- pos: startPos,
- end: startPos + matchResult[3].length
- };
- }
- else {
- argument[arg.name] = matchResult[3];
- }
- }
- }
- pragmas.push({ name: name, args: { arguments: argument, range: range } });
- }
- else {
- pragmas.push({ name: name, args: { arguments: {}, range: range } });
- }
- return;
- }
- var singleLine = range.kind === 2 && singleLinePragmaRegEx.exec(text);
- if (singleLine) {
- return addPragmaForMatch(pragmas, range, 2, singleLine);
- }
- if (range.kind === 3) {
- var multiLinePragmaRegEx = /\s*@(\S+)\s*(.*)\s*$/gim;
- var multiLineMatch = void 0;
- while (multiLineMatch = multiLinePragmaRegEx.exec(text)) {
- addPragmaForMatch(pragmas, range, 4, multiLineMatch);
- }
- }
- }
- function addPragmaForMatch(pragmas, range, kind, match) {
- if (!match)
- return;
- var name = match[1].toLowerCase();
- var pragma = ts.commentPragmas[name];
- if (!pragma || !(pragma.kind & kind)) {
- return;
- }
- var args = match[2];
- var argument = getNamedPragmaArguments(pragma, args);
- if (argument === "fail")
- return;
- pragmas.push({ name: name, args: { arguments: argument, range: range } });
- return;
- }
- function getNamedPragmaArguments(pragma, text) {
- if (!text)
- return {};
- if (!pragma.args)
- return {};
- var args = text.split(/\s+/);
- var argMap = {};
- for (var i = 0; i < pragma.args.length; i++) {
- var argument = pragma.args[i];
- if (!args[i] && !argument.optional) {
- return "fail";
- }
- if (argument.captureSpan) {
- return ts.Debug.fail("Capture spans not yet implemented for non-xml pragmas");
- }
- argMap[argument.name] = args[i];
- }
- return argMap;
- }
- function tagNamesAreEquivalent(lhs, rhs) {
- if (lhs.kind !== rhs.kind) {
- return false;
- }
- if (lhs.kind === 75) {
- return lhs.escapedText === rhs.escapedText;
- }
- if (lhs.kind === 104) {
- return true;
- }
- return lhs.name.escapedText === rhs.name.escapedText &&
- tagNamesAreEquivalent(lhs.expression, rhs.expression);
- }
- ts.tagNamesAreEquivalent = tagNamesAreEquivalent;
-})(ts || (ts = {}));
-var ts;
-(function (ts) {
- ts.compileOnSaveCommandLineOption = { name: "compileOnSave", type: "boolean" };
- var libEntries = [
- ["es5", "lib.es5.d.ts"],
- ["es6", "lib.es2015.d.ts"],
- ["es2015", "lib.es2015.d.ts"],
- ["es7", "lib.es2016.d.ts"],
- ["es2016", "lib.es2016.d.ts"],
- ["es2017", "lib.es2017.d.ts"],
- ["es2018", "lib.es2018.d.ts"],
- ["es2019", "lib.es2019.d.ts"],
- ["es2020", "lib.es2020.d.ts"],
- ["esnext", "lib.esnext.d.ts"],
- ["dom", "lib.dom.d.ts"],
- ["dom.iterable", "lib.dom.iterable.d.ts"],
- ["webworker", "lib.webworker.d.ts"],
- ["webworker.importscripts", "lib.webworker.importscripts.d.ts"],
- ["scripthost", "lib.scripthost.d.ts"],
- ["es2015.core", "lib.es2015.core.d.ts"],
- ["es2015.collection", "lib.es2015.collection.d.ts"],
- ["es2015.generator", "lib.es2015.generator.d.ts"],
- ["es2015.iterable", "lib.es2015.iterable.d.ts"],
- ["es2015.promise", "lib.es2015.promise.d.ts"],
- ["es2015.proxy", "lib.es2015.proxy.d.ts"],
- ["es2015.reflect", "lib.es2015.reflect.d.ts"],
- ["es2015.symbol", "lib.es2015.symbol.d.ts"],
- ["es2015.symbol.wellknown", "lib.es2015.symbol.wellknown.d.ts"],
- ["es2016.array.include", "lib.es2016.array.include.d.ts"],
- ["es2017.object", "lib.es2017.object.d.ts"],
- ["es2017.sharedmemory", "lib.es2017.sharedmemory.d.ts"],
- ["es2017.string", "lib.es2017.string.d.ts"],
- ["es2017.intl", "lib.es2017.intl.d.ts"],
- ["es2017.typedarrays", "lib.es2017.typedarrays.d.ts"],
- ["es2018.asyncgenerator", "lib.es2018.asyncgenerator.d.ts"],
- ["es2018.asynciterable", "lib.es2018.asynciterable.d.ts"],
- ["es2018.intl", "lib.es2018.intl.d.ts"],
- ["es2018.promise", "lib.es2018.promise.d.ts"],
- ["es2018.regexp", "lib.es2018.regexp.d.ts"],
- ["es2019.array", "lib.es2019.array.d.ts"],
- ["es2019.object", "lib.es2019.object.d.ts"],
- ["es2019.string", "lib.es2019.string.d.ts"],
- ["es2019.symbol", "lib.es2019.symbol.d.ts"],
- ["es2020.bigint", "lib.es2020.bigint.d.ts"],
- ["es2020.promise", "lib.es2020.promise.d.ts"],
- ["es2020.string", "lib.es2020.string.d.ts"],
- ["es2020.symbol.wellknown", "lib.es2020.symbol.wellknown.d.ts"],
- ["esnext.array", "lib.es2019.array.d.ts"],
- ["esnext.symbol", "lib.es2019.symbol.d.ts"],
- ["esnext.asynciterable", "lib.es2018.asynciterable.d.ts"],
- ["esnext.intl", "lib.esnext.intl.d.ts"],
- ["esnext.bigint", "lib.es2020.bigint.d.ts"],
- ["esnext.string", "lib.esnext.string.d.ts"],
- ["esnext.promise", "lib.esnext.promise.d.ts"]
- ];
- ts.libs = libEntries.map(function (entry) { return entry[0]; });
- ts.libMap = ts.createMapFromEntries(libEntries);
- ts.optionsForWatch = [
- {
- name: "watchFile",
- type: ts.createMapFromTemplate({
- fixedpollinginterval: ts.WatchFileKind.FixedPollingInterval,
- prioritypollinginterval: ts.WatchFileKind.PriorityPollingInterval,
- dynamicprioritypolling: ts.WatchFileKind.DynamicPriorityPolling,
- usefsevents: ts.WatchFileKind.UseFsEvents,
- usefseventsonparentdirectory: ts.WatchFileKind.UseFsEventsOnParentDirectory,
- }),
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Specify_strategy_for_watching_file_Colon_FixedPollingInterval_default_PriorityPollingInterval_DynamicPriorityPolling_UseFsEvents_UseFsEventsOnParentDirectory,
- },
- {
- name: "watchDirectory",
- type: ts.createMapFromTemplate({
- usefsevents: ts.WatchDirectoryKind.UseFsEvents,
- fixedpollinginterval: ts.WatchDirectoryKind.FixedPollingInterval,
- dynamicprioritypolling: ts.WatchDirectoryKind.DynamicPriorityPolling,
- }),
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Specify_strategy_for_watching_directory_on_platforms_that_don_t_support_recursive_watching_natively_Colon_UseFsEvents_default_FixedPollingInterval_DynamicPriorityPolling,
- },
- {
- name: "fallbackPolling",
- type: ts.createMapFromTemplate({
- fixedinterval: ts.PollingWatchKind.FixedInterval,
- priorityinterval: ts.PollingWatchKind.PriorityInterval,
- dynamicpriority: ts.PollingWatchKind.DynamicPriority,
- }),
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Specify_strategy_for_creating_a_polling_watch_when_it_fails_to_create_using_file_system_events_Colon_FixedInterval_default_PriorityInterval_DynamicPriority,
- },
- {
- name: "synchronousWatchDirectory",
- type: "boolean",
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Synchronously_call_callbacks_and_update_the_state_of_directory_watchers_on_platforms_that_don_t_support_recursive_watching_natively,
- },
- ];
- ts.commonOptionsWithBuild = [
- {
- name: "help",
- shortName: "h",
- type: "boolean",
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Command_line_Options,
- description: ts.Diagnostics.Print_this_message,
- },
- {
- name: "help",
- shortName: "?",
- type: "boolean"
- },
- {
- name: "watch",
- shortName: "w",
- type: "boolean",
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Command_line_Options,
- description: ts.Diagnostics.Watch_input_files,
- },
- {
- name: "preserveWatchOutput",
- type: "boolean",
- showInSimplifiedHelpView: false,
- category: ts.Diagnostics.Command_line_Options,
- description: ts.Diagnostics.Whether_to_keep_outdated_console_output_in_watch_mode_instead_of_clearing_the_screen,
- },
- {
- name: "listFiles",
- type: "boolean",
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Print_names_of_files_part_of_the_compilation
- },
- {
- name: "listEmittedFiles",
- type: "boolean",
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Print_names_of_generated_files_part_of_the_compilation
- },
- {
- name: "pretty",
- type: "boolean",
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Command_line_Options,
- description: ts.Diagnostics.Stylize_errors_and_messages_using_color_and_context_experimental
- },
- {
- name: "traceResolution",
- type: "boolean",
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Enable_tracing_of_the_name_resolution_process
- },
- {
- name: "diagnostics",
- type: "boolean",
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Show_diagnostic_information
- },
- {
- name: "extendedDiagnostics",
- type: "boolean",
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Show_verbose_diagnostic_information
- },
- {
- name: "generateCpuProfile",
- type: "string",
- isFilePath: true,
- paramType: ts.Diagnostics.FILE_OR_DIRECTORY,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Generates_a_CPU_profile
- },
- {
- name: "incremental",
- shortName: "i",
- type: "boolean",
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Enable_incremental_compilation,
- transpileOptionValue: undefined
- },
- {
- name: "assumeChangesOnlyAffectDirectDependencies",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- affectsEmit: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Have_recompiles_in_incremental_and_watch_assume_that_changes_within_a_file_will_only_affect_files_directly_depending_on_it
- },
- {
- name: "locale",
- type: "string",
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.The_locale_used_when_displaying_messages_to_the_user_e_g_en_us
- },
- ];
- ts.optionDeclarations = __spreadArrays(ts.commonOptionsWithBuild, [
- {
- name: "all",
- type: "boolean",
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Command_line_Options,
- description: ts.Diagnostics.Show_all_compiler_options,
- },
- {
- name: "version",
- shortName: "v",
- type: "boolean",
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Command_line_Options,
- description: ts.Diagnostics.Print_the_compiler_s_version,
- },
- {
- name: "init",
- type: "boolean",
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Command_line_Options,
- description: ts.Diagnostics.Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file,
- },
- {
- name: "project",
- shortName: "p",
- type: "string",
- isFilePath: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Command_line_Options,
- paramType: ts.Diagnostics.FILE_OR_DIRECTORY,
- description: ts.Diagnostics.Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json,
- },
- {
- name: "build",
- type: "boolean",
- shortName: "b",
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Command_line_Options,
- description: ts.Diagnostics.Build_one_or_more_projects_and_their_dependencies_if_out_of_date
- },
- {
- name: "showConfig",
- type: "boolean",
- category: ts.Diagnostics.Command_line_Options,
- isCommandLineOnly: true,
- description: ts.Diagnostics.Print_the_final_configuration_instead_of_building
- },
- {
- name: "listFilesOnly",
- type: "boolean",
- category: ts.Diagnostics.Command_line_Options,
- affectsSemanticDiagnostics: true,
- affectsEmit: true,
- isCommandLineOnly: true,
- description: ts.Diagnostics.Print_names_of_files_that_are_part_of_the_compilation_and_then_stop_processing
- },
- {
- name: "target",
- shortName: "t",
- type: ts.createMapFromTemplate({
- es3: 0,
- es5: 1,
- es6: 2,
- es2015: 2,
- es2016: 3,
- es2017: 4,
- es2018: 5,
- es2019: 6,
- es2020: 7,
- esnext: 99,
- }),
- affectsSourceFile: true,
- affectsModuleResolution: true,
- affectsEmit: true,
- paramType: ts.Diagnostics.VERSION,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_ES2019_ES2020_or_ESNEXT,
- },
- {
- name: "module",
- shortName: "m",
- type: ts.createMapFromTemplate({
- none: ts.ModuleKind.None,
- commonjs: ts.ModuleKind.CommonJS,
- amd: ts.ModuleKind.AMD,
- system: ts.ModuleKind.System,
- umd: ts.ModuleKind.UMD,
- es6: ts.ModuleKind.ES2015,
- es2015: ts.ModuleKind.ES2015,
- es2020: ts.ModuleKind.ES2020,
- esnext: ts.ModuleKind.ESNext
- }),
- affectsModuleResolution: true,
- affectsEmit: true,
- paramType: ts.Diagnostics.KIND,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Specify_module_code_generation_Colon_none_commonjs_amd_system_umd_es2015_es2020_or_ESNext,
- },
- {
- name: "lib",
- type: "list",
- element: {
- name: "lib",
- type: ts.libMap
- },
- affectsModuleResolution: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Specify_library_files_to_be_included_in_the_compilation,
- transpileOptionValue: undefined
- },
- {
- name: "allowJs",
- type: "boolean",
- affectsModuleResolution: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Allow_javascript_files_to_be_compiled
- },
- {
- name: "checkJs",
- type: "boolean",
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Report_errors_in_js_files
- },
- {
- name: "jsx",
- type: ts.createMapFromTemplate({
- "preserve": 1,
- "react-native": 3,
- "react": 2
- }),
- affectsSourceFile: true,
- paramType: ts.Diagnostics.KIND,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Specify_JSX_code_generation_Colon_preserve_react_native_or_react,
- },
- {
- name: "declaration",
- shortName: "d",
- type: "boolean",
- affectsEmit: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Generates_corresponding_d_ts_file,
- transpileOptionValue: undefined
- },
- {
- name: "declarationMap",
- type: "boolean",
- affectsEmit: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Generates_a_sourcemap_for_each_corresponding_d_ts_file,
- transpileOptionValue: undefined
- },
- {
- name: "emitDeclarationOnly",
- type: "boolean",
- affectsEmit: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Only_emit_d_ts_declaration_files,
- transpileOptionValue: undefined
- },
- {
- name: "sourceMap",
- type: "boolean",
- affectsEmit: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Generates_corresponding_map_file,
- },
- {
- name: "outFile",
- type: "string",
- affectsEmit: true,
- isFilePath: true,
- paramType: ts.Diagnostics.FILE,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Concatenate_and_emit_output_to_single_file,
- transpileOptionValue: undefined
- },
- {
- name: "outDir",
- type: "string",
- affectsEmit: true,
- isFilePath: true,
- paramType: ts.Diagnostics.DIRECTORY,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Redirect_output_structure_to_the_directory,
- },
- {
- name: "rootDir",
- type: "string",
- affectsEmit: true,
- isFilePath: true,
- paramType: ts.Diagnostics.LOCATION,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir,
- },
- {
- name: "composite",
- type: "boolean",
- affectsEmit: true,
- isTSConfigOnly: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Enable_project_compilation,
- transpileOptionValue: undefined
- },
- {
- name: "tsBuildInfoFile",
- type: "string",
- affectsEmit: true,
- isFilePath: true,
- paramType: ts.Diagnostics.FILE,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Specify_file_to_store_incremental_compilation_information,
- transpileOptionValue: undefined
- },
- {
- name: "removeComments",
- type: "boolean",
- affectsEmit: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Do_not_emit_comments_to_output,
- },
- {
- name: "noEmit",
- type: "boolean",
- affectsEmit: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Do_not_emit_outputs,
- transpileOptionValue: undefined
- },
- {
- name: "importHelpers",
- type: "boolean",
- affectsEmit: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Import_emit_helpers_from_tslib
- },
- {
- name: "importsNotUsedAsValues",
- type: ts.createMapFromTemplate({
- remove: 0,
- preserve: 1,
- error: 2
- }),
- affectsEmit: true,
- affectsSemanticDiagnostics: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Specify_emit_Slashchecking_behavior_for_imports_that_are_only_used_for_types
- },
- {
- name: "downlevelIteration",
- type: "boolean",
- affectsEmit: true,
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Provide_full_support_for_iterables_in_for_of_spread_and_destructuring_when_targeting_ES5_or_ES3
- },
- {
- name: "isolatedModules",
- type: "boolean",
- category: ts.Diagnostics.Basic_Options,
- description: ts.Diagnostics.Transpile_each_file_as_a_separate_module_similar_to_ts_transpileModule,
- transpileOptionValue: true
- },
- {
- name: "strict",
- type: "boolean",
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Strict_Type_Checking_Options,
- description: ts.Diagnostics.Enable_all_strict_type_checking_options
- },
- {
- name: "noImplicitAny",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- strictFlag: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Strict_Type_Checking_Options,
- description: ts.Diagnostics.Raise_error_on_expressions_and_declarations_with_an_implied_any_type
- },
- {
- name: "strictNullChecks",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- strictFlag: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Strict_Type_Checking_Options,
- description: ts.Diagnostics.Enable_strict_null_checks
- },
- {
- name: "strictFunctionTypes",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- strictFlag: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Strict_Type_Checking_Options,
- description: ts.Diagnostics.Enable_strict_checking_of_function_types
- },
- {
- name: "strictBindCallApply",
- type: "boolean",
- strictFlag: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Strict_Type_Checking_Options,
- description: ts.Diagnostics.Enable_strict_bind_call_and_apply_methods_on_functions
- },
- {
- name: "strictPropertyInitialization",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- strictFlag: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Strict_Type_Checking_Options,
- description: ts.Diagnostics.Enable_strict_checking_of_property_initialization_in_classes
- },
- {
- name: "noImplicitThis",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- strictFlag: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Strict_Type_Checking_Options,
- description: ts.Diagnostics.Raise_error_on_this_expressions_with_an_implied_any_type,
- },
- {
- name: "alwaysStrict",
- type: "boolean",
- affectsSourceFile: true,
- strictFlag: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Strict_Type_Checking_Options,
- description: ts.Diagnostics.Parse_in_strict_mode_and_emit_use_strict_for_each_source_file
- },
- {
- name: "noUnusedLocals",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Additional_Checks,
- description: ts.Diagnostics.Report_errors_on_unused_locals,
- },
- {
- name: "noUnusedParameters",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Additional_Checks,
- description: ts.Diagnostics.Report_errors_on_unused_parameters,
- },
- {
- name: "noImplicitReturns",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Additional_Checks,
- description: ts.Diagnostics.Report_error_when_not_all_code_paths_in_function_return_a_value
- },
- {
- name: "noFallthroughCasesInSwitch",
- type: "boolean",
- affectsBindDiagnostics: true,
- affectsSemanticDiagnostics: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Additional_Checks,
- description: ts.Diagnostics.Report_errors_for_fallthrough_cases_in_switch_statement
- },
- {
- name: "moduleResolution",
- type: ts.createMapFromTemplate({
- node: ts.ModuleResolutionKind.NodeJs,
- classic: ts.ModuleResolutionKind.Classic,
- }),
- affectsModuleResolution: true,
- paramType: ts.Diagnostics.STRATEGY,
- category: ts.Diagnostics.Module_Resolution_Options,
- description: ts.Diagnostics.Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6,
- },
- {
- name: "baseUrl",
- type: "string",
- affectsModuleResolution: true,
- isFilePath: true,
- category: ts.Diagnostics.Module_Resolution_Options,
- description: ts.Diagnostics.Base_directory_to_resolve_non_absolute_module_names
- },
- {
- name: "paths",
- type: "object",
- affectsModuleResolution: true,
- isTSConfigOnly: true,
- category: ts.Diagnostics.Module_Resolution_Options,
- description: ts.Diagnostics.A_series_of_entries_which_re_map_imports_to_lookup_locations_relative_to_the_baseUrl,
- transpileOptionValue: undefined
- },
- {
- name: "rootDirs",
- type: "list",
- isTSConfigOnly: true,
- element: {
- name: "rootDirs",
- type: "string",
- isFilePath: true
- },
- affectsModuleResolution: true,
- category: ts.Diagnostics.Module_Resolution_Options,
- description: ts.Diagnostics.List_of_root_folders_whose_combined_content_represents_the_structure_of_the_project_at_runtime,
- transpileOptionValue: undefined
- },
- {
- name: "typeRoots",
- type: "list",
- element: {
- name: "typeRoots",
- type: "string",
- isFilePath: true
- },
- affectsModuleResolution: true,
- category: ts.Diagnostics.Module_Resolution_Options,
- description: ts.Diagnostics.List_of_folders_to_include_type_definitions_from
- },
- {
- name: "types",
- type: "list",
- element: {
- name: "types",
- type: "string"
- },
- affectsModuleResolution: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Module_Resolution_Options,
- description: ts.Diagnostics.Type_declaration_files_to_be_included_in_compilation,
- transpileOptionValue: undefined
- },
- {
- name: "allowSyntheticDefaultImports",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- category: ts.Diagnostics.Module_Resolution_Options,
- description: ts.Diagnostics.Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking
- },
- {
- name: "esModuleInterop",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- affectsEmit: true,
- showInSimplifiedHelpView: true,
- category: ts.Diagnostics.Module_Resolution_Options,
- description: ts.Diagnostics.Enables_emit_interoperability_between_CommonJS_and_ES_Modules_via_creation_of_namespace_objects_for_all_imports_Implies_allowSyntheticDefaultImports
- },
- {
- name: "preserveSymlinks",
- type: "boolean",
- category: ts.Diagnostics.Module_Resolution_Options,
- description: ts.Diagnostics.Do_not_resolve_the_real_path_of_symlinks,
- },
- {
- name: "allowUmdGlobalAccess",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- category: ts.Diagnostics.Module_Resolution_Options,
- description: ts.Diagnostics.Allow_accessing_UMD_globals_from_modules,
- },
- {
- name: "sourceRoot",
- type: "string",
- affectsEmit: true,
- paramType: ts.Diagnostics.LOCATION,
- category: ts.Diagnostics.Source_Map_Options,
- description: ts.Diagnostics.Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations,
- },
- {
- name: "mapRoot",
- type: "string",
- affectsEmit: true,
- paramType: ts.Diagnostics.LOCATION,
- category: ts.Diagnostics.Source_Map_Options,
- description: ts.Diagnostics.Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations,
- },
- {
- name: "inlineSourceMap",
- type: "boolean",
- affectsEmit: true,
- category: ts.Diagnostics.Source_Map_Options,
- description: ts.Diagnostics.Emit_a_single_file_with_source_maps_instead_of_having_a_separate_file
- },
- {
- name: "inlineSources",
- type: "boolean",
- affectsEmit: true,
- category: ts.Diagnostics.Source_Map_Options,
- description: ts.Diagnostics.Emit_the_source_alongside_the_sourcemaps_within_a_single_file_requires_inlineSourceMap_or_sourceMap_to_be_set
- },
- {
- name: "experimentalDecorators",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- category: ts.Diagnostics.Experimental_Options,
- description: ts.Diagnostics.Enables_experimental_support_for_ES7_decorators
- },
- {
- name: "emitDecoratorMetadata",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- affectsEmit: true,
- category: ts.Diagnostics.Experimental_Options,
- description: ts.Diagnostics.Enables_experimental_support_for_emitting_type_metadata_for_decorators
- },
- {
- name: "jsxFactory",
- type: "string",
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Specify_the_JSX_factory_function_to_use_when_targeting_react_JSX_emit_e_g_React_createElement_or_h
- },
- {
- name: "resolveJsonModule",
- type: "boolean",
- affectsModuleResolution: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Include_modules_imported_with_json_extension
- },
- {
- name: "out",
- type: "string",
- affectsEmit: true,
- isFilePath: false,
- category: ts.Diagnostics.Advanced_Options,
- paramType: ts.Diagnostics.FILE,
- description: ts.Diagnostics.Deprecated_Use_outFile_instead_Concatenate_and_emit_output_to_single_file,
- transpileOptionValue: undefined
- },
- {
- name: "reactNamespace",
- type: "string",
- affectsEmit: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react_JSX_emit
- },
- {
- name: "skipDefaultLibCheck",
- type: "boolean",
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Deprecated_Use_skipLibCheck_instead_Skip_type_checking_of_default_library_declaration_files
- },
- {
- name: "charset",
- type: "string",
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.The_character_set_of_the_input_files
- },
- {
- name: "emitBOM",
- type: "boolean",
- affectsEmit: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files
- },
- {
- name: "newLine",
- type: ts.createMapFromTemplate({
- crlf: 0,
- lf: 1
- }),
- affectsEmit: true,
- paramType: ts.Diagnostics.NEWLINE,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix,
- },
- {
- name: "noErrorTruncation",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Do_not_truncate_error_messages
- },
- {
- name: "noLib",
- type: "boolean",
- affectsModuleResolution: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Do_not_include_the_default_library_file_lib_d_ts,
- transpileOptionValue: true
- },
- {
- name: "noResolve",
- type: "boolean",
- affectsModuleResolution: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Do_not_add_triple_slash_references_or_imported_modules_to_the_list_of_compiled_files,
- transpileOptionValue: true
- },
- {
- name: "stripInternal",
- type: "boolean",
- affectsEmit: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Do_not_emit_declarations_for_code_that_has_an_internal_annotation,
- },
- {
- name: "disableSizeLimit",
- type: "boolean",
- affectsSourceFile: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Disable_size_limitations_on_JavaScript_projects
- },
- {
- name: "disableSourceOfProjectReferenceRedirect",
- type: "boolean",
- isTSConfigOnly: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Disable_use_of_source_files_instead_of_declaration_files_from_referenced_projects
- },
- {
- name: "disableSolutionSearching",
- type: "boolean",
- isTSConfigOnly: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Disable_solution_searching_for_this_project
- },
- {
- name: "noImplicitUseStrict",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Do_not_emit_use_strict_directives_in_module_output
- },
- {
- name: "noEmitHelpers",
- type: "boolean",
- affectsEmit: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Do_not_generate_custom_helper_functions_like_extends_in_compiled_output
- },
- {
- name: "noEmitOnError",
- type: "boolean",
- affectsEmit: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Do_not_emit_outputs_if_any_errors_were_reported,
- transpileOptionValue: undefined
- },
- {
- name: "preserveConstEnums",
- type: "boolean",
- affectsEmit: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Do_not_erase_const_enum_declarations_in_generated_code
- },
- {
- name: "declarationDir",
- type: "string",
- affectsEmit: true,
- isFilePath: true,
- paramType: ts.Diagnostics.DIRECTORY,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Output_directory_for_generated_declaration_files,
- transpileOptionValue: undefined
- },
- {
- name: "skipLibCheck",
- type: "boolean",
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Skip_type_checking_of_declaration_files,
- },
- {
- name: "allowUnusedLabels",
- type: "boolean",
- affectsBindDiagnostics: true,
- affectsSemanticDiagnostics: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Do_not_report_errors_on_unused_labels
- },
- {
- name: "allowUnreachableCode",
- type: "boolean",
- affectsBindDiagnostics: true,
- affectsSemanticDiagnostics: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Do_not_report_errors_on_unreachable_code
- },
- {
- name: "suppressExcessPropertyErrors",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Suppress_excess_property_checks_for_object_literals,
- },
- {
- name: "suppressImplicitAnyIndexErrors",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures,
- },
- {
- name: "forceConsistentCasingInFileNames",
- type: "boolean",
- affectsModuleResolution: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Disallow_inconsistently_cased_references_to_the_same_file
- },
- {
- name: "maxNodeModuleJsDepth",
- type: "number",
- affectsModuleResolution: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files
- },
- {
- name: "noStrictGenericChecks",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Disable_strict_checking_of_generic_signatures_in_function_types,
- },
- {
- name: "useDefineForClassFields",
- type: "boolean",
- affectsSemanticDiagnostics: true,
- affectsEmit: true,
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Emit_class_fields_with_Define_instead_of_Set,
- },
- {
- name: "keyofStringsOnly",
- type: "boolean",
- category: ts.Diagnostics.Advanced_Options,
- description: ts.Diagnostics.Resolve_keyof_to_string_valued_property_names_only_no_numbers_or_symbols,
- },
- {
- name: "plugins",
- type: "list",
- isTSConfigOnly: true,
- element: {
- name: "plugin",
- type: "object"
- },
- description: ts.Diagnostics.List_of_language_service_plugins
- },
- ]);
- ts.semanticDiagnosticsOptionDeclarations = ts.optionDeclarations.filter(function (option) { return !!option.affectsSemanticDiagnostics; });
- ts.affectsEmitOptionDeclarations = ts.optionDeclarations.filter(function (option) { return !!option.affectsEmit; });
- ts.moduleResolutionOptionDeclarations = ts.optionDeclarations.filter(function (option) { return !!option.affectsModuleResolution; });
- ts.sourceFileAffectingCompilerOptions = ts.optionDeclarations.filter(function (option) {
- return !!option.affectsSourceFile || !!option.affectsModuleResolution || !!option.affectsBindDiagnostics;
- });
- ts.transpileOptionValueCompilerOptions = ts.optionDeclarations.filter(function (option) {
- return ts.hasProperty(option, "transpileOptionValue");
- });
- ts.buildOpts = __spreadArrays(ts.commonOptionsWithBuild, [
- {
- name: "verbose",
- shortName: "v",
- category: ts.Diagnostics.Command_line_Options,
- description: ts.Diagnostics.Enable_verbose_logging,
- type: "boolean"
- },
- {
- name: "dry",
- shortName: "d",
- category: ts.Diagnostics.Command_line_Options,
- description: ts.Diagnostics.Show_what_would_be_built_or_deleted_if_specified_with_clean,
- type: "boolean"
- },
- {
- name: "force",
- shortName: "f",
- category: ts.Diagnostics.Command_line_Options,
- description: ts.Diagnostics.Build_all_projects_including_those_that_appear_to_be_up_to_date,
- type: "boolean"
- },
- {
- name: "clean",
- category: ts.Diagnostics.Command_line_Options,
- description: ts.Diagnostics.Delete_the_outputs_of_all_projects,
- type: "boolean"
- }
- ]);
- ts.typeAcquisitionDeclarations = [
- {
- name: "enableAutoDiscovery",
- type: "boolean",
- },
- {
- name: "enable",
- type: "boolean",
- },
- {
- name: "include",
- type: "list",
- element: {
- name: "include",
- type: "string"