aboutsummaryrefslogtreecommitdiff
path: root/node_modules/tsutils/util
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/tsutils/util')
-rw-r--r--node_modules/tsutils/util/control-flow.d.ts9
-rw-r--r--node_modules/tsutils/util/control-flow.js178
-rw-r--r--node_modules/tsutils/util/index.d.ts5
-rw-r--r--node_modules/tsutils/util/index.js9
-rw-r--r--node_modules/tsutils/util/type.d.ts9
-rw-r--r--node_modules/tsutils/util/type.js143
-rw-r--r--node_modules/tsutils/util/usage.d.ts30
-rw-r--r--node_modules/tsutils/util/usage.js704
-rw-r--r--node_modules/tsutils/util/util.d.ts121
-rw-r--r--node_modules/tsutils/util/util.js1109
10 files changed, 0 insertions, 2317 deletions
diff --git a/node_modules/tsutils/util/control-flow.d.ts b/node_modules/tsutils/util/control-flow.d.ts
deleted file mode 100644
index f7c101d82..000000000
--- a/node_modules/tsutils/util/control-flow.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as ts from 'typescript';
-export declare function endsControlFlow(statement: ts.Statement | ts.BlockLike): boolean;
-export declare type ControlFlowStatement = ts.BreakStatement | ts.ContinueStatement | ts.ReturnStatement | ts.ThrowStatement;
-export interface ControlFlowEnd {
- readonly statements: ReadonlyArray<ControlFlowStatement>;
- readonly end: boolean;
-}
-export declare function getControlFlowEnd(statement: ts.Statement | ts.BlockLike): ControlFlowEnd;
-export declare function getControlFlowEnd(statement: ts.Statement | ts.BlockLike, label?: ts.Identifier): ControlFlowEnd;
diff --git a/node_modules/tsutils/util/control-flow.js b/node_modules/tsutils/util/control-flow.js
deleted file mode 100644
index 592244f6a..000000000
--- a/node_modules/tsutils/util/control-flow.js
+++ /dev/null
@@ -1,178 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-var ts = require("typescript");
-var node_1 = require("../typeguard/node");
-function endsControlFlow(statement) {
- return getControlFlowEnd(statement).end;
-}
-exports.endsControlFlow = endsControlFlow;
-var defaultControlFlowEnd = { statements: [], end: false };
-function getControlFlowEnd(statement) {
- return node_1.isBlockLike(statement) ? handleBlock(statement) : getControlFlowEndWorker(statement);
-}
-exports.getControlFlowEnd = getControlFlowEnd;
-function getControlFlowEndWorker(statement) {
- switch (statement.kind) {
- case ts.SyntaxKind.ReturnStatement:
- case ts.SyntaxKind.ThrowStatement:
- case ts.SyntaxKind.ContinueStatement:
- case ts.SyntaxKind.BreakStatement:
- return { statements: [statement], end: true };
- case ts.SyntaxKind.Block:
- return handleBlock(statement);
- case ts.SyntaxKind.ForStatement:
- case ts.SyntaxKind.WhileStatement:
- return handleForAndWhileStatement(statement);
- case ts.SyntaxKind.ForOfStatement:
- case ts.SyntaxKind.ForInStatement:
- return handleForInOrOfStatement(statement);
- case ts.SyntaxKind.DoStatement:
- return matchBreakOrContinue(getControlFlowEndWorker(statement.statement), node_1.isBreakOrContinueStatement);
- case ts.SyntaxKind.IfStatement:
- return handleIfStatement(statement);
- case ts.SyntaxKind.SwitchStatement:
- return matchBreakOrContinue(handleSwitchStatement(statement), node_1.isBreakStatement);
- case ts.SyntaxKind.TryStatement:
- return handleTryStatement(statement);
- case ts.SyntaxKind.LabeledStatement:
- return matchLabel(getControlFlowEndWorker(statement.statement), statement.label);
- case ts.SyntaxKind.WithStatement:
- return getControlFlowEndWorker(statement.statement);
- default:
- return defaultControlFlowEnd;
- }
-}
-function handleBlock(statement) {
- var _a;
- var result = { statements: [], end: false };
- for (var _i = 0, _b = statement.statements; _i < _b.length; _i++) {
- var s = _b[_i];
- var current = getControlFlowEndWorker(s);
- (_a = result.statements).push.apply(_a, current.statements);
- if (current.end) {
- result.end = true;
- break;
- }
- }
- return result;
-}
-function handleForInOrOfStatement(statement) {
- var end = matchBreakOrContinue(getControlFlowEndWorker(statement.statement), node_1.isBreakOrContinueStatement);
- end.end = false;
- return end;
-}
-function handleForAndWhileStatement(statement) {
- var constantCondition = statement.kind === ts.SyntaxKind.WhileStatement
- ? getConstantCondition(statement.expression)
- : statement.condition === undefined || getConstantCondition(statement.condition);
- if (constantCondition === false)
- return defaultControlFlowEnd;
- var end = matchBreakOrContinue(getControlFlowEndWorker(statement.statement), node_1.isBreakOrContinueStatement);
- if (constantCondition === undefined)
- end.end = false;
- return end;
-}
-function getConstantCondition(node) {
- switch (node.kind) {
- case ts.SyntaxKind.TrueKeyword:
- return true;
- case ts.SyntaxKind.FalseKeyword:
- return false;
- default:
- return;
- }
-}
-function handleIfStatement(node) {
- switch (getConstantCondition(node.expression)) {
- case true:
- return getControlFlowEndWorker(node.thenStatement);
- case false:
- return node.elseStatement === undefined
- ? defaultControlFlowEnd
- : getControlFlowEndWorker(node.elseStatement);
- }
- var then = getControlFlowEndWorker(node.thenStatement);
- if (node.elseStatement === undefined)
- return {
- statements: then.statements,
- end: false,
- };
- var elze = getControlFlowEndWorker(node.elseStatement);
- return {
- statements: then.statements.concat(elze.statements),
- end: then.end && elze.end,
- };
-}
-function handleSwitchStatement(node) {
- var _a;
- var hasDefault = false;
- var result = {
- statements: [],
- end: false,
- };
- for (var _i = 0, _b = node.caseBlock.clauses; _i < _b.length; _i++) {
- var clause = _b[_i];
- if (clause.kind === ts.SyntaxKind.DefaultClause)
- hasDefault = true;
- var current = handleBlock(clause);
- result.end = current.end;
- (_a = result.statements).push.apply(_a, current.statements);
- }
- if (!hasDefault)
- result.end = false;
- return result;
-}
-function handleTryStatement(node) {
- var finallyResult;
- if (node.finallyBlock !== undefined) {
- finallyResult = handleBlock(node.finallyBlock);
- if (finallyResult.end)
- return finallyResult;
- }
- var tryResult = handleBlock(node.tryBlock);
- if (node.catchClause === undefined)
- return { statements: finallyResult.statements.concat(tryResult.statements), end: tryResult.end };
- var catchResult = handleBlock(node.catchClause.block);
- return {
- statements: tryResult.statements
- .filter(function (s) { return s.kind !== ts.SyntaxKind.ThrowStatement; })
- .concat(catchResult.statements, finallyResult === undefined ? [] : finallyResult.statements),
- end: tryResult.end && catchResult.end,
- };
-}
-function matchBreakOrContinue(current, pred) {
- var result = {
- statements: [],
- end: current.end,
- };
- for (var _i = 0, _a = current.statements; _i < _a.length; _i++) {
- var statement = _a[_i];
- if (pred(statement) && statement.label === undefined) {
- result.end = false;
- continue;
- }
- result.statements.push(statement);
- }
- return result;
-}
-function matchLabel(current, label) {
- var result = {
- statements: [],
- end: current.end,
- };
- var labelText = label.text;
- for (var _i = 0, _a = current.statements; _i < _a.length; _i++) {
- var statement = _a[_i];
- switch (statement.kind) {
- case ts.SyntaxKind.BreakStatement:
- case ts.SyntaxKind.ContinueStatement:
- if (statement.label !== undefined && statement.label.text === labelText) {
- result.end = false;
- continue;
- }
- }
- result.statements.push(statement);
- }
- return result;
-}
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC1mbG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29udHJvbC1mbG93LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsK0JBQWlDO0FBQ2pDLDBDQUE4RjtBQUU5RixTQUFnQixlQUFlLENBQUMsU0FBc0M7SUFDbEUsT0FBTyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDNUMsQ0FBQztBQUZELDBDQUVDO0FBaUJELElBQU0scUJBQXFCLEdBQW1CLEVBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFDLENBQUM7QUFLM0UsU0FBZ0IsaUJBQWlCLENBQUMsU0FBc0M7SUFDcEUsT0FBTyxrQkFBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hHLENBQUM7QUFGRCw4Q0FFQztBQUVELFNBQVMsdUJBQXVCLENBQUMsU0FBdUI7SUFDcEQsUUFBUSxTQUFTLENBQUMsSUFBSSxFQUFFO1FBQ3BCLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUM7UUFDbkMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztRQUNsQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUM7UUFDckMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWM7WUFDN0IsT0FBTyxFQUFDLFVBQVUsRUFBRSxDQUF1QixTQUFTLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFDdEUsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUs7WUFDcEIsT0FBTyxXQUFXLENBQVcsU0FBUyxDQUFDLENBQUM7UUFDNUMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUNoQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLENB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 \ No newline at end of file
diff --git a/node_modules/tsutils/util/index.d.ts b/node_modules/tsutils/util/index.d.ts
deleted file mode 100644
index 9e93ff6f1..000000000
--- a/node_modules/tsutils/util/index.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export * from './util';
-export * from './usage';
-export * from './control-flow';
-export * from './type';
-export * from './convert-ast';
diff --git a/node_modules/tsutils/util/index.js b/node_modules/tsutils/util/index.js
deleted file mode 100644
index 1d630f625..000000000
--- a/node_modules/tsutils/util/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-var tslib_1 = require("tslib");
-tslib_1.__exportStar(require("./util"), exports);
-tslib_1.__exportStar(require("./usage"), exports);
-tslib_1.__exportStar(require("./control-flow"), exports);
-tslib_1.__exportStar(require("./type"), exports);
-tslib_1.__exportStar(require("./convert-ast"), exports);
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBdUI7QUFDdkIsa0RBQXdCO0FBQ3hCLHlEQUErQjtBQUMvQixpREFBdUI7QUFDdkIsd0RBQThCIn0= \ No newline at end of file
diff --git a/node_modules/tsutils/util/type.d.ts b/node_modules/tsutils/util/type.d.ts
deleted file mode 100644
index 5a699b891..000000000
--- a/node_modules/tsutils/util/type.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import * as ts from 'typescript';
-export declare function isEmptyObjectType(type: ts.Type): type is ts.ObjectType;
-export declare function removeOptionalityFromType(checker: ts.TypeChecker, type: ts.Type): ts.Type;
-export declare function isTypeAssignableToNumber(checker: ts.TypeChecker, type: ts.Type): boolean;
-export declare function isTypeAssignableToString(checker: ts.TypeChecker, type: ts.Type): boolean;
-export declare function getCallSignaturesOfType(type: ts.Type): ReadonlyArray<ts.Signature>;
-export declare function unionTypeParts(type: ts.Type): ts.Type[];
-export declare function isThenableType(checker: ts.TypeChecker, node: ts.Expression, type?: ts.Type): boolean;
-export declare function isFalsyType(type: ts.Type): boolean;
diff --git a/node_modules/tsutils/util/type.js b/node_modules/tsutils/util/type.js
deleted file mode 100644
index 235accc2a..000000000
--- a/node_modules/tsutils/util/type.js
+++ /dev/null
@@ -1,143 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-var ts = require("typescript");
-var type_1 = require("../typeguard/type");
-var util_1 = require("./util");
-function isEmptyObjectType(type) {
- if (type_1.isObjectType(type) &&
- type.objectFlags & ts.ObjectFlags.Anonymous &&
- type.getProperties().length === 0 &&
- type.getCallSignatures().length === 0 &&
- type.getConstructSignatures().length === 0 &&
- type.getStringIndexType() === undefined &&
- type.getNumberIndexType() === undefined) {
- var baseTypes = type.getBaseTypes();
- return baseTypes === undefined || baseTypes.every(isEmptyObjectType);
- }
- return false;
-}
-exports.isEmptyObjectType = isEmptyObjectType;
-function removeOptionalityFromType(checker, type) {
- if (!containsTypeWithFlag(type, ts.TypeFlags.Undefined))
- return type;
- var allowsNull = containsTypeWithFlag(type, ts.TypeFlags.Null);
- type = checker.getNonNullableType(type);
- return allowsNull ? checker.getNullableType(type, ts.TypeFlags.Null) : type;
-}
-exports.removeOptionalityFromType = removeOptionalityFromType;
-function containsTypeWithFlag(type, flag) {
- for (var _i = 0, _a = unionTypeParts(type); _i < _a.length; _i++) {
- var t = _a[_i];
- if (util_1.isTypeFlagSet(t, flag))
- return true;
- }
- return false;
-}
-function isTypeAssignableToNumber(checker, type) {
- return isTypeAssignableTo(checker, type, ts.TypeFlags.NumberLike);
-}
-exports.isTypeAssignableToNumber = isTypeAssignableToNumber;
-function isTypeAssignableToString(checker, type) {
- return isTypeAssignableTo(checker, type, ts.TypeFlags.StringLike);
-}
-exports.isTypeAssignableToString = isTypeAssignableToString;
-function isTypeAssignableTo(checker, type, flags) {
- flags |= ts.TypeFlags.Any;
- var typeParametersSeen;
- return (function check(t) {
- if (type_1.isTypeParameter(t) && t.symbol !== undefined && t.symbol.declarations !== undefined) {
- if (typeParametersSeen === undefined) {
- typeParametersSeen = new Set([t]);
- }
- else if (!typeParametersSeen.has(t)) {
- typeParametersSeen.add(t);
- }
- else {
- return false;
- }
- var declaration = t.symbol.declarations[0];
- if (declaration.constraint === undefined)
- return true;
- return check(checker.getTypeFromTypeNode(declaration.constraint));
- }
- if (type_1.isUnionType(t))
- return t.types.every(check);
- if (type_1.isIntersectionType(t))
- return t.types.some(check);
- return util_1.isTypeFlagSet(t, flags);
- })(type);
-}
-function getCallSignaturesOfType(type) {
- if (type_1.isUnionType(type)) {
- var signatures = [];
- for (var _i = 0, _a = type.types; _i < _a.length; _i++) {
- var t = _a[_i];
- signatures.push.apply(signatures, getCallSignaturesOfType(t));
- }
- return signatures;
- }
- if (type_1.isIntersectionType(type)) {
- var signatures = void 0;
- for (var _b = 0, _c = type.types; _b < _c.length; _b++) {
- var t = _c[_b];
- var sig = getCallSignaturesOfType(t);
- if (sig.length !== 0) {
- if (signatures !== undefined)
- return [];
- signatures = sig;
- }
- }
- return signatures === undefined ? [] : signatures;
- }
- return type.getCallSignatures();
-}
-exports.getCallSignaturesOfType = getCallSignaturesOfType;
-function unionTypeParts(type) {
- return type_1.isUnionType(type) ? type.types : [type];
-}
-exports.unionTypeParts = unionTypeParts;
-function isThenableType(checker, node, type) {
- if (type === void 0) { type = checker.getTypeAtLocation(node); }
- for (var _i = 0, _a = unionTypeParts(checker.getApparentType(type)); _i < _a.length; _i++) {
- var ty = _a[_i];
- var then = ty.getProperty('then');
- if (then === undefined)
- continue;
- var thenType = checker.getTypeOfSymbolAtLocation(then, node);
- for (var _b = 0, _c = unionTypeParts(thenType); _b < _c.length; _b++) {
- var t = _c[_b];
- for (var _d = 0, _e = t.getCallSignatures(); _d < _e.length; _d++) {
- var signature = _e[_d];
- if (signature.parameters.length !== 0 && isCallback(checker, signature.parameters[0], node))
- return true;
- }
- }
- }
- return false;
-}
-exports.isThenableType = isThenableType;
-function isCallback(checker, param, node) {
- var type = checker.getApparentType(checker.getTypeOfSymbolAtLocation(param, node));
- if (param.valueDeclaration.dotDotDotToken) {
- type = type.getNumberIndexType();
- if (type === undefined)
- return false;
- }
- for (var _i = 0, _a = unionTypeParts(type); _i < _a.length; _i++) {
- var t = _a[_i];
- if (t.getCallSignatures().length !== 0)
- return true;
- }
- return false;
-}
-function isFalsyType(type) {
- if (type.flags & (ts.TypeFlags.Undefined | ts.TypeFlags.Null | ts.TypeFlags.Void))
- return true;
- if (type_1.isLiteralType(type))
- return !type.value;
- if (type.flags & ts.TypeFlags.BooleanLiteral)
- return type.intrinsicName === 'false';
- return false;
-}
-exports.isFalsyType = isFalsyType;
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrQkFBaUM7QUFDakMsMENBQWtIO0FBQ2xILCtCQUF1QztBQUV2QyxTQUFnQixpQkFBaUIsQ0FBQyxJQUFhO0lBQzNDLElBQUksbUJBQVksQ0FBQyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQzFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLFNBQVM7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEtBQUssU0FBUyxFQUFFO1FBQ3pDLElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxPQUFPLFNBQVMsS0FBSyxTQUFTLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBQ3hFO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQVpELDhDQVlDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUMsT0FBdUIsRUFBRSxJQUFhO0lBQzVFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUM7SUFDaEIsSUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsSUFBSSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxPQUFPLFVB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 \ No newline at end of file
diff --git a/node_modules/tsutils/util/usage.d.ts b/node_modules/tsutils/util/usage.d.ts
deleted file mode 100644
index 3ffa3360f..000000000
--- a/node_modules/tsutils/util/usage.d.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import * as ts from 'typescript';
-export interface VariableInfo {
- domain: DeclarationDomain;
- exported: boolean;
- uses: VariableUse[];
- inGlobalScope: boolean;
- declarations: ts.Identifier[];
-}
-export interface VariableUse {
- domain: UsageDomain;
- location: ts.Identifier;
-}
-export declare const enum DeclarationDomain {
- Namespace = 1,
- Type = 2,
- Value = 4,
- Import = 8,
- Any = 7
-}
-export declare const enum UsageDomain {
- Namespace = 1,
- Type = 2,
- Value = 4,
- ValueOrNamespace = 5,
- Any = 7,
- TypeQuery = 8
-}
-export declare function getUsageDomain(node: ts.Identifier): UsageDomain | undefined;
-export declare function getDeclarationDomain(node: ts.Identifier): DeclarationDomain | undefined;
-export declare function collectVariableUsage(sourceFile: ts.SourceFile): Map<ts.Identifier, VariableInfo>;
diff --git a/node_modules/tsutils/util/usage.js b/node_modules/tsutils/util/usage.js
deleted file mode 100644
index 36f2c219a..000000000
--- a/node_modules/tsutils/util/usage.js
+++ /dev/null
@@ -1,704 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-var tslib_1 = require("tslib");
-var util_1 = require("./util");
-var ts = require("typescript");
-var DeclarationDomain;
-(function (DeclarationDomain) {
- DeclarationDomain[DeclarationDomain["Namespace"] = 1] = "Namespace";
- DeclarationDomain[DeclarationDomain["Type"] = 2] = "Type";
- DeclarationDomain[DeclarationDomain["Value"] = 4] = "Value";
- DeclarationDomain[DeclarationDomain["Import"] = 8] = "Import";
- DeclarationDomain[DeclarationDomain["Any"] = 7] = "Any";
-})(DeclarationDomain = exports.DeclarationDomain || (exports.DeclarationDomain = {}));
-var UsageDomain;
-(function (UsageDomain) {
- UsageDomain[UsageDomain["Namespace"] = 1] = "Namespace";
- UsageDomain[UsageDomain["Type"] = 2] = "Type";
- UsageDomain[UsageDomain["Value"] = 4] = "Value";
- UsageDomain[UsageDomain["ValueOrNamespace"] = 5] = "ValueOrNamespace";
- UsageDomain[UsageDomain["Any"] = 7] = "Any";
- UsageDomain[UsageDomain["TypeQuery"] = 8] = "TypeQuery";
-})(UsageDomain = exports.UsageDomain || (exports.UsageDomain = {}));
-function getUsageDomain(node) {
- var parent = node.parent;
- switch (parent.kind) {
- case ts.SyntaxKind.TypeReference:
- return 2;
- case ts.SyntaxKind.ExpressionWithTypeArguments:
- return parent.parent.token === ts.SyntaxKind.ImplementsKeyword ||
- parent.parent.parent.kind === ts.SyntaxKind.InterfaceDeclaration
- ? 2
- : 4;
- case ts.SyntaxKind.TypeQuery:
- return 5 | 8;
- case ts.SyntaxKind.QualifiedName:
- if (parent.left === node) {
- if (getEntityNameParent(parent).kind === ts.SyntaxKind.TypeQuery)
- return 1 | 8;
- return 1;
- }
- break;
- case ts.SyntaxKind.ExportSpecifier:
- if (parent.propertyName === undefined ||
- parent.propertyName === node)
- return 7;
- break;
- case ts.SyntaxKind.ExportAssignment:
- return 7;
- case ts.SyntaxKind.BindingElement:
- if (parent.initializer === node)
- return 5;
- break;
- case ts.SyntaxKind.Parameter:
- case ts.SyntaxKind.EnumMember:
- case ts.SyntaxKind.PropertyDeclaration:
- case ts.SyntaxKind.VariableDeclaration:
- case ts.SyntaxKind.PropertyAssignment:
- case ts.SyntaxKind.PropertyAccessExpression:
- case ts.SyntaxKind.ImportEqualsDeclaration:
- if (parent.name !== node)
- return 5;
- break;
- case ts.SyntaxKind.JsxAttribute:
- case ts.SyntaxKind.FunctionDeclaration:
- case ts.SyntaxKind.FunctionExpression:
- case ts.SyntaxKind.NamespaceImport:
- case ts.SyntaxKind.ClassDeclaration:
- case ts.SyntaxKind.ClassExpression:
- case ts.SyntaxKind.ModuleDeclaration:
- case ts.SyntaxKind.MethodDeclaration:
- case ts.SyntaxKind.EnumDeclaration:
- case ts.SyntaxKind.GetAccessor:
- case ts.SyntaxKind.SetAccessor:
- case ts.SyntaxKind.LabeledStatement:
- case ts.SyntaxKind.BreakStatement:
- case ts.SyntaxKind.ContinueStatement:
- case ts.SyntaxKind.ImportClause:
- case ts.SyntaxKind.ImportSpecifier:
- case ts.SyntaxKind.TypePredicate:
- case ts.SyntaxKind.MethodSignature:
- case ts.SyntaxKind.PropertySignature:
- case ts.SyntaxKind.NamespaceExportDeclaration:
- case ts.SyntaxKind.InterfaceDeclaration:
- case ts.SyntaxKind.TypeAliasDeclaration:
- case ts.SyntaxKind.TypeParameter:
- break;
- default:
- return 5;
- }
-}
-exports.getUsageDomain = getUsageDomain;
-function getDeclarationDomain(node) {
- switch (node.parent.kind) {
- case ts.SyntaxKind.TypeParameter:
- case ts.SyntaxKind.InterfaceDeclaration:
- case ts.SyntaxKind.TypeAliasDeclaration:
- return 2;
- case ts.SyntaxKind.ClassDeclaration:
- case ts.SyntaxKind.ClassExpression:
- return 2 | 4;
- case ts.SyntaxKind.EnumDeclaration:
- return 7;
- case ts.SyntaxKind.NamespaceImport:
- case ts.SyntaxKind.ImportClause:
- return 7 | 8;
- case ts.SyntaxKind.ImportEqualsDeclaration:
- case ts.SyntaxKind.ImportSpecifier:
- return node.parent.name === node
- ? 7 | 8
- : undefined;
- case ts.SyntaxKind.ModuleDeclaration:
- return 1;
- case ts.SyntaxKind.Parameter:
- if (node.parent.parent.kind === ts.SyntaxKind.IndexSignature)
- return;
- case ts.SyntaxKind.BindingElement:
- case ts.SyntaxKind.VariableDeclaration:
- return node.parent.name === node ? 4 : undefined;
- case ts.SyntaxKind.FunctionDeclaration:
- case ts.SyntaxKind.FunctionExpression:
- return 4;
- }
-}
-exports.getDeclarationDomain = getDeclarationDomain;
-function collectVariableUsage(sourceFile) {
- return new UsageWalker().getUsage(sourceFile);
-}
-exports.collectVariableUsage = collectVariableUsage;
-var AbstractScope = (function () {
- function AbstractScope(_global) {
- this._global = _global;
- this._variables = new Map();
- this._uses = [];
- this._namespaceScopes = undefined;
- this._enumScopes = undefined;
- }
- AbstractScope.prototype.addVariable = function (identifier, name, blockScoped, exported, domain) {
- var variables = this._getDestinationScope(blockScoped).getVariables();
- var declaration = {
- domain: domain,
- exported: exported,
- declaration: name,
- };
- var variable = variables.get(identifier);
- if (variable === undefined) {
- variables.set(identifier, {
- domain: domain,
- declarations: [declaration],
- uses: [],
- });
- }
- else {
- variable.domain |= domain;
- variable.declarations.push(declaration);
- }
- };
- AbstractScope.prototype.addUse = function (use) {
- this._uses.push(use);
- };
- AbstractScope.prototype.getVariables = function () {
- return this._variables;
- };
- AbstractScope.prototype.getFunctionScope = function () {
- return this;
- };
- AbstractScope.prototype.end = function (cb) {
- var _this = this;
- if (this._namespaceScopes !== undefined)
- this._namespaceScopes.forEach(function (value) { return value.finish(cb); });
- this._namespaceScopes = this._enumScopes = undefined;
- this._applyUses();
- this._variables.forEach(function (variable) {
- for (var _i = 0, _a = variable.declarations; _i < _a.length; _i++) {
- var declaration = _a[_i];
- var result = {
- declarations: [],
- domain: declaration.domain,
- exported: declaration.exported,
- inGlobalScope: _this._global,
- uses: [],
- };
- for (var _b = 0, _c = variable.declarations; _b < _c.length; _b++) {
- var other = _c[_b];
- if (other.domain & declaration.domain)
- result.declarations.push(other.declaration);
- }
- for (var _d = 0, _e = variable.uses; _d < _e.length; _d++) {
- var use = _e[_d];
- if (use.domain & declaration.domain)
- result.uses.push(use);
- }
- cb(result, declaration.declaration, _this);
- }
- });
- };
- AbstractScope.prototype.markExported = function (_name) { };
- AbstractScope.prototype.createOrReuseNamespaceScope = function (name, _exported, ambient, hasExportStatement) {
- var scope;
- if (this._namespaceScopes === undefined) {
- this._namespaceScopes = new Map();
- }
- else {
- scope = this._namespaceScopes.get(name);
- }
- if (scope === undefined) {
- scope = new NamespaceScope(ambient, hasExportStatement, this);
- this._namespaceScopes.set(name, scope);
- }
- else {
- scope.refresh(ambient, hasExportStatement);
- }
- return scope;
- };
- AbstractScope.prototype.createOrReuseEnumScope = function (name, _exported) {
- var scope;
- if (this._enumScopes === undefined) {
- this._enumScopes = new Map();
- }
- else {
- scope = this._enumScopes.get(name);
- }
- if (scope === undefined) {
- scope = new EnumScope(this);
- this._enumScopes.set(name, scope);
- }
- return scope;
- };
- AbstractScope.prototype._applyUses = function () {
- for (var _i = 0, _a = this._uses; _i < _a.length; _i++) {
- var use = _a[_i];
- if (!this._applyUse(use))
- this._addUseToParent(use);
- }
- this._uses = [];
- };
- AbstractScope.prototype._applyUse = function (use, variables) {
- if (variables === void 0) { variables = this._variables; }
- var variable = variables.get(util_1.getIdentifierText(use.location));
- if (variable === undefined || (variable.domain & use.domain) === 0)
- return false;
- variable.uses.push(use);
- return true;
- };
- AbstractScope.prototype._getDestinationScope = function (_blockScoped) {
- return this;
- };
- AbstractScope.prototype._addUseToParent = function (_use) { };
- return AbstractScope;
-}());
-var RootScope = (function (_super) {
- tslib_1.__extends(RootScope, _super);
- function RootScope(_exportAll, global) {
- var _this = _super.call(this, global) || this;
- _this._exportAll = _exportAll;
- _this._exports = undefined;
- _this._innerScope = new NonRootScope(_this);
- return _this;
- }
- RootScope.prototype.addVariable = function (identifier, name, blockScoped, exported, domain) {
- if (domain & 8)
- return _super.prototype.addVariable.call(this, identifier, name, blockScoped, exported, domain);
- return this._innerScope.addVariable(identifier, name, blockScoped, exported, domain);
- };
- RootScope.prototype.addUse = function (use, origin) {
- if (origin === this._innerScope)
- return _super.prototype.addUse.call(this, use);
- return this._innerScope.addUse(use);
- };
- RootScope.prototype.markExported = function (id) {
- var text = util_1.getIdentifierText(id);
- if (this._exports === undefined) {
- this._exports = [text];
- }
- else {
- this._exports.push(text);
- }
- };
- RootScope.prototype.end = function (cb) {
- var _this = this;
- this._innerScope.end(function (value, key) {
- value.exported = value.exported || _this._exportAll
- || _this._exports !== undefined && _this._exports.indexOf(util_1.getIdentifierText(key)) !== -1;
- value.inGlobalScope = _this._global;
- return cb(value, key, _this);
- });
- return _super.prototype.end.call(this, function (value, key, scope) {
- value.exported = value.exported || scope === _this
- && _this._exports !== undefined && _this._exports.indexOf(util_1.getIdentifierText(key)) !== -1;
- return cb(value, key, scope);
- });
- };
- return RootScope;
-}(AbstractScope));
-var NonRootScope = (function (_super) {
- tslib_1.__extends(NonRootScope, _super);
- function NonRootScope(_parent) {
- var _this = _super.call(this, false) || this;
- _this._parent = _parent;
- return _this;
- }
- NonRootScope.prototype._addUseToParent = function (use) {
- return this._parent.addUse(use, this);
- };
- return NonRootScope;
-}(AbstractScope));
-var EnumScope = (function (_super) {
- tslib_1.__extends(EnumScope, _super);
- function EnumScope() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- EnumScope.prototype.end = function () {
- this._applyUses();
- };
- return EnumScope;
-}(NonRootScope));
-var ConditionalTypeScopeState;
-(function (ConditionalTypeScopeState) {
- ConditionalTypeScopeState[ConditionalTypeScopeState["Initial"] = 0] = "Initial";
- ConditionalTypeScopeState[ConditionalTypeScopeState["Extends"] = 1] = "Extends";
- ConditionalTypeScopeState[ConditionalTypeScopeState["TrueType"] = 2] = "TrueType";
- ConditionalTypeScopeState[ConditionalTypeScopeState["FalseType"] = 3] = "FalseType";
-})(ConditionalTypeScopeState || (ConditionalTypeScopeState = {}));
-var ConditionalTypeScope = (function (_super) {
- tslib_1.__extends(ConditionalTypeScope, _super);
- function ConditionalTypeScope() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this._state = 0;
- return _this;
- }
- ConditionalTypeScope.prototype.updateState = function (newState) {
- this._state = newState;
- };
- ConditionalTypeScope.prototype.addUse = function (use) {
- if (this._state === 2)
- return void this._uses.push(use);
- return this._parent.addUse(use, this);
- };
- return ConditionalTypeScope;
-}(NonRootScope));
-var FunctionScope = (function (_super) {
- tslib_1.__extends(FunctionScope, _super);
- function FunctionScope() {
- return _super !== null && _super.apply(this, arguments) || this;
- }
- FunctionScope.prototype.beginBody = function () {
- this._applyUses();
- };
- return FunctionScope;
-}(NonRootScope));
-var AbstractNamedExpressionScope = (function (_super) {
- tslib_1.__extends(AbstractNamedExpressionScope, _super);
- function AbstractNamedExpressionScope(_name, _domain, parent) {
- var _this = _super.call(this, parent) || this;
- _this._name = _name;
- _this._domain = _domain;
- return _this;
- }
- AbstractNamedExpressionScope.prototype.end = function (cb) {
- this._innerScope.end(cb);
- return cb({
- declarations: [this._name],
- domain: this._domain,
- exported: false,
- uses: this._uses,
- inGlobalScope: false,
- }, this._name, this);
- };
- AbstractNamedExpressionScope.prototype.addUse = function (use, source) {
- if (source !== this._innerScope)
- return this._innerScope.addUse(use);
- if (use.domain & this._domain && util_1.getIdentifierText(use.location) === util_1.getIdentifierText(this._name)) {
- this._uses.push(use);
- }
- else {
- return this._parent.addUse(use, this);
- }
- };
- AbstractNamedExpressionScope.prototype.getFunctionScope = function () {
- return this._innerScope;
- };
- AbstractNamedExpressionScope.prototype._getDestinationScope = function () {
- return this._innerScope;
- };
- return AbstractNamedExpressionScope;
-}(NonRootScope));
-var FunctionExpressionScope = (function (_super) {
- tslib_1.__extends(FunctionExpressionScope, _super);
- function FunctionExpressionScope(name, parent) {
- var _this = _super.call(this, name, 4, parent) || this;
- _this._innerScope = new FunctionScope(_this);
- return _this;
- }
- FunctionExpressionScope.prototype.beginBody = function () {
- return this._innerScope.beginBody();
- };
- return FunctionExpressionScope;
-}(AbstractNamedExpressionScope));
-var ClassExpressionScope = (function (_super) {
- tslib_1.__extends(ClassExpressionScope, _super);
- function ClassExpressionScope(name, parent) {
- var _this = _super.call(this, name, 4 | 2, parent) || this;
- _this._innerScope = new NonRootScope(_this);
- return _this;
- }
- return ClassExpressionScope;
-}(AbstractNamedExpressionScope));
-var BlockScope = (function (_super) {
- tslib_1.__extends(BlockScope, _super);
- function BlockScope(_functionScope, parent) {
- var _this = _super.call(this, parent) || this;
- _this._functionScope = _functionScope;
- return _this;
- }
- BlockScope.prototype.getFunctionScope = function () {
- return this._functionScope;
- };
- BlockScope.prototype._getDestinationScope = function (blockScoped) {
- return blockScoped ? this : this._functionScope;
- };
- return BlockScope;
-}(NonRootScope));
-function mapDeclaration(declaration) {
- return {
- declaration: declaration,
- exported: true,
- domain: getDeclarationDomain(declaration),
- };
-}
-var NamespaceScope = (function (_super) {
- tslib_1.__extends(NamespaceScope, _super);
- function NamespaceScope(_ambient, _hasExport, parent) {
- var _this = _super.call(this, parent) || this;
- _this._ambient = _ambient;
- _this._hasExport = _hasExport;
- _this._innerScope = new NonRootScope(_this);
- _this._exports = undefined;
- return _this;
- }
- NamespaceScope.prototype.finish = function (cb) {
- return _super.prototype.end.call(this, cb);
- };
- NamespaceScope.prototype.end = function (cb) {
- var _this = this;
- this._innerScope.end(function (variable, key, scope) {
- if (scope !== _this._innerScope ||
- !variable.exported && (!_this._ambient || _this._exports !== undefined && !_this._exports.has(util_1.getIdentifierText(key))))
- return cb(variable, key, scope);
- var namespaceVar = _this._variables.get(util_1.getIdentifierText(key));
- if (namespaceVar === undefined) {
- _this._variables.set(util_1.getIdentifierText(key), {
- declarations: variable.declarations.map(mapDeclaration),
- domain: variable.domain,
- uses: variable.uses.slice(),
- });
- }
- else {
- outer: for (var _i = 0, _a = variable.declarations; _i < _a.length; _i++) {
- var declaration = _a[_i];
- for (var _b = 0, _c = namespaceVar.declarations; _b < _c.length; _b++) {
- var existing = _c[_b];
- if (existing.declaration === declaration)
- continue outer;
- }
- namespaceVar.declarations.push(mapDeclaration(declaration));
- }
- namespaceVar.domain |= variable.domain;
- for (var _d = 0, _e = variable.uses; _d < _e.length; _d++) {
- var use = _e[_d];
- if (namespaceVar.uses.indexOf(use) !== -1)
- continue;
- namespaceVar.uses.push(use);
- }
- }
- });
- this._applyUses();
- this._innerScope = new NonRootScope(this);
- };
- NamespaceScope.prototype.createOrReuseNamespaceScope = function (name, exported, ambient, hasExportStatement) {
- if (!exported && (!this._ambient || this._hasExport))
- return this._innerScope.createOrReuseNamespaceScope(name, exported, ambient || this._ambient, hasExportStatement);
- return _super.prototype.createOrReuseNamespaceScope.call(this, name, exported, ambient || this._ambient, hasExportStatement);
- };
- NamespaceScope.prototype.createOrReuseEnumScope = function (name, exported) {
- if (!exported && (!this._ambient || this._hasExport))
- return this._innerScope.createOrReuseEnumScope(name, exported);
- return _super.prototype.createOrReuseEnumScope.call(this, name, exported);
- };
- NamespaceScope.prototype.addUse = function (use, source) {
- if (source !== this._innerScope)
- return this._innerScope.addUse(use);
- this._uses.push(use);
- };
- NamespaceScope.prototype.refresh = function (ambient, hasExport) {
- this._ambient = ambient;
- this._hasExport = hasExport;
- };
- NamespaceScope.prototype.markExported = function (name, _as) {
- if (this._exports === undefined)
- this._exports = new Set();
- this._exports.add(util_1.getIdentifierText(name));
- };
- NamespaceScope.prototype._getDestinationScope = function () {
- return this._innerScope;
- };
- return NamespaceScope;
-}(NonRootScope));
-function getEntityNameParent(name) {
- var parent = name.parent;
- while (parent.kind === ts.SyntaxKind.QualifiedName)
- parent = parent.parent;
- return parent;
-}
-var UsageWalker = (function () {
- function UsageWalker() {
- this._result = new Map();
- }
- UsageWalker.prototype.getUsage = function (sourceFile) {
- var _this = this;
- var variableCallback = function (variable, key) {
- _this._result.set(key, variable);
- };
- var isModule = ts.isExternalModule(sourceFile);
- this._scope = new RootScope(sourceFile.isDeclarationFile && isModule && !containsExportStatement(sourceFile), !isModule);
- var cb = function (node) {
- if (util_1.isBlockScopeBoundary(node))
- return continueWithScope(node, new BlockScope(_this._scope.getFunctionScope(), _this._scope), handleBlockScope);
- switch (node.kind) {
- case ts.SyntaxKind.ClassExpression:
- return continueWithScope(node, node.name !== undefined
- ? new ClassExpressionScope(node.name, _this._scope)
- : new NonRootScope(_this._scope));
- case ts.SyntaxKind.ClassDeclaration:
- _this._handleDeclaration(node, true, 4 | 2);
- return continueWithScope(node, new NonRootScope(_this._scope));
- case ts.SyntaxKind.InterfaceDeclaration:
- case ts.SyntaxKind.TypeAliasDeclaration:
- _this._handleDeclaration(node, true, 2);
- return continueWithScope(node, new NonRootScope(_this._scope));
- case ts.SyntaxKind.EnumDeclaration:
- _this._handleDeclaration(node, true, 7);
- return continueWithScope(node, _this._scope.createOrReuseEnumScope(util_1.getIdentifierText(node.name), util_1.hasModifier(node.modifiers, ts.SyntaxKind.ExportKeyword)));
- case ts.SyntaxKind.ModuleDeclaration:
- return _this._handleModule(node, continueWithScope);
- case ts.SyntaxKind.MappedType:
- return continueWithScope(node, new NonRootScope(_this._scope));
- case ts.SyntaxKind.FunctionExpression:
- case ts.SyntaxKind.ArrowFunction:
- case ts.SyntaxKind.Constructor:
- case ts.SyntaxKind.MethodDeclaration:
- case ts.SyntaxKind.FunctionDeclaration:
- case ts.SyntaxKind.GetAccessor:
- case ts.SyntaxKind.SetAccessor:
- case ts.SyntaxKind.MethodSignature:
- case ts.SyntaxKind.CallSignature:
- case ts.SyntaxKind.ConstructSignature:
- case ts.SyntaxKind.ConstructorType:
- case ts.SyntaxKind.FunctionType:
- return _this._handleFunctionLikeDeclaration(node, cb, variableCallback);
- case ts.SyntaxKind.ConditionalType:
- return _this._handleConditionalType(node, cb, variableCallback);
- case ts.SyntaxKind.VariableDeclarationList:
- _this._handleVariableDeclaration(node);
- break;
- case ts.SyntaxKind.Parameter:
- if (node.parent.kind !== ts.SyntaxKind.IndexSignature &&
- (node.name.kind !== ts.SyntaxKind.Identifier ||
- node.name.originalKeywordKind !== ts.SyntaxKind.ThisKeyword))
- _this._handleBindingName(node.name, false, false);
- break;
- case ts.SyntaxKind.EnumMember:
- _this._scope.addVariable(util_1.getPropertyName(node.name), node.name, false, true, 4);
- break;
- case ts.SyntaxKind.ImportClause:
- case ts.SyntaxKind.ImportSpecifier:
- case ts.SyntaxKind.NamespaceImport:
- case ts.SyntaxKind.ImportEqualsDeclaration:
- _this._handleDeclaration(node, false, 7 | 8);
- break;
- case ts.SyntaxKind.TypeParameter:
- _this._scope.addVariable(util_1.getIdentifierText(node.name), node.name, true, false, 2);
- break;
- case ts.SyntaxKind.ExportSpecifier:
- if (node.propertyName !== undefined)
- return _this._scope.markExported(node.propertyName, node.name);
- return _this._scope.markExported(node.name);
- case ts.SyntaxKind.ExportAssignment:
- if (node.expression.kind === ts.SyntaxKind.Identifier)
- return _this._scope.markExported(node.expression);
- break;
- case ts.SyntaxKind.Identifier:
- var domain = getUsageDomain(node);
- if (domain !== undefined)
- _this._scope.addUse({ domain: domain, location: node });
- return;
- }
- return ts.forEachChild(node, cb);
- };
- var continueWithScope = function (node, scope, next) {
- if (next === void 0) { next = forEachChild; }
- var savedScope = _this._scope;
- _this._scope = scope;
- next(node);
- _this._scope.end(variableCallback);
- _this._scope = savedScope;
- };
- var handleBlockScope = function (node) {
- if (node.kind === ts.SyntaxKind.CatchClause && node.variableDeclaration !== undefined)
- _this._handleBindingName(node.variableDeclaration.name, true, false);
- return ts.forEachChild(node, cb);
- };
- ts.forEachChild(sourceFile, cb);
- this._scope.end(variableCallback);
- return this._result;
- function forEachChild(node) {
- return ts.forEachChild(node, cb);
- }
- };
- UsageWalker.prototype._handleConditionalType = function (node, cb, varCb) {
- var savedScope = this._scope;
- var scope = this._scope = new ConditionalTypeScope(savedScope);
- cb(node.checkType);
- scope.updateState(1);
- cb(node.extendsType);
- scope.updateState(2);
- cb(node.trueType);
- scope.updateState(3);
- cb(node.falseType);
- scope.end(varCb);
- this._scope = savedScope;
- };
- UsageWalker.prototype._handleFunctionLikeDeclaration = function (node, cb, varCb) {
- if (node.decorators !== undefined)
- node.decorators.forEach(cb);
- var savedScope = this._scope;
- if (node.kind === ts.SyntaxKind.FunctionDeclaration)
- this._handleDeclaration(node, false, 4);
- var scope = this._scope = node.kind === ts.SyntaxKind.FunctionExpression && node.name !== undefined
- ? new FunctionExpressionScope(node.name, savedScope)
- : new FunctionScope(savedScope);
- if (node.name !== undefined)
- cb(node.name);
- if (node.typeParameters !== undefined)
- node.typeParameters.forEach(cb);
- node.parameters.forEach(cb);
- if (node.type !== undefined)
- cb(node.type);
- if (node.body !== undefined) {
- scope.beginBody();
- cb(node.body);
- }
- scope.end(varCb);
- this._scope = savedScope;
- };
- UsageWalker.prototype._handleModule = function (node, next) {
- if (node.flags & ts.NodeFlags.GlobalAugmentation)
- return next(node, this._scope.createOrReuseNamespaceScope('-global', false, true, false));
- if (node.name.kind === ts.SyntaxKind.Identifier) {
- var exported = isNamespaceExported(node);
- this._scope.addVariable(util_1.getIdentifierText(node.name), node.name, false, exported, 1 | 4);
- var ambient = util_1.hasModifier(node.modifiers, ts.SyntaxKind.DeclareKeyword);
- return next(node, this._scope.createOrReuseNamespaceScope(util_1.getIdentifierText(node.name), exported, ambient, ambient && namespaceHasExportStatement(node)));
- }
- return next(node, this._scope.createOrReuseNamespaceScope("\"" + node.name.text + "\"", false, true, namespaceHasExportStatement(node)));
- };
- UsageWalker.prototype._handleDeclaration = function (node, blockScoped, domain) {
- if (node.name !== undefined)
- this._scope.addVariable(util_1.getIdentifierText(node.name), node.name, blockScoped, util_1.hasModifier(node.modifiers, ts.SyntaxKind.ExportKeyword), domain);
- };
- UsageWalker.prototype._handleBindingName = function (name, blockScoped, exported) {
- var _this = this;
- if (name.kind === ts.SyntaxKind.Identifier)
- return this._scope.addVariable(util_1.getIdentifierText(name), name, blockScoped, exported, 4);
- util_1.forEachDestructuringIdentifier(name, function (declaration) {
- _this._scope.addVariable(util_1.getIdentifierText(declaration.name), declaration.name, blockScoped, exported, 4);
- });
- };
- UsageWalker.prototype._handleVariableDeclaration = function (declarationList) {
- var blockScoped = util_1.isBlockScopedVariableDeclarationList(declarationList);
- var exported = declarationList.parent.kind === ts.SyntaxKind.VariableStatement &&
- util_1.hasModifier(declarationList.parent.modifiers, ts.SyntaxKind.ExportKeyword);
- for (var _i = 0, _a = declarationList.declarations; _i < _a.length; _i++) {
- var declaration = _a[_i];
- this._handleBindingName(declaration.name, blockScoped, exported);
- }
- };
- return UsageWalker;
-}());
-function isNamespaceExported(node) {
- return node.parent.kind === ts.SyntaxKind.ModuleDeclaration || util_1.hasModifier(node.modifiers, ts.SyntaxKind.ExportKeyword);
-}
-function namespaceHasExportStatement(ns) {
- if (ns.body === undefined || ns.body.kind !== ts.SyntaxKind.ModuleBlock)
- return false;
- return containsExportStatement(ns.body);
-}
-function containsExportStatement(block) {
- for (var _i = 0, _a = block.statements; _i < _a.length; _i++) {
- var statement = _a[_i];
- if (statement.kind === ts.SyntaxKind.ExportDeclaration || statement.kind === ts.SyntaxKind.ExportAssignment)
- return true;
- }
- return false;
-}
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1c2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFPZ0I7QUFDaEIsK0JBQWlDO0FBMkJqQyxJQUFrQixpQkFNakI7QUFORCxXQUFrQixpQkFBaUI7SUFDL0IsbUVBQWEsQ0FBQTtJQUNiLHlEQUFRLENBQUE7SUFDUiwyREFBUyxDQUFBO0lBQ1QsNkRBQVUsQ0FBQTtJQUNWLHVEQUE4QixDQUFBO0FBQ2xDLENBQUMsRUFOaUIsaUJBQWlCLEdBQWpCLHlCQUFpQixLQUFqQix5QkFBaUIsUUFNbEM7QUFFRCxJQUFrQixXQU9qQjtBQVBELFdBQWtCLFdBQVc7SUFDekIsdURBQWEsQ0FBQTtJQUNiLDZDQUFRLENBQUE7SUFDUiwrQ0FBUyxDQUFBO0lBQ1QscUVBQW9DLENBQUE7SUFDcEMsMkNBQThCLENBQUE7SUFDOUIsdURBQWEsQ0FBQTtBQUNqQixDQUFDLEVBUGlCLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBTzVCO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLElBQW1CO0lBQzlDLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFPLENBQUM7SUFDNUIsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQ2pCLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhO1lBQzVCLFNBQXdCO1FBQzVCLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQywyQkFBMkI7WUFDMUMsT0FBMkIsTUFBTSxDQUFDLE1BQU8sQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUI7Z0JBQy9FLE1BQU0sQ0FBQyxNQUFPLENBQUMsTUFBTyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLG9CQUFvQjtnQkFDbEUsQ0FBQztnQkFDRCxDQUFDLEVBQWtCLENBQUM7UUFDNUIsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVM7WUFDeEIsT0FBTyxLQUFvRCxDQUFD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 \ No newline at end of file
diff --git a/node_modules/tsutils/util/util.d.ts b/node_modules/tsutils/util/util.d.ts
deleted file mode 100644
index 94efa2465..000000000
--- a/node_modules/tsutils/util/util.d.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-import * as ts from 'typescript';
-import { NodeWrap } from './convert-ast';
-export * from './control-flow';
-export declare function getChildOfKind<T extends ts.SyntaxKind>(node: ts.Node, kind: T, sourceFile?: ts.SourceFile): ts.Token<T> | undefined;
-export declare function isTokenKind(kind: ts.SyntaxKind): boolean;
-export declare function isNodeKind(kind: ts.SyntaxKind): boolean;
-export declare function isAssignmentKind(kind: ts.SyntaxKind): boolean;
-export declare function isTypeNodeKind(kind: ts.SyntaxKind): boolean;
-export declare function isJsDocKind(kind: ts.SyntaxKind): boolean;
-export declare function isThisParameter(parameter: ts.ParameterDeclaration): boolean;
-export declare function getModifier(node: ts.Node, kind: ts.Modifier['kind']): ts.Modifier | undefined;
-export declare function hasModifier(modifiers: ts.ModifiersArray | undefined, ...kinds: Array<ts.Modifier['kind']>): boolean;
-export declare function isParameterProperty(node: ts.ParameterDeclaration): boolean;
-export declare function hasAccessModifier(node: ts.ClassElement | ts.ParameterDeclaration): boolean;
-export declare const isNodeFlagSet: (node: ts.Node, flag: ts.NodeFlags) => boolean;
-export declare const isTypeFlagSet: (type: ts.Type, flag: ts.TypeFlags) => boolean;
-export declare const isSymbolFlagSet: (symbol: ts.Symbol, flag: ts.SymbolFlags) => boolean;
-export declare function isObjectFlagSet(objectType: ts.ObjectType, flag: ts.ObjectFlags): boolean;
-export declare function isModifierFlagSet(node: ts.Declaration, flag: ts.ModifierFlags): boolean;
-export declare function isModifierFlagSet(node: ts.Node, flag: ts.ModifierFlags): boolean;
-export declare function isModfierFlagSet(node: ts.Node, flag: ts.ModifierFlags): boolean;
-export declare function getPreviousStatement(statement: ts.Statement): ts.Statement | undefined;
-export declare function getNextStatement(statement: ts.Statement): ts.Statement | undefined;
-export declare function getPreviousToken(node: ts.Node, sourceFile?: ts.SourceFile): ts.Node | undefined;
-export declare function getNextToken(node: ts.Node, sourceFile?: ts.SourceFile): ts.Node | undefined;
-export declare function getTokenAtPosition(parent: ts.Node, pos: number, sourceFile?: ts.SourceFile): ts.Node | undefined;
-export declare function getCommentAtPosition(sourceFile: ts.SourceFile, pos: number, parent?: ts.Node): ts.CommentRange | undefined;
-export declare function isPositionInComment(sourceFile: ts.SourceFile, pos: number, parent?: ts.Node): boolean;
-export declare function getWrappedNodeAtPosition(wrap: NodeWrap, pos: number): NodeWrap | undefined;
-export declare function getPropertyName(propertyName: ts.PropertyName): string | undefined;
-export declare function forEachDestructuringIdentifier<T>(pattern: ts.BindingPattern, fn: (element: ts.BindingElement & {
- name: ts.Identifier;
-}) => T): T | undefined;
-export declare function forEachDeclaredVariable<T>(declarationList: ts.VariableDeclarationList, cb: (element: (ts.VariableDeclaration | ts.BindingElement) & {
- name: ts.Identifier;
-}) => T): T | undefined;
-export declare const enum VariableDeclarationKind {
- Var = 0,
- Let = 1,
- Const = 2
-}
-export declare function getVariableDeclarationKind(declarationList: ts.VariableDeclarationList): VariableDeclarationKind;
-export declare function isBlockScopedVariableDeclarationList(declarationList: ts.VariableDeclarationList): boolean;
-export declare function isBlockScopedVariableDeclaration(declaration: ts.VariableDeclaration): boolean;
-export declare const enum ScopeBoundary {
- None = 0,
- Function = 1,
- Block = 2
-}
-export declare function isScopeBoundary(node: ts.Node): ScopeBoundary;
-export declare function isFunctionScopeBoundary(node: ts.Node): boolean;
-export declare function isBlockScopeBoundary(node: ts.Node): boolean;
-export declare function hasOwnThisReference(node: ts.Node): boolean;
-export declare function isFunctionWithBody(node: ts.Node): node is ts.FunctionLikeDeclaration;
-export declare function forEachToken(node: ts.Node, cb: (node: ts.Node) => void, sourceFile?: ts.SourceFile): void;
-export declare type ForEachTokenCallback = (fullText: string, kind: ts.SyntaxKind, range: ts.TextRange, parent: ts.Node) => void;
-export declare function forEachTokenWithTrivia(node: ts.Node, cb: ForEachTokenCallback, sourceFile?: ts.SourceFile): void;
-export declare type ForEachCommentCallback = (fullText: string, comment: ts.CommentRange) => void;
-export declare function forEachComment(node: ts.Node, cb: ForEachCommentCallback, sourceFile?: ts.SourceFile): void;
-export interface LineRange extends ts.TextRange {
- contentLength: number;
-}
-export declare function getLineRanges(sourceFile: ts.SourceFile): LineRange[];
-export declare function getLineBreakStyle(sourceFile: ts.SourceFile): "\n" | "\r\n";
-export declare function isValidIdentifier(text: string): boolean;
-export declare function isValidPropertyAccess(text: string): boolean;
-export declare function isValidPropertyName(text: string): boolean;
-export declare function isValidNumericLiteral(text: string): boolean;
-export declare function isSameLine(sourceFile: ts.SourceFile, pos1: number, pos2: number): boolean;
-export declare const enum SideEffectOptions {
- None = 0,
- TaggedTemplate = 1,
- Constructor = 2,
- JsxElement = 4
-}
-export declare function hasSideEffects(node: ts.Expression, options?: SideEffectOptions): boolean;
-export declare function getDeclarationOfBindingElement(node: ts.BindingElement): ts.VariableDeclaration | ts.ParameterDeclaration;
-export declare function isExpressionValueUsed(node: ts.Expression): boolean;
-export declare function isReassignmentTarget(node: ts.Expression): boolean;
-export declare function getIdentifierText(node: ts.Identifier): string;
-export declare function canHaveJsDoc(node: ts.Node): node is ts.HasJSDoc;
-export declare function getJsDoc(node: ts.Node, sourceFile?: ts.SourceFile): ts.JSDoc[];
-export declare function parseJsDocOfNode(node: ts.Node, considerTrailingComments?: boolean, sourceFile?: ts.SourceFile): ts.JSDoc[];
-export declare const enum ImportKind {
- ImportDeclaration = 1,
- ImportEquals = 2,
- ExportFrom = 4,
- DynamicImport = 8,
- Require = 16,
- ImportType = 32,
- All = 63,
- AllImports = 59,
- AllStaticImports = 3,
- AllImportExpressions = 24,
- AllRequireLike = 18
-}
-export declare const enum ImportOptions {
- ImportDeclaration = 1,
- ImportEquals = 2,
- ExportFrom = 4,
- DynamicImport = 8,
- Require = 16,
- All = 31,
- AllImports = 27,
- AllStaticImports = 3,
- AllDynamic = 24,
- AllRequireLike = 18
-}
-export declare function findImports(sourceFile: ts.SourceFile, kinds: ImportKind): ts.LiteralExpression[];
-export declare function findImports(sourceFile: ts.SourceFile, options: ImportOptions): ts.LiteralExpression[];
-export declare function isStatementInAmbientContext(node: ts.Statement): boolean;
-export declare function isAmbientModuleBlock(node: ts.Node): node is ts.ModuleBlock;
-export declare function getIIFE(func: ts.FunctionExpression | ts.ArrowFunction): ts.CallExpression | undefined;
-export declare type StrictCompilerOption = 'noImplicitAny' | 'noImplicitThis' | 'strictNullChecks' | 'strictFunctionTypes' | 'strictPropertyInitialization' | 'alwaysStrict';
-export declare function isStrictCompilerOptionEnabled(options: ts.CompilerOptions, option: StrictCompilerOption): boolean;
-export declare type BooleanCompilerOptions = {
- [K in keyof ts.CompilerOptions]: NonNullable<ts.CompilerOptions[K]> extends boolean ? K : never;
-} extends {
- [_ in keyof ts.CompilerOptions]: infer U;
-} ? U : never;
-export declare function isCompilerOptionEnabled(options: ts.CompilerOptions, option: BooleanCompilerOptions | 'stripInternal'): boolean;
diff --git a/node_modules/tsutils/util/util.js b/node_modules/tsutils/util/util.js
deleted file mode 100644
index 74666b2c9..000000000
--- a/node_modules/tsutils/util/util.js
+++ /dev/null
@@ -1,1109 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-var tslib_1 = require("tslib");
-var ts = require("typescript");
-var node_1 = require("../typeguard/node");
-tslib_1.__exportStar(require("./control-flow"), exports);
-function getChildOfKind(node, kind, sourceFile) {
- for (var _i = 0, _a = node.getChildren(sourceFile); _i < _a.length; _i++) {
- var child = _a[_i];
- if (child.kind === kind)
- return child;
- }
-}
-exports.getChildOfKind = getChildOfKind;
-function isTokenKind(kind) {
- return kind >= ts.SyntaxKind.FirstToken && kind <= ts.SyntaxKind.LastToken;
-}
-exports.isTokenKind = isTokenKind;
-function isNodeKind(kind) {
- return kind >= ts.SyntaxKind.FirstNode;
-}
-exports.isNodeKind = isNodeKind;
-function isAssignmentKind(kind) {
- return kind >= ts.SyntaxKind.FirstAssignment && kind <= ts.SyntaxKind.LastAssignment;
-}
-exports.isAssignmentKind = isAssignmentKind;
-function isTypeNodeKind(kind) {
- return kind >= ts.SyntaxKind.FirstTypeNode && kind <= ts.SyntaxKind.LastTypeNode;
-}
-exports.isTypeNodeKind = isTypeNodeKind;
-function isJsDocKind(kind) {
- return kind >= ts.SyntaxKind.FirstJSDocNode && kind <= ts.SyntaxKind.LastJSDocNode;
-}
-exports.isJsDocKind = isJsDocKind;
-function isThisParameter(parameter) {
- return parameter.name.kind === ts.SyntaxKind.Identifier && parameter.name.originalKeywordKind === ts.SyntaxKind.ThisKeyword;
-}
-exports.isThisParameter = isThisParameter;
-function getModifier(node, kind) {
- if (node.modifiers !== undefined)
- for (var _i = 0, _a = node.modifiers; _i < _a.length; _i++) {
- var modifier = _a[_i];
- if (modifier.kind === kind)
- return modifier;
- }
-}
-exports.getModifier = getModifier;
-function hasModifier(modifiers) {
- var kinds = [];
- for (var _i = 1; _i < arguments.length; _i++) {
- kinds[_i - 1] = arguments[_i];
- }
- if (modifiers === undefined)
- return false;
- for (var _a = 0, modifiers_1 = modifiers; _a < modifiers_1.length; _a++) {
- var modifier = modifiers_1[_a];
- if (kinds.indexOf(modifier.kind) !== -1)
- return true;
- }
- return false;
-}
-exports.hasModifier = hasModifier;
-function isParameterProperty(node) {
- return hasModifier(node.modifiers, ts.SyntaxKind.PublicKeyword, ts.SyntaxKind.ProtectedKeyword, ts.SyntaxKind.PrivateKeyword, ts.SyntaxKind.ReadonlyKeyword);
-}
-exports.isParameterProperty = isParameterProperty;
-function hasAccessModifier(node) {
- return hasModifier(node.modifiers, ts.SyntaxKind.PublicKeyword, ts.SyntaxKind.ProtectedKeyword, ts.SyntaxKind.PrivateKeyword);
-}
-exports.hasAccessModifier = hasAccessModifier;
-function isFlagSet(obj, flag) {
- return (obj.flags & flag) !== 0;
-}
-exports.isNodeFlagSet = isFlagSet;
-exports.isTypeFlagSet = isFlagSet;
-exports.isSymbolFlagSet = isFlagSet;
-function isObjectFlagSet(objectType, flag) {
- return (objectType.objectFlags & flag) !== 0;
-}
-exports.isObjectFlagSet = isObjectFlagSet;
-function isModifierFlagSet(node, flag) {
- return (ts.getCombinedModifierFlags(node) & flag) !== 0;
-}
-exports.isModifierFlagSet = isModifierFlagSet;
-function isModfierFlagSet(node, flag) {
- return isModifierFlagSet(node, flag);
-}
-exports.isModfierFlagSet = isModfierFlagSet;
-function getPreviousStatement(statement) {
- var parent = statement.parent;
- if (node_1.isBlockLike(parent)) {
- var index = parent.statements.indexOf(statement);
- if (index > 0)
- return parent.statements[index - 1];
- }
-}
-exports.getPreviousStatement = getPreviousStatement;
-function getNextStatement(statement) {
- var parent = statement.parent;
- if (node_1.isBlockLike(parent)) {
- var index = parent.statements.indexOf(statement);
- if (index < parent.statements.length)
- return parent.statements[index + 1];
- }
-}
-exports.getNextStatement = getNextStatement;
-function getPreviousToken(node, sourceFile) {
- var parent = node.parent;
- while (parent !== undefined && parent.pos === node.pos)
- parent = parent.parent;
- if (parent === undefined)
- return;
- outer: while (true) {
- var children = parent.getChildren(sourceFile);
- for (var i = children.length - 1; i >= 0; --i) {
- var child = children[i];
- if (child.pos < node.pos && child.kind !== ts.SyntaxKind.JSDocComment) {
- if (isTokenKind(child.kind))
- return child;
- parent = child;
- continue outer;
- }
- }
- return;
- }
-}
-exports.getPreviousToken = getPreviousToken;
-function getNextToken(node, sourceFile) {
- if (sourceFile === void 0) { sourceFile = node.getSourceFile(); }
- if (node.kind === ts.SyntaxKind.SourceFile || node.kind === ts.SyntaxKind.EndOfFileToken)
- return;
- var end = node.end;
- node = node.parent;
- while (node.end === end) {
- if (node.parent === undefined)
- return node.endOfFileToken;
- node = node.parent;
- }
- return getTokenAtPositionWorker(node, end, sourceFile);
-}
-exports.getNextToken = getNextToken;
-function getTokenAtPosition(parent, pos, sourceFile) {
- if (pos < parent.pos || pos >= parent.end)
- return;
- if (isTokenKind(parent.kind))
- return parent;
- if (sourceFile === undefined)
- sourceFile = parent.getSourceFile();
- return getTokenAtPositionWorker(parent, pos, sourceFile);
-}
-exports.getTokenAtPosition = getTokenAtPosition;
-function getTokenAtPositionWorker(node, pos, sourceFile) {
- outer: while (true) {
- for (var _i = 0, _a = node.getChildren(sourceFile); _i < _a.length; _i++) {
- var child = _a[_i];
- if (child.end > pos && child.kind !== ts.SyntaxKind.JSDocComment) {
- if (isTokenKind(child.kind))
- return child;
- node = child;
- continue outer;
- }
- }
- return;
- }
-}
-function getCommentAtPosition(sourceFile, pos, parent) {
- if (parent === void 0) { parent = sourceFile; }
- var token = getTokenAtPosition(parent, pos, sourceFile);
- if (token === undefined || token.kind === ts.SyntaxKind.JsxText || pos >= token.end - (ts.tokenToString(token.kind) || '').length)
- return;
- var startPos = token.pos === 0
- ? (ts.getShebang(sourceFile.text) || '').length
- : token.pos;
- return startPos !== 0 && ts.forEachTrailingCommentRange(sourceFile.text, startPos, commentAtPositionCallback, pos) ||
- ts.forEachLeadingCommentRange(sourceFile.text, startPos, commentAtPositionCallback, pos);
-}
-exports.getCommentAtPosition = getCommentAtPosition;
-function commentAtPositionCallback(pos, end, kind, _nl, at) {
- return at >= pos && at < end ? { pos: pos, end: end, kind: kind } : undefined;
-}
-function isPositionInComment(sourceFile, pos, parent) {
- return getCommentAtPosition(sourceFile, pos, parent) !== undefined;
-}
-exports.isPositionInComment = isPositionInComment;
-function getWrappedNodeAtPosition(wrap, pos) {
- if (wrap.node.pos > pos || wrap.node.end <= pos)
- return;
- outer: while (true) {
- for (var _i = 0, _a = wrap.children; _i < _a.length; _i++) {
- var child = _a[_i];
- if (child.node.pos > pos)
- return wrap;
- if (child.node.end > pos) {
- wrap = child;
- continue outer;
- }
- }
- return wrap;
- }
-}
-exports.getWrappedNodeAtPosition = getWrappedNodeAtPosition;
-function getPropertyName(propertyName) {
- if (propertyName.kind === ts.SyntaxKind.ComputedPropertyName) {
- if (!node_1.isLiteralExpression(propertyName.expression))
- return;
- return propertyName.expression.text;
- }
- return propertyName.kind === ts.SyntaxKind.Identifier ? getIdentifierText(propertyName) : propertyName.text;
-}
-exports.getPropertyName = getPropertyName;
-function forEachDestructuringIdentifier(pattern, fn) {
- for (var _i = 0, _a = pattern.elements; _i < _a.length; _i++) {
- var element = _a[_i];
- if (element.kind !== ts.SyntaxKind.BindingElement)
- continue;
- var result = void 0;
- if (element.name.kind === ts.SyntaxKind.Identifier) {
- result = fn(element);
- }
- else {
- result = forEachDestructuringIdentifier(element.name, fn);
- }
- if (result)
- return result;
- }
-}
-exports.forEachDestructuringIdentifier = forEachDestructuringIdentifier;
-function forEachDeclaredVariable(declarationList, cb) {
- for (var _i = 0, _a = declarationList.declarations; _i < _a.length; _i++) {
- var declaration = _a[_i];
- var result = void 0;
- if (declaration.name.kind === ts.SyntaxKind.Identifier) {
- result = cb(declaration);
- }
- else {
- result = forEachDestructuringIdentifier(declaration.name, cb);
- }
- if (result)
- return result;
- }
-}
-exports.forEachDeclaredVariable = forEachDeclaredVariable;
-var VariableDeclarationKind;
-(function (VariableDeclarationKind) {
- VariableDeclarationKind[VariableDeclarationKind["Var"] = 0] = "Var";
- VariableDeclarationKind[VariableDeclarationKind["Let"] = 1] = "Let";
- VariableDeclarationKind[VariableDeclarationKind["Const"] = 2] = "Const";
-})(VariableDeclarationKind = exports.VariableDeclarationKind || (exports.VariableDeclarationKind = {}));
-function getVariableDeclarationKind(declarationList) {
- if (declarationList.flags & ts.NodeFlags.Let)
- return 1;
- if (declarationList.flags & ts.NodeFlags.Const)
- return 2;
- return 0;
-}
-exports.getVariableDeclarationKind = getVariableDeclarationKind;
-function isBlockScopedVariableDeclarationList(declarationList) {
- return (declarationList.flags & ts.NodeFlags.BlockScoped) !== 0;
-}
-exports.isBlockScopedVariableDeclarationList = isBlockScopedVariableDeclarationList;
-function isBlockScopedVariableDeclaration(declaration) {
- var parent = declaration.parent;
- return parent.kind === ts.SyntaxKind.CatchClause ||
- isBlockScopedVariableDeclarationList(parent);
-}
-exports.isBlockScopedVariableDeclaration = isBlockScopedVariableDeclaration;
-var ScopeBoundary;
-(function (ScopeBoundary) {
- ScopeBoundary[ScopeBoundary["None"] = 0] = "None";
- ScopeBoundary[ScopeBoundary["Function"] = 1] = "Function";
- ScopeBoundary[ScopeBoundary["Block"] = 2] = "Block";
-})(ScopeBoundary = exports.ScopeBoundary || (exports.ScopeBoundary = {}));
-function isScopeBoundary(node) {
- if (isFunctionScopeBoundary(node))
- return 1;
- if (isBlockScopeBoundary(node))
- return 2;
- return 0;
-}
-exports.isScopeBoundary = isScopeBoundary;
-function isFunctionScopeBoundary(node) {
- switch (node.kind) {
- case ts.SyntaxKind.FunctionExpression:
- case ts.SyntaxKind.ArrowFunction:
- case ts.SyntaxKind.Constructor:
- case ts.SyntaxKind.ModuleDeclaration:
- case ts.SyntaxKind.ClassDeclaration:
- case ts.SyntaxKind.ClassExpression:
- case ts.SyntaxKind.EnumDeclaration:
- case ts.SyntaxKind.MethodDeclaration:
- case ts.SyntaxKind.FunctionDeclaration:
- case ts.SyntaxKind.GetAccessor:
- case ts.SyntaxKind.SetAccessor:
- case ts.SyntaxKind.InterfaceDeclaration:
- case ts.SyntaxKind.TypeAliasDeclaration:
- case ts.SyntaxKind.MethodSignature:
- case ts.SyntaxKind.CallSignature:
- case ts.SyntaxKind.ConstructSignature:
- case ts.SyntaxKind.ConstructorType:
- case ts.SyntaxKind.FunctionType:
- case ts.SyntaxKind.MappedType:
- case ts.SyntaxKind.ConditionalType:
- return true;
- case ts.SyntaxKind.SourceFile:
- return ts.isExternalModule(node);
- default:
- return false;
- }
-}
-exports.isFunctionScopeBoundary = isFunctionScopeBoundary;
-function isBlockScopeBoundary(node) {
- switch (node.kind) {
- case ts.SyntaxKind.Block:
- var parent = node.parent;
- return parent.kind !== ts.SyntaxKind.CatchClause &&
- (parent.kind === ts.SyntaxKind.SourceFile ||
- !isFunctionScopeBoundary(parent));
- case ts.SyntaxKind.ForStatement:
- case ts.SyntaxKind.ForInStatement:
- case ts.SyntaxKind.ForOfStatement:
- case ts.SyntaxKind.CaseBlock:
- case ts.SyntaxKind.CatchClause:
- return true;
- default:
- return false;
- }
-}
-exports.isBlockScopeBoundary = isBlockScopeBoundary;
-function hasOwnThisReference(node) {
- switch (node.kind) {
- case ts.SyntaxKind.ClassDeclaration:
- case ts.SyntaxKind.ClassExpression:
- case ts.SyntaxKind.FunctionExpression:
- return true;
- case ts.SyntaxKind.FunctionDeclaration:
- return node.body !== undefined;
- case ts.SyntaxKind.MethodDeclaration:
- case ts.SyntaxKind.GetAccessor:
- case ts.SyntaxKind.SetAccessor:
- return node.parent.kind === ts.SyntaxKind.ObjectLiteralExpression;
- default:
- return false;
- }
-}
-exports.hasOwnThisReference = hasOwnThisReference;
-function isFunctionWithBody(node) {
- switch (node.kind) {
- case ts.SyntaxKind.GetAccessor:
- case ts.SyntaxKind.SetAccessor:
- case ts.SyntaxKind.FunctionDeclaration:
- case ts.SyntaxKind.MethodDeclaration:
- case ts.SyntaxKind.Constructor:
- return node.body !== undefined;
- case ts.SyntaxKind.FunctionExpression:
- case ts.SyntaxKind.ArrowFunction:
- return true;
- default:
- return false;
- }
-}
-exports.isFunctionWithBody = isFunctionWithBody;
-function forEachToken(node, cb, sourceFile) {
- if (sourceFile === void 0) { sourceFile = node.getSourceFile(); }
- return (function iterate(child) {
- if (isTokenKind(child.kind))
- return cb(child);
- if (child.kind !== ts.SyntaxKind.JSDocComment)
- return child.getChildren(sourceFile).forEach(iterate);
- })(node);
-}
-exports.forEachToken = forEachToken;
-function forEachTokenWithTrivia(node, cb, sourceFile) {
- if (sourceFile === void 0) { sourceFile = node.getSourceFile(); }
- var fullText = sourceFile.text;
- var scanner = ts.createScanner(sourceFile.languageVersion, false, sourceFile.languageVariant, fullText);
- return forEachToken(node, function (token) {
- var tokenStart = token.kind === ts.SyntaxKind.JsxText || token.pos === token.end ? token.pos : token.getStart(sourceFile);
- if (tokenStart !== token.pos) {
- scanner.setTextPos(token.pos);
- var kind = scanner.scan();
- var pos = scanner.getTokenPos();
- while (pos < tokenStart) {
- var textPos = scanner.getTextPos();
- cb(fullText, kind, { pos: pos, end: textPos }, token.parent);
- if (textPos === tokenStart)
- break;
- kind = scanner.scan();
- pos = scanner.getTokenPos();
- }
- }
- return cb(fullText, token.kind, { end: token.end, pos: tokenStart }, token.parent);
- }, sourceFile);
-}
-exports.forEachTokenWithTrivia = forEachTokenWithTrivia;
-function forEachComment(node, cb, sourceFile) {
- if (sourceFile === void 0) { sourceFile = node.getSourceFile(); }
- var fullText = sourceFile.text;
- var notJsx = sourceFile.languageVariant !== ts.LanguageVariant.JSX;
- return forEachToken(node, function (token) {
- if (token.pos === token.end)
- return;
- if (token.kind !== ts.SyntaxKind.JsxText)
- ts.forEachLeadingCommentRange(fullText, token.pos === 0 ? (ts.getShebang(fullText) || '').length : token.pos, commentCallback);
- if (notJsx || canHaveTrailingTrivia(token))
- return ts.forEachTrailingCommentRange(fullText, token.end, commentCallback);
- }, sourceFile);
- function commentCallback(pos, end, kind) {
- cb(fullText, { pos: pos, end: end, kind: kind });
- }
-}
-exports.forEachComment = forEachComment;
-function canHaveTrailingTrivia(token) {
- switch (token.kind) {
- case ts.SyntaxKind.CloseBraceToken:
- return token.parent.kind !== ts.SyntaxKind.JsxExpression || !isJsxElementOrFragment(token.parent.parent);
- case ts.SyntaxKind.GreaterThanToken:
- switch (token.parent.kind) {
- case ts.SyntaxKind.JsxOpeningElement:
- return token.end !== token.parent.end;
- case ts.SyntaxKind.JsxOpeningFragment:
- return false;
- case ts.SyntaxKind.JsxSelfClosingElement:
- return token.end !== token.parent.end ||
- !isJsxElementOrFragment(token.parent.parent);
- case ts.SyntaxKind.JsxClosingElement:
- case ts.SyntaxKind.JsxClosingFragment:
- return !isJsxElementOrFragment(token.parent.parent.parent);
- }
- }
- return true;
-}
-function isJsxElementOrFragment(node) {
- return node.kind === ts.SyntaxKind.JsxElement || node.kind === ts.SyntaxKind.JsxFragment;
-}
-function getLineRanges(sourceFile) {
- var lineStarts = sourceFile.getLineStarts();
- var result = [];
- var length = lineStarts.length;
- var sourceText = sourceFile.text;
- var pos = 0;
- for (var i = 1; i < length; ++i) {
- var end = lineStarts[i];
- var lineEnd = end;
- for (; lineEnd > pos; --lineEnd)
- if (!ts.isLineBreak(sourceText.charCodeAt(lineEnd - 1)))
- break;
- result.push({
- pos: pos,
- end: end,
- contentLength: lineEnd - pos,
- });
- pos = end;
- }
- result.push({
- pos: pos,
- end: sourceFile.end,
- contentLength: sourceFile.end - pos,
- });
- return result;
-}
-exports.getLineRanges = getLineRanges;
-function getLineBreakStyle(sourceFile) {
- var lineStarts = sourceFile.getLineStarts();
- return lineStarts.length === 1 || lineStarts[1] < 2 || sourceFile.text[lineStarts[1] - 2] !== '\r'
- ? '\n'
- : '\r\n';
-}
-exports.getLineBreakStyle = getLineBreakStyle;
-var cachedScanner;
-function scanToken(text) {
- if (cachedScanner === undefined)
- cachedScanner = ts.createScanner(ts.ScriptTarget.Latest, false);
- cachedScanner.setText(text);
- cachedScanner.scan();
- return cachedScanner;
-}
-function isValidIdentifier(text) {
- var scan = scanToken(text);
- return scan.isIdentifier() && scan.getTextPos() === text.length && scan.getTokenPos() === 0;
-}
-exports.isValidIdentifier = isValidIdentifier;
-function isValidPropertyAccess(text) {
- if (!ts.isIdentifierStart(text.charCodeAt(0), ts.ScriptTarget.Latest))
- return false;
- for (var i = 1; i < text.length; ++i)
- if (!ts.isIdentifierPart(text.charCodeAt(i), ts.ScriptTarget.Latest))
- return false;
- return true;
-}
-exports.isValidPropertyAccess = isValidPropertyAccess;
-function isValidPropertyName(text) {
- if (isValidPropertyAccess(text))
- return true;
- var scan = scanToken(text);
- return scan.getTextPos() === text.length &&
- scan.getToken() === ts.SyntaxKind.NumericLiteral && scan.getTokenValue() === text;
-}
-exports.isValidPropertyName = isValidPropertyName;
-function isValidNumericLiteral(text) {
- var scan = scanToken(text);
- return scan.getToken() === ts.SyntaxKind.NumericLiteral && scan.getTextPos() === text.length && scan.getTokenPos() === 0;
-}
-exports.isValidNumericLiteral = isValidNumericLiteral;
-function isSameLine(sourceFile, pos1, pos2) {
- return ts.getLineAndCharacterOfPosition(sourceFile, pos1).line === ts.getLineAndCharacterOfPosition(sourceFile, pos2).line;
-}
-exports.isSameLine = isSameLine;
-var SideEffectOptions;
-(function (SideEffectOptions) {
- SideEffectOptions[SideEffectOptions["None"] = 0] = "None";
- SideEffectOptions[SideEffectOptions["TaggedTemplate"] = 1] = "TaggedTemplate";
- SideEffectOptions[SideEffectOptions["Constructor"] = 2] = "Constructor";
- SideEffectOptions[SideEffectOptions["JsxElement"] = 4] = "JsxElement";
-})(SideEffectOptions = exports.SideEffectOptions || (exports.SideEffectOptions = {}));
-function hasSideEffects(node, options) {
- switch (node.kind) {
- case ts.SyntaxKind.CallExpression:
- case ts.SyntaxKind.PostfixUnaryExpression:
- case ts.SyntaxKind.AwaitExpression:
- case ts.SyntaxKind.YieldExpression:
- case ts.SyntaxKind.DeleteExpression:
- return true;
- case ts.SyntaxKind.TypeAssertionExpression:
- case ts.SyntaxKind.AsExpression:
- case ts.SyntaxKind.ParenthesizedExpression:
- case ts.SyntaxKind.NonNullExpression:
- case ts.SyntaxKind.VoidExpression:
- case ts.SyntaxKind.TypeOfExpression:
- case ts.SyntaxKind.PropertyAccessExpression:
- case ts.SyntaxKind.SpreadElement:
- case ts.SyntaxKind.PartiallyEmittedExpression:
- return hasSideEffects(node.expression, options);
- case ts.SyntaxKind.BinaryExpression:
- return isAssignmentKind(node.operatorToken.kind) ||
- hasSideEffects(node.left, options) ||
- hasSideEffects(node.right, options);
- case ts.SyntaxKind.PrefixUnaryExpression:
- switch (node.operator) {
- case ts.SyntaxKind.PlusPlusToken:
- case ts.SyntaxKind.MinusMinusToken:
- return true;
- default:
- return hasSideEffects(node.operand, options);
- }
- case ts.SyntaxKind.ElementAccessExpression:
- return hasSideEffects(node.expression, options) ||
- node.argumentExpression !== undefined &&
- hasSideEffects(node.argumentExpression, options);
- case ts.SyntaxKind.ConditionalExpression:
- return hasSideEffects(node.condition, options) ||
- hasSideEffects(node.whenTrue, options) ||
- hasSideEffects(node.whenFalse, options);
- case ts.SyntaxKind.NewExpression:
- if (options & 2 || hasSideEffects(node.expression, options))
- return true;
- if (node.arguments !== undefined)
- for (var _i = 0, _a = node.arguments; _i < _a.length; _i++) {
- var child = _a[_i];
- if (hasSideEffects(child, options))
- return true;
- }
- return false;
- case ts.SyntaxKind.TaggedTemplateExpression:
- if (options & 1 || hasSideEffects(node.tag, options))
- return true;
- if (node.template.kind === ts.SyntaxKind.NoSubstitutionTemplateLiteral)
- return false;
- node = node.template;
- case ts.SyntaxKind.TemplateExpression:
- for (var _b = 0, _c = node.templateSpans; _b < _c.length; _b++) {
- var child = _c[_b];
- if (hasSideEffects(child.expression, options))
- return true;
- }
- return false;
- case ts.SyntaxKind.ClassExpression:
- return classExpressionHasSideEffects(node, options);
- case ts.SyntaxKind.ArrayLiteralExpression:
- for (var _d = 0, _e = node.elements; _d < _e.length; _d++) {
- var child = _e[_d];
- if (hasSideEffects(child, options))
- return true;
- }
- return false;
- case ts.SyntaxKind.ObjectLiteralExpression:
- for (var _f = 0, _g = node.properties; _f < _g.length; _f++) {
- var child = _g[_f];
- if (child.name !== undefined && child.name.kind === ts.SyntaxKind.ComputedPropertyName &&
- hasSideEffects(child.name.expression, options))
- return true;
- switch (child.kind) {
- case ts.SyntaxKind.PropertyAssignment:
- if (hasSideEffects(child.initializer, options))
- return true;
- break;
- case ts.SyntaxKind.SpreadAssignment:
- if (hasSideEffects(child.expression, options))
- return true;
- }
- }
- return false;
- case ts.SyntaxKind.JsxExpression:
- return node.expression !== undefined && hasSideEffects(node.expression, options);
- case ts.SyntaxKind.JsxElement:
- case ts.SyntaxKind.JsxFragment:
- for (var _h = 0, _j = node.children; _h < _j.length; _h++) {
- var child = _j[_h];
- if (child.kind !== ts.SyntaxKind.JsxText && hasSideEffects(child, options))
- return true;
- }
- if (node.kind === ts.SyntaxKind.JsxFragment)
- return false;
- node = node.openingElement;
- case ts.SyntaxKind.JsxSelfClosingElement:
- case ts.SyntaxKind.JsxOpeningElement:
- if (options & 4)
- return true;
- for (var _k = 0, _l = getJsxAttributes(node); _k < _l.length; _k++) {
- var child = _l[_k];
- if (child.kind === ts.SyntaxKind.JsxSpreadAttribute) {
- if (hasSideEffects(child.expression, options))
- return true;
- }
- else if (child.initializer !== undefined && hasSideEffects(child.initializer, options)) {
- return true;
- }
- }
- return false;
- case ts.SyntaxKind.CommaListExpression:
- for (var _m = 0, _o = node.elements; _m < _o.length; _m++) {
- var child = _o[_m];
- if (hasSideEffects(child, options))
- return true;
- }
- return false;
- default:
- return false;
- }
-}
-exports.hasSideEffects = hasSideEffects;
-function getJsxAttributes(openElement) {
- var attributes = openElement.attributes;
- return Array.isArray(attributes) ? attributes : attributes.properties;
-}
-function classExpressionHasSideEffects(node, options) {
- if (node.heritageClauses !== undefined && node.heritageClauses[0].token === ts.SyntaxKind.ExtendsKeyword)
- for (var _i = 0, _a = node.heritageClauses[0].types; _i < _a.length; _i++) {
- var base = _a[_i];
- if (hasSideEffects(base.expression, options))
- return true;
- }
- for (var _b = 0, _c = node.members; _b < _c.length; _b++) {
- var child = _c[_b];
- if (child.name !== undefined && child.name.kind === ts.SyntaxKind.ComputedPropertyName &&
- hasSideEffects(child.name.expression, options) ||
- node_1.isPropertyDeclaration(child) && child.initializer !== undefined &&
- hasSideEffects(child.initializer, options))
- return true;
- }
- return false;
-}
-function getDeclarationOfBindingElement(node) {
- var parent = node.parent.parent;
- while (parent.kind === ts.SyntaxKind.BindingElement)
- parent = parent.parent.parent;
- return parent;
-}
-exports.getDeclarationOfBindingElement = getDeclarationOfBindingElement;
-function isExpressionValueUsed(node) {
- while (true) {
- var parent = node.parent;
- switch (parent.kind) {
- case ts.SyntaxKind.CallExpression:
- case ts.SyntaxKind.NewExpression:
- case ts.SyntaxKind.ElementAccessExpression:
- case ts.SyntaxKind.WhileStatement:
- case ts.SyntaxKind.DoStatement:
- case ts.SyntaxKind.WithStatement:
- case ts.SyntaxKind.ThrowStatement:
- case ts.SyntaxKind.ReturnStatement:
- case ts.SyntaxKind.JsxExpression:
- case ts.SyntaxKind.JsxSpreadAttribute:
- case ts.SyntaxKind.JsxElement:
- case ts.SyntaxKind.JsxFragment:
- case ts.SyntaxKind.JsxSelfClosingElement:
- case ts.SyntaxKind.ComputedPropertyName:
- case ts.SyntaxKind.ArrowFunction:
- case ts.SyntaxKind.ExportSpecifier:
- case ts.SyntaxKind.ExportAssignment:
- case ts.SyntaxKind.ImportDeclaration:
- case ts.SyntaxKind.ExternalModuleReference:
- case ts.SyntaxKind.Decorator:
- case ts.SyntaxKind.TaggedTemplateExpression:
- case ts.SyntaxKind.TemplateSpan:
- case ts.SyntaxKind.ExpressionWithTypeArguments:
- case ts.SyntaxKind.TypeOfExpression:
- case ts.SyntaxKind.AwaitExpression:
- case ts.SyntaxKind.YieldExpression:
- case ts.SyntaxKind.LiteralType:
- case ts.SyntaxKind.JsxAttributes:
- case ts.SyntaxKind.JsxOpeningElement:
- case ts.SyntaxKind.JsxClosingElement:
- case ts.SyntaxKind.IfStatement:
- case ts.SyntaxKind.CaseClause:
- case ts.SyntaxKind.SwitchStatement:
- return true;
- case ts.SyntaxKind.PropertyAccessExpression:
- return parent.expression === node;
- case ts.SyntaxKind.QualifiedName:
- return parent.left === node;
- case ts.SyntaxKind.ShorthandPropertyAssignment:
- return parent.objectAssignmentInitializer === node ||
- !isInDestructuringAssignment(parent);
- case ts.SyntaxKind.PropertyAssignment:
- return parent.initializer === node && !isInDestructuringAssignment(parent);
- case ts.SyntaxKind.SpreadAssignment:
- case ts.SyntaxKind.SpreadElement:
- case ts.SyntaxKind.ArrayLiteralExpression:
- return !isInDestructuringAssignment(parent);
- case ts.SyntaxKind.ParenthesizedExpression:
- case ts.SyntaxKind.AsExpression:
- case ts.SyntaxKind.TypeAssertionExpression:
- case ts.SyntaxKind.PostfixUnaryExpression:
- case ts.SyntaxKind.PrefixUnaryExpression:
- case ts.SyntaxKind.NonNullExpression:
- node = parent;
- break;
- case ts.SyntaxKind.ForStatement:
- return parent.condition === node;
- case ts.SyntaxKind.ForInStatement:
- case ts.SyntaxKind.ForOfStatement:
- return parent.expression === node;
- case ts.SyntaxKind.ConditionalExpression:
- if (parent.condition === node)
- return true;
- node = parent;
- break;
- case ts.SyntaxKind.PropertyDeclaration:
- case ts.SyntaxKind.BindingElement:
- case ts.SyntaxKind.VariableDeclaration:
- case ts.SyntaxKind.Parameter:
- case ts.SyntaxKind.EnumMember:
- return parent.initializer === node;
- case ts.SyntaxKind.ImportEqualsDeclaration:
- return parent.moduleReference === node;
- case ts.SyntaxKind.CommaListExpression:
- if (parent.elements[parent.elements.length - 1] !== node)
- return false;
- node = parent;
- break;
- case ts.SyntaxKind.BinaryExpression:
- if (parent.right === node) {
- if (parent.operatorToken.kind === ts.SyntaxKind.CommaToken) {
- node = parent;
- break;
- }
- return true;
- }
- switch (parent.operatorToken.kind) {
- case ts.SyntaxKind.CommaToken:
- case ts.SyntaxKind.EqualsToken:
- return false;
- case ts.SyntaxKind.EqualsEqualsEqualsToken:
- case ts.SyntaxKind.EqualsEqualsToken:
- case ts.SyntaxKind.ExclamationEqualsEqualsToken:
- case ts.SyntaxKind.ExclamationEqualsToken:
- case ts.SyntaxKind.InstanceOfKeyword:
- case ts.SyntaxKind.PlusToken:
- case ts.SyntaxKind.MinusToken:
- case ts.SyntaxKind.AsteriskToken:
- case ts.SyntaxKind.SlashToken:
- case ts.SyntaxKind.PercentToken:
- case ts.SyntaxKind.AsteriskAsteriskToken:
- case ts.SyntaxKind.GreaterThanToken:
- case ts.SyntaxKind.GreaterThanGreaterThanToken:
- case ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken:
- case ts.SyntaxKind.GreaterThanEqualsToken:
- case ts.SyntaxKind.LessThanToken:
- case ts.SyntaxKind.LessThanLessThanToken:
- case ts.SyntaxKind.LessThanEqualsToken:
- case ts.SyntaxKind.AmpersandToken:
- case ts.SyntaxKind.BarToken:
- case ts.SyntaxKind.CaretToken:
- case ts.SyntaxKind.BarBarToken:
- case ts.SyntaxKind.AmpersandAmpersandToken:
- case ts.SyntaxKind.InKeyword:
- return true;
- default:
- node = parent;
- }
- break;
- default:
- return false;
- }
- }
-}
-exports.isExpressionValueUsed = isExpressionValueUsed;
-function isInDestructuringAssignment(node) {
- switch (node.kind) {
- case ts.SyntaxKind.ShorthandPropertyAssignment:
- if (node.objectAssignmentInitializer !== undefined)
- return true;
- case ts.SyntaxKind.PropertyAssignment:
- case ts.SyntaxKind.SpreadAssignment:
- node = node.parent;
- break;
- case ts.SyntaxKind.SpreadElement:
- if (node.parent.kind !== ts.SyntaxKind.ArrayLiteralExpression)
- return false;
- node = node.parent;
- }
- while (true) {
- switch (node.parent.kind) {
- case ts.SyntaxKind.BinaryExpression:
- return node.parent.left === node &&
- node.parent.operatorToken.kind === ts.SyntaxKind.EqualsToken;
- case ts.SyntaxKind.ForOfStatement:
- return node.parent.initializer === node;
- case ts.SyntaxKind.ArrayLiteralExpression:
- case ts.SyntaxKind.ObjectLiteralExpression:
- node = node.parent;
- break;
- case ts.SyntaxKind.SpreadAssignment:
- case ts.SyntaxKind.PropertyAssignment:
- node = node.parent.parent;
- break;
- case ts.SyntaxKind.SpreadElement:
- if (node.parent.parent.kind !== ts.SyntaxKind.ArrayLiteralExpression)
- return false;
- node = node.parent.parent;
- break;
- default:
- return false;
- }
- }
-}
-function isReassignmentTarget(node) {
- var parent = node.parent;
- switch (parent.kind) {
- case ts.SyntaxKind.PostfixUnaryExpression:
- case ts.SyntaxKind.DeleteExpression:
- return true;
- case ts.SyntaxKind.PrefixUnaryExpression:
- return parent.operator === ts.SyntaxKind.PlusPlusToken ||
- parent.operator === ts.SyntaxKind.MinusMinusToken;
- case ts.SyntaxKind.BinaryExpression:
- return parent.left === node &&
- isAssignmentKind(parent.operatorToken.kind);
- case ts.SyntaxKind.ShorthandPropertyAssignment:
- return parent.name === node &&
- isInDestructuringAssignment(parent);
- case ts.SyntaxKind.PropertyAssignment:
- return parent.initializer === node &&
- isInDestructuringAssignment(parent);
- case ts.SyntaxKind.ArrayLiteralExpression:
- case ts.SyntaxKind.SpreadElement:
- case ts.SyntaxKind.SpreadAssignment:
- return isInDestructuringAssignment(parent);
- case ts.SyntaxKind.ParenthesizedExpression:
- case ts.SyntaxKind.NonNullExpression:
- case ts.SyntaxKind.TypeAssertionExpression:
- case ts.SyntaxKind.AsExpression:
- return isReassignmentTarget(parent);
- case ts.SyntaxKind.ForOfStatement:
- case ts.SyntaxKind.ForInStatement:
- return parent.initializer === node;
- }
- return false;
-}
-exports.isReassignmentTarget = isReassignmentTarget;
-function getIdentifierText(node) {
- return ts.unescapeIdentifier ? ts.unescapeIdentifier(node.text) : node.text;
-}
-exports.getIdentifierText = getIdentifierText;
-function canHaveJsDoc(node) {
- var kind = node.kind;
- switch (kind) {
- case ts.SyntaxKind.Parameter:
- case ts.SyntaxKind.CallSignature:
- case ts.SyntaxKind.ConstructSignature:
- case ts.SyntaxKind.MethodSignature:
- case ts.SyntaxKind.PropertySignature:
- case ts.SyntaxKind.ArrowFunction:
- case ts.SyntaxKind.ParenthesizedExpression:
- case ts.SyntaxKind.SpreadAssignment:
- case ts.SyntaxKind.ShorthandPropertyAssignment:
- case ts.SyntaxKind.PropertyAssignment:
- case ts.SyntaxKind.FunctionExpression:
- case ts.SyntaxKind.FunctionDeclaration:
- case ts.SyntaxKind.LabeledStatement:
- case ts.SyntaxKind.ExpressionStatement:
- case ts.SyntaxKind.VariableStatement:
- case ts.SyntaxKind.Constructor:
- case ts.SyntaxKind.MethodDeclaration:
- case ts.SyntaxKind.PropertyDeclaration:
- case ts.SyntaxKind.GetAccessor:
- case ts.SyntaxKind.SetAccessor:
- case ts.SyntaxKind.ClassDeclaration:
- case ts.SyntaxKind.ClassExpression:
- case ts.SyntaxKind.InterfaceDeclaration:
- case ts.SyntaxKind.TypeAliasDeclaration:
- case ts.SyntaxKind.EnumMember:
- case ts.SyntaxKind.EnumDeclaration:
- case ts.SyntaxKind.ModuleDeclaration:
- case ts.SyntaxKind.ImportEqualsDeclaration:
- case ts.SyntaxKind.IndexSignature:
- case ts.SyntaxKind.FunctionType:
- case ts.SyntaxKind.ConstructorType:
- case ts.SyntaxKind.JSDocFunctionType:
- case ts.SyntaxKind.EndOfFileToken:
- return true;
- default:
- return false;
- }
-}
-exports.canHaveJsDoc = canHaveJsDoc;
-function getJsDoc(node, sourceFile) {
- if (node.kind === ts.SyntaxKind.EndOfFileToken)
- return parseJsDocWorker(node, sourceFile || node.parent);
- var result = [];
- for (var _i = 0, _a = node.getChildren(sourceFile); _i < _a.length; _i++) {
- var child = _a[_i];
- if (!node_1.isJsDoc(child))
- break;
- result.push(child);
- }
- return result;
-}
-exports.getJsDoc = getJsDoc;
-function parseJsDocOfNode(node, considerTrailingComments, sourceFile) {
- if (sourceFile === void 0) { sourceFile = node.getSourceFile(); }
- if (canHaveJsDoc(node) && node.kind !== ts.SyntaxKind.EndOfFileToken) {
- var result = getJsDoc(node, sourceFile);
- if (result.length !== 0 || !considerTrailingComments)
- return result;
- }
- return parseJsDocWorker(node, sourceFile, considerTrailingComments);
-}
-exports.parseJsDocOfNode = parseJsDocOfNode;
-function parseJsDocWorker(node, sourceFile, considerTrailingComments) {
- var nodeStart = node.getStart(sourceFile);
- var start = ts[considerTrailingComments && isSameLine(sourceFile, node.pos, nodeStart)
- ? 'forEachTrailingCommentRange'
- : 'forEachLeadingCommentRange'](sourceFile.text, node.pos, function (pos, _end, kind) { return kind === ts.SyntaxKind.MultiLineCommentTrivia && sourceFile.text[pos + 2] === '*' ? { pos: pos } : undefined; });
- if (start === undefined)
- return [];
- var startPos = start.pos;
- var text = sourceFile.text.slice(startPos, nodeStart);
- var newSourceFile = ts.createSourceFile('jsdoc.ts', text + "var a;", sourceFile.languageVersion);
- var result = getJsDoc(newSourceFile.statements[0], newSourceFile);
- for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {
- var doc = result_1[_i];
- updateNode(doc, node);
- }
- return result;
- function updateNode(n, parent) {
- n.pos += startPos;
- n.end += startPos;
- n.parent = parent;
- return ts.forEachChild(n, function (child) { return updateNode(child, n); }, function (children) {
- children.pos += startPos;
- children.end += startPos;
- for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {
- var child = children_1[_i];
- updateNode(child, n);
- }
- });
- }
-}
-var ImportKind;
-(function (ImportKind) {
- ImportKind[ImportKind["ImportDeclaration"] = 1] = "ImportDeclaration";
- ImportKind[ImportKind["ImportEquals"] = 2] = "ImportEquals";
- ImportKind[ImportKind["ExportFrom"] = 4] = "ExportFrom";
- ImportKind[ImportKind["DynamicImport"] = 8] = "DynamicImport";
- ImportKind[ImportKind["Require"] = 16] = "Require";
- ImportKind[ImportKind["ImportType"] = 32] = "ImportType";
- ImportKind[ImportKind["All"] = 63] = "All";
- ImportKind[ImportKind["AllImports"] = 59] = "AllImports";
- ImportKind[ImportKind["AllStaticImports"] = 3] = "AllStaticImports";
- ImportKind[ImportKind["AllImportExpressions"] = 24] = "AllImportExpressions";
- ImportKind[ImportKind["AllRequireLike"] = 18] = "AllRequireLike";
- ImportKind[ImportKind["AllNestedImports"] = 56] = "AllNestedImports";
-})(ImportKind = exports.ImportKind || (exports.ImportKind = {}));
-var ImportOptions;
-(function (ImportOptions) {
- ImportOptions[ImportOptions["ImportDeclaration"] = 1] = "ImportDeclaration";
- ImportOptions[ImportOptions["ImportEquals"] = 2] = "ImportEquals";
- ImportOptions[ImportOptions["ExportFrom"] = 4] = "ExportFrom";
- ImportOptions[ImportOptions["DynamicImport"] = 8] = "DynamicImport";
- ImportOptions[ImportOptions["Require"] = 16] = "Require";
- ImportOptions[ImportOptions["All"] = 31] = "All";
- ImportOptions[ImportOptions["AllImports"] = 27] = "AllImports";
- ImportOptions[ImportOptions["AllStaticImports"] = 3] = "AllStaticImports";
- ImportOptions[ImportOptions["AllDynamic"] = 24] = "AllDynamic";
- ImportOptions[ImportOptions["AllRequireLike"] = 18] = "AllRequireLike";
-})(ImportOptions = exports.ImportOptions || (exports.ImportOptions = {}));
-function findImports(sourceFile, options) {
- return new ImportFinder(sourceFile, options).find();
-}
-exports.findImports = findImports;
-var ImportFinder = (function () {
- function ImportFinder(_sourceFile, _options) {
- var _this = this;
- this._sourceFile = _sourceFile;
- this._options = _options;
- this._result = [];
- this._findNested = function (node) {
- if (node_1.isCallExpression(node)) {
- if (node.arguments.length === 1 &&
- (node.expression.kind === ts.SyntaxKind.ImportKeyword && _this._options & 8 ||
- _this._options & 16 && node.expression.kind === ts.SyntaxKind.Identifier &&
- node.expression.text === 'require'))
- _this._addImport(node.arguments[0]);
- }
- else if (node_1.isImportTypeNode(node) && node_1.isLiteralTypeNode(node.argument) && _this._options & 32) {
- _this._addImport(node.argument.literal);
- }
- ts.forEachChild(node, _this._findNested);
- };
- }
- ImportFinder.prototype.find = function () {
- if (this._sourceFile.isDeclarationFile)
- this._options &= ~24;
- this._findImports(this._sourceFile.statements);
- return this._result;
- };
- ImportFinder.prototype._findImports = function (statements) {
- for (var _i = 0, statements_1 = statements; _i < statements_1.length; _i++) {
- var statement = statements_1[_i];
- if (node_1.isImportDeclaration(statement)) {
- if (this._options & 1)
- this._addImport(statement.moduleSpecifier);
- }
- else if (node_1.isImportEqualsDeclaration(statement)) {
- if (this._options & 2 &&
- statement.moduleReference.kind === ts.SyntaxKind.ExternalModuleReference &&
- statement.moduleReference.expression !== undefined)
- this._addImport(statement.moduleReference.expression);
- }
- else if (node_1.isExportDeclaration(statement)) {
- if (statement.moduleSpecifier !== undefined && this._options & 4)
- this._addImport(statement.moduleSpecifier);
- }
- else if (node_1.isModuleDeclaration(statement) &&
- this._options & (3 | 4) &&
- statement.body !== undefined && statement.name.kind === ts.SyntaxKind.StringLiteral &&
- ts.isExternalModule(this._sourceFile)) {
- this._findImports(statement.body.statements);
- }
- else if (this._options & 56) {
- ts.forEachChild(statement, this._findNested);
- }
- }
- };
- ImportFinder.prototype._addImport = function (expression) {
- if (node_1.isTextualLiteral(expression))
- this._result.push(expression);
- };
- return ImportFinder;
-}());
-function isStatementInAmbientContext(node) {
- while (node.flags & ts.NodeFlags.NestedNamespace)
- node = node.parent;
- return hasModifier(node.modifiers, ts.SyntaxKind.DeclareKeyword) || isAmbientModuleBlock(node.parent);
-}
-exports.isStatementInAmbientContext = isStatementInAmbientContext;
-function isAmbientModuleBlock(node) {
- while (node.kind === ts.SyntaxKind.ModuleBlock) {
- do
- node = node.parent;
- while (node.flags & ts.NodeFlags.NestedNamespace);
- if (hasModifier(node.modifiers, ts.SyntaxKind.DeclareKeyword))
- return true;
- node = node.parent;
- }
- return false;
-}
-exports.isAmbientModuleBlock = isAmbientModuleBlock;
-function getIIFE(func) {
- var node = func.parent;
- while (node.kind === ts.SyntaxKind.ParenthesizedExpression)
- node = node.parent;
- return node_1.isCallExpression(node) && func.end <= node.expression.end ? node : undefined;
-}
-exports.getIIFE = getIIFE;
-function isStrictCompilerOptionEnabled(options, option) {
- return (options.strict ? options[option] !== false : options[option] === true) &&
- (option !== 'strictPropertyInitialization' || isStrictCompilerOptionEnabled(options, 'strictNullChecks'));
-}
-exports.isStrictCompilerOptionEnabled = isStrictCompilerOptionEnabled;
-function isCompilerOptionEnabled(options, option) {
- switch (option) {
- case 'stripInternal':
- return options.stripInternal === true && isCompilerOptionEnabled(options, 'declaration');
- case 'declaration':
- return options.declaration || isCompilerOptionEnabled(options, 'composite');
- case 'noImplicitAny':
- case 'noImplicitThis':
- case 'strictNullChecks':
- case 'strictFunctionTypes':
- case 'strictPropertyInitialization':
- case 'alwaysStrict':
- return isStrictCompilerOptionEnabled(options, option);
- }
- return options[option] === true;
-}
-exports.isCompilerOptionEnabled = isCompilerOptionEnabled;
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQWlDO0FBRWpDLDBDQUcyQjtBQUczQix5REFBK0I7QUFFL0IsU0FBZ0IsY0FBYyxDQUEwQixJQUFhLEVBQUUsSUFBTyxFQUFFLFVBQTBCO0lBQ3RHLEtBQW9CLFVBQTRCLEVBQTVCLEtBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBNUIsY0FBNEIsRUFBNUIsSUFBNEI7UUFBM0MsSUFBTSxLQUFLLFNBQUE7UUFDWixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSTtZQUNuQixPQUFvQixLQUFLLENBQUM7S0FBQTtBQUN0QyxDQUFDO0FBSkQsd0NBSUM7QUFFRCxTQUFnQixXQUFXLENBQUMsSUFBbUI7SUFDM0MsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBQy9FLENBQUM7QUFGRCxrQ0FFQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxJQUFtQjtJQUMxQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztBQUMzQyxDQUFDO0FBRkQsZ0NBRUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxJQUFtQjtJQUNoRCxPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLGVBQWUsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7QUFDekYsQ0FBQztBQUZELDRDQUVDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLElBQW1CO0lBQzlDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztBQUNyRixDQUFDO0FBRkQsd0NBRUM7QUFFRCxTQUFn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 \ No newline at end of file